設(shè)置一個(gè)高容量的Linux POP3服務(wù)器
更新時(shí)間:2006年10月24日 00:00:00 作者:
一: 概述
本文旨在介紹如何使用開放源軟件Procmail和Qpopper來(lái)配置一臺(tái)可供大量用戶使用的POP3服務(wù)器,重點(diǎn)在于如何保持最佳的服務(wù)器性能。
二: 步驟
軟件環(huán)境為RedHat Linux 7.1
1. 下載最新版的Procmail和Qpopper
Procmail 最新版本現(xiàn)在是3.21 可從
http://www.procmail.org/procmail-3.21.tar.gz下載。
Qpopper 最新版本現(xiàn)在是4.0 可從
http://www.eudora.com/qpopper_general/下載
2. 編譯Qpopper
假設(shè)下載的文件放在/root
#cd /root
#tar xvfz qpopper4.0.3.tar.gz
#cd qpopper4.0.3
#./configure --enable-hash-spool=2
--enable-log-login
--enable-server-mode
--enable-fast-update
--enable-shy
--enable-spool-dir=/usr/mail
--enable-specialauth
注釋:
--enable-specialauth 使用/etc/shadow 密碼認(rèn)證
--enable-hash-spool=2 使用二級(jí)hash結(jié)構(gòu)
--enable-spool-dir=/usr/mail 則用戶信箱文件為/usr/mail/j/e/jephe
--enable-log-login 記錄下成功的POP3登錄進(jìn)入syslog
--enable-server-mode 和 --enable-fast-update
不要讓qpopper在用戶存取信箱時(shí)拷貝信箱文件到臨時(shí)文件
減少磁盤I/O,增強(qiáng)性能
--enable-shy 讓服務(wù)器響應(yīng)時(shí)不要顯示版本信息,增強(qiáng)安全性
#make
#make install
編輯文件/etc/inetd.conf
在/etc/xinetd.d下創(chuàng)建文件pop3,包含下面的內(nèi)容:
service pop3
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/lib/popper
server_args = qpopper -F -S -s -c -R -T120
port = 110
}
注釋:
-F enable fast update
-S enable server mode (在用戶對(duì)該服務(wù)器沒有shell存取時(shí)做)
-s 打開LOG功能
-c 忽略用戶名的大小寫
-R 不對(duì)連接進(jìn)來(lái)的IP地址做反向域名檢查
-T 設(shè)定超時(shí)時(shí)間
這樣設(shè)定之后,如果用戶jephe收取信件時(shí),則先鎖定信箱文件/usr/mail/j/e/jephe創(chuàng)建鎖文件.jephe.pop,檢查信件數(shù)目,退時(shí)出更新狀態(tài),生成.jephe.cache文件。
否則正常模式下是先把/usr/mail/j/e/jephe拷貝成.jephe.pop,最后用戶檢查信箱完畢再拷貝回來(lái),增加了I/O處理時(shí)間
如果不是redhat 7.1則在/etc/inetd.conf中注釋以pop-3開頭的行,然后在后面再添加下面的行: pop-3 stream tcp nowait.400 root /usr/local/sbin/popper -F -S -s -c -R -T120
nowait:400中的400是指每分鐘最多可接受的連接請(qǐng)求數(shù)目
如果你在/etc/hosts.deny中設(shè)置了ALL:ALL,則要在/etc/hosts.allow中輸入
popper:ALL
3. 編譯Procmail
假設(shè)下載的文件放在/root
#cd /root
#tar xvfz procmail-3.21.tar.gz
#cd procmail-3.21
#vi src/authenticate.c
改#define MAILSPOOLDIR行后面的/var/spool/mail為 "/usr/mail/" (這里我用的是
/usr/mail)
改#define MAILSPOOLHASH 后面的0 為 2 (用二級(jí)hash目錄,改進(jìn)服務(wù)器文件系統(tǒng)性能,特別是有大量用戶時(shí))
注:這樣的話,如果用戶的信箱為jephe@domain.com,則文件應(yīng)存在
/usr/mail/j/e/jephe
#mv /var/spool/mail /var/spool/mail.bak
注:先換名這個(gè)目錄,因?yàn)榭赡墚?dāng)編譯時(shí)如果能找到該目錄,則優(yōu)先用該目錄及hash層次結(jié)構(gòu),這樣的話將存儲(chǔ)用戶郵件到文件/var/spool/mail/j/e/jephe.如果你就想用這個(gè)目錄,就不用改上面的MAILSPOOLDIR行。
#make
#make install
#make install-suid
然后以root身份運(yùn)行#procmail -v檢查用戶的郵件路徑確認(rèn)為/usr/mail/r/o/root。
4. 創(chuàng)建POP3用戶
你不需要為mail用戶分配home目錄,也不需要設(shè)置其主目錄為/usr/mail/j/e (假定用戶為jephe),用下面的命令創(chuàng)建用戶。
#useradd jephe -c "Jephe Wu" -g mail -d /dev/null -s /bin/false
再可以寫一個(gè)批命令用chpasswd給每個(gè)用戶以同樣的password.
a. 首先用passwd為mailuser1設(shè)置密碼,假定為"abc123",檢查/etc/shadow中的密
碼,我的機(jī)器上"abc123"
為 $1$G22Plicn$r5.bSe0U7DbaHN7tCevTR/
b. 創(chuàng)建一個(gè)新文件/tmp/password,每行包括一個(gè)用戶名:密碼 ,可從/etc/passwd用下面的命令取得
cat /etc/passwd | awk -F: '{print $1}' |sed -e
's/$/:$$1$G22Plicn$r5.bSe0U7DbaHN7tCevTR\//g'
c. 然后運(yùn)行chpasswd < /tmp/password
5. FAQ
a. 編譯qpopper后,仍需在命令行上使用-F -S參數(shù)以啟動(dòng)服務(wù)器模式和快速更新,請(qǐng)放-F在-S的前面
本文旨在介紹如何使用開放源軟件Procmail和Qpopper來(lái)配置一臺(tái)可供大量用戶使用的POP3服務(wù)器,重點(diǎn)在于如何保持最佳的服務(wù)器性能。
二: 步驟
軟件環(huán)境為RedHat Linux 7.1
1. 下載最新版的Procmail和Qpopper
Procmail 最新版本現(xiàn)在是3.21 可從
http://www.procmail.org/procmail-3.21.tar.gz下載。
Qpopper 最新版本現(xiàn)在是4.0 可從
http://www.eudora.com/qpopper_general/下載
2. 編譯Qpopper
假設(shè)下載的文件放在/root
#cd /root
#tar xvfz qpopper4.0.3.tar.gz
#cd qpopper4.0.3
#./configure --enable-hash-spool=2
--enable-log-login
--enable-server-mode
--enable-fast-update
--enable-shy
--enable-spool-dir=/usr/mail
--enable-specialauth
注釋:
--enable-specialauth 使用/etc/shadow 密碼認(rèn)證
--enable-hash-spool=2 使用二級(jí)hash結(jié)構(gòu)
--enable-spool-dir=/usr/mail 則用戶信箱文件為/usr/mail/j/e/jephe
--enable-log-login 記錄下成功的POP3登錄進(jìn)入syslog
--enable-server-mode 和 --enable-fast-update
不要讓qpopper在用戶存取信箱時(shí)拷貝信箱文件到臨時(shí)文件
減少磁盤I/O,增強(qiáng)性能
--enable-shy 讓服務(wù)器響應(yīng)時(shí)不要顯示版本信息,增強(qiáng)安全性
#make
#make install
編輯文件/etc/inetd.conf
在/etc/xinetd.d下創(chuàng)建文件pop3,包含下面的內(nèi)容:
service pop3
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/lib/popper
server_args = qpopper -F -S -s -c -R -T120
port = 110
}
注釋:
-F enable fast update
-S enable server mode (在用戶對(duì)該服務(wù)器沒有shell存取時(shí)做)
-s 打開LOG功能
-c 忽略用戶名的大小寫
-R 不對(duì)連接進(jìn)來(lái)的IP地址做反向域名檢查
-T 設(shè)定超時(shí)時(shí)間
這樣設(shè)定之后,如果用戶jephe收取信件時(shí),則先鎖定信箱文件/usr/mail/j/e/jephe創(chuàng)建鎖文件.jephe.pop,檢查信件數(shù)目,退時(shí)出更新狀態(tài),生成.jephe.cache文件。
否則正常模式下是先把/usr/mail/j/e/jephe拷貝成.jephe.pop,最后用戶檢查信箱完畢再拷貝回來(lái),增加了I/O處理時(shí)間
如果不是redhat 7.1則在/etc/inetd.conf中注釋以pop-3開頭的行,然后在后面再添加下面的行: pop-3 stream tcp nowait.400 root /usr/local/sbin/popper -F -S -s -c -R -T120
nowait:400中的400是指每分鐘最多可接受的連接請(qǐng)求數(shù)目
如果你在/etc/hosts.deny中設(shè)置了ALL:ALL,則要在/etc/hosts.allow中輸入
popper:ALL
3. 編譯Procmail
假設(shè)下載的文件放在/root
#cd /root
#tar xvfz procmail-3.21.tar.gz
#cd procmail-3.21
#vi src/authenticate.c
改#define MAILSPOOLDIR行后面的/var/spool/mail為 "/usr/mail/" (這里我用的是
/usr/mail)
改#define MAILSPOOLHASH 后面的0 為 2 (用二級(jí)hash目錄,改進(jìn)服務(wù)器文件系統(tǒng)性能,特別是有大量用戶時(shí))
注:這樣的話,如果用戶的信箱為jephe@domain.com,則文件應(yīng)存在
/usr/mail/j/e/jephe
#mv /var/spool/mail /var/spool/mail.bak
注:先換名這個(gè)目錄,因?yàn)榭赡墚?dāng)編譯時(shí)如果能找到該目錄,則優(yōu)先用該目錄及hash層次結(jié)構(gòu),這樣的話將存儲(chǔ)用戶郵件到文件/var/spool/mail/j/e/jephe.如果你就想用這個(gè)目錄,就不用改上面的MAILSPOOLDIR行。
#make
#make install
#make install-suid
然后以root身份運(yùn)行#procmail -v檢查用戶的郵件路徑確認(rèn)為/usr/mail/r/o/root。
4. 創(chuàng)建POP3用戶
你不需要為mail用戶分配home目錄,也不需要設(shè)置其主目錄為/usr/mail/j/e (假定用戶為jephe),用下面的命令創(chuàng)建用戶。
#useradd jephe -c "Jephe Wu" -g mail -d /dev/null -s /bin/false
再可以寫一個(gè)批命令用chpasswd給每個(gè)用戶以同樣的password.
a. 首先用passwd為mailuser1設(shè)置密碼,假定為"abc123",檢查/etc/shadow中的密
碼,我的機(jī)器上"abc123"
為 $1$G22Plicn$r5.bSe0U7DbaHN7tCevTR/
b. 創(chuàng)建一個(gè)新文件/tmp/password,每行包括一個(gè)用戶名:密碼 ,可從/etc/passwd用下面的命令取得
cat /etc/passwd | awk -F: '{print $1}' |sed -e
's/$/:$$1$G22Plicn$r5.bSe0U7DbaHN7tCevTR\//g'
c. 然后運(yùn)行chpasswd < /tmp/password
5. FAQ
a. 編譯qpopper后,仍需在命令行上使用-F -S參數(shù)以啟動(dòng)服務(wù)器模式和快速更新,請(qǐng)放-F在-S的前面
相關(guān)文章
Linux crontab 命令格式與詳細(xì)示例(推薦)
這篇文章主要介紹了Linux crontab 命令格式與詳細(xì)示例(推薦),需要的朋友可以參考下2017-07-07ubuntu系統(tǒng)下Python虛擬環(huán)境的安裝和使用教程
這篇文章主要介紹了ubuntu系統(tǒng)下Python虛擬環(huán)境的安裝和使用教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06剖析Linux系統(tǒng)啟動(dòng)過(guò)程
剖析Linux系統(tǒng)啟動(dòng)過(guò)程...2006-10-10在Linux中利用yum安裝JDK的實(shí)現(xiàn)步驟
這篇文章主要給大家介紹了怎么樣利用yum來(lái)安裝、卸載jdk,對(duì)于Linux教程有興趣的同學(xué)可以參考學(xué)習(xí),下面來(lái)一起看看吧。2016-09-09