我找不到任何关于用户在能够向 Lamson 发送邮件之前进行身份验证的信息。我发现唯一提到的 SSL/TLS 是在 Relay 类中,我理解它是在 Lamson 处理完消息后运行的。我希望 Lamson 在进行任何处理之前检查 LDAP 凭据,但我不希望通过网络发送的密码未加密。我可以处理 LDAP 部分,前提是有某种身份验证处理程序,我也没有找到。
我还没有写任何代码,现在只是通过阅读文档来探索选项。
最佳答案
答案是 Lamson 不支持 SMTP AUTH(要求用户在服务器接受电子邮件之前进行身份验证的 SMTP 扩展)仅仅因为它构建在 Python 标准库 smtpd
模块之上,而该模块本身不支持 SMTP授权。
您可以通过查看 lamson.server.SMTPReceiver
(这是在 Lamson 中实现传入 SMTP 服务器并从 smptd.SMTPServer
继承的类)和 smtpd.SMTPChannel
(它是在将传入 SMTP 消息传递到smtpd.SMTPServer.process_message()
)。
然而,一切都没有丢失,this project 是标准库的 smptd
的衍生产品,旨在提供对 SMTP AUTH 和 SSL 的支持(满足您的需求)。
因此,您可以编写一个派生自上述项目的 SMTPServer
的新类,该类模拟 Lamson 的 STMPReceiver
的行为。然后,在 Lamson 的 config/boot.py
中,您需要更改该行:
from lamson.server import Relay, SMTPReceiver
至:
from lamson.server import Relay
from my_module import my_class as SMTPReceiver
根据需要替换
my_module
和 my_class
以加载新编写的类。这将确保在 Lamson 收到电子邮件消息时执行用户身份验证,然后再进行任何进一步处理。当然,您将确保仅通过 SSL 启用连接并实现 LDAP 部分(除非由某些 SASL 实现或其他实现)。
我认为这几乎涵盖了它。祝你好运 :)
关于python - Lamson 能否在 TLS/SSL 下运行并验证用户身份?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13699324/