2008-09-04 156 views
6

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

那么如何配置sendmail通过mailrelay.example.com发送所有邮件?谷歌搜索尚未给出答案,并且只显示sendmail配置非常复杂和烦人。

回答

11

@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) 

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

1:启用sendmail的 编辑/etc/mail/sendmail.mc,service.switch以包括行:

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

2:配置文件service.switch 创建或修改/etc/mail/service.switch仅指在/ etc /的名称 解析主机:

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

3:Recompil e sendmail.mc并重新启动sendmail以使此设置生效。

转移到sendmail的非标准端口,或禁用daemon模式

默认情况下,sendmail的将侦听端口25,您可能希望完全更改此端口 或禁用的sendmail daemon模式因各种原因: - 如果存在禁止使用知名端口的安全策略 - 如果另一个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=no 

这一变化将需要sendmail的重新启动。

+0

谢谢!关于`service.switch`的提示解决了我的问题。 – 2011-08-09 02:41:40

5

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

Sendmail的智能主机

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

阅读指令链接的文章如何设置此。

3

@Espo:感谢您从何处着手的伟大建议。如果我已经将sendmail配置为首次使用,而不是采用现有配置并进行此小改动,那么您的链接会更好。然而,一旦我知道在“SmartHost”上寻找东西,我发现了一个更简单的方法。

我所要做的就是编辑我的/etc/mail/sendmail.cf文件来改变

DS 

DSmailrelay.example.com 

然后重新启动sendmail和它的工作。