如何configurationsendmail通过特定服务器进行中继

我的电缆调制解调器(bresnan通信)后面有一个小型的家庭服务器设置。 我想要这个盒子发送电子邮件(不接收)的通知和whatnot。

我已经做了:

  • 我已经安装并configuration了sendmail
  • 我已经添加mail.bresnan.net作为我的SMART_HOST指令。

我相信问题是

当我尝试发送电子邮件时,我在邮件日志中看到以下内容:

 Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns, size=140, class=0, nrcpts=1, msgid=<[email protected]>, relay=aburns@localhost Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<[email protected]>, size=397, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: to=<[email protected]>, 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=<[email protected]>, ctladdr=<[email protected]> (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的服务器并超时。

这是我的问题所在。 Asstute的读者会注意到, pmx0.bresnan.net不是我的SMART_HOST指令设置为。 这是bresnan.com/net域的(外部?) MX服务器。 显然,布雷斯南的networkingconfiguration是这样的,你不能从自己的networking中访问这个服务器,而是必须使用mail.bresnan.net服务器(我可以连接到)。 问题是,我不知道如何告诉sendmail使用此服务器,而不是

我曾经尝试过

  • 设置主机条目,以便pmx0服务器指向邮件IP地址。 这是行不通的,这是有道理的,因为sendmail显然在做一个MX查询来查找返回IP的服务器,所以永远不需要执行“正常的”DNSparsing,因此hosts文件永远不会涉及到。

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

再次,道具去webmin(见下面的注释)帮助我学习这一点。 如果用方括号指示sendmail不进行MX查找,则inputsmarthost: define('SMART_HOST','[69.145.248.18]') (修复引号 – >反引号)实际上没有邮件表。

修复(对于特定域):

正如下面指出的,设置mailertable是必需的。 但是,正如手册页中指出的那样,这个特性也需要在sendmail.mc文件中启用。

另请注意,邮件路由并不强制sendmail使用指定的服务器进行所有操作,而是基于收件人的地址。 这对我来说确实可行,因为我只需要发送到几个域(Gmail,谷歌托pipe,和我的工作)。

总结

  • FEATURE('mailertable')添加到您的sendmail.mc文件。 (请注意,第一个报价应该是一个倒退。
  • 创build你的/etc/mail/mailertable文件(见手册页 )
  • 创build一个mapfile: sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
  • 重新make -C /etc/mail您的configurationmake -C /etc/mail
  • 重新启动sendmail: service sendmail restart

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

您可以通过在sendmail /etc/mail/mailertable文件中添加一个简短条目来避开MX查找。

该文件的内容应该可能只有一行:

 bresnan.net esmtp:[69.145.248.18] 

保存文件并重新启动sendmail(或重build你的sendmail.cf,如果它必须手动完成)。