Qmail

Qmail

qmail是一個網際網路郵件傳送代理(簡寫為MTA),它運行在linux/Unix兼容系統下,是一個直接代替UNIX下Sendmail軟體的郵件傳送程式。qmail使用SMTP協定與其它系統上的MTA交換郵件。Qmail具有安裝方便、安全性高、郵件結構合理、支持SMTP服務、佇列管理、郵件反彈、基於域名的郵件路由、SMTP傳輸、轉發和郵件列表、本地(郵件)傳送、POP3 服務等強大的功能。與它的競爭對手不同的是,Qmail已經許多年沒有更新了,用戶已經習慣於通過第三方的外掛程式及補丁來使qmail增加新的功能。

基本信息

介紹

QmailQmail

作為Linux下面主流的郵件系統核心,大量著名的商業郵件系統都是在Qmail核心下開發,比如Hotmail

等。Qmail具有安裝方便、安全性高、郵件結構合理、支持SMTP服務、佇列管理、郵件反彈、基於域名的郵件路由、SMTP傳輸、轉發和郵件列表、本地(郵件)傳送、POP3 服務等強大的功能。它已經逐漸替代傳統的Sendmail成為linux下郵件系統核心的主流選擇。qmail是面向安全而設計的,作者曾經懸賞500美元來找出qmail的安全漏洞,但是直到2006年,還是沒有人能領取這筆獎金。

qmail的主要競爭對手是Exim以及Postfix。與它的競爭對手不同的是,Qmail已經許多年沒有更新了,用戶已經習慣於通過第三方的外掛程式及補丁來使qmail增加新的功能。

qmail 的原始碼現已開放為公有領域。

實戰套用部署

目錄

qmail 安裝部署1

一、準備工作1

二、LAMP殘留(執行即可)1

三、上傳所需安裝包2

四、 檢查DNS配置2

五、 設定或關閉防火牆2

六、 卸載已有的郵件系統3

七、 解壓縮netqmail-1.05.tar.gz3

八、 安裝daemontools3

九、 安裝ucspi-tcp3

十、 創建所需的用戶4

十一、 準備安裝qmail4

十二、 qmail編譯安裝5

十三、 設定管理員的信箱地址5

十四、 開啟SPF設定5

十五、 添加qmail的幫助手冊5

十六、 為qmail服務建立監控目錄和日誌檔案5

十七、 檢查服務6

十八、 安裝vpopmail7

十九、 檢查服務9

二十、 用POP3和SMTP測試10

二十一、安裝qmailadmin14

一、準備工作

1.1 需要安裝LAMP環境,mysql必須為單實例,apache支持cgi

1.2若apache、mysql的路徑不在/usr/local下,那么需要做一個軟連線

#ln –s /application/apache2.2.13 /usr/local/apache2

#ln –s /application/webserver/mysql /usr/local/mysql

//ln –s 源 目標

1.3 配置DNS,詳見《安裝配置DNS》文檔。

二、LAMP殘留(執行即可)

2.1 Put the dns and apache statr cmd to /etc/rc.local file

#echo "/usr/local/sbin/named" >>/etc/rc.local

#echo "/usr/local/apache2/bin/apachectl restart" >>/etc/rc.local

#echo "rndc reload" >>/etc/rc.local

2.2 Start named and apache services

#/usr/local/sbin/named

#/usr/local/apache2/bin/apachectl restart

#rndc reload

三、上傳所需安裝包

#cd /home/jeacen/tool/qmail

#rz

所需上傳安裝包

Daemontools-0.76.tar.gz

ucspi-tcp-0.88.tar.gz

toaster-scripts-0.7.tar.gz

vpopmail-5.4.13.tar.gz

netqmail-1.05

qmailadmin-1.2.13.tar.gz

四、 檢查DNS配置

在開始之前,確保正確設定了DNS?MX記錄.例如使用"etiantian.org"作為郵件域,

對MX記錄進行測試:在Linux下:

首先要把etiantian.org 的mx 記錄指向mx1.etiantian.org. (DNS里已設定好)

由於本文檔是本機配置的DNS,因此需執行:

#echo "127.0.0.1">/etc/resolv.conf

#host -t a mx1.etiantian.org

mx1.etiantian.org has address 10.0.0.139

#host -t mx etiantian.org

etiantian.org mail is handled by 10 mx1.etiantian.org.

#host mx1.etiantian.org

mx1.etiantian.org has address 10.0.0.139

五、 設定或關閉防火牆

a. 關閉防火牆

#service iptables stop

b. 設定防火牆

Outbound ports (tcp)

25 - SMTP

110 - POP

143 - IMAP

783 - spamassassin

993 - IMAPS

Inbound Ports (tcp)

