歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> Linux下構架qmail郵件系統

Linux下構架qmail郵件系統

日期:2017/3/6 15:40:14   编辑:關於Unix
(一)特點簡介 安全性 為了驗證Qmail的安全性,Qmail的支持者甚至出資1000懸賞尋找 Qmail的安全漏洞,一年以後,該獎金沒有被領取,而被捐獻給自由軟件基金會 。目前,Qmail的作者也出資500來尋求Qmail的安全漏洞。 速度:Qmail在一個中等規模的系統可以投 (一)特點簡介
安全性 為了驗證Qmail的安全性,Qmail的支持者甚至出資$1000懸賞尋找 Qmail的安全漏洞,一年以後,該獎金沒有被領取,而被捐獻給自由軟件基金會 。目前,Qmail的作者也出資$500來尋求Qmail的安全漏洞。

速度:Qmail在一個中等規模的系統可以投遞大約百萬封郵件,甚至在一 台486一天上能處理超過10萬封郵件,起支持並行投遞。Qmail支持郵件的並行投 遞,同時可以投遞大約20封郵件。目前郵件投遞的瓶頸在於SMTP協議,通過STMP 向另外一台互聯網主機投遞一封電子郵件大約需要花費10多秒鐘。Qmail的作者 提出了QMTP(Quick Mail Transfer Protocol)來加速郵件的投遞,並且在Qmail中得到支持。 Qmail的設計目標是在一台16M的機器上最終達到每天可以投遞大約百萬級數目的 郵件。

可靠性:為了保證可靠性,Qmail只有在郵件被正確地寫入到磁盤才返回 處理成功的結果,這樣即使在磁盤寫入中發生系統崩潰或斷電等情況,也可以保 證郵件不被丟失,而是重新投遞。

特別簡單的虛擬域管理,甚至有一個第三方開發的稱為vchkpw的add-on來支持虛 擬POP域。使用這個軟件包,POP3用戶不需要具有系統的正式帳戶。

使用ezmlm支持用戶自控制的郵件列表功能。

郵件用戶和系統帳戶隔離,為用戶提供郵件帳戶不需要為其設置系統帳戶 ,從而增加了安全性。
(以上摘自網上,由於沒有找到原作者的署名,如果原作者碰巧看到,請與我聯系,謝謝)
(二) 軟件
* qmail-1.03.tar.gz qmail基本系統包
* ucspi-tcp-0.88.tar.gz tcpserver服務程序
* daemontools-0.76.tar.gz 監視工具
* checkpassword-0.90.tar.gz pop3驗證用戶程序
* cmd5checkpw-0.22.tar.gz 系統驗證程序
* vpopmail-5.2.0.tar.gz 虛擬域用戶pop3支持
* vqsignup-0.5.tar.gz web方式用戶注冊
* sqwebmail-3.3.7.tar.gz webmail
* qmailadmin-0.42.tar.gz 虛擬域web方式管理
* ezmlm-0.53.tar.gz 郵件列表管理
* autorespond-1.0.0.tar.gz 自動回復程序
* qmail-smtpd-auth-0.30.tar.gz SMTP認證補丁程序
(三) 安裝配置
①. 安裝環境准備
  設置服務器工作環境和編譯環境;並且准備好所有的軟件包;然後設置qmail運行時候的用戶和組。
mkdir /var/qmail
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g nofiles -d /var/qmail qmailq
useradd -g nofiles -d /var/qmail qmailr
useradd -g nofiles -d /var/qmail qmails
## 參考網址
## http://cr.yp.to/

