![最小的 Exim 路由器仅添加自定义标头](https://linux22.com/image/680720/%E6%9C%80%E5%B0%8F%E7%9A%84%20Exim%20%E8%B7%AF%E7%94%B1%E5%99%A8%E4%BB%85%E6%B7%BB%E5%8A%A0%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%87%E5%A4%B4.png)
我回答了这我目前的解决方案存在问题,但正如我所说,我对此并不 100% 满意。该问题的解决方案“如何向所有外发邮件添加自定义标头”涉及将参数添加headers_add
到现有的 Smarthost 传输中。但是,我可以看到更新或重新配置在某个时候在我不知情的情况下恢复了我的编辑。
我曾希望创建一个最小的路由器,它将在链的早期运行,并只添加所需的标头 - 此标头可以添加到全部邮件,无论最终是本地还是远程交付。但我找不到任何运行路由器的示例,添加标题,然后将所有消息传递给链中的下一个路由器。我创建了这个,它似乎工作,但我对 Exim 还很陌生,如果有人能指出缺陷或更好的方法来实现预期结果,我将不胜感激。路由器是/etc/exim4/conf.d/router/01_exim4-config_dev_header
:
dev_header:
debug_print = "R: dev_header for $local_part@$domain"
driver = redirect
headers_add = "X-Test-Dev-Header: true"
data = $local_part@$domain
self = pass
答案1
您不需要路由器来执行此操作。在 acl_smtp_data ACL 中有一个语句要容易得多(并且在我看来更简洁),它什么也不做,只是添加标头,如下所示:
warn add_header = X-Test-Dev-Header: true
看 ”在 ACL 中添加标题行“获取更多信息。
如何启用此规则
我假设您有“拆分”配置。
- 查找名为
main/0000-localmacros
或类似的文件。如果不存在,请创建它。 该文件应该包含如下行:
CHECK_DATA_LOCAL_ACL_FILE=/etc/exim4/some/file
如果没有,请添加此行。文件名可以是任意名称。
- 将上面的行写入
/etc/exim4/some/file
文件(warn add_header...
一个)。 - 重新配置 exim。在 Debian 上,通过运行命令来完成
dpkg-reconfigure exim4-config
。
此后,每封邮件都应包含您指定的标题。