我有exim4configuration为转发电子邮件的某些地址。
地址位于服务器是主MX的虚拟域上。
这些域上的其他地址被传递到本地邮箱,但configuration为转发的地址转到服务器不是MX的外部域,并且不应将邮件传递到本地邮箱。
例如,如果服务器是example.com的主MX,则应在本地为[email protected]发送邮件,但[email protected]应转发至[email protected] 。
虚拟域和地址的所有数据都存储在MySQL中。
服务器操作系统是Debian。
转发路由器的configuration(在/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 [email protected]输出如下所示的内容:
R: forwarder(mysql) for [email protected] R: dnslookup for [email protected] [email protected] <-- [email protected] 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: <[email protected]> 250 OK RCPT TO: <[email protected]> 550 Unrouteable address QUIT
我敢肯定更多的configuration将需要完全诊断。 请问,我会提供。
这原来是在路由器configurationno_verify的错误。 文档向转发器推荐这个设置,但也许这只适用于本地转发。