之前寫過Linux系統下郵件服務器的搭建(Postfix+Dovecot),但是這樣發送出去的郵件多半是被當垃圾郵件處理了,所以我們還需要進行一些配置,來啟用身份驗證。
1.SPF
SPF 記錄是一種域名服務 (DNS) 記錄,可確定允許哪些郵件服務器代表您的域來發送電子郵件。
SPF的設置選項可以參考:http://www.openspf.org/SPFRecordSyntax
這裡說幾個常用的:
- a:所有該域名的A記錄都為通過,a不指定的情況下為當前域名
- ip4:指定通過的IP
- mx:mx記錄域名的A記錄IP可以發郵件
- all:結束標誌,“-”表示只允許設置的記錄為通過,“~”表示失敗,通常用於測試,“+”表示忽略SPF
例如我的:v=spf1 a mx -all
,則表示允許A記錄和MX記錄IP收發郵件。添加的方法是在域名DNS解析設置一個txt記錄,主機記錄為空或者@,記錄值為v=spf1 a mx -all
,其他可以忽略。
2.DKIM
DomainKeys Identified Mail的縮寫,域名密鑰識別郵件標準。
下載安裝EPEL:
64 bit:
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
32 bit:
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
安裝opendkim:
yum install opendkim
生成DKIM key (修改紅色部分域名)
# 請替換下面的域名 export domain=lomu.me mkdir /etc/opendkim/keys/$domain cd /etc/opendkim/keys/$domain opendkim-genkey -d $domain -s default chown -R opendkim:opendkim /etc/opendkim/keys/$domain echo "default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain/default.private" >> /etc/opendkim/KeyTable echo "*@$domain default._domainkey.$domain" >> /etc/opendkim/SigningTable
生成之後打開/etc/opendkim/keys/domain.com/default.txt
,裡面就是DKIM key,需要添加到DNS,主機記錄為default._domainkey
,記錄值為括號裡面的(去掉引號)。
修改openDKIM設置
vi /etc/opendkim.conf
1. 將Mode
改為 Mode sv
2. 將Domain
改為 Domain lomu.me
(lomu.me是之前設置的域名) 3. 將所有變量前面的#
去掉,但是KeyFile
、Statistics
加上#
4. 再把SigningTable /etc/opendkim/SigningTable
改成SigningTable refile:/etc/opendkim/SigningTable
設置Postfix
vi /etc/postfix/main.cf 加上下面幾行 # opendkim setup smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = inet:127.0.0.1:8891 milter_default_action = accept
重啟服務
service opendkim restart service postfix restart chkconfig opendkim on
PS: 第一次啟動如果出現 Generating default DKIM keys: hostname: Unknown host 可以在 /etc/hosts 上面加上域名,例如:
127.0.0.1 lomu.me localhost localhost.localdomain localhost4 localhost4.localdomain4
3.DMARC
DMARC協議是有效解決信頭From偽造而誕生的一種新的郵件來源驗證手段,為郵件發件人地址提供強大保護,並在郵件收發雙方之間建立起一個數據反饋機制。
具體信息可以看這裡:http://dmarc.org/overview/。
DMARC記錄中常用的參數解釋
p:用於告知收件方,當檢測到某郵件存在偽造我(發件人)的情況,收件方要做出什麼處理,處理方式從輕到重依次為:none為不作任何處理;quarantine為將郵件標記為垃圾郵件;reject為拒絕該郵件。初期建議設置為none。
rua:用於在收件方檢測後,將一段時間的匯總報告,發送到哪個郵箱地址。
ruf:用於當檢測到偽造郵件時,收件方須將該偽造信息的報告發送到哪個郵箱地址。
例如我設置的是v=DMARC1;p=reject;rua=me@lomu.me
,意思是拒絕偽造郵件,並且將一段時間的匯總報告發送給我。
添加到DNS
添加TXT記錄,主機名:_dmarc,記錄值:v=DMARC1;p=reject;rua=me@lomu.me
4.PTR
PTR記錄,是電子郵件系統中的郵件交換記錄的一種;另一種郵件交換記錄是A記錄(在IPv4協議中)或AAAA記錄(在IPv6協議中)。PTR記錄常被用於反向地址解析。
PTR記錄也就是IP反向解析,我們常見的解析都是將域名A記錄解析到IP,PTR則是將IP反向解析到對應的域名,通過設置PTR可以提高發信方的信譽,從而提高到達率。
PTR設置
通過觀察,一般國外的VPS都會直接將購買的時候的hostname設置為PTR記錄值,但是我買的阿里雲的並沒有,所以這個需要提交售後工單要求客服幫你添加的,添加的值為安裝postfix的時候設置的myhostname,例如我的是mail.lomu.me。
添加好了以後可以通過以下命令查看
dig -x IP
如果看到了PTR記錄為你的域名那就說明成功了。
到這裡,基本上只要不發垃圾郵件,郵件的到達率應該就沒啥問題了。
這裡給大家推薦一個測試工具:http://www.mail-tester.com/,只要給頁面上的郵箱隨便發一封郵件,然後點擊按鈕提交就可以看到測試結果,裡面會有一些優化建議,非常好用。
原文地址:http://lomu.me/post/SPF-DKIM-DMARC-PTR