對於網站來說,發送各種例如注冊通知的郵件是很基本的一個需求,之前我一直用的是騰訊的企業郵箱,感覺挺方便的,直接可以綁定QQ郵箱接收郵件,網站配置一下SMTP也就可以發出郵件。
但是在前幾天由於有重要信息需要立即通知用戶,所以選擇了群發郵件的方式。在當我以為一切都是辣么完美的時候,陸續有用戶過來問我什么情況,我都會跟他們說請查收郵件,但是有好幾個人說並沒有任何郵件,於是我試着再發一次,結果返回了錯誤提示。在網上找了下原因,后來看到這個:各大免費郵箱郵件群發賬戶SMTP服務器配置及SMTP發送量限制情況,才知道是因為發信數量限制了。
所以只好另尋出路了,然后我在知乎上面找到了很多個提供郵件發送的服務商,大概有這些:SendGrid、MailChimp、Amazon SES、SendCloud、Mailgun等等,在看了不少人的建議之后,我選擇了Mailgun。
Mailgun注冊和配置都挺簡單,很快我就成功的發出了第一封郵件,懷着這封欣喜,我又發送了幾封郵件,可是悲劇發生在第三封郵件,Mailgun后台有詳細的發送記錄,這個非常不錯,在后台我看到我的郵件被拒收了,原因大概是該服務器IP的發信頻率超過騰訊郵箱限制。所以這里就涉及到IP的問題,目前第三方的郵件發送服務普遍都是共享IP(后面還試過SendCloud、),而共享IP並不能確定是否已經達到接收方的數量限制,一旦達到了就無法再發送。這就是說還需要使用獨立IP才能保證郵件有較高的到達率,接着就看了各家的獨立IP價格,一般都是二十幾甚至四十幾美刀一個月,這對於我們這種小站長郵件需求不高的來說確實有點貴,買台VPS都不用這個價吧。
經過上面這些折騰,也算明白了如果要想順暢的發出郵件的話,除了花錢,就只有自己搭建一個郵件服務器了。
好了,下面開始進入正題,教你搭建一個簡單的郵件服務器。
用於搭建的服務器信息
阿里雲 Centos 6.5 32位
安裝過程
1.安裝Postfix
yum -y install postfix
安裝完成還需要替換系統自帶的sendmail:
rpm -e sendmail 或者 yum remove sendmail
修改MTA(默認郵件傳輸代理)
alternatives --config mta
然后直接回車即可。
檢查一下是不是已經設置成功了。
alternatives --display mta
第一行可以看到mta的狀態。 例如:mat - status is manual.
2.安裝Dovecot
yum -y install dovecot
3.配置Postfix
編輯/etc/postfix/main.cf
,可以下載下來修改,也可以使用vi進行編輯:
vi /etc/postfix/main.cf
修改如下:
# 75行: 取消注釋,設置hostname myhostname = mail.lomu.me # 83行: 取消注釋,設置域名 mydomain = lomu.me # 99行: 取消注釋 myorigin = $mydomain # 116行: 修改 inet_interfaces = all # 119行: 推薦ipv4,如果支持ipv6,則可以為all inet_protocols = ipv4 # 164行: 添加 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 264行: 取消注釋,指定內網和本地的IP地址范圍 mynetworks = 127.0.0.0/8, 10.0.0.0/24 # 419行: 取消注釋,郵件保存目錄 home_mailbox = Maildir/ # 571行: 添加 smtpd_banner = $myhostname ESMTP # 添加到最后 # 規定郵件最大尺寸為10M message_size_limit = 10485760 # 規定收件箱最大容量為1G mailbox_size_limit = 1073741824 # SMTP認證 smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
修改好了之后使用/etc/rc.d/init.d/postfix start
開啟postfix,使用chkconfig postfix on
將postfix開機啟動。
4.配置Dovecot
修改如下:
[root@mail ~]# vi /etc/dovecot/dovecot.conf # 26行: 如果不使用IPv6,請修改為* listen = * [root@mail ~]# vi /etc/dovecot/conf.d/10-auth.conf # 9行: 取消注釋並修改 disable_plaintext_auth = no # 97行: 添加 auth_mechanisms = plain login [root@mail ~]# vi /etc/dovecot/conf.d/10-mail.conf # 30行: 取消注釋並添加 mail_location = maildir:~/Maildir [root@mail ~]# vi /etc/dovecot/conf.d/10-master.conf # 88-90行: 取消注釋並添加 # Postfix smtp驗證 unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } [root@mail ~]# /etc/rc.d/init.d/dovecot start Starting Dovecot Imap: [ OK ] [root@mail ~]# chkconfig dovecot on
到這里,我們的郵件服務器就已經搭建成功了。
5.域名解析
最后別忘了還需要進行域名解析工作。
添加一個子域名mail
,A記錄解析到服務器IP。
再添加一個MX記錄,主機記錄為空,記錄值為上面解析的二級域名mail.lomu.me
,優先級10。
注意:解析生效可能需要一段時間。
6.郵箱使用
一切都弄好以后,就可以使用Foxmail等第三方軟件來收發郵件了。在這里需要說一下,系統用戶就是郵件的用戶,例如root,就是一個郵箱用戶,郵箱是root@domain.com,密碼就是root的密碼,所以需要創建用戶,只要使用useradd
創建用戶,再使用passwd設置密碼。
好了,假如我們創建一個admin的用戶:
# 創建用戶 useradd admin #設置密碼,會要求輸入兩次密碼 passwd admin
接下來登錄Foxmail,如圖:
點擊創建,進入:
這里需要注意,郵件賬號是admin,並不是郵箱,另外我們沒有配置SSL,所以也不要勾選。 接下來點擊創建,如果一切正常的話,你已經成功了。