DKIM 未使用别名地址签名 - 非内部、未经过身份验证

DKIM 未使用别名地址签名 - 非内部、未经过身份验证

我安装了 postfix、dovecot、opendkim 和 postsrsd。我正在尝试转发来自[电子邮件保护][电子邮件保护],并使用 DKIM 进行签名。

我用帖子数以便转发的电子邮件能够通过 SPF 记录。

但是,当我从我的 iCloud 帐户发送电子邮件到[电子邮件保护],该邮件已发送到我的 Gmail 收件箱,但尚未经过 DKIM 签名。

这是我的日志的输出:

postfix/smtpd:      connect from st11p01im-asmtp001.me.com[17.172.204.151]
postfix/smtpd:      BC23640B53: client=st11p01im-asmtp001.me.com[17.172.204.151]
postsrsd:           srs_forward: <[email protected]> rewritten as <[email protected]>
postfix/cleanup:    BC23640B53: message-id=<[email protected]>
opendkim:           BC23640B53: st11p01im-asmtp001.me.com [17.172.204.151] not internal
opendkim:           BC23640B53: not authenticated
opendkim:           BC23640B53: no signature data

我看过http://seasonofcode.com/posts/setting-up-dkim-and-sr​​s-in-postfix.html并且我的所有配置文件看起来都是正确的。

从我在网上看到的信息来看,“非内部,未经身份验证”消息意味着该域名不在/etc/opendkim/TrustedHosts,但该域名在日志中列出(st11p01im-asmtp001.me.com)不是我的域名。我相信我的网站属于苹果。

是否无法使用 SRS 通过别名地址进行 DKIM 签名?

更新:
在 /etc/postfix/main.cf 中禁用 postsrsd 后,问题仍然存在。因此,问题不在于 postsrsd,而在于 opendkim 不为别名地址签名邮件。

我认为这是因为 opendkim 查看原来的发送邮件的主机名,在我的例子中是st11p01im-asmtp001.me.com,因此不签署,因为该地址未在 中列出/etc/opendkim/TrustedHosts

有什么方法可以让 opendkim 使用别名地址吗?

答案1

对于您的概念,这里是理想的工作流程

  1. 通过 postfix 接收外部邮件
  2. OpenDKIM 验证 DKIM 签名(如果存在)
  3. Postfix 重写From:标头,使其来自您控制的域,例如 example.com
  4. OpenDKIM 将 DKIM 重新签名到重写的电子邮件中(如果存在,则删除原始 DKIM 签名)。
  5. Postfix 将其传送到别名地址。

不幸的是,postfix 和 OpenDKIM 不支持在发送到最终目的地之前对 DKIM 进行签名。OpenDKIM 仅支持米尔特接口仅在 Postfix 收到电子邮件时才起作用。是的,你可以使用类似以下方法的解决方法Postfix 多实例因此第一个实例将进行重写,第二个实例将进行签名,但我认为在你的情况下这是不值得的。

答案2

我遇到了同样的问题,最后通过将我的源邮件服务器(其他邮件发送服务器)ip 添加到/etc/opendkim.conf文件中的内部主机列表中解决了这个问题:

InternalHosts           refile:/etc/opendkim/TrustedHosts
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts

这是我的/etc/opendkim/TrustedHosts文件内容:

# this was localhost defined previously from tutorials i followed:
127.0.0.1
::1
# here is my workaround adding source mail server which its ip was not internal:
11.22.33.44
my:other:server:ipv6::1

相关内容