我们在服务器上使用 Exim 仅从本地自动用户(如 root、cron 等)发送电子邮件。
我们必须指定所有可能的用户/etc/email-addresses
。例如:
root: [email protected]
cron: [email protected]
backup: [email protected]`
这使我们能够收到生成的每封电子邮件。
问题是,当我们出于某种原因添加用户时(例如,当我们添加一个包时,有些人会添加一个用户),我们可能会忘记将此用户添加到/etc/email-addresses
。大多数情况下这不是问题,但这并不干净。而且整个方法也不干净。
我们希望将 Exim 配置为使用相同的源地址发送每封电子邮件。即,每封发送的电子邮件都来自[email protected]
一种方法是使用通配符或正则表达式,/etc/email-addresses
但不支持。
我目前对 Exim 了解不够,无法弄清楚如何以某种方式修改它。
理想情况下,Exim 应该首先进行检查/etc/email-addresses
,如果不匹配,则使用预定义的地址。但这是次要的。
此地址有两个用途:
1. EximFROM:
向 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
答案1
一个更好的方法:
修改重写部分:更改lsearch
为wildlsearch
(必须更改两行)。这允许使用通配符和正则表达式/etc/email-addresses
因此,/etc/email-addresses
可以包含以下内容: 文件从上到下进行处理。因此,如果将电子邮件发送给 root,则实际上将其发送给
root: [email protected]
*: [email protected]
[电子邮件保护]. 所有其他电子邮件都发送至[电子邮件保护]
答案2
在之后的某个地方begin rewrite
(在以 begin 开头的下一个部分之前)添加以下内容:
* [email protected] Ffrs
通配符代表所有地址
[电子邮件保护]是您想要的地址
Ffrs 代表:
F 重写信封发件人字段
f 重写发件人:标题
r 重写回复:标题
s 重写发件人:标题
这将替换每个发件人地址。