我们在现场有一些非常老旧的无线电设备,它们使用 SMTP 来通知我们故障。遗憾的是,这些设备不支持现代 SMTP 身份验证方法(SSL 等),只能发送 PLAIN 身份验证方法。
(升级设备以使用现代身份验证方法不是一种选择)
我发现本文将 NGINX 配置为 SMTP 代理。
但我需要做以下事情,文章没有充分解释:
- 在端口 25 上接受来自传统设备的传入 SMTP 连接。
- 通过 IP 地址过滤传入连接(我们会手动维护允许的 IP 列表)并仅允许列表中的 IP。
- (可选)验证传入的 SMTP 连接 PLAIN 身份验证(用户名/密码)
- 使用现代身份验证方法(SSL)连接到现代 SMTP 服务器,使用不同的用户名和密码(这些凭据将在 NGINX 配置文件中硬编码,因为所有通知都从同一地址发送)。
- 丢弃发送者的“FROM”命令并注入我们自己的命令,以匹配#4 中的用户。
- 丢弃发送者的“TO”命令并注入我们自己的命令(所有通知都发送到同一个目标地址)
- 将“DATA”命令不加改变地传递到现代服务器。
希望这有意义。基本上,我们正在注入自己的身份验证,以便现代服务器接受连接,而不管发送服务器的身份验证方法如何,并使用 IP 地址来阻止机器人和垃圾邮件发送者。
谢谢您的任何建议。这可能对 NGINX 的要求太高,可能需要自定义解决方案(例如 Python、Node 等)。欢迎提出任何建议。
我还发现这个科幻问题它解释了使用 sendmail 和 postfix 的这个过程。但我仍然很好奇是否可以仅使用 NGINX 来完成。
答案1
尽管它就像一个代理,但通过寻找“SMTP 中继”,您会找到更好的结果。
我不知道 NGINX 有邮件功能。NGINX 是一个著名的 Web 服务器,但我不确定将其改造为支持邮件是否是他们最好的主意(纯粹不合理的论点!)
我推荐更简单的解决方案: