4

Lamsonにメールを送信する前に、ユーザーが自分自身を認証することについては何も見つかりません。私が見つけた唯一のSSL/TLSの言及は、Lamsonがメッセージの処理を終了した後に実行されることを理解しているRelayクラスにあります。Lamsonが処理を行うにLDAPクレデンシャルをチェックするようにしたいのですが、パスワードを暗号化せずにネットワーク経由で送信したくありません。ある種の認証ハンドラーがあれば、LDAP部分を処理できますが、これも見つかりませんでした。

私はまだコードを書いていません。今のところドキュメントを読んでオプションを調べています。

4

1 に答える 1

6

答えは、Lamson が SMTP AUTH (電子メールがサーバーによって受け入れられる前にユーザーの認証を要求する SMTP 拡張機能) をサポートしていないということですsmtpd。これは、それ自体が SMTP AUTH をサポートしていない Python 標準ライブラリ モジュールの上に構築されているためです。 .

lamson.server.SMTPReceiver(これは、着信 SMTP サーバーを Lamson に実装し、 から継承するクラスですsmptd.SMTPServer) およびsmtpd.SMTPChannel(これは、着信 SMTP メッセージを に渡す前に最初に処理するクラスです)のソースを調べることで、これを自分で確認できますsmtpd.SMTPServer.process_message()

ただし、すべてが失われるわけではありません。このプロジェクトsmptdは、 SMTP AUTH と SSL (両方の要件をカバーする) のサポートを提供することを目的とした標準ライブラリのスピンオフです。

SMTPServerしたがって、上記のプロジェクトから派生し、 Lamson の の動作をエミュレートする新しいクラスを作成できますSTMPReceiver。次に、ラムソンのconfig/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 に答える