我怎样才能告诉 Exim 使用智能中继主机?

我怎样才能告诉 Exim 使用智能中继主机?

我在服务器上发送邮件时遇到了问题。我的主机告诉我这是由于没有通过他们的中继发送邮件造成的。他们试图告诉我该怎么做,以下是他们的说明:

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  

相关内容