22-SSH

25 - SMTP

80 - HTTP

110 - POP services

143 - IMAP

443 - HTTPS

783 - Spamassassin

993 - IMAPS

六、 卸載已有的郵件系統

確認沒有SMTP/POP/IMAP服務在運行,同時卸載掉mysql

#rpm -aq sendmail mysql

#service sendmail stop

#rpm -e --nodeps sendmail

#rpm -e --nodeps mysql

#rpm -aq sendmail mysql

七、 解壓縮netqmail-1.05.tar.gz

#chmod 755 -R /home/jeacen/

#cd /home/jeacen/tool/qmail

#tar -xzf netqmail-1.05.tar.gz

#cd netqmail-1.05

#./collate.sh

#cd /home/jeacen/tool/qmail

八、 安裝daemontools

#tar -zxvf daemontools-0.76.tar.gz

#cd admin/daemontools-0.76

#patch -p1 < ../../daemontools-0.76.errno.patch

#./package/install

#ps ax | grep svscan

驗證daemontools已經正常運行:

#ps ax | grep svscan

28555 ? Ss 0:00 /bin/sh /command/svscanboot

28557 ? S 0:00 svscan /service

九、 安裝ucspi-tcp

說明

ucspi-tcp軟體包由一組工具組成。它們用來簡單的建立客戶機-伺服器tcp後台程式。

TcpServer是一個比inetd安全性更好的選擇。它內建有基於規則的連線控制,能完善

地在達到預定義的最大系統負載時將連線推遲,這點比 inetd好。Tcpserver也被推薦

與qmail一同使用,因為它們是同一個作者編的程式。

參考:http://cr.yp.to/ucspi-tcp.html

安裝

#cd /home/jeacen/tool/qmail

#tar zxvf ucspi-tcp-0.88.tar.gz

#cd ucspi-tcp-0.88

#patch -p1 < ../ucspi-tcp-0.88.errno.patch

#make

#make setup check

十、 創建所需的用戶

#groupadd nofiles

#useradd alias -g nofiles -d /var/qmail/alias -s /sbin/nologin

#useradd qmaild -g nofiles -d /var/qmail -s /sbin/nologin

#useradd qmaill -g nofiles -d /var/qmail -s /sbin/nologin

#useradd qmailp -g nofiles -d /var/qmail -s /sbin/nologin

#groupadd qmail

#useradd qmailq -g qmail -d /var/qmail -s /sbin/nologin

#useradd qmailr -g qmail -d /var/qmail -s /sbin/nologin

#useradd qmails -g qmail -d /var/qmail -s /sbin/nologin

創建vpopmail用戶

#groupadd vchkpw -g 89

#useradd vpopmail -u 89 -g vchkpw

十一、 準備安裝qmail

#cd /home/jeacen/tool/qmail

#tar -xzf toaster-scripts-0.7.tar.gz

#cd netqmail-1.05/netqmail-1.05/

#vi qmail-smtpd.c +50

搜尋函式straynewline中的451改為553 第50行

當你的伺服器收到無效格式的郵件時,會傳送:"I am not going to accept that message at the moment,you can try again later",對方伺服器收到後,幾秒鐘後又會傳送同樣的郵件給你,造成多次的重複。改為553後,你的伺服器將直接傳送:"I am not going to accept that message,don't try sending it again.",告訴對方的伺服器不要再發這封無效的信件。

RedHat/Fedora用戶可能需要為TLS補丁連結一個include檔案

#ln -s /usr/kerberos/include/com_err.h /usr/include/

#rm -rf /usr/sbin/sendmail

//刪除sendmail的連結

十二、 qmail編譯安裝

#make

#make setup check

//註:qmail的補丁在vpopmail安裝之後再打。

用你自己的域名代替下面的mx1.etiantian.org

#./config-fast mx1.etiantian.org

十三、 設定管理員的信箱地址

發往root/postmaster/mailer-daemon地址的郵件將會由定義的管理員信箱接收。

將如下的“[email protected]"替換成你的管理員信箱。

#cd /var/qmail/alias

#echo "[email protected]" > .qmail-postmaster

#echo "[email protected]" > .qmail-mailer-daemon

#echo "[email protected]" > .qmail-root

#chmod 644 /var/qmail/alias/.qmail*

十四、 開啟SPF設定

#echo ./Maildir/ >/var/qmail/control/defaultdelivery

#echo 3 > /var/qmail/control/spfbehavior

十五、 添加qmail的幫助手冊

#echo MANPATH /var/qmail/man >> /etc/man.config

十六、 為qmail服務建立監控目錄和日誌檔案

#mkdir -p /var/qmail/supervise/qmail-send/log

