我正在维护运行FreeBSD的IMAP服务器,它使用exim 4.80作为其MTA。 现在我尝试创build一个电子邮件别名,以便我可以解决系统的所有用户通知他们关于计划停机时间等等。 这个想法是,一个邮件[email protected]应该被转发给系统上的所有用户。
我最初考虑有一个简单的/etc/aliases入口,但注意到这不是我想要的,因为系统的用户可能会有Sievefilter,放弃除less数白名单之外的所有入站邮件。
我注意到可以使用appendfile传输方式直接传递到本地Maildir目录(绕过任何其他MDA,从而绕过Sievefilter),但是如何使一个传入邮件到vmailusers被redirect到多个本地邮件员?
您可以使用redirect路由器来处理别名消息。 这也是运行脚本/转发文件的用户。 路由器的处理发生在上下,所以下面的例子大致是这样的:
syswide_alias路由器检查/etc/aliases文件中的/etc/aliases 。 如果find一个,路由顺序将重新启动。 original_local_partvariables,如果没有转发完成,这个variables是空的。 如果查找成功,则传递消息。 在这种情况下,处理停止(因为交付完成),所以任何filter或转发用户可能已被忽略。 forced_delivery路由器拒绝, .forward文件将被处理。 如果此文件包含别名,则重新启动路由顺序。 routers部分应该是这样的:
syswide_alias: driver = redirect allow_defer allow_fail data = ${lookup{$local_part}lsearch{/etc/aliases}} forced_delivery: driver = accept allow_defer transport = local_delivery condition = ${if eq {${lookup{$original_local_part}lsearch{/etc/aliases}}}{}{no}{yes}} user_filters: driver = redirect allow_defer allow_fail allow_filter file = ${home}/.forward normal_delivery: driver = accept check_local_user transport = local_delivery
syswide_alias和forced_delivery路由器都有allow_defer选项,如果没有find该文件,这个选项是必须的(这可能不会是这样,但不会伤害到它)
编辑:上面的例子现在包含了实现问题目标所需的全套路由器。