我正在设置一个服务器,它位于防火墙后面的网络上,我希望这台计算机上的程序能够使用sendmail向任何电子邮件地址发送电子邮件。我们有一个运行在这个网络上的SMTP服务器(让我们称它为mailrelay.example.com),这就是我们应该如何通过防火墙获取传出的电子邮件。
那么,如何配置sendmail以通过mailrelay.example.com发送所有邮件呢?Googling还没有给我答案,只告诉我sendmail的配置是非常复杂和恼人的。
发布于 2008-09-20 10:05:41
@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除了设置智能主机之外,您可能还希望禁用名称解析配置,并可能将sendmail切换到非标准端口,或者禁用守护程序模式。
禁用名称解析
位于防火墙网络中或使用网络地址转换(NAT)的服务器可能没有可用的DNS或NIS服务。这给sendmail带来了一个问题,因为它将默认使用DNS,如果它不可用,您将在mailq中看到这样的消息:
host map: lookup (mydomain.com): deferred)除非您准备设置sendmail可以使用的适当DNS或NIS服务,否则在这种情况下,您通常会使用/etc/hosts文件配置名称解析。这是通过启用'service.switch‘文件并按文件指定分辨率来实现的,如下所示:
1:为sendmail Edit /etc/ service.switch /sendmail.mc启用邮件,以包括以下行:
define(`confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')dnl2:为文件配置邮件。创建或修改/etc/ service.switch /service.switch。切换为仅引用/etc/service.switch进行名称解析:
# cat /etc/mail/service.switch
hosts files3:重新编译sendmail.mc并重启sendmail以使此设置生效。
将sendmail转移到非标准端口,或禁用守护程序模式
默认情况下,sendmail将侦听端口25。由于各种原因,您可能想要更改此端口或完全禁用sendmail守护程序模式:-如果存在禁止使用已知端口的安全策略-如果要在同一主机的标准端口上运行另一个SMTP产品/进程-如果您根本不想通过smtp接受邮件,只需使用sendmail发送邮件
1:将sendmail转换为使用非标准端口。编辑/etc/mail/sendmail.mc并修改行中的Port设置:
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=no此更改将要求重新启动sendmail。
发布于 2008-09-04 15:11:39
http://www.elandsys.com/resources/sendmail/smarthost.html
发送邮件智能主机
smarthost是中继外发邮件的主机。一些ISP阻止传出SMTP流量(端口25),并要求其用户通过ISP的邮件服务器发送所有邮件。Sendmail可以配置为使用ISP的邮件服务器作为智能主机。
请阅读链接文章,了解如何设置此功能。
发布于 2008-09-04 15:30:32
@Espo:感谢你关于从哪里开始的伟大建议。如果我将sendmail配置为第一次使用,而不是采用现有配置并进行此小更改,您的链接会更好。然而,当我知道如何在"SmartHost“上查找内容时,我发现了一种更简单的方法。
我所要做的就是编辑我的/etc/mail/sendmail.cf文件来更改
DS至
DSmailrelay.example.com然后重启sendmail,它就起作用了。
https://stackoverflow.com/questions/43970
复制相似问题