在向Lamson发送邮件之前,我找不到任何关于用户身份验证的信息。我唯一提到的SSL/TLS是在Relay类中,据我所知,该类在Lamson完成消息处理后运行。我希望Lamson在进行任何处理之前检查LDAP凭据,但我不希望通过网络发送的密码未加密。如果有某种类型的处理程序,我可以处理LDAP部分,而我也没有找到这些处理程序。
目前我还没有编写任何代码,只是通过阅读文档来探索选项。
发布于 2013-01-30 16:54:29
答案是Lamson不支持SMTP AUTH ( SMTP扩展将要求用户在电子邮件被服务器接受之前进行身份验证),仅仅是因为它构建在Python库smtpd模块之上,该模块本身不支持SMTP AUTH。
您可以通过查看lamson.server.SMTPReceiver的源代码(这是在Lamson中实现传入SMTP服务器并从smptd.SMTPServer继承的类)和smtpd.SMTPChannel (在将传入的SMTP消息传递到smtpd.SMTPServer.process_message()之前首先处理传入的SMTP消息的类)来验证这一点。
然而,并不是所有的东西都丢失了,这个项目是标准库的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实现或其他实现提供了该部分)。
我想这很能说明问题。祝你好运:)
https://stackoverflow.com/questions/13699324
复制相似问题