20.13. smtpd
— SMTP サーバー¶
Source code: Lib/smtpd.py
このモジュールでは、 SMTP サーバを実装するためのクラスをいくつか提供しています。一つは何も行わない、オーバライドできる汎用のサーバで、 その他の二つでは特定のメール送信ストラテジを提供しています。
20.13.1. SMTPServer オブジェクト¶
-
class
smtpd.
SMTPServer
(localaddr, remoteaddr)¶ 新たな
SMTPServer
オブジェクトを作成し、それをローカルのアドレス localaddr に bind します。このオブジェクトは remoteaddr を上流の SMTP リレー先とします。 localaddr と remoteaddr のどちらも (host, port) タプルである必要があります。このクラスはasyncore.dispatcher
を継承しており、インスタンス化時に自身をasyncore
のイベントループに登録します。-
process_message
(peer, mailfrom, rcpttos, data)¶ このクラスでは
NotImplementedError
例外を送出します。受信したメッセージを使って何か意味のある処理をしたい場合にはこのメソッドを オーバライドしてください。コンストラクタの remoteaddr に渡した値は_remoteaddr
属性で参照できます。 peer はリモートホストのアドレスで、 mailfrom はメッセージエンベロープの発信元 (envelope originator) 、 rcpttos はメッセージエンベロープの受信対象、そして data は電子メールの内容が入った(RFC 2822 形式の)文字列です。
-
20.13.2. DebuggingServer オブジェクト¶
-
class
smtpd.
DebuggingServer
(localaddr, remoteaddr)¶ 新たなデバッグ用サーバを生成します。引数は
SMTPServer
と同じです。メッセージが届いても無視し、標準出力に出力します。
20.13.3. PureProxy オブジェクト¶
-
class
smtpd.
PureProxy
(localaddr, remoteaddr)¶ 新たな単純プロキシ (pure proxy) サーバを生成します。引数は
SMTPServer
と同じです。全てのメッセージを remoteaddr にリレーします。このオブジェクトを動作させるとオープンリレーを作成してしまう可能性が多分にあります。注意してください。
20.13.4. MailmanProxy Objects¶
-
class
smtpd.
MailmanProxy
(localaddr, remoteaddr)¶ 新たな単純プロキシサーバを生成します。引数は
SMTPServer
と同じです。全てのメッセージを remoteaddr にリレーしますが、 ローカルの mailman の設定に remoteaddr がある場合には mailman を使って処理します。このオブジェクトを動作させるとオープンリレーを 作成してしまう可能性が多分にあります。注意してください。