最近做sendmail遇到两个很纠结的问题,特此写出来,给遇到同样问题的朋友们提供一点参考

首先用sendmail搭建好了两台邮件服务器A和B,在A上给B发送邮件,这种发送其实不牵涉邮件服务器的relay转发,只要A和B的sendmail都监听所有的端口都没问题,但今天确实遇到了很纠结的问题,B收不到邮件。然后开始检查:

首先从Aping到B的域名,一切正常。

接着查看B中的邮件队列/var/spool/mqueue/,目录下没有内容,证明邮件已经被A接收。

然后在A上查看队列信息/var/spool/mqueue/,发现目录下有B发过来的邮件,也就是A接收了邮件,但是没有放到指定账户的邮件目录下,然后进入/var/spool/mail/,因为我是给root发送邮件,看到这个目录下没有root文件,也就是没有存储root账户邮件的文件,所以在此目录下建立了一个root文件,设置权限600。接着重启sendmail,重新发送,发现问题还是没有解决。

接着用mailq查看A服务器邮件队列信息,发现邮件存储在这里,和上一步查看的结果的结果是一样的。查看的内如如下:

"host map: lookup (domain): deferred"

查看的deferred单词的一次发现是延迟的意思,也就是说A收到了邮件,找不到这封邮件目的地址,这时想到是DNS的问题,在A上查询自己的主机名,也就是B发送邮件指定的邮件地址的域名,发现解析不了,终于到原因了,把A的dns改正确时候,重启sendmail,邮件能够正常发送。

总结:

邮件的发送不但发送这能够解析邮件目的地址的域名,转发的服务器,包括收这封邮件的服务器都要能够解析邮件目的地址的域名。