我需要一种方法来配置 sendmail,将每封邮件的信封发件人设置为一个固定值(比如[电子邮件保护])请注意,这是不是通过任何 MASQUERADE 功能/宏(我所知道的)回答:我还想覆盖信封用户并将其设置为固定值。
编辑:另外,我不想伪装标头发送者。因此 GENERICSTABLE + MASQUERADE_ENVELOPE 也不起作用。我需要的是命令行的等效项sendmail -f [email protected]
(理由:我被客户强迫通过身份验证中继,该中继坚持要求具有给定的信封发件人地址 - 不,我并不是想规避任何反垃圾邮件措施,我只是想将 root 的邮件和其他管理内容发送到场外。它是一个应用服务器,所有邮件都由服务器发起,但发件人地址仍然需要有意义)
短暂性脑缺血。
答案1
可以使用丑陋的但非常简单。将其放入文件MAILER(smtp)
中sendmail.mc
并生成新sendmail.cf
文件。
后并 生成必须是$:
行前有一个制表符 (\t) R
。
divert(0)
取消 的效果MAILER_DEFINITIONS
。
MAILER_DEFINITIONS
SEnvFromSMTP
R$+ <@foo.org.> $: john.doe <@example.net.>
divert(0)
它在规则集处理所有基于 smtp 的邮件程序的信封发件人地址的末尾添加了额外的重写。R 行将所有 *@foo.org 地址重写为[电子邮件保护]
您可以使用以下脚本进行测试:
/usr/sbin/sendmail -bt <<END
/tryflags es
/try esmtp [email protected]
END
答案2
您可以使用特征(通用稳定)和特征(伪装信封)重写主机电子邮件域中的所有发件人地址(信封发件人和标题发件人(发件人:))。
通用表
@foo.org [email protected]
不要忘记在 sendmail.mc 中指定进行此类重写的域:
GENERICS_DOMAIN(`foo.org')
您可以使用特征(local_no_masquerade)将本地电子邮件排除在此类重写之外。
http://www.sendmail.com/sm/open_source/docs/m4/masquerading_relaying.html