因為源用了好幾年的VPS hosting供應商AlphaRacks.com突然結業, 迫於無奈要找新的hosting供應商, 最迫不得意的當然是重新建設mail server. 當然您也可以使用raspberry pi或 OrangePi. 今次使用的VPS供應商是SnowVPS.com, 而選用的OS當然也是Ubuntu 16.04吧. 既然是由零開始, 所以今次一於記錄下安裝程序方便有須要朋友可參考. 今次安裝的 smtp server 是 Postfix, 另外會加上 SPF 作為 inbound/outbound filter, 再加上 DKIM 及 DMARC 作業 email authentication. 另外我都會使用 greylist 加強 spam filter.
安裝系統前我會先登入super user(root), 如果您未能進入root的console, 可使用以下command
sudo -i
安裝postfix
Postfix是在unix/linux/FreeBSD 上的smtp靈魂,沒有它什麼email也不能收發. smtp 全寫是Simple Mail Transfer Protocol 是一個相對簡單的基於文字的協定. 收發email時需要使用DNS的MX作為交換.
安裝postfix的command其實很簡單,只需在console上打入下面這個command.
apt-get install postfix
如果中途出現選項,可以選 “internet”
完成後須要做的是修改 /etc/postfix/main.cf
我這台mail server是 alpha.unixwise.xyz, 另一台backup server是 mx.unixwise.xyz, 這兩台server是需要在DNS上config成MX (mail exchange)
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = unixwise.xyz myorigin = $myhostname alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = $myhostname, alpha.unixwise.xyz, localhost.unixwise.xyz, , localhost relayhost = mynetworks = localhost mx.unixwise.xyz 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mydestination 是說明server會收那個domain/sub-domain的email, 而 mynetwork 是說明那台機可以接駁過來而把這台機當作 relayhost
完成了這個基本步驟, 您的mail server已經可以發送email
安裝 SPF
SPF全寫是Sender Policy Framework, 最基本的SPF只需要使用任何一個SPF generator也可以, 而我今次會使用mxtoolbox.com
如上圖輸入資料後, 再把 “v=spf1 a mx …..” 貼上您的DNS record就可以了.
安裝 DKIM
DKIM全寫是DomainKeys Identified Mail,它是通過DNS上的 _domainkey 及 outbound 的 DKIM signature來確認email的合法性. 可以說是SPF的加強版本. DKIM在Linux上是有一個software需要安裝的, 它就是 opendkim 了, 安裝command如下
apt-get install opendkim opendkim-tools
安裝完成後, 再輸入下面這個command建設 opendkim的unix account
adduser postfix opendkim
當opendkim及unix account加建後, 就是生產 dkim 的 keypair時間了
opendkim-keygen -t -s dkim -d unixwise.xyz
或
opendkim-keygen -t -b 2048 -s dkim -d unixwise.xyz
兩者主要分別是key length, 上面這兩個command分別會產生 dkim.private 及 dkim.txt 兩個files. dkim.private 就是server上的 private key, 而 dkim.txt 就是 DNS 上的 DNS record.
因為方便管理, 我會把dkim.private及dkim.txt放入 /etc/opendkim
cp dkim.private /etc/opendkim/dkim.key cp dkim.txt /etc/opendkim.dkim.txt
在unix上運行opendkim, server上還需求 grant privileges, command 如下
chown -R opendkim:opendkim /etc/opendkim
到了最後一步當然就是修改config吧, 第一個耍改的就是 /etc/default/opendkim
SOCKET=”inet:8891@localhost”
把其他打上#, 只留下上面這行, 意思是說opendkim會用 port# 8881作為 service port
而另一個需要修改的就是 /etc/postfix/main.cf
## OpenDKIM milter_protocol = 6 smtpd_milters = inet:localhost:8891 non_smtpd_milters = inet:localhost:8891
把上面這幾句加到最後就可以了.
加建DMARC
DMARC全寫是Domain-based Message Authentication, Reporting & Conformance
通過DMARC policy, email server 會把inbound email 分類, 最基本的DMARC可通過mxtoolbox.com 的DMARC generator 產生
如上圖輸入資料後, 再把 “v=DMARC1;p=…..” 貼上您的DNS record就可以了.
運行 Postfix + SPF + DKIM + DMARC
從上面好幾個步驟, 新mail server的安裝已經基本完成, 但要完全投入服務, 還需要restart service
service opendkim restart service postfix restart
mail log
想知DKIM 是否成功加簽, 可以在 /var/log/mail.log 找找
Jun 18 15:33:53 alpha opendkim[1085]: 928EA2012C: DKIM-Signature field added (s=dkim, d=alpha.unixwise.xyz) Jun 18 15:33:53 alpha postfix/qmgr[1566]: 928EA2012C: from=<[email protected]>, size=1255, nrcpt=1 (queue active) Jun 18 15:33:53 alpha postfix/smtp[1649]: Untrusted TLS connection established to gmail-smtp-in.l.google.com[108.177.111.27]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits) Jun 18 15:33:54 alpha postfix/smtp[1649]: 928EA2012C: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[108.177.111.27]:25, delay=0.56, delays=0.09/0.01/0.27/0.18, dsn=2.0.0, status=sent (250 2.0.0 OK 1560843234 m15si17045590ioc.3 - gsmtp) Jun 18 15:33:54 alpha postfix/qmgr[1566]: 928EA2012C: removed