Exim4:捕获所有外发邮件,仅允许少数域名通过开发服务器

Exim4:捕获所有外发邮件,仅允许少数域名通过开发服务器

我管理着一批开发和准备 debian (v.6-8) 服务器。当前的 exim4 设置如下:

  • 服务器上没有收到邮件(没有 WAN 连接)
  • 外发邮件通过智能主机发送(目前正在运行)

由于阶段和开发服务器的电子邮件功能将通过 Web 应用程序进行测试,并且在我们的 Web 应用程序中设置了真实场景的电子邮件地址,因此我想要实现的设置是:

  • 所有外发邮件都应通过 catchall 语句转发到一个电子邮件地址,例如[电子邮件保护]
  • 所有包含我们公司域名的外发邮件,例如 *@example.com 和 *@foo.com 都应绕过 catchall 规则。

最接近我的目标的教程是这个,即使它使用相反的策略:允许所有发件人并拒绝一个发件人。

https://serverfault.com/a/577007/322673

任何帮助我都非常感谢,因为我对 exim 配置语法很着迷。

几天来我已经经历了大量的配置示例,但没有一个符合我的用例。

答案1

由于 Exim 按照路由器部分指定的顺序处理邮件,我猜想可以通过以下规则实现。确保首先放置特殊域的规则,然后放置捕获所有规则。

# sender domain based routing
router_for_special_domain_sender:
     driver = dnslookup
     senders =  *@example.com 
     transport = remote_smtp
     no_more 

# reciepients domain based routing
router_for_special_domain_reciepints:
     driver = dnslookup
     domains =  example.com 
     transport = remote_smtp
     no_more 

catch_all_outgoing:
     driver = redirect
     data = [email protected]

据进出口银行称文档

如果设置了域选项,则地址的域必须在其定义的域集合中。

发件人

如果设置了此选项,则除非邮件的发件人地址与列表中的某个地址匹配,否则将跳过路由器。请参阅第 3.12 节,了解评估先决条件的顺序列表。

上面的第一条规则告诉 exim 发送所有带有发件人域 example.com 的电子邮件,而无需执行任何特殊操作。第二条规则是捕获所有电子邮件。你可以试一试。

以下是相关讨论:http://www.gossamer-threads.com/lists/exim/users/97056

答案2

begin routers

 router_for_special_domain_reciepint:
 driver = manualroute
 domains =  example.com
 transport = remote_smtp
 route_list = "* internalsmarthost.example.com "
 no_more

catch_all_outgoing: driver = redirect data = [email protected]

由于我对 router_for_special_domain_recipient 路由器和 catch_all_outgoing 路由器中的例外情况都使用了智能主机,因此我必须添加 route_list 选项。使用 dnslookup 驱动程序会导致直接将邮件发送到目标,而无需使用智能主机。

相关内容