使用Mail-In-A-Box自建電子郵箱和郵件中繼伺服器

 本次我將介紹如何使用國外已經發展較為成熟的Mail-in-a-Box套件搭建專業的私有自建郵件伺服器, 並試圖將其作為郵件中繼伺服器, 讓第二臺伺服器使用此伺服器發信. 很遺憾, 對於這樣一個強大成熟的郵件伺服器套件, 國內尚無任何的介紹和使用.

第一部分 郵件伺服器的搭建

Mail-in-a-Box套件的安裝條件如下: 1, 一個域名; 2, 一個VPS或獨立伺服器, 記憶體要求768MB以上, 系統必須是Ubuntu 14.04 LTS 64bit; 3, Mail-in-a-Box安裝過後不能和其他任何應用類程序 (比如MySQL, PHP, Apache等) 共存, 因此我建議您在安裝前重灌系統; 4, 有部分國人垃圾主機商喜歡使用一種垃圾的XenSystem VPS控制面板, 該面板有一個極其傻逼的特性是會在重啟的時候重置主機名和hosts文件, 這對於任何一個郵件伺服器來說都是災難性的, 因此不能在使用XenSystem控制面板的VPS上使用這個套件. 5, 因為未知的原因,OVH的伺服器無法安裝Mail-in-a-Box. 確定您的伺服器滿足了以上條件之後, 我們就開始操作. 教程中我們以12.34.56.78代替您的IP地址, 以mail.example.com代替您的主機名.

1, 主機名的設定

拿到一個新的VPS或者獨立伺服器之後要設定主機名,這是使用主機服務的良好習慣,是所有Linux伺服器使用者的基本功,也是使用任何郵件類服務所必須的操作。一個合格的主機名應當具有這樣的格式:

1
xxx.example.com

有些伺服器支援example.com這類的主機名,不過對於郵件伺服器,請務必設定成xxx.example.com這種格式。在這裡我們以mail.example.com為例介紹一下怎樣設定主機名(hostname).

首先,修改系統內的自解析文件。編輯: /etc/hosts 在文件中新增一行(或者修改已有的行):

1
12.34.56.78       mail.example.com          mail

然後在SSH中執行:

1
2
echo ‘mail’ > /etc/hostname
hostname -F /etc/hostname

這時,主機名應該設定完畢了。我們執行hostname命令,應該能看到”mail” (不含引號), 執行hostname -f命令,應該能看到”mail.example.com” (不含引號). 如果這裡沒有設定正確(比如,如果你輸入hostname命令檢查的時候看到的仍然是長主機名mail.example.com, 說明沒有設定正確),請不要繼續。

2, 域名的解析

域名的解析是重要的, 尤其是對於一個郵件伺服器. Mail-in-a-Box支援DNS的自動設定, 因此我強烈建議您將您的域名交給您的伺服器來解析, 而不是用註冊商或其他第三方的解析服務. 如果您想詳細瞭解DNS設定在配置郵件伺服器中的作用, 後面我會詳細介紹一下域名的各項郵件解析記錄對於郵件的收發產生了怎樣的作用.

第一步,我們需要註冊兩個NS伺服器。請到您的域名註冊商處,註冊兩個NS伺服器(中國的好多傻逼註冊商新建NS伺服器居然還要收費,國外都是免費的,告別國產保平安),分別為ns1.mail.example.com和ns2.mail.example.com且指向您的VPS/獨服的IP地址。

第二步,記下您的域名當前的解析記錄,然後將您的域名的DNS伺服器設定為我們剛才新註冊的兩個地址。

第三步,新增Reverse DNS, 將12.34.56.78解析到mail.example.com. 國外VPS使用者請在您的VPS控制面板中自行設定Reverse DNS, 國外獨服使用者請您提交工單申請設定Reverse DNS. 國內主機商都是傻逼,不支援Reverse DNS.

3, 安裝Mail-in-a-Box

1
2
wget https://mailinabox.email/setup.sh
sh setup.sh

安裝過程中管理員郵箱請按照xxx@example.com的格式輸入; 系統的主機名請輸入mail.example.com. 其他的設定預設即可。

第二部分,使用Mail-in-a-Box郵件伺服器進行郵件中繼

1, 郵件伺服器與郵件中繼的工作機制

在介紹郵件中繼伺服器之前,我們有必要介紹一下郵件伺服器的工作流程。

一封郵件從誕生到傳輸到投遞,大致需要經過三個主要部件: MUA, MTA, MDA. MUA全稱是Mail User Agent, 即郵件使用者代理,它的作用是將使用者寫好的郵件傳送給MTA, Mail Transfer Agent, 即郵件中轉代理. MTA在接到郵件後,判斷該郵件的收件人是否在本域;若在本域,則轉交MDA (Mail Delivery Agent) 投遞至目標使用者的收件箱;若收件人不在本域,則轉發至目標使用者所在域的MTA, 並進而傳達給該域的MDA進行投遞。因此我們可以作這樣的歸納,即一般情況下A域MTA扮演的角色有二: (1) 接受A域MUA的郵件並傳給B域MTA; (2) 接受B域 (或A域) MTA的郵件並傳給A域MDA.

