我正在设置一个位于防火墙后面的网络上的服务器,我希望这台计算机上的程序能够使用sendmail将电子邮件发送到任何电子邮件地址。我们在这个网络上运行一个SMTP服务器(我们称之为mailrelay.example.com),这就是我们应该通过防火墙接收外发电子邮件的方式。
那么如何配置sendmail通过mailrelay.example.com发送所有邮件?谷歌搜索还没有给我答案,并且只透露sendmail配置非常复杂和烦人。
答案 0 :(得分:13)
@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)
除非您准备设置适当的DNS或NIS服务 sendmail可以使用,在这种情况下,您通常会配置名称 使用/ 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将侦听端口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。
答案 1 :(得分:5)
http://www.elandsys.com/resources/sendmail/smarthost.html
Sendmail Smarthost
智能主机是一个主机 外发邮件被转发。一些ISP 阻止传出SMTP流量(端口25) 并要求他们的用户发送出去 所有邮件都通过ISP的邮件 服务器。可以将Sendmail配置为 使用ISP的邮件服务器作为智能 主机。
阅读链接文章,了解如何进行设置。
答案 2 :(得分:3)
@Espo:感谢您从何处着手。如果我第一次使用sendmail而不是采用现有配置并进行这一小改动,那么你的链接会更好。然而,一旦我知道在“SmartHost”上寻找东西,我就找到了一种更简单的方法。
我所要做的就是编辑我的/etc/mail/sendmail.cf文件以进行更改
DS
到
DSmailrelay.example.com
然后重新启动sendmail,它就可以了。