关于配置:在防火墙后面配置 sendmail

关于配置:在防火墙后面配置 sendmail

Configuring sendmail behind a firewall

我正在设置一个位于防火墙后面的网络上的服务器,我希望这台计算机上的程序能够使用 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"设置修改为:

1
  DAEMON=no

此更改将要求重新启动 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 文件以进行更改

1
DS

1
DSmailrelay.example.com

然后重新启动 sendmail 就可以了。


推荐阅读

    linux云计算查看命令?

    linux云计算查看命令?,系统,信息,地址,工作,命令,情况,标准,服务,软件,网络,l

    linux服务器搭建命令?

    linux服务器搭建命令?,系统,服务,软件,地址,平台,在线,密码,工具,环境,百度,l

    linux命令行链接网络?

    linux命令行链接网络?,网络,系统,地址,工作,工具,最新,网址,数据,信息,环境,l

    linux打开计算器命令?

    linux打开计算器命令?,密码,电脑,工作,设备,数字,系统,手机,指数,情况,服务,

    服务器重启命令linux?

    服务器重启命令linux?,工作,标准,设备,服务,系统,名称,命令,百度,网络,密码,

    linux网络开启命令行?

    linux网络开启命令行?,网络,地址,系统,环境,设备,工作,通用,服务,数据,网址,

    linux的配置网络命令?

    linux的配置网络命令?,地址,系统,网络,代码,服务,管理,密码,信息,基础,命令,l

    linux命令输出计算?

    linux命令输出计算?,标准,地址,工作,信息,系统,命令,软件,数据,文件,控制台,l

    linux网络命令查询?

    linux网络命令查询?,信息,网络,系统,地址,工作,状态,技术,电脑,命令,设备,lin

    linux内核配置的命令?

    linux内核配置的命令?,系统,工作,管理,地址,时间,命令,信息,设备,目录,内核,

    linux网络延时命令?

    linux网络延时命令?,网络,时间,检测,地址,电脑,系统,设备,工具,基础,管理,lin

    linux网络联通命令?

    linux网络联通命令?,网络,地址,工作,系统,信息,联通,电脑,命令,检测,管理,Lin

    linux服务器删除命令?

    linux服务器删除命令?,系统,服务,管理,情况,命令,工作,互动,地址,软件,较大,l

    linux服务器负荷命令?

    linux服务器负荷命令?,信息,电脑,中科,环境,工具,系统,平均,检测,情况,状态,l

    linux网络驱动器命令?

    linux网络驱动器命令?,网络,系统,电脑,最新,位置,检测,地址,材料,数据,命令,l

    linux挂载命令配置?

    linux挂载命令配置?,系统,网络,设备,服务,位置,电脑,名字,密码,目录,命令,Lin

    linux防火墙配置命令?

    linux防火墙配置命令?,系统,工具,服务,状态,防火墙,通用,密码,信息,网络,管

    linux关闭防火墙命令?

    linux关闭防火墙命令?,系统,服务,软件,信息,代码,防火墙,命令,管理,密码,公

    linux磁盘配置命令行?

    linux磁盘配置命令行?,信息,系统,管理,状态,环境,电脑,名称,数据,名字,情况,l

    linux环境防火墙命令?

    linux环境防火墙命令?,系统,服务,软件,设备,公共,信息,环境,防火墙,管理,命