在 AWS EC2 上设置了 DKIM,但 Outlook 中的邮件标头显示无

在 AWS EC2 上设置了 DKIM,但 Outlook 中的邮件标头显示无

我正在使用 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,
};

这里有一个非常简短的 Amavis 签名示例

相关内容