Postfix是目前流行的一套郵件傳輸代理軟件(MTA),其作者Wietst Venema最初開發這套軟件時就對總體設計、擴展能力、可用性及系統安全等方面進行了充分的考慮。由於Postfix在穩定、效率、安全和可用性上的優勢,使得很多大型的郵件服務提供商都從原有的MTA軟件向Postfix過度,而新僅誕生的郵件產品也大多采用了Postfix。網易、Tom和新浪都將原有的Qmail更換爲Postfix,可見Postfix在大規模郵件系統中有比較普遍的應用,當然,Postfix也完全適用設計中小型的郵件系統,因爲Postfix在保證了效率、安全、擴展等方面優勢的同時,還具有配置簡單的特點。
Postfix與其他MTA的對比
在衆多MTA軟件中,最有影響的應該是Sendmail、Qmail和Postfix。Sendmail是最古老的MTA之一(由於辰逸加入的晚,Sendmail好像只配置過一次~~~)也擁有一批固定的使用者;Qmail是新生代的代表,其特點是速度快、體積小,並且容易配置安裝。Postfix起源於1996年,它採用模塊化設計,使用了大量優秀的技術,已達到安全高效的目的。Postfix發展到現在已經成爲功能非常豐富、擴展性和安全性非常強的優秀MTA軟件。
1、Sendmail
MTA軟件的很多現金功能都是在Sendmail上最先實現的。但Sendmail也有典型的歷史問題,主要是整個程序沒有實現良好的模塊化,運行時需要SID權限,以及配置文件複雜難懂,這些是阻礙Sendmail更好普及應用的一些客觀問題。
2、Qmail
Qmail是新生代的MTA代表,實現了模塊化設計,避免了SID問題,基本功能齊全,配置較Sendmail簡單,而且用戶也很廣泛。但Qmail最近幾年的開發工作基本停止,補丁程序也相對零亂,這些都是長期使用Qmail的用戶郵件服務提供商不得不認真考慮的問題。另外,Qmail的擴展性並不是很好,經常需要打補丁來完成功能的擴展。
3、Postfix
Postfix在設計上可以說是最爲有沒的,其實現了良好的模塊化,郵件的處理流程是通過調用各個功能模塊來完成,在效率、功能、可用性、擴展及安全等方面都考慮的比較充分。
Postfix部署準備(LAMP整合安裝這裏省略。本次部署基於CentOS 6.2 Web系統集成與安全)另外。整個編譯部署過程十分漫長,那麼如果沒有耐心。基本上沒必要繼續參看本文,對於yum直接安裝的案例在互聯網中大有人做,如果你覺得make 三部曲能帶給你快感。同時你和我一樣。喜歡centos 那麼你可以聯繫我。一起探討,最後本文可能會寫後二和三。同時我可能會在後面修改本文。postfix個人認爲不是找找資料對着做做就能整合的。單純的postfix 感覺也沒什麼用。不如找個webmail裝在windows server上。起碼不用懂腦筋了!
QQ交流羣41405569
首先安裝DNS,實現解析[我採用的yum,但省去了chroot的安裝]
[root@itchenyi yum.repos.d]# yum install bind-9*
BIND的主配置文件內容如下:
[root@mail ~]# cat /etc/named.conf | grep -v "^/" options { directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; }; zone "itchenyi.com" IN { type master; file "itchenyi.com.zone"; }; zone "24.168.192.in-addr.arpa" IN { type master; file "192.168.24.zone"; allow-update { none; }; };
BIND的區域解析文件如下[注:沒有安裝chroot]:
[root@mail ~]# cat /var/named/itchenyi.com.zone $TTL 86400 @ IN SOA itchenyi.com. root ( 0 1D 1H 1W 3H ) @ IN NS ns.itchenyi.com. ns IN A 192.168.24.220 mail IN A 192.168.24.220 pop3 IN CNAME mail smtp IN CNAME mail @ IN MX 10 mail
BIND的反向解析區域文件如下:
[root@mail ~]# cat /var/named/192.168.24.zone $TTL 86400 @ IN SOA 24.168.192.in-addr.arpa. root ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS ns.itchenyi.com. 220 IN PTR mail.itchenyi.com. @ IN MX 5 mail.itchenyi.com. 220 IN PTR www.itchenyi.com.
使用nslookup進行測試[如果你沒有這個命令請裝 bind-util]
[root@itchenyi ~]# service named restart Stopping named: . [ OK ] Starting named: [ OK ] [root@itchenyi ~]# nslookup pop3.itchenyi.com [root@itchenyi ~]# nslookup mail.itchenyi.com [root@itchenyi ~]# dig -t mx itchenyi.com
編譯postfix時把sasl驗證改爲dovecot。並且使用自動安裝方式,省去交互式安裝需要手動按回車的麻煩,我這裏是安照默認安裝的路徑。
[root@mail yum.repos.d]# yum install openssl openssl-devel db* #postfix會依賴這些包,yum直接弄掉~
添加庫搜索路徑 | 添加用戶和組
[root@mail postfix]# groupadd -g 1200 postdrop [root@mail postfix]# groupadd -g 1000 postfix [root@mail postfix]#useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix [root@mail yum.repos.d]# echo "/software/mysql/lib/mysql/" >> /etc/ld.so.conf && ldconfig -v [root@mail postfix]# tar zxf postfix-2.8.2.tar.gz [root@mail postfix]# cd postfix-2.8.2 [root@mail postfix-2.8.0]# chmod 755 ./postfix-install [root@mail postfix-2.8.0]# ln -sv /software/mysql/lib/mysql/ /usr/lib/mysql "/usr/lib/mysql/mysql" -> "/software/mysql/lib/mysql/" [root@mail postfix-2.8.0]# ln -sv /software/mysql/include/mysql/ /usr/include/mysql "/usr/include/mysql" -> "/software/mysql/include/mysql/"
開始弄postfix:
[root@mail postfix]# tar zxf postfix-2.8.1.tar.gz [root@mail postfix]# cd postfix-2.8.1 [root@mail postfix-2.8.1]# make makefiles CCARGS='-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\" -DUSE_TLS -I/usr/include' AUXLIBS='-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto' [root@mail postfix-2.8.1]# make [root@mail postfix-2.8.1]# ./postfix-install -non-interactive install_root=/ tempdir=/tmp config_directory=/etc/postfix command_directory=/usr/sbin/ daemon_directory=/software/postfix data_directory=/var/lib/postfix html_directory=no mail_owner=postfix mailq_path=/usr/bin/mailq manpage_directory=/usr/local/man newaliases_path=/usr/bin/newaliases queue_directory=/var/spool/postfix readme_directory=no sendmail_path=/usr/sbin/sendmail setgia_group=postdrop
生成別名二進制文件,這是個重要的步驟,不做會導致postfix工作效率極低:
[root@mail postfix-2.8.1]# newaliases
[root@chenyi postfix-2.8.2]# postconf -m | grep mysql #你必須確保你的結果裏有mysql,否則你得重新來過! mysql
修改postfix配置文件
[root@mail postfix-2.8.1]# vi /etc/postfix/main.cf #下面是你需要修改的
76 myhostname = mail.itchenyi.com #指定運行postfix郵件系統的主機的主機名,默認情況下,其值被設定爲本地機器名
83 mydomain = itchenyi.com #指定你的域名
99 myorigin = $mydomain #指明發件人所在的域名
113 inet_interfaces = all #指定postfix系統監聽的網絡接口
162 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
163 mail.$mydomain, www.$mydomain, ftp.$mydomain #指定postfix接收郵件時收件人的域名,即你的postfix系統要接收到哪個域名的郵件
260 mynetworks = 192.168.24.0/28, 127.0.0.0/8
啓動postfix
[root@chenyi postfix-2.8.2]# postfix start postfix/postfix-script: starting the Postfix mail system [root@chenyi postfix-2.8.2]# useradd chenyi1 && echo "123456" | passwd --stdin chenyi1 [root@chenyi postfix-2.8.2]# useradd chenyi2 && echo "123456" | passwd --stdin chenyi1
到這裏就可以用telnet測試一下了:
[root@chenyi postfix-2.8.2]# telnet mail.itchenyi.com 25 Trying 192.168.24.220... Connected to mail.itchenyi.com. Escape character is '^]'. 220 mail.itchenyi.com ESMTP Postfix ehlo mail.itchenyi.com 250-mail.itchenyi.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from:[email protected] 250 2.1.0 Ok rcpt to:[email protected] 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> chenyi mail test . 250 2.0.0 Ok: queued as A8E8D1A0331 quit 221 2.0.0 Bye Connection closed by foreign host.
切換用戶收收郵件~~
[root@chenyi ~]# su - chenyi2 [chenyi2@chenyi ~]$ mail #該命令屬於mailx包 Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/chenyi2": 1 message 1 new >N 1 [email protected] Sat Mar 2 03:36 13/503 & 1 Message 1: From [email protected] Sat Mar 2 03:36:34 2013 Return-Path: <[email protected]> X-Original-To: [email protected] Delivered-To: [email protected] Date: Sat, 2 Mar 2013 03:36:05 +0800 (CST) From: [email protected] Status: R chenyi mail test & q Held 1 message in /var/spool/mail/chenyi2
安裝dovecot
[root@chenyi postfix]# tar zxf dovecot-1.1.4.tar.gz [root@chenyi postfix]# useradd -M -s /sbin/nologin dovecot [root@chenyi postfix]# cd dovecot-1.1.4 [root@chenyi dovecot-1.1.4]# ./configure --prefix=/software/dovecot --sysconfdir=/etc --with-mysql=/software/mysql/lib --with-sql [root@chenyi dovecot-1.1.4]# make && make install [root@chenyi dovecot-1.1.4]# cp /etc/dovecot-example.conf /etc/dovecot.conf [root@chenyi dovecot-1.1.4]# vi /etc/dovecot.conf 23 protocols = pop3 imap 47 disable_plaintext_auth = no 87 ssl_disable = yes 208 mail_location = maildir:~/Maildir
再次修改main.cf
[root@chenyi dovecot-1.1.4]# vi /etc/postfix/main.cf 415 home_mailbox = Maildir/
[root@chenyi dovecot-1.1.4]# vi /etc/pam.d/dovecot 1 auth required pam_nologin.so 2 auth include system-auth 3 account include system-auth 4 session include system-auth
啓動dovecot
[root@chenyi dovecot-1.1.4]# /software/dovecot/sbin/dovecot -c /etc/dovecot.conf [root@chenyi dovecot-1.1.4]# echo "/software/dovecot/sbin/dovecot -c /etc/dovecot.conf" >> /etc/rc.local
查看查看端口
[root@chenyi dovecot-1.1.4]# /software/dovecot/sbin/dovecot -c /etc/dovecot.conf [root@chenyi dovecot-1.1.4]# netstat -pant | grep 110 #143你自己測把。。。。 tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 20068/dovecot
測試測試
[root@chenyi dovecot-1.1.4]# telnet mail.itchenyi.com 110 Trying 192.168.24.220... Connected to mail.itchenyi.com. Escape character is '^]'. +OK Dovecot ready. user chenyi1 +OK pass 123 +OK Logged in. quit +OK Logging out. Connection closed by foreign host.
安裝個webmail試試[如果對你自己充滿了信心,請略過這裏]
[root@chenyi postfix]# tar zxf squirrelmail-webmail-1.4.22.tar.gz [root@chenyi postfix]# mv squirrelmail-webmail-1.4.22 /software/apache2/htdocs/webmail [root@chenyi postfix]# cd /software/apache2/htdocs/webmail/ [root@chenyi webmail]# mkdir -p attach data/ [root@chenyi webmail]# chown -R daemon:daemon attach/ data/ [root@chenyi webmail]# chmod 730 attach/ [root@chenyi webmail]# cp config/config_default.php config/config.php 118 $domain = 'itchenyi.com'; 146 $smtpServerAddress = 'localhost'; 151 $smtpPort = 25; 210 $imapPort = 143; 231 $imap_server_type = 'dovecot'; 499 $data_dir = '/software/apache2/htdocs/webmail/data/'; 517 $attachment_dir = '/software/apache2/htdocs/webmail/attach/';
重啓apache服務
[root@chenyi webmail]# /software/apache2/bin/apachectl stop [root@chenyi webmail]# /software/apache2/bin/apachectl start
訪問該網站
登錄chenyi2 收到了郵件(收發過程省略)
QQ交流羣41405569
到這裏,第一階段算是完成,後面將集成更爲強大的Web郵件平臺 [ExtMail]-[ExtMan]!