如何配置sendmail通过特定服务器进行中继


11

我在电缆调制解调器(bresnan通讯)后面有一个很小的家庭服务器设置。我希望此框可以发送电子邮件(不接收)以进行通知和其他方式。

我已经做了什么:

  • 我已经安装并配置了sendmail。
  • 我已添加mail.bresnan.netSMART_HOST指令。

我相信问题是

当我尝试发送电子邮件时,我的邮件日志中显示以下内容:

Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns, 
  size=140, class=0, nrcpts=1, 
  msgid=<201012221724.oBMHOHrs001530@bresnan.net>, 
  relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<aburns@bresnan.net>, 
  size=397, class=0, nrcpts=1,
  msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
  proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
  to=<my@work-address.com>, ctladdr=aburns (1000/1000),
  delay=00:00:00, xdelay=00:00:00, mailer=relay,
  pri=30140, relay=[127.0.0.1] [127.0.0.1],
  dsn=2.0.0, stat=Sent (oBMHOHWZ001531 Message accepted for delivery)
Dec 22 10:24:18 batcave sm-mta[1517]: oBMH9mVv001357:
  to=<my@work-address.com>, ctladdr=<aburns@bresnan.net>
  (1000/1000), delay=00:14:30, xdelay=00:00:42, mailer=relay,
  pri=300339, relay=pmx0.bresnan.net. [69.145.248.1],
  dsn=4.0.0, stat=Deferred: Connection timed out with pmx0.bresnan.net.

您可以看到我的sendmail服务器在哪里接受该邮件,然后再尝试将其移交给bresnan的服务器并超时。

这是我的问题所在。精明的读者会注意到,这pmx0.bresnan.net不是我将SMART_HOST指令设置为的内容。这是MXbresnan.com/net域的(外部)服务器。显然bresnan已配置了他们的网络,因此您不能从他们自己的网络内访问此服务器,而必须使用该mail.bresnan.net服务器(我可以连接到该服务器)。问题是我不知道如何告诉sendmail使用此服务器,而不是

我尝试过的

  • 设置主机条目,以便pmx0服务器指向邮件IP地址。这是行不通的,这很有意义,因为sendmail显然正在执行MX查询以查找返回IP的服务器,因此不再需要执行“常规” DNS解析,因此主机文件永远不会涉及。

修复(对于所有外发邮件):

再次,道具转到webmin(请参阅下面的注释)以帮助我学习这一点。如果您输入带有方括号的smarthost,指示sendmail不要执行MX查找,那么:(define('SMART_HOST','[69.145.248.18]')固定引号->反引号)实际上在没有邮件发送器表的情况下可以工作。

修复(针对特定域):

如下所述mailertable,需要设置a 。但是,正如手册页中指出的那样,还需要在sendmail.mc文件中启用此功能。

还要注意,邮寄者路由不会强制sendmail使用指定的服务器进行所有操作,它基于收件人的地址。这实际上对我来说还可以,因为我只需要发送到几个域(gmail,托管Google和我的工作)。

总结

  • 添加FEATURE('mailertable')到您的sendmail.mc文件。(请注意,第一引号应该是反引号。
  • 创建/etc/mail/mailertable文件(请参见手册页
  • 创建一个映射文件: sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
  • 重建您的配置 make -C /etc/mail
  • 重新启动sendmail: service sendmail restart

注意:强烈建议使用WebMin编辑/重建这些文件。没有它,我会疯狂地试图弄清楚为什么我的mailertable文件被忽略了。


我们可以看到您的sendmail.mc吗?
larsks 2010年

在更改sendmail.mc配置文件时,是否在每次更改后重新启动sendmail?
ewwhite

Answers:


7

您可以通过在sendmail /etc/mail/mailertable文件中添加简短条目来解决MX查找问题。

文件的内容可能应该像这样一行:

bresnan.net       esmtp:[69.145.248.18]

保存文件并重新启动sendmail(或者,如果必须手动完成,则重新构建sendmail.cf)。


2
您的回答是正确的;但是我不得不采取一些其他步骤。对于其他遇到此问题的人,请参见上面的编辑。
ErebusBat 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.