我有一个单独的域,为不同的网站提供了十几个子域名。 每个在Apache中都有一个单独的虚拟主机。
我将sendmailconfiguration为masquerad作为顶级域名,以便电子邮件始终来自顶级域名而不是子域名。
不幸的是,DKIM头d =和i =字段显示子域。 由于DNSlogging存储在顶级域,DKIM检查失败。
我如何告诉DKIM使用顶级域名?
请帮忙。
PS我已经尝试过每个angular度,我很难过。 我无法弄清楚Sendmail如何告诉DKIM要使用哪个子域。 而我无法弄清楚PHP如何告诉Sendmail正在使用哪个子域名。 我试着在发送邮件之前设置$ _SERVER ['SERVER_NAME']来覆盖它,但是它没有效果。 我无法弄清楚一个单一的解决办法。
问题源于重写头文件和它在这里讨论: https : //serverfault.com/questions/442180/sendmail-rewriting-headers-after-opendkim-signature
build议的解决scheme之一是在PHP中设置正确的标题,以便sendmail被赋予正确的域信息,不涉及重写。
在我的情况下,我意识到这意味着设置$ _SERVER ['SERVER_NAME']是一个简单的修复。 我曾经提到过它并不适合我,因为我认为Sendmail忽略了这个价值。 但是我再次尝试,发现Sendmail确认$ _SERVER ['SERVER_NAME']的值。 我之前没有意识到的问题是我的DKIMfilterconfiguration不正确。
在dkim-filter.conf中,我有一行:Domain * .mydomain.com
当Sendmail收到标题信息中的“mydomain.com”并调用DKIM-Milter时,DKIM无法find匹配项,因为“mydomain.com”显然与* .mydomain.com不匹配。 我把* .mydomain.com改成了mydomain.com,一切开始运作。
所以我所有的网站都要在调用mail()或wp_mail()(对于WordPress)之前设置$ _SERVER ['SERVER_NAME'] ='mydomain.com'。 一切正常。