如标题所述。 如果mydomain.com是本地域名,为什么exim试图通过联系它来发送邮件,而不是将其存储在本地mbox中? 也就是说,当我做echo hello | mail root 它通过联系mydomain.com列出的MX发送邮件到[email protected] 。 configuration是默认的Debian稳定。
顺便说一句,这种行为是我真正想要的,因为mydomain.com使用Google Apps,所以我希望所有的邮件都被传送到列表中的MX,但是我也希望我的服务器的行为也像它自己的名字一样。其本地发送的邮件应该来自@mydomain.com )。 我应该configurationexim不同吗?
Exim不一定会假设你的系统有任何魔法 – 它会按照你告诉的路线到达。
也就是说,一个默认的configuration文件通常会使用@的值填充local_domains域列表,它的意思是“这个主机的域名”。 然后, dnslookup路由器稍后可能通过说domains = ! +local_domains来明确排除本地域domains = ! +local_domains domains = ! +local_domains ,这将阻止任何发往local_domains列出的域的邮件local_domains SMTP被远程转发。
为了解决你的问题,我想看看两个地方。 首先,虽然你可能已经填充了/etc/mailname ,但这并不意味着eximconfiguration中的@值被扩展为正确的本地域名。 检查你是否已经在/etc/hosts列出了正确的fqdn,并且dnsdomainname (我认为它存在于Debian上)返回你期望的结果。
其次,我会仔细检查exim的configuration,遵循所有的路由器顺序通过传输,并确保没有遗漏。
我的问题与OP完全相同 – 我试图弄清Exim为什么要处理所有本地交付(例如,由cron产生的消息,例如注定为本地邮箱,或“echo”testing的输出“邮件” )作为非本地。
典型的日志条目从一个命令如:
echo "test" | mail userfoo
看起来像:
2013-03-20 12:44:02 1UIIN7-0004t9-8R <= [email protected] H = localhost(hostname.example.com)[127.0.0.1] P = esmtps X = TLSv1:DHE-RSA-AES256- SHA:256 S = 811 id = [email protected]
当他们应该只是看起来像:
2013-03-20 17:49:17 1UIN8X-0005iz-4Y <= [email protected] U=root P=local S=323
在我的情况下,问题是我的邮件包装的configuration方式 – 在我的操作系统上–FreeBSD – 你在/etc/mail/mailer.conf中configuration了邮件包装,而且我忽略了改变这个文件中的各种“别名”使用Exim而不是默认的sendmail二进制文件。 因此,我认为在命令行上发出邮件命令意味着使用sendmail二进制代替exim,导致通过ESMTP进行传递,而不是通过本地pipe道传送。
从以下位置更改邮件包assembly置文件/etc/mailer.conf:
sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail
至:
sendmail /usr/local/sbin/exim send-mail /usr/local/sbin/exim mailq /usr/local/sbin/exim -bp newaliases /usr/bin/true
具有将sendmailreplace为本地交付的默认邮件二进制文件的预期效果。 一个学校男孩的错误真的,我记得当我第一次在FreeBSD上设置Exim的时候,是我改变了的第一件事情之一,但是从那之后就没有任何必要搞乱了!
无论如何,希望它能帮助别人,这是关于我的问题的唯一结果。
干杯。
参考文献:
用Eximreplace另一个MTA