周三,我们与主机商发生了不相关的电子邮件问题,他们做出了一些更改,包括foo.com
从 中删除我们的域名/etc/local_domains
。
这产生了一些深远(且难以诊断)的影响,我们直到星期四才真正注意到邮件根本没有送达。我花了星期四的时间试图找出我们的电子邮件 cronjobs 出了什么问题,但星期五我终于找到了真正的问题并解决了它。
现在的问题是很多过去两天丢失的电子邮件。如果可能的话,我需要找到这些丢失的消息,但不幸的是,在谷歌上搜索“快递失败的电子邮件去哪里了”会得到一堆关于实体空间发货的新闻报道。我检查了里面的文件,/var/mail
但里面的文件是空的——我猜 cPanel 或 Courier 对电子邮件做了一些我意想不到的事情。
我的问题是:那段时间无法投递的邮件会去哪里?它们是否可能仍然存在于某个地方,我可以恢复它们?
答案1
cpanel /etc/local_domains 可能用于配置 exim,而不是 courier。传入的电子邮件通过 smtp 传递,而不是 pop 或 imap。
事情是这样的:
- 远程邮件服务器正在为您的域名寻找 MX 服务器
- 您的 DNS 配置可能设置为您的 cpanel 服务器是您的域名具有最高优先级的 MX 服务器
- 远程邮件服务器已连接到您服务器上的 exim。由于您的域未在 exim 上配置,因此 exim 将该连接解释为 RELAY 请求,并很可能通知远程邮件服务器已满。
因此,抱歉,这些电子邮件不在您的服务器上。
那么希望就很小了:如果 Exim 拒绝了传入的电子邮件并显示 5xx 错误消息,那么远程服务器保留该消息的可能性很小。但如果 Exim 拒绝了传入的电子邮件并显示 4xx 错误消息,那么可能会发生以下两种情况:
- 您已为您的域配置了多个 MX 服务器。请查看其他邮件服务器是否收到了电子邮件并将其存储起来以供将来发送。
- 4xx 错误消息应该是“临时的”,这意味着远程邮件服务器将保留该消息在队列中,并根据其配置在一定时间内重试。也许您当前正在接收因配置错误而被拒绝的“旧”电子邮件。
因此,为了查找您的域是否配置了其他 MX 服务器:
dig foo.com mx
然后,为了检查 SMTP 服务器对中继请求的应答:
- 在远程客户端上(重点是要有一个外部 IP 地址):
telnet 你的服务器 IP 地址 25
HELO helo.com
邮件发件人:<[email protected]>
收件地址:<[email protected]>
每行(HELO、MAIL FROM、RCPT TO)之后,您都会收到来自服务器的答复。RCPT TO: 的答复应为 5xx .. 或 4xx .. 。如果是 4xx,您还有一点希望。