Ubuntu服务器拆分配置Exim4时,如何针对特定收件人配置智能主机转发?
当然能实现!我之前也帮朋友配置过类似需求——在拆分配置的Exim4环境里,只让匹配特定规则的收件人走智能主机转发,其他邮件依然按正常流程投递。下面一步步给你讲具体操作:
第一步:配置智能主机的认证信息
拆分配置的Exim4,认证信息通常存在/etc/exim4/passwd.client文件里。打开这个文件,添加一行你的智能主机认证信息,格式是:smtp.relay-server.com:your_username:your_password这里把
smtp.relay-server.com换成你的实际智能主机地址,your_username和your_password换成服务商给的认证凭据。
然后一定要修改文件权限,避免泄露:chmod 600 /etc/exim4/passwd.client第二步:添加匹配特定收件人的自定义路由器
Exim4是靠路由器(routers)决定邮件的投递路径,我们需要加一个优先级高于默认路由器的自定义路由器,让匹配规则的邮件先走这里。
在/etc/exim4/conf.d/router/目录下创建一个新的配置文件,比如400_exim4-config_smarthost_for_specific_recipients(文件名开头的数字越小,优先级越高,400这个数值能确保它在默认路由器之前被执行),写入以下内容:smarthost_for_specific_recipients: driver = manualroute recipients = ^.*@example\.com$ # 这里换成你的收件人匹配正则,比如匹配example.com所有邮箱 transport = smarthost_smtp route_list = * smtp.relay-server.com::587 # 智能主机地址+端口,587是常用提交端口 no_more # 匹配到的邮件不再走后续路由器如果你需要匹配多个规则,比如同时匹配
@example.com和@test.org的邮箱,把recipients改成:recipients = ^.*@example\.com$|^.*@test\.org$第三步:配置对应智能主机的传输器
接下来创建对应的传输器,负责和智能主机建立连接并发送邮件。在/etc/exim4/conf.d/transport/目录下新建300_exim4-config_smarthost_smtp文件,内容如下:smarthost_smtp: driver = smtp hosts_require_auth = $host_address # 要求对智能主机进行认证 hosts_require_tls = $host_address # 强制用TLS加密,建议开启提升安全性 helo_data = $sender_address_domain # 可选:设置HELO字段为发件人域名,部分服务商要求如果你用的是465端口(SMTPS),可以把传输器的driver改成
smtps,或者在router的route_list里把端口写成465,同时确保TLS配置正确。第四步:更新配置并重启Exim4
完成以上配置后,先更新Exim4的合成配置文件:update-exim4.conf然后重启Exim4服务让配置生效:
systemctl restart exim4测试配置是否生效
你可以用Exim4自带的测试命令,检查特定收件人的路由是否正确:exim4 -bt user@example.com输出里如果显示
smarthost_for_specific_recipients作为路由器,就说明配置生效了。也可以发一封测试邮件,然后查看日志确认:tail -f /var/log/exim4/mainlog
备注:内容来源于stack exchange,提问作者Tobia

