我正在设置一个位于防火墙后面的网络上的服务器,我希望这台计算机上的程序能够使用 sendmail 将电子邮件发送到任何电子邮件地址。我们在这个网络上运行了一个 SMTP 服务器(我们称之为 mailrelay.example.com),这就是我们应该如何通过防火墙获取传出电子邮件的方式。
那么如何配置 sendmail 以通过 mailrelay.example.com 发送所有邮件?谷歌搜索还没有给我答案,只是发现 sendmail 配置非常复杂和烦人。
@eli: 通常不建议直接修改 sendmail.cf,因为它是由宏编译器生成的。
编辑 /etc/mail/sendmail.mc 以包含以下行:
1
| define(`SMART_HOST',`mailrelay.example.com')dnl |
修改sendmail.mc宏配置文件后,必须重新编译
生成 sendmail 配置文件。
1
| # m4 /etc/mail/sendmail.mc /etc/sendmail.cf |
并重启sendmail服务(Linux):
1
| # /etc/init.d/sendmail restart |
除了设置智能主机之外,您可能还想禁用名称解析配置,并可能将您的发送邮件转移到非标准端口,或禁用守护程序模式。
禁用名称解析
位于防火墙网络内或使用网络地址的服务器
转换 (NAT) 可能没有可用的 DNS 或 NIS 服务。这创造了
sendmail 的问题,因为它默认使用 DNS,如果不是
可用,您将在 mailq:
中看到这样的消息
1
| host map: lookup (mydomain.com): deferred) |
除非您准备设置适当的 DNS 或 NIS 服务,
sendmail 可以使用,在这种情况下你通常会配置 name
使用 /etc/hosts 文件进行解析。这是通过启用
'service.switch' 文件并按文件指定分辨率,如下所示:
1: 为 sendmail 启用 service.switch
编辑 /etc/mail/sendmail.mc 以包含以下行:
1
| define(`confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')dnl |
2: 为文件配置 service.switch
创建或修改 /etc/mail/service.switch 以仅引用 /etc/hosts 作为名称
分辨率:
1 2
| # cat /etc/mail/service.switch
hosts files |
3: 重新编译 sendmail.mc 并重新启动 sendmail 以使此设置生效。
将 sendmail 转移到非标准端口,或禁用守护程序模式
默认情况下,sendmail 将侦听端口 25。您可能需要更改此端口
或出于各种原因完全禁用 sendmail 守护程序模式:
- 如果有禁止使用知名端口的安全策略
- 如果另一个 SMTP 产品/进程要在标准端口上的同一主机上运行
- 如果您根本不想通过 smtp 接收邮件,只需使用 sendmail
发送即可
1:将 sendmail 转换为使用非标准端口。
编辑 /etc/mail/sendmail.mc 并修改以下行中的"端口"设置:
1
| DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA') |
例如,让 sendmail 使用端口 125:
1
| DAEMON_OPTIONS(`Port=125,Addr=127.0.0.1, Name=MTA') |
这将需要重新编译 sendmail.mc 并重新启动 sendmail。
2: 或者,完全禁用 sendmail 守护程序模式 (Linux)
编辑 /etc/sysconfig/sendmail 并将"DAEMON"设置修改为:
此更改将要求重新启动 sendmail。
http://www.elandsys.com/resources/sendmail/smarthost.html
Sendmail Smarthost
A smarthost is a host through which
outgoing mail is relayed. Some ISPs
block outgoing SMTP traffic (port 25)
and require their users to send out
all mail through the ISP's mail
server. Sendmail can be configured to
use the ISP's mail server as the smart
host.
阅读链接文章,了解如何设置。
@Espo:感谢您提供关于从何处开始的好建议。如果我在第一次使用时配置 sendmail,而不是采用现有配置并进行这个小改动,那么您的链接会更好。但是,一旦我知道要在"SmartHost"上寻找东西,我就找到了一种更简单的方法。
我所要做的就是编辑我的 /etc/mail/sendmail.cf 文件以进行更改
到
然后重新启动 sendmail 就可以了。