使用 sendmail 转发到一个 sendmail 服务器并从该服务器发送邮件

使用 sendmail 转发到一个 sendmail 服务器并从该服务器发送邮件

我使用的是带有 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

解决方案:

Sendmail:邮件仍在转发至 root@localhost

答案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

相关内容