②. 安裝tcpserver服務程序
tar xvf ucspi-tcp-0.88.tar
cd ucspi-tcp-0.88
make
make setup check
③. 系統驗證程序(可選)
# tar zxvf cmd5checkpw-0.22.tar.gz
# mkdir /usr/man
# mkdir /usr/man/man8
# cd cmd5checkpw-0.22
# make
# make install
④. 安裝pop3用戶驗證程序
tar xvf checkpassword-0.90.tar
cd checkpassword-0.90
make
make setup check
chmod 4755 /bin/checkpassword
⑤. qmail解包
# tar xvzf qmail-1.03.tar.gz
⑥. SMTP補丁
tar zxvf qmail-smtpd-auth-0.30.tar.gz
cd qmail-smtpd-auth-0.30
cp base64.c base64.h README.auth ../qmail-1.03/
patch -d ../qmail-1.03 < auth.patch
⑦. 安裝qmail-1.03
cd qmail-1.03
make setup check
./config-fast $HOSTNAME
## 設定Qmail服務器主機名
cd ~alias;
touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
chmod 644 ~alias/.qmail*
echo "127.0.0.1:allow,RELAYCLIENT=""" > /etc/tcp.smtp
sed 's/Mailbox/Maildir//' /var/qmail/boot/home >/var/qmail/rc
chmod 755 /var/qmail/rc
csh -cf "/var/qmail/rc &"
⑧. 安裝虛擬域用戶pop3支持
groupadd vchkpw
useradd -g vchkpw vpopmail
su vpopmail
mkdir ~vpopmail/etc
echo "127.0.0.1:allow,RELAYCLIENT=""" > ~vpopmail/etc/tcp.smtp
echo ":allow" > /etc/tcp.smtp
/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
tar xvzf vpopmail-5.2.1.tar.gz
cd vpopmail-5.2.1
## 修改頭文件的連接數據庫的主機,用戶和密碼
## 增加mysql的支持
## 分別拷貝include和lib到 /usr/local/include/mysql和 /usr/local/lib/mysql
./configure --enable-defaultquota=10485760 --enable-deliver-filter=y
--enable-default-domain=xxxx.com --enable-mysql=y
make
make install-strip
cd ~vpopmail/bin
./vadddomain xxxx.com
./vadduser [email protected]
chmod 6755 ~vpopmail/bin/vchkpw
## 如果有必要的話,將cdb文件轉換到mysql數據庫
# ./vconvert -c -s
this will convert them all from the vpasswd.cdb format to the default
single table database

# ./vconvert -c -s virtualdomain1 virtualdomain2 ...
will convert the list of virtual domains from vpasswd.cdb layout to
single table database

⑨. 更改Sendmail為Qmail
###Skip

# killall -TERM sendmail
# mv /usr/lib/sendmail /usr/lib/sendmail.org
# mv /usr/sbin/sendmail /usr/sbin/sendmail.org
# mv /etc/rc.d/init.d/sendmail /etc/rc.d/init.d/sendmail.org
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
# cp /root/qmail/qmail-start /etc/rc.d/init.d/ -f
# cp /root/qmail/databytes /var/qmail/control/ -f
# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc3.d/S98qmail

⑩. 制作Qmail控制腳本

 #!/bin/sh
case "$1" in
start)
echo "starting qmail…………"
/var/qmail/rc &
echo "start smtp service…………."
/usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb 0 smtp
/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger
smtpd 3 &
echo "start pop3 service:"
/usr/local/bin/tcpserver -H -R 0 pop3 /var/qmail/bin/
qmail-popup $HOSTNAME /home/vpopmail/bin/vchkpw
/var/qmail/bin/qmail-pop3d Maildir &
;;
stop)
echo "stop qmail:"
killall -9 tcpserver
killall -9 qmail-lspawn
;;
restart)
$0 stop
$0 start
;;
  *)
echo -n "Usage: $0 {start | stop | restart}"
exit 1
   ;;
esac
exit 0