然而還有一種特殊的情況是這樣的: A域MTA接受B域MUA的郵件並傳給C域MTA. 這很有意思——郵件伺服器A的MTA既接收了外域MUA傳來的郵件,又把收到的郵件投遞到另一外域的郵箱。這種情況我們即稱為郵件中繼。通常,如果我們已經有了一臺郵件伺服器,其他伺服器就可以透過這臺郵件伺服器進行中繼傳送而無需再額外搭建郵件服務了。

2, 配置和使用郵件中繼伺服器

我們仍以Mail-in-a-Box郵件伺服器為例,講解郵件中繼伺服器的使用。按照第一部分的操作步驟,我們假設您已經成功安裝好了Mail-in-a-Box伺服器 (稱為A), 那麼A已是現成可用的郵件中繼伺服器。在這裡扮演中繼角色的, 是A伺服器上面的Postfix. 在A上新建一個合格的使用者,比如test@example.net密碼為pass, 下面我們配置另一臺伺服器B (主機名: xxx.example.net) 以期透過A進行郵件中繼傳送。

首先,我們在B伺服器上安裝postfix. 執行:

1
apt-get install postfix

需要注意的是,我們並不將B伺服器上的postfix作為MTA使用,只是作為一個MUA, 因此我們在安裝時需要選擇Satellite System.

安裝完畢後,需要手動配置Postfix. 新建文件/etc/postfix/credential, 內容為:

1
mail.example.com   test@example.net : pass

給該文件設權,執行:

1
chmod 600 /etc/postfix/credential

然後在文件/etc/postfix/main.cf尾部新增下面語句:

1
2
3
4
5
6
7
8
9
10
11

mydestination =

smtp_tls_security_level = verify

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

smtp_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/etc/postfix/credential

smtp_sasl_tls_security_options =

在SSH中執行:

1
postmap /etc/postifx/credential && service postfix reload

然後我們配置SSL. 將A伺服器的/home/user-data/ssl/ssl_certificate.pem複製至B伺服器相同路徑並複製到/usr/local/share/ca-certificates/ssl_certificate.crt, 執行

1
update-ca-certificates

這樣,B伺服器就會透過已安裝好Mail-in-a-Box的A伺服器發信了(你需要安裝SMTP伺服器比如Dovecot/Exim/Mailman或者使用系統mail/mailx等命令發信).

第三部分,郵件伺服器對域名解析的要求

很多新手(甚至很多主機商本身)都不知道,一個郵件伺服器對於域名解析的要求有多嚴苛。大部分人,只知道搭建域名郵箱需要新增MX記錄。少部分人知道新增SRV記錄。還有很多重要的DNS記錄,比如Reverse DNS, DKIM, DNSSEC, TLSA等等,鮮為人知。殊不知,傳送的郵件會被很多的郵箱直接標記為垃圾郵件,其重要原因就是沒有設定好DNS解析。

這裡,我簡要介紹一下一個合格的域名郵箱對於域名解析的要求。

1, MX記錄。

MX記錄大家都知道,我這裡也不再囉嗦。但必須要提及的一個重要常識是同域名的MX記錄和CNAME記錄一般不能共存。準確地說,是CNAME記錄和其他所有型別記錄 (DNSSEC除外) 一般不能共存。有部分CDN廠商還有很多傻逼國內主機商,他們的虛擬主機不提供IP繫結而是讓你把你的域名CNAME到一個子域名上面,這時如果你再用同樣的域名設定MX記錄用企業郵箱,那麼你的郵箱收信將會經常掉信。這是CNAME記錄的解析方式所決定的。因此,儘管部分DNS解析服務提供商支援同域名CNAME與MX解析,請不要這麼做,否則你的MX記錄將可能無效。

2, Reverse DNS

國人如果沒有用過國外主機商的產品,基本不會知道這是什麼東西。因為所有國內的主機商都不支援Reverse DNS. Reverse DNS將IP地址解析到郵箱伺服器主hostname上,旨在提供一種途徑,使得收件方能夠追溯郵件的來路。若rDNS未設定,將被諸多郵件系統標記為可疑。正確設定rDNS可以將SpamAssassin的Spam Score評估降低0.3分左右。

3, DKIM, DMARC, SPF

同樣的,國內的傻逼企業郵箱服務提供商不會告訴你怎樣設定DKIM和DMARC的。這些DNS記錄旨在提供一種途徑,使得收件方能夠知道是“你”或者說是從“這臺伺服器”傳送了這封郵件,而不是由其他人冒用你的地址傳送的郵件。正確設定這些記錄可以將SpamAssassin評估分降低0.5~1.0左右。

4, DNSSEC

說多了都是淚。有次我打電話給萬網(中國最大的虛擬主機和網際網路域名服務提供商)的客服問能不能設定com域名的DNSSEC記錄。結果客服一臉懵逼:“那是什麼?”忍不住再罵一遍國產主機和域名服務商都是傻逼。DNSSEC記錄需要在域名註冊商處設定,它提供了額外的驗證途徑,以提高來自該域郵件的可信度。

綜上,本文介紹了使用技術成熟的MIAB套件搭建私有郵件伺服器和郵件中繼伺服器的方法、郵件伺服器的工作原理及其對域名DNS記錄的要求。

本文作者為香菇肥牛,感謝付出。

原文標題是:使用MIAB搭建專業的私有郵件伺服器和郵件中繼伺服器

原文連結為https://qing.su/article/122.html

评论

此博客中的热门博文

2026 临时信箱/拋棄式 Email 服務完整清單(共 98 個)