Exim:使用预定义的发件人发送每封电子邮件

Gre*_*SAT 9 exim

我们在我们的服务器上使用 Exim 仅从本地自动用户发送电子邮件,如 root、cron 等。

我们必须将每个可能的用户指定为/etc/email-addresses. 例如:

root: alert@example.com  
cron: alert@example.com  
backup: alert@example.com` 
Run Code Online (Sandbox Code Playgroud)

这使我们能够接收生成的每封电子邮件。

问题是当我们出于任何原因添加用户时(例如,当我们添加一个包时,一些添加用户时),我们可能忘记将此用户添加到/etc/email-addresses. 大多数时候这不是问题,但这并不干净。而且整体方法不干净。
我们想将 Exim 配置为使用相同的源地址发送每封电子邮件。即每封发送的电子邮件来自alert@example.com

一种方法是使用通配符或正则表达式,/etc/email-addresses但不支持这种方式。
我目前不了解 Exim 不足以弄清楚如何以某种方式修改它。
理想情况下,Exim 应该/etc/email-addresses首先查看,如果不匹配,则使用预定义的地址。但这是非常次要的。

这个地址有两个地方用到:
1. 当 Exim 向FROM:smtp 服务器发送命令时
2. 头部内部

编辑:
重写部分是来自 Debian 的原始部分

begin rewrite  
.ifndef NO_EAA_REWRITE_REWRITE  
*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses} \  
{$value}fail}" Ffrs  
*@ETC_MAILNAME "${lookup{${local_part}}lsearch{/etc/email-addresses} \
{$value}fail}" Ffrs  
.endif
Run Code Online (Sandbox Code Playgroud)

Gre*_*SAT 9

一个更好的方法:

修改重写部分:change lsearchby wildlsearch(两行要改)。这允许使用通配符和正则表达式/etc/email-addresses

所以/etc/email-addresses可以包含这种东西: 文件是从上到下处理的。所以如果一封电子邮件被发送到 root,它实际上被发送到 root@example.com。其他所有电子邮件都会发送到 alert@example.com
root: root@example.com
*: alert@example.com

  • 在 Ubuntu 上,我必须在 /etc/exim4/exim4.conf.template 中更改 `wildlsearch`,运行 `sudo update-exim4.conf` 和 `sudo /etc/init.d/exim4 restart` (2认同)