我在托管多个域的 CentOS 7 服务器中使用 Exim v4.91,我想设置一个组地址/别名,以将邮件消息转发到给定域的所有地址(每个域一个)。即,如果我发送电子邮件到,它将[email protected]
被发送到*@example.com
,所有电子邮件[email protected]
都应发送到*@example2.com
,等等。
我已经找到如何设置包罗万象别名,但我想要实现的却恰恰相反,不是接收所有传入消息的别名,而是一个转发至所有帐户所有来电消息。
答案1
这完全取决于您的域地址的来源是否可以枚举。如果帐户信息存储在 SQL、LDAP 或纯文本文件中,那么应该是可能的。您必须设置一个重定向路由器,其中包含一个 data = 指令,该指令由一个字符串扩展组成,该字符串扩展返回以逗号分隔的帐户列表。该字符串扩展可能用于${lookup ldapm{<query>}}
LDAP、${lookup mysql{<query>}}
SQL 或${readfile{<filename>}{,}}
纯文本文件。LDAP 和 SQL 可能需要进一步处理输出,例如用重定向路由器所需的逗号替换换行符记录分隔符。
由于不知道您的帐户信息存储在哪里,我无法向您提供更多明确信息,抱歉。我认为无法枚举通用 Linux PAM 接口,因此如果您的帐户只是普通 Linux 用户,那么恐怕您就没那么幸运了。
答案2
如果您使用文本配置文件,则可以根据每个帐户执行此操作的简单方法,例如
在 ROUTERS 的顶部添加如下内容:
domain_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup {$domain} lsearch {/usr/exim/exim.domainalias} {$local_part@$value} }
/usr/exim/exim.domainalias 包含如下内容:
example.net: example.com
example.org: example.com
example.biz: example.com
每行对应一个源域和一个目标域。
如果这还不够的话,您仍然必须弄清楚如何扩展帐户列表。