如何正确配置 postfix 和 opendkim 并让接收服务器知道所有 mailed-bysigned-by 的详细信息?

如何正确配置 postfix 和 opendkim 并让接收服务器知道所有 mailed-bysigned-by 的详细信息?

我想要实现的目标——底线:邮件进入收件箱而不是垃圾邮件文件夹。

我有一台运行 postfix(邮件服务器)的服务器,并且有 3 个域。邮件服务器用于接收和发送邮件。

我正在使用 opendkim 签名并且已设置 DNS 记录。

经过长期的观察,我意识到邮件由于邮寄者和签名者分配不正确而被归为垃圾邮件。

假设我的邮件服务器是 mailserver.example.com,另外 3 个域是 example1.com、example2.com 和 example3.com

当有人发送电子邮件时[电子邮件保护],它应该显示:

[电子邮件保护]通过 mailserver.example.com

邮寄地址:mailserver.example.com

签名者:example1.com

我观察到 mailjet 和 amazon 电子邮件几乎不会进入垃圾邮件,事实是“可能”因为原始主机名/ip 反向解析为 mailed-by 和signed-by。

配置文件:

/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

我遗漏了什么地方?

答案1

首先,请删除这些值(如果使用 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

设置您的键表像那样:

mykey1 example1.com:recordname1:/path/to/domain.key
mykey2 example2.com:recordname2:/path/to/domain.key

设置您的签名表就像这样(注意通配符匹配和mykey1mykey2键表):

*@example1.com mykey1
*@example2.com mykey2

最后改变你的opendkim.conf包括签名表通过重新归档:前缀(正则表达式支持):

SigningTable    refile:/etc/opendkim/SigningTable

以及供参考的域名记录(注意记录名称1记录名称2键表):

recordname1._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=..."
recordname2._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=..."

此外,请检查您的节点主机名(您从中发送邮件的节点主机名)是否内部主机文件:

server1.example1.com
server2.example2.com
mail.example1.com
mail.example2.com

再次,你可以使用重新归档:前缀可以添加类似以下内容:

*.example1.com
*.example2.com

如果您有多个主机,并且不想手动添加所有主机。如果您只接受本地邮件,则应添加本地主机这里。

您应该检查日志文件密钥管理信息系统如果您的主人不在场,则跳过签名的通知内部主机文件。

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

相关内容