4

在能够向 Lamson 发送邮件之前,我找不到任何关于用户进行身份验证的信息。我发现唯一提到的 SSL/TLS 是在 Relay 类中,据我所知,它在 Lamson 处理完消息后运行。我希望 Lamson在进行任何处理之前检查 LDAP 凭据,但我不希望通过网络发送的密码未加密。如果有某种身份验证处理程序,我可以处理 LDAP 部分,但我也没有找到。

我还没有编写任何代码,现在只是通过阅读文档来探索选项。

4

1 回答 1

6

答案是 Lamson 不支持 SMTP AUTH(要求用户在服务器接受电子邮件之前进行身份验证的 SMTP 扩展)只是因为它建立在 Python 标准库smtpd模块之上,该模块本身不支持 SMTP AUTH .

您可以通过查看源lamson.server.SMTPReceiver(这是在 Lamson 中实现传入 SMTP 服务器并继承自的类smptd.SMTPServer)和smtpd.SMTPChannel(这是在将传入 SMTP 消息传递给之前最初处理传入 SMTP 消息的类)的源来验证这一点smtpd.SMTPServer.process_message()

然而,一切都没有丢失,这个项目是标准库的衍生产品smptd,旨在提供对 SMTP AUTH 和 SSL 的支持(同时满足您的要求)。

因此,您可以编写一个从上述项目派生的新类,SMTPServer并模拟 Lamson 的STMPReceiver. 然后,在 Lamson'sconfig/boot.py中,您需要更改该行:

from lamson.server import Relay, SMTPReceiver

到:

from lamson.server import Relay
from my_module import my_class as SMTPReceiver

替换my_modulemy_class酌情加载您新编写的课程。

这将确保在 Lamson收到电子邮件时执行用户身份验证,然后再进行任何进一步的处理。当然,您将确保仅通过 SSL 启用连接并实现,如您所说,LDAP 部分(除非由某些 SASL 实现或其他提供)。

我认为这几乎涵盖了它。祝你好运 :)

于 2013-01-30T16:54:29.980 回答