废话不多说, 直接上 trouble:
主机centos6.5: 主机名nevermore: IP:192.168.9.225, sendmail 服务已开启
主机centos6.5 主机名chris: IP: 192.168.9.100, sendmail服务已开启
现通过主机 nevermore 向 chris 发送邮件:
发送失败, 查看 /var/log/maillog, 可能会有如下的报错信息(部分文字已省略, 只看关键部分):
1. host not found
2. Relaying denied. IP name lookup failed
3. no route to host
...
首先, 请确保已开启 sendmail 服务, 并且没有其他类似服务如 postfix 与它竞争, 然后保证 sendmail 在监听 0.0.0.0:25
而不是 127.0.0.0:25(重要!!), 否则, 发多少遍都不能成功. 可能有人不知道怎么让 sendmail 监听本机 25 端口, 这里提一下:
cd /etc/mail
vi sendmail.mc
找到 127.0.0.0 那一行, 修改为:
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.0, Name=MTA')dnl
接下来, 解决上述问题:
1. host not found:
这是因为 chris 主机并没有被正确的解析(可能你能 ping chris 有反应, 但这不代表已被正确解析, 因为 sendmail 会去自动寻找真正的 chris ,导致 host not found 的 error )
解决办法:
在 /etc/hosts 文件里 添加如下一行;
192.168.9.100 chris. chris
(注意上面有一点)
2.Relaying denied:
这是因为主机 nevermore 没有设置帮助转发邮件给 chris (这是合理的, 生产环境下的匿名转发会带给互联网大量的垃圾邮件), 设置方法如下:
vi /etc/mail/access
添加如下一行:
Connect:192.168.9 RELAY # 帮助转发网段9的所有邮件
之后, 执行: make access.db
然后重启服务, 即可
3. no route to host:
这是 iptables 的问题, 主机 chris 拒绝了 nevermore 的访问, 停止 iptables 服务, 或者
清空 iptables 即可
(未完待续...)