我有以下情况:
[HTTP服务器]:处理消息
[SMTP服务器]:仅发送邮件
[HTTP 服务器] === 连接到 ===>>> [SMTP 服务器] === 发送消息 ===>>> [世界]
好的,一切进展顺利。
我的观点是:如何从[SMTP 服务器] 获取反馈以知道我的消息是否真的已发送?
使用 php-mailer 或任何语言/api(在[HTTP 服务器]中),我只收到服务器之间连接的反馈:“与 SMTP 服务器的连接正常”,但这并不能证明我的消息确实已发送。
我的意思是,如何获取 /var/log/maillog 中显示的每条消息的“status=sent”或“status=bounced”?
我在过去几周确实尝试过这个,但没有成功。
我的工作方式是,当 [HTTP 服务器] 连接到 [SMTP 服务器] 时,从邮件日志中获取消息 ID,因此稍后我将(从 [HTTP 服务器] 到 [SMTP 服务器] 的 SSH)使用此消息 ID 在 /var/log/maillog 中查找并获取此“status=sent”或“status=anything”。
但我很确信有一种自动化的方法可以做到这一点。
有人知道吗?
答案1
知道您是否捕获了 NDR 和类似信息的唯一方法是拥有一个有效的发件人:或回复:地址来捕获此类信息,并确保您的 SMTP 服务器将生成并传递这些信息。
答案2
这就是 SMTP 的工作方式,您将邮件发送到下一台服务器,它会告诉您是否接受了邮件。除此之外,还需要访问中继服务器。
如果您希望自动化,可以让邮件服务器每隔 5 分钟向您发送 /var/log/maillog 片段。