Postfix郵件服務搭建

最近發現郵件發送服務還是挺重要的。可能對於每天只有一百來封的郵件發送需求的個人博主來說,一個免費的郵箱提供的免費SMTP郵件發送服務就可以滿足了,但是對於一些大型的網站、論壇和平臺,每天的郵件發送量可以達到上萬封以上,免費的郵件發送服務是不能滿足需要了。

市場上已經有了不少的付費郵件發送服務,但是終歸是第三方的郵件發送服務,在郵件發送方式、郵件內容等方面肯定要受到不少的限制。與其花大量的時間尋找更好的付費郵件服務,還不如自己動手利用VPS或者服務器搭建一個屬於自己的郵件發送平臺,搭建起來並不複雜,使用起來很方便。

本文就來分享一下用Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF搭建郵件系統的過程。Postfix是Wietse Venema在IBM的GPL協議之下開發的MTA開源軟件,可以用來代替sendmail,特點是免費、靈活、快速和兼容性好,可以承擔大量的郵件發送任務。

Cyrus-IMAP和Cyrus-sasl是兩個用來提供pop和imap服務,功能和Dovecot 一樣,都是開源的IMAP 和POP3郵件服務器。SPF是反垃圾組件,主要的作用就是通過SPF讓別人驗證自己,域名添加txt記錄,向支持SPF功能的郵件服務器提供驗證信息。同時驗證別人,配置郵件服務器支持 SPF,對每封進入的郵件進行SPF驗證。

經典的郵件系統搭建一般是:postfix(作爲發送郵件服務器)+Cyrus-IMAP和Cyrus-sasl或者dovecot(作爲接收郵件服務器)+mysql(作爲數據庫)+ SPF反垃圾驗證。當然有人可能還要求有Webmail,有了Webmail界面就能像企業郵局那樣在線管理郵件了。

如果暫時不想折騰一個郵件服務器,也可以使用第三方的郵件發送服務,這些郵件發送服務提供了豐富了API接口與開發服務,不少的公司和企業都是用它們完成自己每月上百萬封的郵件發送服務請求:

Postfix郵件系統安裝與配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF

一、Postfix,Cyrus-IMAP,Cyrus-sasl 安裝

1、CentOS上執行命令:

yum install postfix
yum install cyrus*  

2、刪除系統自帶的Sendmail。

rpm -e sendmail
或者
yum remove sendmail

3、修改MTA(默認郵件傳輸代理)

alternatives --config mta

4、按下回車鍵保存當前選擇,或者輸入數字設置默認。

Postfix設置默認

5、也可以直接輸入命令:

/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix

6、檢查一下是不是已經設置成功了。

alternatives --display mta

Postfix檢查是不是成功了

二、Postfix配置

1、Postfix的配置文件是main.cf,路徑是:/etc/postfix/main.cf。

Postfix配置路徑

2、用文本編輯器打開它進行相應的修改,建議將這個文件下載到本地使用Notepad++等常用的代碼編輯器修改。

Postfix查找並修改

3、主要是將下面的代碼前的#號去掉,如果沒有則直接手動添加(用 hostname 可以查看本機主機名)。

myhostname = localhost  //76行,改成本機名稱
mydomain = freehao123.com   //82行,設置域名
myorigin = $mydomain   //97行,去掉註釋
inet_interfaces = all  //112行,去掉註釋
mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain //163行,去掉註釋
mynetworks = 192.168.0.0/24, 127.0.0.0/8  //263行,設置內網和本地IP
local_recipient_maps =  //209行,去掉註釋
smtpd_banner = $myhostname ESMTP unknow //568行,去掉註釋,然後把$mail_name ($mail_version)改成unknow

//在main.cf文件的底部加上以下內容
smtpd_sasl_auth_enable = yes     //使用SMTP認證
broken_sasl_auth_clients = yes   //讓不支持RFC2554的smtpclient也可以跟postfix做交互。
smtpd_sasl_local_domain = $myhostname  // 指定SMTP認證的本地域名
smtpd_sasl_security_options = noanonymous //取消匿名登陸方式
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination //設定郵件中有關收件人部分的限制
smtpd_sasl_security_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination //設置允許範圍
message_size_limit = 15728640     //郵件大小
mailbox_transport=lmtp:unix:/var/lib/imap/socket/lmtp   //設置連接cyrus-imapd的路徑

三、Cyrus-IMAP,Cyrus-sasl 配置

1、Cyrus-sasl 配置,編輯:vim /etc/sasl2/smtpd.conf (注意:如果是32位的CentOS,應該是:vim /usr/lib/sasl2/smtpd.conf ),加入以下代碼,主要是設置記錄Log模式,設置smtp尋找cyrus-sasl的路徑。

log_level: 3       
saslauthd_path:/var/run/saslauthd/mux  

Postfix添加代碼

2、cyrus-imapd的主要配置文件有:/etc/sysconfig/cyrus-imapd,/etc/cyrus.conf,/etc/imapd.conf。imapd.conf還包含非常多的參數,例如郵件存儲目錄、管理員賬號、連接認證方式等等,具體的需要參考官網。

四、啓動Postfix,Cyrus-IMAP,Cyrus-sasl 