⑾.安裝監視工具
tar zxvf daemontools-0.70.tar.gz
cd daemontools-0.70
make
make setup check
# 執行文件將安裝於/usr/local/bin中;
#安裝本工具後可以用
# mkdir /var/run/qmail
# supervise /var/run/qmail /var/qmail/rc來啟動qmail,還可以用svc來關閉或重啟qmail,用svstat監視qmail運行情況
⑿.安裝郵件列表管理
tar zxvf ezmlm-0.53.tar.gz
cd ezmlm-0.53
make
make man
make setup
⒀.安裝自動回復程序
tar zxvf autorespond-2.0.2.tar.gz
make
make install
⒁. 安裝虛擬域web方式管理
tar zxvf qmailadmin-0.81.tar.gz
cd qmailadmin-0.81
# 在安裝前首先要考慮滿足以下幾項要求:
a.是否擁有一個vpopmail用戶vchkpw
b.cgi-bin目錄的所在位置
c.ezmlm目錄的所在位置
d.autorespond目錄的所在位置

./configure --enable-cgibindir=/home/boban/public_html/cgi-bin
make
make install-strip

檢測安裝是否正確,看根據前面設置的用戶和密碼是否能夠成功登錄進去。

⒂. 安裝SqWebMail包
tar zxvf sqwebmail-3.3.7.tar.gz
cd sqwebmail-3.3.7
./configure --without-authpam --without-authuserdb
--without-authpwd --without-authshadow --without-authldap
--without-authdaemon --with-authvchkpw
--enable-imageurl=/images
--enable-cgibindir=/www/html/cmgmail/cgi-bin
--enable-imagedir=/www/html/cmgmail/images
make configure-check
make
# #當make時報錯找不到db.h,可以 cp /usr/include/db1/db.h /usr/include/db.h
make check
make install-strip
make install-configure
# 運行驗證程序
/usr/local/share/sqwebmail/libexec/authlib/authdaemond start
⒃. SqWebmail中文化
cd sqwebmail/html/
# 進入sqwebmail網頁的目錄
make clone from=en-us to=zh-cn
echo cn50 zh-cn >zh-cn/LANGUAGE_PREF
echo zh_CN >zh-cn/LOCALE
echo gb2312 >zh-cn/CHARSET
echo chinese >zh-cn/ISPELLDICT
# 然後把zh-cn下面的網頁統統給漢化就行啦
⒄. 安裝vqsignup
tar xvfz vqsignup-0.5.tar.gz
cd vqsignup-0.5
/* 如果vpopmail安裝在默認路徑,一下不需要更改 */
# a. 修改Makefile文件: FLAGS=-I/home/vpopmail/include
# 修改-I/home/vpopmail/include指到真實的vpopmail/include目錄;
# 修改下面的這行
# $(CC) $(FLAGS) -o $(BIN) $(OBJS) -L/home/vpopmail/lib -lvpopmail -lcrypt
# 修改 -L/home/vpopmail/lib 為真的vpopmail/lib的目錄
/* 或者可以在make之前設置該環境變量 */

./configure --enable-cgibindir=/home/boban/public_html/cgi-bin --enable-htmldir=/home/boban/public_html/vmail
make
make check
make install-strip
# 編輯cgi-bin目錄下的vqsignup.conf文件
# 修改"add_domain"的所有行,加上你的真實的域,把其他的行刪除掉。
# 更改vqsignup_text/*.html文件,使包含"result_*"的行的路徑指到正確的全路經。
# 修改vqsignup_text目錄下所有的文件,使它們只包含你想支持的域,你也可以定制這些頁面,使它們更加好看些。
# 修改DocumentRoot目錄下vqsignup.html文件,使它只包含你想支持的域,你也可以定制這個頁面,使它更加好看些。
# d. 測試試著注冊新用戶。

以上在本人PC電腦RedHat 7.3下和RedHat 6.2下分別通過測試!!

[補充說明]


對於以下幾行的注釋
========================
## 修改頭文件的連接數據庫的主機,用戶和密碼
## 增加mysql的支持
## 分別拷貝include和lib到 /usr/local/include/mysql和 /usr/local/lib/mysql
========================
正確理解是:
修改的頭文件是vpopmail源代碼下的vauthmysql.h,另外應該是將include下面的文件拷貝到/usr/local/include/mysql下,而非整個目錄;lib也是同樣道理。

Copyright © Linux教程網 All Rights Reserved