Friday, March 29, 2024

郵件服務器添加SPF、DKIM、DMARC、PTR提高送達率

之前寫過Linux系統下郵件服務器的搭建(Postfix+Dovecot),但是這樣發送出去的郵件多半是被當垃圾郵件處理了,所以我們還需要進行一些配置,來啟用身份驗證。

1.SPF

SPF 記錄是一種域名服務 (DNS) 記錄,可確定允許哪些郵件服務器代表您的域來發送電子郵件。

SPF的設置選項可以參考:http://www.openspf.org/SPFRecordSyntax

這裡說幾個常用的:

  1. a:所有該域名的A記錄都為通過,a不指定的情況下為當前域名
  2. ip4:指定通過的IP
  3. mx:mx記錄域名的A記錄IP可以發郵件
  4. 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. 將所有變量前面的#去掉,但是KeyFileStatistics加上# 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

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.