CentOS 6.2大型企業郵件系統(一)

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]!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章