sendmail 无法邮寄信件的情况:
虽然 Mail 很方便,但是仍然会有无法邮寄信件的时候 !如果您已经设定好 Sendmail 了,但是总是无法邮寄出去,那可能是什么问题呢?
1.sendmail 无法邮寄信件的情况:关于硬件配备
无论任何情况之下,如果硬件出问题,那么所有的服务都将不正常啦!所以,请先检查您的硬件是否“怪怪的!”这个先确认 OK 吧!
2. sendmail 无法邮寄信件的情况:关于网络参数的问题
如果连不上 Internet ,那么哪里来的 Mail Server 呢?所以请先确认你的网络已经正常的启用了!关于网络的确认问题,请查阅前几篇“Linux 网络侦错”的内容介绍;
3.sendmail 无法邮寄信件的情况: 关于服务的问题
请务必确认 port 25 与 port 110 已经正确的启动了!使用 netstat 指令即可了解是否已经启动该服务!
4. sendmail 无法邮寄信件的情况:关于防火墙的问题
很多时候,很多朋友使用 Red Hat 或者其它 Linux distribution 提供的防火墙设定软件,结果忘了启动 port 25 与 port 110 的设定,导致无法收发信件!请特别留意这个问题喔!可以使用 iptables ( 核心为 2.4.xx 版本 ) 或者是 ipchains ( 核心为 2.2.xx 版本 ) 来检查是否已经启用该 port 呢!其余请参考简易防火墙设定那一章喔!
5. sendmail 无法邮寄信件的情况:关于 TCP_Wrappers 的问题
如果你的 sendmail 还有支持 tcpd 这个程序 (或者说是 libwrap 这个函式库 ) 的话,那么在 /etc/hosts.allow 与 /etc/hosts.deny 的设定也会影响到收发信件的正常与否!如果 /etc/hosts.deny 有设定“ALL: ALL”的话,那么请务必在 /etc/hosts.allow 里面加设“ sendmail: ALL ”喔!
6. sendmail 无法邮寄信件的情况:关于设定档的问题
在 sendmail 8.11 版本中,仅有 sendmail.cf 这个设定档,但是在 8.12 当中多了个 submit.cf 这个寄信功能档案,请务必确定您的 *.mc 设定是正确的!
有一次在测试的时候,一直发信无法将信件寄出去!明明 sendmail.mc 都没有什么问题,就是 local 无法寄信!后来才发现,因为我更动过 submit.mc 这个档案,重新以 m4 跑过之后,忘记将他给改回来了!结果花了我两天的时间在搞 sendmail.mc ....所以,在作任何一步动作的时候,请千万记住“作笔记”或者“将动作记下来!”
7. sendmail 无法邮寄信件的情况:关于档案权限的问题
一般来说,如果以 RPM 安装 sendmail 会比较没有问题,而如果以 Sendmail 8.12 以后版本手动安装的话,那由于 sendmail 对于安全的要求越来越严格,所以你必须针对每个目录或档案进行检查才行!通常检查的目录为:
/etc/mail :里面的档案至少都为 644 或 640 的权限!
/var/spool/mqueue :务必为 700 的权限
/var/spool/clientmqueue:这在 8.12 才有,所有人与群组务必为 smmsp ,而权限务必为 770 ;
每个 ./forward 的档案需要控制其权限喔!在 8.12 版本中, .forward 的“拥有群组”必须要为 smmsp ,并且其权限必须要为 640 才行喔!
8. sendmail 无法邮寄信件的情况:关于使用者的设定问题
一般而言,如果使用者不登入 sendmail 主机进行寄信的动作( local mailer ),那么 /etc/passwd 里面的设定就无关紧要了!不过,如果该使用者想要在 sendmail 本机上面使用 mail 的功能,那么在 8.12 版本当中,您就必须要:
使用者的 primary 群组必须要为 smmsp !
使用者的 shell 必须要可以登入才行!
其它使用者的相关档案当中,最明显的 .forward 权限必须设定正确!
9.sendmail 无法邮寄信件的情况: 其它档案的设定问题
如果发现只有某个 domain 可以寄信,其它的同一主机的 domain 无法寄信,需要检查 local-host-names 这个档案的设定;
如果发现邮件被挡下来了!而且老是显示 reject 的字样,那么可能被 /etc/mail/access 挡住了;
如果发现邮件队列 (mailq) 存在很多的邮件,可能是 DNS 死掉了,请检查 /etc/resolv.conf 的设定是否正确!
10. sendmail 无法邮寄信件的情况:其它可能的问题
最常发生的就是认证的问题了!这是由于使用者没有在 MUA 上面设定“我的邮件需要认证”的选项啦!请叫你的 client 端用户赶紧勾选吧!
11.sendmail 无法邮寄信件的情况: 还是不知道问题的解决方案
一般而言,上面的几个讯息应该可以提供您校正 sendmail 的问题了,不过,如果还是查不出问题的话,那么请务必检查您的 /var/log/maillog (有的时候是 /var/log/mail ,这个要看 /etc/syslog.conf 的设定 ),当你寄出一封信的时候。
例如 vbird 寄给 bird2@tsai.adsldns.org 时,那么 maillog 档案里面会显示出两行,一行为 from vbird一行为 to bird2@tsai.adsldns.org,也就是“我由哪里收到信,而这封信会寄到哪里去!”的意思,由这两行就可以了解问题了!尤其是 to 的那一行,里面包含了相当多的有用信息,包括邮件无法传送的错误原因的纪录!
【编辑推荐】