Exim
exim4 轉發器無法路由外部郵件但不是內部郵件
我已將 exim4 配置為轉發某些地址的電子郵件。
這些地址位於伺服器是主要 MX 的虛擬域上。
這些域上的其他地址將傳遞到本地郵箱,但配置為轉發的地址會轉到伺服器不是 MX 的外部域,並且不應將郵件傳遞到本地郵箱。
例如,如果伺服器是 的主要 MX
example.com
,它應該在本地傳遞郵件,user1@example.com
但user2@example.com
應該轉發到user2realname@gmail.com
。虛擬域和地址的所有數據都儲存在 MySQL 中。
伺服器作業系統是 Debian。
轉發路由器的配置(
/etc/exim4/conf.d/router/400_exim4-config_mysql_forward
如下:mysql_forward: debug_print = "R: forwarder(mysql) for $local_part@$domain" driver = redirect no_verify no_expn check_ancestor forbid_smtp_code = true skip_syntax_errors domains = +local_domains data = ${lookup mysql{SELECT forward_to FROM mail_forwarders WHERE domain='${quote_mysql:$domain}' AND localpart='${quote_mysql:$local_part}' AND active=1} {${sg{$value}{\\n}{, }}}}
exim -bt user2@example.com
輸出類似:R: forwarder(mysql) for user2@example.com R: dnslookup for user2realname@gmail.com user2realname@gmail.com <-- user2@example.com router = dnslookup, transport = remote_smtp host gmail-smtp-in.l.google.com [74.125.133.27] MX=5 host alt1.gmail-smtp-in.l.google.com [173.194.222.27] MX=10 host alt2.gmail-smtp-in.l.google.com [74.125.200.27] MX=20 host alt3.gmail-smtp-in.l.google.com [74.125.23.27] MX=30 host alt4.gmail-smtp-in.l.google.com [173.194.72.27] MX=40
我可以使用本地命令發送郵件並成功轉發。
但是,當從外部來源發送郵件時,郵件會被拒絕
550 Unrouteable address
,例如:telnet mailserver.example.com 25 Connected to mailserver.example.com. Escape character is '^]'. 220 mailserver.example.com ESMTP EHLO office.mylocaldomain.com 250-mailserver.example.com Hello office.mylocaldomain.com [21.22.23.24] 250-SIZE 52428800 250-PIPELINING 250 HELP MAIL FROM: <user@mylocaldomain.com> 250 OK RCPT TO: <user2@example.com> 550 Unrouteable address QUIT
我確信需要更多配置才能完全診斷。請詢問,我會提供。
原來這是
no_verify
路由器配置的錯誤。文件為轉發器推薦此設置,但也許僅在本地轉發時才適用。