Debian パッケージ courier-mta

dot-forward

名前

dotforward, dot-forward -- $HOME/.forwardファイルの読み取り

書式

$ cat $HOME/.courier
|| dotforward
./Maildir

説明

dotforwardプログラムは互換性を提供するモジュールで$HOME/.forwardファイルの転送指示を読み取ります。 dotforwardsendmail その他$HOME/.forward ファイルを使用するメールサーバの互換を保つために使用されます。 dotforwardプログラムは dot-courier(5) 配送指示ファイルから起動されるように意図されています。 システム管理者はデフォルトの配送指示に加えることにより、 システムとして$HOME/.forwardの使用を提供することができます。 配送指示を$HOME/.forwardファイルから読み込むようにするには、 "|| dotforward"を $HOME/.courier*の最初の行に記述してください。 "|| dotforward" はcourierdコンフィギュレーションファイルのDEFAULTDELIVERY項目に追加することもできます。 どちらの場合でも改行が必要で、 残りの行は$HOME/.forwardファイルがなかった場合の配送指示として用いられます。

dotforwarddot-courier(5)配送指示ファイル (あるいはDEFAULTDELIVERY) から"||"付で起動されることを想定しています。dotforwardは環境をチェックし、標準入力からメッセージを読み取り、$HOME/.forwardファイルを解釈し、標準出力にdot-courier(5) 形式での配送指示に書き換えて出力します。 Courierでは "||"はdotforwardの出力を配送指示に加えることを意味します。

$HOME/.forwardファイルを扱うときのセキュリティモデルの違いから、Courierとsendmailなどの他のメールサーバとで100%の互換を保てるというわけではありません。 dotforwardプログラムの動作について以下に解説します。

$HOME/.forwardの解釈

dotforwardDTLINE 環境変数と、 標準入力から配送しようとしているメッセージのヘッダを読み取ります。 DTLINE は受信者のメールアドレスがセットされています。 Delivered-To ヘッダにはすでにこのメッセージを受信した受信者が含まれます。 これは$HOME/.forwardファイルと他の受信者との間で互いにメールを転送しあっている状況で、 メールループが発生するのを防ぐために用いられます。

$HOME/.forwardファイルが存在しない場合、dotforward プログラムは何もせずに終了コード0で終了します。$HOME/.courierファイルに記述された残りの配送指示が実行されます。

$HOME/.forwardが存在するときは、そこに転送先のアドレスが記述されています。 転送先のアドレスには、実際のメールアドレスの他、プログラムの名前や メールボックスの名前があります。 $HOME/.forwardファイルの各行は , (コンマ) で区切られた転送先アドレスのリストから成ります。 "| /path/to/program" ( "記号自体を含みます)はプログラムへの配送を指定します。 メッセージは指定プログラムへパイプされます。 "/path/to/mailbox" あるいは "./path/to/mailbox" (これも"自体を含みます) は指定メールボックスへの配送を指定します。(2番目の例では$HOMEからの相対パスです。)

"| /path/to/program"、 "/path/to/mailbox"、 そして "./path/to/mailbox" は行に単独で書かれる場合、" 記号なしでも記述できます。

その他のすべてのアドレスは転送先のメールアドレスとして解釈されます。 メールアドレスの前のバックスラッシュは除去されます。バックスラッシュはsendmail ではメールループの発生を防止するために用いられます。 Courierは別のメールループ検出手段を採っているため、 バックスラッシュは必要ありません。

すべての転送先アドレスはDelivered-Toヘッダ中のメールアドレスと突き合わされます。もし$HOME/.forward中のアドレスが Delivered-Toヘッダのどれかと一致した場合、そのアドレスは配送先リストから除外されます。

dotforwardは通常終了コード 99で終了します。 この結果としてCourierはメッセージがdotforwardにより正常に配送されたとみなされ、.courierファイルの残りの配送指示は実行されません。 もし$HOME/.forward中の転送先アドレスが DTLINE環境変数で指定されるアドレスと同じ場合、 そのアドレスは転送先アドレスから取り除かれ、 (残りの転送先アドレス等を標準出力に出力した後) dotforward は終了コード0で終了します。 この場合、Courierはdotforwardでの転送指示に従った後、.courierでの追加の転送指示も実行します。

バグ

dot-courier(5) での制限や注意事項をここでも説明すべきです。 ||で実行されるプログラムから読み取られる転送先には最大文字数の制限があります。 また、配送指示が配送エラーステータスで終了した場合、 たとえすべての転送先に正常に転送済みであったとしても、 あとでメッセージの再送が完全に行われてしまいます。

関連項目

dot-courier(5).