使用 Exim 将邮件转发到域的所有地址的别名

使用 Exim 将邮件转发到域的所有地址的别名

我在托管多个域的 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

每行对应一个源域和一个目标域。

如果这还不够的话,您仍然必须弄清楚如何扩展帐户列表。

相关内容