我正在运行一个带有 postfix 的服务器来处理从 php 网站发送的电子邮件。
该域名的电子邮件由另一台服务器处理,但是由于该域名已输入“mydestintion”(main.cf),因此 Web 服务器使用本地中继,而不是通过邮件服务器发送。
问题是名称与电子邮件地址相同的用户不存在。
这些电子邮件是永远消失了还是被存储在某个地方?
答案1
大多数 MTA 几乎都会想尽一切办法避免将邮件丢在地上。通常情况下,会产生退回邮件(由接收方 MTA 生成,或者,对于行为更好的 MTA,接收方 MTA 将拒绝并返回 5xx 致命错误代码,而发送方 MTA 将把出站邮件转换为退回邮件)。
如果退回的邮件本身无法送达,那么保留该邮件的 MTA 通常会将其发送给最后的收件人,即当地邮政局长。
只有当 MTA 无法做到时任何事物使用它(这通常需要您主动配置它以避免这种情况)它是否会崩溃并破坏消息。即使这样,您通常会发现类似以下日志条目
Oct 24 04:18:57 host sm-mta[4499]: g9N5EwE3004499: Losing q5/qfg9N5EwE3004499: savemail panic
Oct 24 04:18:57 host sm-mta[4499]: g9N5EwE3004499: SYSERR(root): savemail: cannot save rejected email anywhere
因此,我的建议是从生成邮件的系统开始,然后跟踪日志条目。这可能非常具有取证性,并且它通常可以跨越多个不同的系统(如果它们的时钟不同步,您会后悔决定不安装 NTP!)但最终,所有优秀的 MTA 都会保留出色的日志,一旦您了解了它们的编写方式,它们将要加起来。
最终,您要么会收到日志恐慌,要么会收到日志最终投递,通常是本地邮件池。这并不意味着邮件仍会留在池中;可能有人读过它,或者 cron 作业整理过它 - 但这不是 MTA 的错,也不是它的问题。当 MTA 收到您的邮件时,它会竭尽全力去做某物与您的电子邮件一起,如果您知道如何查找,它就会告诉您它做了什么。
从日志开始。