配置 postfix 以对系统生成的电子邮件进行 DKIM 签名

配置 postfix 以对系统生成的电子邮件进行 DKIM 签名

我的 Web 托管服务器已安装并运行 Postfix。该 Postfix 还在STARTTLS端口 587 上开放,供授权用户(目前只有我、我自己和我)使用 DKIM 签名后向任何域发送电子邮件。

我通过 Outlook 发送的每封电子邮件都验证了我的身份,没有任何问题。所有 DMARC 报告均未显示任何错误。问题在于 Web 应用程序通过该 Postfix 发送电子邮件时。

由于我使用 Apache进行 PHP 托管,因此所有电子邮件都是通过标准方式(sendmail???)mod-itk生成并提交给 Postfix。[email protected]

但这样一来它们就不是经过 DKIM 签名的了。请考虑以下情况:

$ mail [email protected]
Subject: Test DKIM
Hello
.
EOT

Port25 回复:

----------------------------------------------------------
DomainKeys check details:
----------------------------------------------------------
Result:         neutral (message not signed)
ID(s) verified: [email protected]
DNS record(s):

----------------------------------------------------------
DKIM check details:
----------------------------------------------------------
Result:         neutral (message not signed)
ID(s) verified: 

Postfix 日志不显示dkimproxy交互。

在发布我的配置之前,让我们重复一下情况并提出问题。

目前,当我通过端口 587 上的 SMTP/TLS 发送电子邮件时,它会获得 DKIM 签名。当服务器上的进程使用mail命令或 PHP 内置邮件函数发送电子邮件时,邮件没有得到由 dkimproxy 签名。

问题是:如何使用 签署来自服务器本身的每封电子邮件dkimproxy

配置粘贴到http://pastebin.ca/2374363。请注意,我dkimproxy.out目前只启用了

答案1

您仅将 dkim SIGNING 添加到提交端口。

Postfix 将 smtp 提交与 pickup 分开处理(通过 sendmail 命令提交的邮件通过 pickup 进入 postfix)

在 postfix 中你应该在 main.cf 中使用 dkim milter

smtpd_milters = inet:localhost:10027
non_smtpd_milters = inet:localhost:10027

第一行用于 SMTP 提交(端口 587)

第二行是通过取件进入的邮件

需要注意的是,Postfix 内部生成的退回邮件和 NDR 报告不会经过 DKIM 签名

参考http://www.postfix.org/MILTER_README.html

答案2

默认情况下,Postfix 生成的邮件不会被 non_smtp_milters 处理。

要改变该行为,请设置以下变量,但请注意它还启用 header_cheks 和 body_checks:

internal_mail_filter_classes = bounce, notify

https://www.postfix.org/postconf.5.html#internal_mail_filter_classes https://www.postfix.org/MILTER_README.html

相关内容