我安装了 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-srs-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
对于您的概念,这里是理想的工作流程
- 通过 postfix 接收外部邮件
- OpenDKIM 验证 DKIM 签名(如果存在)
- Postfix 重写
From:
标头,使其来自您控制的域,例如 example.com - OpenDKIM 将 DKIM 重新签名到重写的电子邮件中(如果存在,则删除原始 DKIM 签名)。
- 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