天天看點

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

最近發現郵件發送服務還是挺重要的。可能對于每天隻有一百來封的郵件發送需求的個人部落客來說,一個免費的郵箱提供的免費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接口與開發服務,不少的公司和企業都是用它們完成自己每月上百萬封的郵件發送服務請求:

  • 1、亞馬遜:免費超大量郵件發送服務Amazon SES和Mailgun提供SMTP和API支援
  • 2、SMTP:免費SMTP郵件服務:Mandrill,Sendgrid,Mailjet,Postmarkapp,MailChimp
  • 3、個人郵箱:各大免費郵箱郵件群發賬戶SMTP伺服器配置及SMTP發送量限制情況

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、按下Enter鍵儲存目前選擇,或者輸入數字設定預設。

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

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

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

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

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

二、Postfix配置

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

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

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

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

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郵件系統安裝與配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF

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郵件系統安裝與配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF

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郵件系統安裝與配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF

4、檢測cyrus-imapd,并建立新的郵件賬号。指令:id cyrus是用來檢視cyrus管理者賬号的,預設的就是cyrus。建立郵件賬号指令:

cyradm -u cyrus localhost (32位)
cyradm -u cyrus localhost --auth plain (64位)
cm freehao123 (建立)
lm (顯示)
quit (退出)
           
Postfix郵件系統安裝與配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF

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

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

五、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郵件系統安裝與配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF

2、将域名的MX設定為:mail.zhujis.com

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

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

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

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

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

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

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

6、執行指令:cat /var/log/maillog  可以檢視Postfix收發郵件記錄。

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

七、為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郵件系統安裝與配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和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郵件系統安裝與配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和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郵件系統安裝與配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF

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

文章出自:免費資源部落 文章中部分代碼參考blog.51yip.com部落格。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。

繼續閱讀