将所有 exim 发出的邮件转发至 mailhog

将所有 exim 发出的邮件转发至 mailhog

我正在尝试将通过 smtp exim4 端口 25 从任何类型的软件发送的所有外发邮件转发到同一台机器上端口 1025 的 mailhog。这可能吗?

我努力了:

 begin routers

 driver=manualrouter
 transport = mailhog
 route_list = * 127.0.0.1::1025
 domains = *

 mailhog:
 driver = smtp

以及更多的组合,但均未成功。

答案1

您几乎已经完成了,但是配置参数必须完全按照手册中的方式应用:即使是一个小小的拼写错误也会导致完全不同的结果,而您这里似乎有多个这样的错误。

你可能已经学习过类似这样的教程Exim 与远程 SMTP 服务器来自 ArchLinux Wiki。

在路由器配置部分的末尾添加:

passonto_isp:
  driver = manualroute
  domains = !+local_domains
  transport = remote_smtp
  route_list = * smtp.myisp.com        # change to the desired smtp server

确保传输配置中显示以下内容(取消注释):

remote_smtp:
  driver = smtp

好的,那么有什么不同呢?

  • 第一行,passonto_isp:。在提供路由器设置之前,您必须指定路由器。
  • 虽然常用选项语法是可选的,驱动程序名称manualroute 路由器正是manualroute,即r结尾处没有 ,就像您那样。
  • 您真的确定也希望将其应用于本地域吗?*vs. !+local_domains,其中!使其成为 的否定+local_domains,即除本地域之外的所有内容。
  • 每朵乌云背后都有一线希望:你避免了一个常见的错误:route_list你没有搞乱主机列表分隔符 :,但用于::将端口与主机名分开。

    由于冒号是主机列表的默认分隔符,因此必须将指定端口的冒号加倍,或者必须更改列表分隔符。以下两个示例具有相同的效果:

    route_list = * "host1.tld::1225 : host2.tld::1226" 
    route_list = * "<+ host1.tld:1225 + host2.tld:1226"
    
  • 您已指定transport = mailhog。您的mailhog:应位于transports部分。

结果配置:

begin routers

passonto_mailhog:
  driver = manualroute
  domains = !+local_domains
  transport = mailhog
  route_list = * 127.0.0.1::1025

begin transports

mailhog:
  driver = smtp

相关内容