postfix 未向 opendkim 报告 FROM 地址

postfix 未向 opendkim 报告 FROM 地址

我正在尝试为 Postfix SMTP 服务器设置 DKIM 电子邮件签名。

该服务器将由本地网络上的不同服务使用。

我已经生成了 DKIM 密钥对,将其添加到我的域,并且能够成功地从服务器本身发送电子邮件,如下所示:

me@server:~$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server.lan ESMTP Postfix (Ubuntu)
HELO example.com
250 server.lan
MAIL FROM: [email protected]
250 2.1.0 Ok
RCPT TO: [email protected]
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
To:[email protected]
Subject:Testing from server

hello
.
250 2.0.0 Ok: queued as AAD604EA1CC2

该消息已收到,并带有正确的 DKIM 签名。

但是,如果我在本地网络上的另一台机器上执行完全相同的操作(仅限telnet server.lan 25),则不会包含 DKIM 签名,并且收件人不知道是谁发送了电子邮件。

我发现这个条目/var/log/mail.log与此相关:

Jul 30 04:28:16 server opendkim[25664]: AAD604EA1CC2: can't determine message sender; accepting

所以我认为 postfix 没有FROM正确设置地址。那么它为什么没有这样做?我该如何修复它?

提前致谢...

工作站交易过程中的整个日志如下:

Jul 30 15:56:29 server postfix/smtpd[6795]: warning: database /etc/aliases.db is older than source file /etc/aliases
Jul 30 15:56:29 server postfix/smtpd[6795]: connect from workstation.lan[192.168.1.63]
Jul 30 15:57:24 server postfix/smtpd[6795]: 2C35E4EA1DD1: client=workstation.lan[192.168.1.63]
Jul 30 15:58:18 server postfix/cleanup[6799]: 2C35E4EA1DD1: message-id=<>
Jul 30 15:58:18 server opendkim[25664]: 2C35E4EA1DD1: can't determine message sender; accepting
Jul 30 15:58:18 server postfix/qmgr[25810]: 2C35E4EA1DD1: from=<[email protected]>, size=272, nrcpt=1 (queue active)
Jul 30 15:58:19 server postfix/smtp[6802]: 2C35E4EA1DD1: to=<[email protected]>, relay=ASPMX.L.GOOGLE.COM[173.194.70.26]:25, delay=67, delays=66/0.02/0.26/1.1, dsn=2.0.0, status=sent (250 2.0.0 OK 1343656739 a59si1127667wel.70)
Jul 30 15:58:19 server postfix/qmgr[25810]: 2C35E4EA1DD1: removed

答案1

MTA 从不负责设置邮件头;这是您的邮件客户端或 MUA 的问题。

也就是说,如果 postfix 检测到没有任何 From: 标头的消息,它会将 MAIL FROM 发件人地址添加为 From: 标头;这有据可查。

答案2

我刚刚遇到这个问题并解决了它。这里的关键是邮件日志中的一行:“无法确定邮件发件人;正在接受”。问题是收到的邮件格式不正确,并且缺少 opendkim 执行 DKIM 所需的一些 RFC 必需的标头。

默认情况下,opendkim 配置为允许这些消息通过,因为它无法使用可用信息执行任何操作,既无法确认也无法否认该消息已通过 DKIM,并且它谨慎行事,决定不丢弃消息,除非明确配置。

使用 telnet 发送邮件时触发此问题的原因是,您没有输入 opendkim 期望的所有 RFC 要求的标头。如果您添加了它们(具体来说,opendkim 似乎只检查 From 和 Date 标头,而似乎根本不关心 Date 标头实际包含的内容)

如果您愿意丢弃所有违反 RFC 且缺少发件人或日期标头的邮件,您可以进入 opendkim.conf 并更改或添加“RequiredHeaders yes”行。这样做可能相当安全,因为即使大多数垃圾邮件都能正确完成这些操作,但丢弃邮件时始终存在一些合法邮件也可能被丢弃的风险。

答案3

可能很多人在通过 telnet 手动与 SMTP 服务器交互来测试他们刚安装的 Postfix 时偶然发现了这个问题,一旦通过身份验证,他们就会执行如下操作:

...
mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Hi there
this is just a basic test message
.
250 2.0.0 Ok: queued as 2E7FB27F

这导致接收端看到“dkim=permerror(错误消息/签名格式)”,并因此产生负的垃圾邮件分数。

其他回复可能不太清楚,所以我将用粗体和简单的英语重申这一点:From:您有责任在您的data部分中添加以便 DKIM 触发!也就是说,您的消息必须包含From:(理想情况下也包含To:Subject:,但这并不重要):

...
邮件发件人:[电子邮件保护]
250 2.1.0 确定
收件地址:[电子邮件保护]
250 2.1.5 确定
数据
354 以 结束数据。
从:[电子邮件保护]
到:[电子邮件保护]
主题:测试
你好呀
这只是一个基本的测试消息
250 2.0.0 确定:排队为 2E7FB27F

答案4

将其添加到 postfix 配置中:

always_add_missing_headers = 是

local_header_rewrite_clients = permit_mynetworks permit_sasl_authenticated permit_inet_interfaces

相关内容