1、 執行以下命令啓動Postfix,Cyrus-IMAP,Cyrus-sasl  :

/etc/init.d/postfix start
/etc/init.d/saslauthd start
/etc/init.d/cyrus-imapd start  

Postfix啓用服務

2、執行命令:netstat -tpnl |grep smtpd ,可以查看端口是否正常打開 。執行命令:service postfix status 可以查看Postfix狀態。以下命令可以設置開機啓動:

chkconfig postfix on
chkconfig cyrus-imapd on

3、檢測Cyrus-sasl  。先設置一下cyrus密碼,命令:passwd cyrus  ,然後使用命令:testsaslauthd -u cyrus -p '123546' 來測試SMTP是否正常。

Postfix檢測是否成功

4、檢測cyrus-imapd,並創建新的郵件賬號。命令:id cyrus是用來查看cyrus管理員賬號的,默認的就是cyrus。創建郵件賬號命令:

cyradm -u cyrus localhost (32位)
cyradm -u cyrus localhost --auth plain (64位)
cm freehao123 (新建)
lm (顯示)
quit (退出)

Postfix創建新的賬號

5、 生成的郵件目錄是放在/var/spool/imap中,以目錄形式存放。查看:ls /var/spool/imap/  ,目錄名是用戶名的首字母。 

Postfix生成目錄

五、Dovecot安裝與配置

1、需要說明的是Dovecot和Cyrus-IMAP,Cyrus-sasl只需要選擇其中一項即可,否則會出現端口被佔用無法啓用的情況,執行命令安裝:


 yum -y install dovecot

2、 編輯Dovecot的配置文件:/etc/dovecot/dovecot.conf,主要是設置protocols = imap pop3,default_mail_env = maildir:~/Maildir是設置郵件目錄,新版的配置文件中如果被註釋,直接去掉#號。

3、在/etc/postfix/main.cf 配置中除了按照上面的方法進行相應的修改外,還記得加上:

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

4、然後加入以下配置文件:

auth default {
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
 }
mechanisms = plain login
}

4、啓動dovecot:/etc/rc.d/init.d/dovecot start,重啓dovecot:/etc/init.d/dovecot restart,將dovecot設置爲開機啓動:chkconfig dovecot on 。

六、Postfix郵件系統使用

1、 要想使用Postfix郵件系統,你需要先把郵件系統的域名解析到服務器上,添加一個別名Mail,記錄值指向服務器IP,例如:mail.zhujis.com

Postfix設置好A記錄

2、將域名的MX設置爲:mail.zhujis.com

Postfix添加域名MX

3、待域名DNS生效後,你就可以用Linux自帶的Mail來發一封測試郵件:mail -s 'I am Freehao123' [email protected]  < /etc/imapd.conf

Postfix發送測試郵件

4、這是QQ郵箱收到了Postfix郵件系統發來的郵件。

Postfix收信

5、如果CentOS沒有安裝中文字體,會出現郵件亂碼。

Postfix中文亂碼

6、執行命令:cat /var/log/maillog  可以查看Postfix收發郵件記錄。

Postfix查看郵件記錄

七、爲Postfix郵件系統安裝SPF

1、執行以下命令給Postfix郵件系統安裝SPF:

wget https://launchpad.net/postfix-policyd-spf-perl/trunk/release2.010/+download/postfix-policyd-spf-perl-2.010.tar.gz
perl -MCPAN -e 'install version'
perl -MCPAN -e 'install NetAddr::IP'
perl -MCPAN -e 'install Mail::SPF'
perl -MCPAN -e 'install Sys::Hostname::Long'
tar zxvf postfix-policyd-spf-perl-2.010.tar.gz
cd postfix-policyd-spf-perl-2.010
cp postfix-policyd-spf-perl /usr/libexec/postfix/policyd-spf-perl

Postfix安裝SPF

2、如果出現錯誤,可能是Perl沒有安裝完整,執行以下命令安裝:

wget http://cpan.communilink.net/authors/id/A/AN/ANDK/CPAN-1.9600.tar.gz
tar -zxvf CPAN-1.9600.tar.gz
cd CPAN-1.9600
perl Makefile.PL
make
make install

3、編輯SPF的配置文件:/etc/postfix/master.cf,加入以下內容

policy  unix  -       n       n       -       0       spawn
user=nobody argv=/usr/local/postfix/libexec/postfix-policyd-spf-perl

Postfix添加SPF記錄

4、然後再編輯Poxtfix配置文件,添加以下內容(如果已經有了,去掉前面的註釋號)。

smtpd_recipient_restrictions =reject_unauth_destination,check_policy_service unix:private/policy

5、最後重新載入 postfix 服務:postfix reload

八、postfix郵件系統小結

1、postfix郵件系統可以用來替代sendmail發送郵件,如果你不想使用Pop和Imap服務,可以只安裝postfix,並將其設置爲默認的發郵件服務,這樣服務器在發郵件時就是通過postfix了。

Postfix使用POP3

2、postfix郵件系統配合maildorp、extmail、extman等就要可以搭建一個企業郵局了,如果再配合好SPF反垃圾郵件策略,就可以滿足日常大量的郵件收發任務了,且供多人同時使用。

 

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