我正在设置一个位于防火墙后面的网络上的服务器,我希望这台计算机上的程序能够使用sendmail将电子邮件发送到任何电子邮件地址.我们在这个网络上运行一个SMTP服务器(让我们称之为mailrelay.example.com),这就是我们应该通过防火墙接收外发电子邮件的方式.
那么如何配置sendmail通过mailrelay.example.com发送所有邮件?谷歌搜索还没有给我答案,并且只透露sendmail配置非常复杂和烦人.
@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.
http://www.elandsys.com/resources/sendmail/smarthost.html
Sendmail Smarthost
智能主机是传递外发邮件的主机.某些ISP阻止传出SMTP流量(端口25)并要求其用户通过ISP的邮件服务器发送所有邮件.可以将Sendmail配置为使用ISP的邮件服务器作为智能主机.
阅读链接文章,了解如何进行设置.