我在服务器上发送邮件时遇到了问题。我的主机告诉我这是由于没有通过他们的中继发送邮件造成的。他们试图告诉我该怎么做,以下是他们的说明:
Edit /etc/mail/sendmail.cf or /etc/sendmail.cf depend on your operating system.
and edit as
# “Smart” relay host (may be null)
DS<mailserver_hostname>
exam.
DSspamfilter.de.santrex.net:1001
这两个文件对我来说都不存在,而且他们花了很长时间才回复。我希望这里的其他人可能知道解决方案。
我在 VPS 上运行带有 cPanel/WHM 的 CentOS5.5
答案1
在 cpanel 中可能存在一种特定的方法,但要为 Exim 提供一个通用答案,您需要创建一个与所有非本地邮件匹配的新路由器。默认的 exim 配置文件中已经有一个名为“dnslookup”的路由器。该路由器将所有非本地邮件路由到名为“remote_smtp”的传输,该传输使用 DNS 来决定将邮件发送到哪个服务器。
因此,要向出站邮件服务器添加静态路由,请在现有的 dnslookup 路由器上方添加一个新路由器(因为路由器中的顺序很重要,您的邮件将由第一个匹配的路由器处理)。
这是一个示例,在简单的配置(仅有一个出站服务器,在端口 25 上,无需身份验证)下就可以正常工作:
static:
driver = manualroute
domains = ! +local_domains
route_list = * <mailserver_hostname>
transport = remote_smtp
no_more
no_verify
下面是我自己配置的一个稍微复杂一点的例子,使用 pobox.com 作为中继,在端口 587 上使用身份验证:
# This goes in ROUTERS section
static:
driver = manualroute
domains = ! +local_domains
route_list = * sasl.smtp.pobox.com::587
transport = auth_remote_smtp
no_more
no_verify
# This goes in TRANSPORTS section
auth_remote_smtp:
driver = smtp
hosts_require_auth = *
# This goes in AUTHENICATORS section
auth_plain:
driver = plaintext
public_name = plain
client_send = ^MYUSERNAME^MYPASSWORD
(pobox 仅支持 LOGIN 和 PLAIN 身份验证类型,但它支持 Exim 开箱即用的 TLS,因此我的凭证只能通过 TLS 链接传输)。
这是我使用上述配置在该服务器上发送的邮件的日志示例:
2010-11-26 10:04:49 LCHZ81-0000HN-NN <= SENDERADDRESS H=localhost (g3) [127.0.0.1] P=esmtp S=441
2010-11-26 10:04:50 LCHZ81-0000HN-NN => RECIPADDRESS R=static T=auth_remote_smtp H=sasl.smtp.pobox.com [64.74.157.62] X=TLSv1:DHE-RSA-AES256-SHA:256
2010-11-26 10:04:50 LCHZ81-0000HN-NN Completed