我正在使用 Postfix 配置 AWS EC2 实例,并使用包括反向 DNS 的 Route53 对其进行设置。我测试过我可以发送电子邮件,Outlook 可以正常接收,但 Gmail 却不能。我遵循本指南安装和配置 opendkim,当我使用这个验证器,我得到此消息表明这是一条有效的 DKIM 记录。但是,当我使用这个验证器,我收到“此邮件不包含 DKIM 签名”的回复。此外,当我将电子邮件发送到 Outlook 时,它会进入主收件箱,但我从身份验证中得到以下结果:
Authentication-Results: spf=pass (sender IP is x.x.x.x)
smtp.mailfrom=mail.example.com; mail.outlookserver.com; dkim=none (message not
signed) header.d=none;mail.outlookserver.com; dmarc=pass action=none
header.from=mail.example.com;compauth=pass reason=100
的 IP 地址x.x.x.x
替代了我的邮件服务器的 IP 地址,并且mail.example.com
是我的邮件服务器的 FQDN。mail.outlookserver.com
是 Outlook 邮件服务器。显然,SPF 和 DMARC 记录通过了,但 DKIM 记录没有通过。我在 AWS Route 53 中设置了 DKIM 记录,如下所示这里和这里,我可以进行挖掘并让它返回预期值,$key
我的公钥在哪里:
andreaskralj@linuxdev:~$ dig +short TXT mail._domainkey.example.com
"v=DKIM1; h=sha256; k=rsa; " "p=$key"
我不确定为什么 Outlook 或其他验证器认为我的 DKIM 记录无效。如果有人知道我可以尝试什么或需要更多信息,请告诉我。
编辑:
我尝试添加以下几行/etc/postfix/master.cf
:
pickup unix n - y 60 1 pickup
-o smtpd_milters=inet:localhost:8892
-o non_smtpd_milters=inet:localhost:8892
接送线已经存在;我根据@Lasse Michael Mølgaard 的建议添加了 -o 行。不幸的是,我的电子邮件标题仍然显示 DKIM 设置为无。
答案1
根据我的评论提出的建议:
我使用 amavis 签署我的邮件,因此我在默认的接听电话线路下方添加了一行-o content_filter=...
,因此现在它显示。
pickup unix n - y 60 1 pickup
-o content_filter=amavis:[127.0.0.1]:10026
我想知道您是否可以以smtpd_milters
同样non-smtpd_milters
的方式使用?
编辑
如果您想使用 Amavis DKIM 签署邮件,您需要对主文件进行一些调整。
默认设置是当您将某些内容转发到 Amavis(在我的情况下是端口 10026)时,Amavis 将使用高一个端口(在我的情况下是 10027)返回结果。
因此我的文件中有以下条目master.cf
:
amavis unix - - y - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o smtp_bind_address=
127.0.0.1:10027 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtp_send_xforward_command=yes
-o milter_default_action=accept
-o milter_macro_daemon_name=ORIGINATING
-o disable_dns_lookups=yes
Amavis 知道如何将签名的结果发送回 Postfix 的方式来自以下部分/etc/amavis/conf.d/50-user
:
# :* = send to incoming Port + 1
$forward_method = 'smtp:127.0.0.1:*';
$notify_method = 'smtp:127.0.0.1:*';
$interface_policy{'10026'} = 'ORIGINATING';
$policy_bank{'ORIGINATING'} = {
originating => 1,
};