Kar*_*rma 3 email-server postfix dkim domainkeys
我想要实现的目标 - 底线:邮件进入收件箱而不是垃圾邮件文件夹。
我有一台运行 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
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
最后
/etc/opendkim/SigningTable
example1.com selc._domainkey.example1.com
example2.com selc._domainkey.example2.com
Run Code Online (Sandbox Code Playgroud)
我在哪里失踪?
首先,请删除这些值(如果您使用 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
Run Code Online (Sandbox Code Playgroud)
像这样设置您的KeyTable:
mykey1 example1.com:recordname1:/path/to/domain.key
mykey2 example2.com:recordname2:/path/to/domain.key
Run Code Online (Sandbox Code Playgroud)
设置您SigningTable这样的(注意通配符匹配和mykey1和mykey2从KEYTABLE):
*@example1.com mykey1
*@example2.com mykey2
Run Code Online (Sandbox Code Playgroud)
最后更改您的opendkim.conf以通过refile :前缀(支持正则表达式)包含SigningTable:
SigningTable refile:/etc/opendkim/SigningTable
Run Code Online (Sandbox Code Playgroud)
供参考(注和域中记录recordname1和recordname2从KEYTABLE):
recordname1._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=..."
recordname2._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=..."
Run Code Online (Sandbox Code Playgroud)
此外,请检查InternalHosts文件中是否有您的节点主机名(您从中发送邮件):
server1.example1.com
server2.example2.com
mail.example1.com
mail.example2.com
Run Code Online (Sandbox Code Playgroud)
同样,您可以使用refile:前缀来添加如下内容:
*.example1.com
*.example2.com
Run Code Online (Sandbox Code Playgroud)
如果您有多个主机并且不想手动包含所有主机。如果您只接受本地邮件,则应在此处添加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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8379 次 |
| 最近记录: |