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 を使って処理し
   ます。このオブジェクトを動作させるとオープンリレーを 作成してしまう
   可能性が多分にあります。注意してください。
