1

我有一个域,其中包含用于不同站点的十几个子域。每个在 apache 中都有一个单独的虚拟主机。

我将 sendmail 配置为伪装为顶级域,以便电子邮件始终来自顶级域而不是子域。

不幸的是,DKIM 标头 d= 和 i= 字段显示子域。由于 DNS 记录存储在顶级域中,因此 DKIM 检查失败。

我如何告诉 DKIM 使用顶级域?

帮助?- 吉姆

ps 我已经尝试了这方面的每一个角度,我很难过。我不知道 Sendmail 如何告诉 DKIM 使用哪个子域。而且我不知道 PHP 如何告诉 Sendmail 正在使用哪个子域。我尝试在发送邮件之前将 $_SERVER['SERVER_NAME'] 设置为覆盖它,但它没有效果。我想不出一个解决方法。

4

1 回答 1

1

问题源于重写标题及其在此处讨论: https ://serverfault.com/questions/442180/sendmail-rewriting-headers-after-opendkim-signature

建议的解决方案之一是在 PHP 中设置正确的标头,以便为 sendmail 提供正确的域信息并且不涉及重写。

就我而言,我意识到这意味着设置 $_SERVER['SERVER_NAME'] 是一个简单的解决方法。我曾提到它对我不起作用,因为我认为 Sendmail 忽略了价值。但我又试了一次,发现 Sendmail 确实识别出来自 $_SERVER['SERVER_NAME'] 的值。我之前没有意识到的问题是我的 DKIM 过滤器配置不正确。

在 dkim-filter.conf 中,我有一行:Domain *.mydomain.com

当 Sendmail 在标头信息中接收“mydomain.com”并调用 DKIM-Milter 时,DKIM 无法找到匹配项,因为“mydomain.com”显然与 *.mydomain.com 不匹配。我将 *.mydomain.com 更改为 mydomain.com,一切都开始工作了。

所以我在所有网站上要做的就是在调用 mail() 或 wp_mail() (对于 WordPress)之前设置 $_SERVER['SERVER_NAME'] = 'mydomain.com' 。然后一切正常。

于 2013-01-13T17:54:03.927 回答