#mkdir -p /var/qmail/supervise/qmail-smtpd/log

#mkdir -p /var/qmail/supervise/qmail-pop3d/log

#mkdir -p /var/qmail/supervise/qmail-pop3ds/log

#cd /home/jeacen/tool/qmail

#cp /home/jeacen/tool/qmail/toaster-scripts-0.7/send.run /var/qmail/supervise/qmail-send/run

#cp /home/jeacen/tool/qmail/toaster-scripts-0.7/send.log.run /var/qmail/supervise/qmail-send/log/run

#cp /home/jeacen/tool/qmail/toaster-scripts-0.7/smtpd.run /var/qmail/supervise/qmail-smtpd/run

#cp /home/jeacen/tool/qmail/toaster-scripts-0.7/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run

#cp /home/jeacen/tool/qmail/toaster-scripts-0.7/pop3d.run /var/qmail/supervise/qmail-pop3d/run

#cp /home/jeacen/tool/qmail/toaster-scripts-0.7/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run

#cp /home/jeacen/tool/qmail/toaster-scripts-0.7/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run

#cp /home/jeacen/tool/qmail/toaster-scripts-0.7/pop3ds.log.run /var/qmail/supervise/qmail-pop3ds/log/run

#echo 20 > /var/qmail/control/concurrencyincoming

#chmod 644 /var/qmail/control/concurrencyincoming

#chmod 755 /var/qmail/supervise/qmail-send/run

#chmod 755 /var/qmail/supervise/qmail-send/log/run

#chmod 755 /var/qmail/supervise/qmail-smtpd/run

#chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

#chmod 755 /var/qmail/supervise/qmail-pop3d/run

#chmod 755 /var/qmail/supervise/qmail-pop3d/log/run

#chmod 755 /var/qmail/supervise/qmail-pop3ds/run

#chmod 755 /var/qmail/supervise/qmail-pop3ds/log/run

#mkdir -p /var/log/qmail/smtpd

#mkdir -p /var/log/qmail/pop3d

#mkdir -p /var/log/qmail/pop3ds

#chown -R qmaill /var/log/qmail

Start script:

#cd /home/jeacen/tool/qmail

#cp toaster-scripts-0.7/rc /var/qmail/rc

#chmod 755 /var/qmail/rc

#cp toaster-scripts-0.7/qmailctl /var/qmail/bin/

#chmod 755 /var/qmail/bin/qmailctl

#ln -s /var/qmail/bin/qmailctl /usr/bin

#ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

#rm -rf /usr/lib/sendmail

#ln -s /var/qmail/bin/sendmail /usr/lib/sendmail

用daemontools來啟動qmail-send和qmail-smtpd

#ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

命令列表

啟動,停止,重啟,查看佇列等

qmailctl start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help

十七、 檢查服務

#netstat -an | grep 25

#ps -ef | grep qmail

#ps -efl | grep "service errors" | grep -v grep

# ps -ef | grep qmail|grep -v grep |wc –l

9

# ps -efl | grep "service errors" | grep -v grep

4 S root 3729 3289 0 78 0 - 619 pipe_w 16:03 ? 00:00:00 readproctitle service errors: ................................................................................................................................................................................................................................................................................................................................................................................................................

日誌:

/var/log/maillog

/var/log/qmail/current

/var/log/qmail/pop3d/current

/var/log/qmail/pop3ds/current

/var/log/qmail/smtpd/current

十八、 安裝vpopmail

vpopmail是一個以qmail為基礎的虛擬域管理包;其允許在一個IP位址添加多個虛擬域;並且可以不需要使用系統帳號做郵件帳號。

參考:http://vpopmail.sf.net

創建目錄,設定默認域。

#mkdir -p /home/vpopmail/etc

#echo "etiantian.org " > /home/vpopmail/etc/defaultdomain

設定smtp規則,關閉open relays

#echo '127.0.0.1:allow,RELAYCLIENT=""' > /home/vpopmail/etc/tcp.smtp

#cd /home/vpopmail/etc ; tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

設定MySQL信息,第一個vpopmail是帳號,123456為密碼,第二個vpopmail是資料庫

#echo "localhost|0|vpopmail|123456|vpopmail" > /home/vpopmail/etc/vpopmail.mysql

#chmod 640 /home/vpopmail/etc/vpopmail.mysql

#chown -R vpopmail.vchkpw /home/vpopmail/etc

在MySQL里添加vpopmail的帳號

#mysql -uroot -p'123456'

Mysql>CREATE DATABASE vpopmail;

Mysql>GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmail@localhost IDENTIFIED BY '123456';

Mysql>FLUSH PRIVILEGES;

Mysql>QUIT;

安裝:

#cd /home/jeacen/tool/qmail/

