如何正確配置 postfix 和 opendkim 並讓接收伺服器知道所有郵寄者簽名的詳細資訊?
我想要實現的目標 - 底線:郵件進入收件箱而不是垃圾郵件文件夾。
我有一個執行 postfix(郵件伺服器)的伺服器,我有 3 個域。郵件伺服器用於傳入和傳出郵件。
我正在使用 opendkim 簽名,並且有 DNS 記錄。
經過長時間的觀察,我意識到由於不正確的郵寄和簽名分配,郵件會進入垃圾郵件。
考慮一下,我的郵件伺服器是 mailserver.example.com,其他 3 個域是 example1.com、example2.com 和 example3.com
當有人從 admin@example1.com 發送電子郵件時,它應該顯示:
admin@example1.com 通過 mailserver.example.com
郵寄者:mailserver.example.com
簽名人:example1.com
我觀察到 mailjet 和 amazon 電子郵件幾乎不會進入垃圾郵件,事實是,“也許”是因為原始主機名/IP 反向解析為郵寄者和簽名者。
配置文件:
/etc/opendkim/Keytable
mvs._domainkey.example1.com example1.com:selc:/etc/opendkim/keys/example1_com/selc.private mvs._domainkey.example2.com example2.com:selc:/etc/opendkim/keys/example2_com/selc.private
/etc/opendkim.conf
Domain example1.com KeyFile /etc/opendkim/keys/example1_com/selc Selector selc Domain example2.com KeyFile /etc/opendkim/keys/example2_com/selc Selector selc Canonicalization simple Mode sv Syslog yes LogWhy yes UMask 022 UserID opendkim:opendkim KeyTable /etc/opendkim/KeyTable SigningTable /etc/opendkim/SigningTable ExternalIgnoreList /etc/opendkim/TrustedHosts InternalHosts /etc/opendkim/TrustedHosts Socket inet:34562@localhost X-Header no
最後
/etc/opendkim/SigningTable
example1.com selc._domainkey.example1.com example2.com selc._domainkey.example2.com
我在哪裡失踪?
首先,請刪除這些值(如果您使用 KeyTable,則不需要它們):
Domain example1.com KeyFile /etc/opendkim/keys/example1_com/selc Selector selc Domain example2.com KeyFile /etc/opendkim/keys/example2_com/selc Selector selc
像這樣設置你的KeyTable:
mykey1 example1.com:recordname1:/path/to/domain.key mykey2 example2.com:recordname2:/path/to/domain.key
像這樣設置您的SigningTable(注意萬用字元匹配以及來自KeyTable的mykey1和mykey2):
*@example1.com mykey1 *@example2.com mykey2
最後通過refile *:*前綴(正則表達式支持)更改您的opendkim.conf以包含SigningTable :
SigningTable refile:/etc/opendkim/SigningTable
和域記錄供參考(注意KeyTable中的recordname1和recordname2):
recordname1._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=..." recordname2._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=..."
此外,請檢查InternalHosts文件中是否有您的節點主機名(從中發送郵件) :
server1.example1.com server2.example2.com mail.example1.com mail.example2.com
同樣,您可以使用*refile:*前綴來添加以下內容:
*.example1.com *.example2.com
如果您有多個主機並且不想手動包含所有主機。如果您只接受本地郵件,則應在此處添加localhost。
如果您的主機在InternalHosts文件中失去,您應該檢查日誌文件以獲取有關跳過簽名的DKIM通知。
opendkim.conf 範例:
# Set these values (Syslog, SyslogSuccess, LogWhy) for debugging and check syslog for details Syslog yes SyslogSuccess yes LogWhy yes UMask 002 UserID opendkim:opendkim KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/mail/SigningTable InternalHosts refile:/etc/mail/hosts