1. 程式人生 > >linux最簡單搭建郵件伺服器

linux最簡單搭建郵件伺服器

一、概述:

  在配置郵件伺服器之前,先解釋幾個概念。

  通常使用Email都很容易,但是Internet的郵件系統是通過幾個複雜的部分連線而成的,對於終端使用者而言,我們熟悉的Outlook,Foxmail等都是用來收信和發信的,稱之為MUA:Mail User Agent,郵件使用者代理。

  MUA並非直接將郵件傳送至收件人手中,而是通過MTA:Mail Transfer Agent,郵件傳輸代理代為傳遞,Sendmail和Postfix就是扮演MTA的角色。

一封郵件從MUA發出後,可能通過一個或多個MTA傳遞,最終到達MDA:Mail Delivery Agent,郵件投遞代理,郵件到達MDA後,就存放在某個檔案或特殊的資料庫裡,我們將這個長期儲存郵件的地方稱之為郵箱。

  一旦郵件到達郵箱,就原地不動了,等使用者再通過MUA將其取走,就是用Outlook,Foxmail等軟體收信的過程。

  所以一封郵件的流程是:

  發件人:MUA --傳送--> MTA -> 若干個MTA... -> MTA -> MDA <--收取-- MUA:收件人

  MUA到MTA,以及MTA到MTA之間使用的協議就是SMTP協議,而收郵件時,MUA到MDA之間使用的協議最常用的是POP3或IMAP。

  需要注意的是,專業郵件服務商都有大量的機器來為使用者服務,所以通常MTA和MDA並不是同一臺伺服器,因此,在Outlook等軟體裡,我們需要分別填寫SMTP傳送伺服器的地址和POP3接收伺服器的地址。

Linux系統下郵件伺服器的搭建(Postfix+Dovecot)

  對於網站來說,傳送各種例如註冊通知的郵件是很基本的一個需求,之前我一直用的是騰訊的企業郵箱,感覺挺方便的,直接可以繫結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位

Postfix-2.8.12.tar.gz      Postfix MTA(郵件傳輸代理)
Dovecot-2.1.8.tar.gz      IMAP 和 POP3 郵件伺服器
Postfixadmin-2.3.5.tar.gz    採用PHP編寫的開源WEB郵箱及域名賬號管理工具
Roundcubemail-0.8.1.tar.gz  採用PHP編寫的開源IMAP郵件WEB客戶端

安裝過程

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.防火牆設定

/sbin/iptables -A INPUT  -p tcp --dport 25 -j ACCEPT

/sbin/iptables -A INPUT  -p tcp --dport 110 -j ACCEPT

/sbin/iptables -A INPUT  -p tcp --dport 143 -j ACCEPT

突破封鎖25口的轉發

/sbin/iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10025 -j REDIRECT --to-ports 25

7.郵箱使用

一切都弄好以後,就可以使用Foxmail等第三方軟體來收發郵件了。在這裡需要說一下,系統使用者就是郵件的使用者,例如root,就是一個郵箱使用者,郵箱是[email protected],密碼就是root的密碼,所以需要建立使用者,只要使用useradd建立使用者,再使用passwd設定密碼。

好了,假如我們建立一個admin的使用者:

# 建立使用者
useradd admin
#設定密碼,會要求輸入兩次密碼
passwd admin

接下來登入Foxmail,如圖:

點選建立,進入:

這裡需要注意,郵件賬號是admin,並不是郵箱,另外我們沒有配置SSL,所以也不要勾選。 接下來點選建立,如果一切正常的話,你已經成功了。

後續

這篇文章已經完整的介紹了搭建一個簡單郵件伺服器的方法,但是在使用中還是會遇到很多問題,最大的問題莫過於經常被認定為垃圾郵件,所以還需要進行一些其他配置,例如:spf、dkim。