我使用的是带有 centos 6.2 发行版的 linux。我有 2 个运行这些发行版的 VM。
一个虚拟机名为“proxy”,另一个虚拟机名为“auth”。
两者上都安装了 sendmail。代理没有互联网连接。
我的目的是使用代理上的 php 页面发送电子邮件,通过让代理中的 sendmail 将邮件转发给 auth,然后让 auth 发送电子邮件。'auth' 具有互联网连接。
任何反馈都会很有帮助,我们将不胜感激。
嗨,谢谢。我按照你的建议做了。但是,我的代理仍然使用 root@localhost 进行中继,而不是直接中继到 auth:
Jan 14 08:18:57 test1 sendmail[10212]: s0EGEvce010212: from=proxy, size=235, class=0, nrcpts=1, msgid=<201401141614.s0EGEvce010212@test1>, relay=root@localhost Jan 14 08:18:57 test1 sendmail[10212]: s0EGEvce010212: [email protected], delay=00:04:00, mailer=esmtp, pri=30235, dsn=4.4.3, stat=queued
当我重新添加互联网连接的默认网关时,问题就消失了。但是,当我这样做时,它只会发送邮件而不经过身份验证。
但是,在代理和身份验证之间发送邮件时会看到不同的情况:在这种情况下,使用的中继是 auth.localdomain。
就目前情况而言,代理可以在没有互联网路由的情况下 ping 身份验证,反之亦然。
我的 sendmail.mc 文件中有:
define(`SMART_HOST', `auth.localdomain')dnl
解决方案:
答案1
在 sendmail 术语中,您需要配置“代理”以使用“auth”作为智能主机。
# /etc/mail/sendmail.mc
<snip>
(`SMART_HOST',`auth.mydomain.com`)
并从宏重新创建您的 sendmail.cf。
然后配置“auth”来中继来自“proxy”的消息。
# /etc/mail/access
#
# By default we allow relaying from localhost...
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
Connect:proxy RELAY
并重新创建 access.dbmakemap hash access.db < access