我为客户建立了一个表格,并意识到我在 FROM 字段中使用了无效的地址。(501 无效地址(回复 MAIL FROM 命令))。
有什么方法可以恢复这些原本应该通过电子邮件发送给我的客户的表单提交吗?目前看来 Postfix 只是删除了它们。
运行 Debian。
有想法吗?
答案1
如果您的 Web 服务器要直接连接到客户的电子邮件主机(而不是使用智能主机),您可能会在 root 的邮箱中找到它们,或者可能在提交电子邮件的用户的邮箱中找到它们(可能是 www-data)。
如果他们去智能主机进行投递,那么我会查看该智能主机上的 root 邮箱。
补充:如果您有权访问所有涉及的邮件服务器,您可能能够查看邮件日志并查看电子邮件的放置位置 - 它们通常被标记为“死信”或“dead.letter”...如果您找不到它们或任何对它们的引用在mail.log中,我想不出任何其他可以尝试的方法。
答案2
查看位置取决于您的 Web 应用程序如何发送电子邮件。如果您的 Web 应用程序通过直接向邮件服务器“发送”SMTP 来发送电子邮件,那么电子邮件将丢失,因为命令在MAIL FROM:
电子邮件内容传输之前发出,因此它中止了,而没有将电子邮件发送到任何地方。
否则,发生的情况取决于您用于发送邮件的语言和函数。例如,Linux 上的 PHP mail() 函数使用本地 sendmail 应用程序发送邮件,该应用程序将邮件“注入”本地 SMTP 服务器以供该服务器传送。然后发生的情况取决于服务器和问题。就我而言,通过 exim 从 PHP 发送的坏邮件通常会反弹给 www-data 用户,但偶尔 exim 会“冻结”队列中的邮件,因为它无法弄清楚如何处理它。postfix 可能会做类似的事情,在这种情况下,电子邮件可能位于 /var/spool/postfix/ 之类的文件夹中,而不是 /var/spool/mail/