如何告诉 sendmail 在 dkim 之前进行伪装?

问题描述

问题:使用

:
:
dnl # opendkim
include(`/etc/mail/m4/opendkim.m4')dnl

dnl # ClamAV milter
include(`/etc/mail/m4/clamav-milter.m4')dnl

dnl # Masquerading options
MASQUERADE_AS(`example.com')dnl
MASQUERADE_DOMAIN(`example.com')dnl
MASQUERADE_DOMAIN(`example.de')dnl

FEATURE(`always_add_domain')dnl
FEATURE(`allmasquerade')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`masquerade_entire_domain')dnl
:
:

在sendmail.mc中opendkim给header加了一个签名,下一个sendmail修改了header进行伪装,使得dkim签名失效。不合理。​​

如何告诉 sendmail 在之前通过 opendkim 添加签名应用所有“伪装”选项和功能

解决方法

我正在解决同样的问题。我还没有可用的配置,但看起来 opendkim.conf 中的 ReplaceRules 设置是可以使用的。

来自手册页:

ReplaceRules (string) 指定一个包含文本替换规则列表的文件,这些规则应用于邮件头字段以 替换某些预期会更改为消息的内容 通过本地 MTA。这可以用来容纳 预期的更改,例如 MTA“伪装”对 From: 字段所做的更改 功能。

编辑:EPEL 存储库中的 2.11.0-0.1 版具有标记为实验性替换规则功能,未编译到分发包中,所以不容易获得。我放弃了编译自己的副本的想法。在 OpenDKIM 看到它们之前,在“submit.mc”中(在“submit.mc”中)让 Sendmail 重写标头要容易得多(至少在我的情况下)。

即,sendmail.mcsubmit.mc 配置文件两者都包含如下内容:

MASQUERADE_AS(`mydomain.com')
FEATURE(`masquerade_envelope')
MASQUERADE_DOMAIN(`notherhost.mydomain.com')
MASQUERADE_DOMAIN_FILE(`/my/awesome/hostlist')