#tar zxvf vpopmail-5.4.13.tar.gz

#cd vpopmail-5.4.13

#./configure --enable-incdir=/usr/local/mysql/include/mysql --enable-libdir=/usr/local/mysql/lib/mysql --disable-roaming-users --enable-logging=p --disable-passwd --enable-clear-passwd --disable-domain-quotas --enable-auth-module=mysql --enable-auth-logging --enable-sql-logging --disable-valias --disable-mysql-limits --enable-learn-passwords

#make

#make install-strip

//帶資料庫支持 #./configure這裡的--enable-incdir 和 --enable-libdir要配置到mysql的安裝目錄下的include和lib

設定/etc/profile

#echo 'export PATH=$PATH:/home/vpopmail/bin' >> /etc/profile

#source /etc/profile

添加域,前面是域名,後面是管理員(postmaster)密碼

#ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.15 /lib/libmysqlclient.so.15

#vadddomain etiantian.org 123456

添加用戶

#vadduser -q 10485760S [email protected] 123456

#vadduser -q 10485760S [email protected] 123456

#vmoduser -c ranhongyuan [email protected]

#vmoduser -c wubin [email protected]

配置Linux支持中文

#echo "LANG="zh_CN.GB18030" ">/etc/sysconfig/I18N

#echo "SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"">>/etc/sysconfig/i18n

#echo "SYSFONT="latarcyrheb-sun16" ">>/etc/sysconfig/i18n

#cat /etc/sysconfig/i18n

#source /etc/sysconfig/i18n

設定信箱容量達到90%的警告信息

#cat >> /home/vpopmail/domains/.quotawarn.msg <

From: 信箱管理員

Reply-To: [email protected]

To: 信箱用戶

Subject: 信箱空間警告

Mime-Version: 1.0

Content-Type: text/html; charset=gb2312

Content-Transfer-Encoding: base64

您的信箱空間已經達到90%.如果想繼續使用,請刪除一些信件.

如果需要幫助,請聯繫信箱管理員:

Email : [email protected]

EOF

設定信箱已滿的警告信息

#echo "郵件被拒絕,用戶的信箱空間已滿." > /home/vpopmail/domains/.over-quota.msg

#cat /home/vpopmail/domains/.over-quota.msg

啟動腳本

#cp /home/jeacen/tool/qmail/toaster-scripts-0.7/vpopmailctl /var/qmail/bin

#ln -s /var/qmail/bin/vpopmailctl /usr/bin

#chmod 755 /var/qmail/bin/vpopmailctl

現在打上qmail的補丁

#cd /home/jeacen/tool/qmail/netqmail-1.05/netqmail-1.05

#bunzip2 -c /home/rhy/tools/qmail/qmail-toaster-0.7.2.patch.bz2 | patch -p0

#make clean

#make

#qmailctl stop

#make setup check

#chown -R vpopmail:vchkpw /var/qmail/spam

創建SSL Key

# make cert

按提示輸入公司信息

Country Name (2 letter code) [GB]:CN

State or Province Name (full name) [Berkshire]:beijing

Locality Name (eg, city) [Newbury]:beijing

Organization Name (eg, company) [My Company Ltd]:etiantian.org

Organizational Unit Name (eg, section) []:etiantian.org

Common Name (eg, your name or your server's hostname) []:etiantian.org

Email Address []:[email protected]

#make tmprsadh

#chown -R vpopmail:qmail /var/qmail/control/clientcert.pem /var/qmail/control/servercert.pem

啟動qmail

#qmailctl start

用daemontools來啟動qmail-pop3d和qmail-pop3ds

#ln -s /var/qmail/supervise/qmail-pop3d /service

#ln -s /var/qmail/supervise/qmail-pop3ds /service

十九、 檢查服務

#netstat -an | grep 110

# ps -ef | grep qmail |wc -l

16

# ps -efl | grep "service errors" | grep -v grep

4 S root 3729 3289 0 78 0 - 619 pipe_w 16:03 ? 00:00:00 readproctitle service errors:

二十、 用POP3和SMTP測試

用Outlook Express測試qmail的smtp和pop3是否正常,注意由於vpopmail支持虛擬域名,所以在outlook中設定郵件帳號時,用戶名後要加上域名,如[email protected]。smtp是帶認證的,在outlook中也要作相應設定。建議先測試正常後再進行下一步安裝。如果qmail出現問題,可查看mysql中的vpopmail資料庫,/var/log下的mysqld和maillog日誌記錄,這樣容易很快找出問題。(這個地方不存在日誌,主要通過 ps –ef |grep qmail 和 vpopmail 資料庫來看。)

相關詞條

相關搜尋

熱門詞條

聯絡我們