我正在尝试将通过 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