5.4.2 sendmail服务的配置
大多数组织在他们网络内部的各个位置有各种邮件传输代理(MTA),其中至少有一个直接连接于互联网。sendmail是其中最流行的MTA,据统计通过sendmail处理的Internet邮件流量占了总数的50%~75%。许多UNIX和Linux工作站默认运行sendmail。与sendmail相关的配置文件几乎都在/etc/mail目录中,见表5-5。
表5-5 sendmail的配置文件
1./etc/mail/Sendmail.cf文件
这是sendmail的配置文件。所有跟sendmail有关的设置都是靠它来完成的。不过,这个配置文件的内容很复杂,所以建议不要随意手动修改这个文件。那怎么处理额外的设置项目呢?交给程序帮我们修改即可,所以才需要Sendmail-c这个软件。
2./usr/share/Sendmail-cf/cf/*.mc文件
这些文件是Sendmail设置文件的默认参数数据,上面说过不要直接手动修改Sendmail.cf,那如果您想要处理Sendmail.cf的话,就需要通过这个目录下的参数来事先准备设置数据。当然,这些默认参数的数据文件必须通过m4程序来转换才行。
3./etc/mail/Sendmail.mc文件
利用m4指令并通过指定的默认参数文件来重建sendmail.cf。就是通过这个文件来设置处理的。那应该如何通过这个文件来重建sendmail.cf?可以使用m4生成sendmail.cf文件。
·m4是Unix下使用的传统宏处理器,是一种宏前置处理器,用来把组态文件转换成sendmail.cf文件。
·使用m4处理sendmail.mc生成sendmail.cf。
默认使用/etc/mail/sendmail.mc为/etc/mail/sendmail.cf的宏文件。如果一行一行输入整个sendmail.cf文件不仅麻烦也容易出错。最简单的方法是用m4处理程序自动产生一个sendmail.cf。m4是一种宏前置处理器。用来把组态文件转换成sendmail.cf文件。它的用法很简单。在/etc下面找到sendmail.mc文件,修改后使用:
将会生成一个sendmail.cf文件,并自动覆盖原来的sendmail.cf文件。
sendmail.mc配置文件内容如下:
4./etc/mail/local-host-names文件
/etc/mail/local-host-name的作用是指定本地接收邮件的域。例如,想接收aa.com,yy.com这两个域的邮件,就要在/etc/mail/local-host-name文件中添加:aa.com,yy.com,注意,每个域名都要单独一行。这样,就可以接收peng@aa.com或softarts@yy.com的邮件了。sendmail服务器的配置如下。
(1)查看是否安装了sendmail:
(2)检验DNS服务的正反向解析是否成功。要使新邮件服务器正常工作,必须先解决DNS问题,把邮件服务器的主机名和IP地址加入到DNS中,并用nslookup来确认:
同样也要试一下反向域名解析,这个对防止邮件延迟有很重要的作用。现在大部分的邮件服务器都是把反向域名解析作为邮件传送时认证的一部分。所以用IP地址来试一下反向域名解析是否正确。
(3)配置sendmail服务:
监听本机的smtp端口用netstat-nl可以看到所有后台程序监听的端口。
注意
(4)Sendmail的配置文件:
·备份原有sendmail.cf文件;
·修改sendmail.mc文件。
将
改为
这样可以使sendmail实现对外发信。并且在该文件的最后加上MAILER(local)dnl,此语句告诉sendmail本地用户的邮件不用使用SMTP,而直接在主机内传送。然后使用命令:
通过m4宏处理程序来生成所需的sendmail.cf文件。
·在local-host-names文件中,写入接收邮件的域名,如aa.com或主机名。
如果想用IP地址接收邮件,则需要在该文件中写入“[IP]”如[192.168.0.1],每个语句占一行。
·在access文件中填写IP地址、网段或域名和相应的行为,即允许或禁止转发邮件等。如202.204.118/域名RELAY。然后用
命令将修改的access文件用哈希加密装入access.db数据库文件中,生成sendmail所识别的文件。在/etc/mail/access中,加入如:
第一行表示允许接收abc.com发来的邮件;第二行表示允许对def.com发来的邮件进行转发,一般情况下,现在的邮件服务器都关闭了open-relay功能;第三行表示忽略123.com发来的邮件。忽略的意思是不做任何回应,也不弹回错误提示。接收的邮件将在网络中消失;第四行表示弹回来自abc@345.com这个邮件地址的邮件。对于弹回的邮件,邮件服务器会发送一个通知邮件给发送服务器。
目前不清楚的是对于DISCARD和REJECT这两种情况,哪一种情况消耗的系统资源最小。新的access文件生成以后,需要
命令生成新的access.db,然后重新启动sendmail。用make access.db命令把新的设置添加到sendmail的hash数据库里。sendmail用它来判断允许哪些主机通过邮件服务器来传递邮件。而且这样还可以通过设置子网(例如,192.168)来限制该域。但要注意,这样设置就对外开放了,可能会有人发大量的垃圾信件来攻击自己的系统。
·此时基本完成了sendmail的配置,启动sendmail服务:
(5)sendmail守护进程:
如果要sendmail处理发送来的信件,必须有一个守护进程在运行。sendmail守护进程就是带有特殊标志位的sendmail程序。这个守护进程是被/etc/init.d/mail脚本在系统启动的时候自动启动的。在此脚本中用来启动sendmail的命令如下:
-bd标志是使sendmail作为一个守护程序运行。-q15m标志使sendmail创建出一个子守护进程来每隔15分钟处理一次消息队列。
sendmail是实现sendmail路由和转发服务的程序。作为一个程序,它在命令行可以有很多标志可以被设置用来构件sendmail环境。newaliases是用来更新DBM格式的别名数据库的程序。在别名文件被改动之后必须运行此程序。否则,更改过的别名没有记录在DBM别名数据库中,也就不能为sendmail所知道。mailq命令打印当前消息队列列表。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。