8

我正在设置一个位于防火墙后面的网络上的服务器,我希望这台计算机上的程序能够使用 sendmail 将电子邮件发送到任何电子邮件地址。我们在这个网络上运行了一个 SMTP 服务器(我们称之为 mailrelay.example.com),这就是我们应该如何通过防火墙获取传出电子邮件的方式。

那么如何配置 sendmail 以通过 mailrelay.example.com 发送所有邮件?谷歌搜索还没有给我答案,只是发现 sendmail 配置非常复杂和烦人。

4

3 回答 3

14

@eli:通常不建议直接修改 sendmail.cf,因为它是由宏编译器生成的。

编辑 /etc/mail/sendmail.mc 以包含以下行:

  define(`SMART_HOST',`mailrelay.example.com')dnl 

修改 sendmail.mc 宏配置文件后,必须重新编译生成 sendmail 配置文件。

  # m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

并重新启动 sendmail 服务(Linux):

  # /etc/init.d/sendmail restart

除了设置 smarthost,您可能还想禁用名称解析配置,并可能将您的 sendmail 转移到非标准端口,或禁用守护程序模式。

禁用名称解析

位于防火墙网络内或使用网络地址转换 (NAT) 的服务器可能没有可用的 DNS 或 NIS 服务。这会给 sendmail 带来问题,因为它默认使用 DNS,如果它不可用,您将在 mailq 中看到如下消息:

  host map: lookup (mydomain.com): deferred)

除非您准备设置 sendmail 可以使用的适当 DNS 或 NIS 服务,否则在这种情况下,您通常会配置名称解析以使用 /etc/hosts 文件完成。这是通过启用“service.switch”文件并按文件指定分辨率来完成的,如下所示:

1:为 sendmail 启用 service.switch 编辑 /etc/mail/sendmail.mc 以包含以下行:

  define(`confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')dnl

2:为文件配置service.switch 创建或修改/etc/mail/service.switch 以仅引用/etc/hosts 进行名称解析:

  # cat /etc/mail/service.switch
  hosts files

3:重新编译sendmail.mc 并重启sendmail 使该设置生效。

将 sendmail 转移到非标准端口,或禁用守护程序模式

默认情况下,sendmail 将侦听端口 25。出于各种原因,您可能希望更改此端口或完全禁用 sendmail 守护程序模式: - 如果有禁止使用知名端口的安全策略 - 如果另一个 SMTP 产品/进程将在标准端口上的同一主机上运行 - 如果您根本不想通过 smtp 接受邮件,只需使用 sendmail 发送即可

1:将sendmail改为使用非标准端口。编辑 /etc/mail/sendmail.mc 并修改该行中的“端口”设置:

  DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

例如,要让 sendmail 使用端口 125:

  DAEMON_OPTIONS(`Port=125,Addr=127.0.0.1, Name=MTA')

这将需要重新编译 sendmail.mc 并重新启动 sendmail。

2:或者,完全禁用 sendmail 守护程序模式(Linux)编辑 /etc/sysconfig/sendmail 并将“DAEMON”设置修改为:

  DAEMON=no

此更改将要求重新启动 sendmail。

于 2008-09-20T10:05:40.757 回答
5

http://www.elandsys.com/resources/sendmail/smarthost.html

Sendmail 智能主机

智能主机是中继外发邮件的主机。一些 ISP 阻止传出 SMTP 流量(端口 25)并要求其用户通过 ISP 的邮件服务器发送所有邮件。Sendmail 可以配置为使用 ISP 的邮件服务器作为智能主机。

阅读链接的文章以获取有关如何设置的说明。

于 2008-09-04T15:11:39.263 回答
3

@Espo:感谢关于从哪里开始的好建议。如果我为第一次使用而配置 sendmail 而不是采用现有配置并进行这个小改动,那么您的链接会更好。然而,一旦我知道要在“SmartHost”上寻找东西,我就找到了一种更简单的方法。

我所要做的就是编辑我的 /etc/mail/sendmail.cf 文件以进行更改

DS

DSmailrelay.example.com

然后重新启动sendmail,它就可以工作了。

于 2008-09-04T15:30:32.477 回答