メールは、Mailbox ファイルに保存する代わりに、 すべてがあなたの制御下で、 次のようなことを行えます。
.qmail は、1つ以上の行で構成されます。 それぞれの行は、配信命令(delivery instruction)です。 qmail-local は、それぞれの命令を順番に解釈します。
配信命令には、次の5つのタイプがあります。
# this is a commentqmail-local は、この行を無視します。
|preline /usr/ucb/vacation djbqmail-local は、 行の残りを、 sh に与えるコマンドとして解釈します。 より詳細な情報は、qmail-command (8) を参照してください。
&me@new.job.comqmail-local は、行の残りを、 メール・アドレスとして解釈します。 qmail-local は、 メッセージをこのメール・アドレスに転送するため、 qmail-queue (8) を使用します。 アドレスのドメイン部は、 完全修飾ドメイン名(fully qualified domain name)でなければなりません。 また、次の例のような、 余分な空白、鍵括弧(angle brackets)、コメントなどを含めてはいけません。
# the following examples are WRONG &me@new &アドレスが英数字で始まる場合、 行頭のアンパサンド(&)は、省略することができます。& me@new.job.com &me@new.job.com (New Address)
me@new.job.com転送命令では、 qmail-local は、 新しい Return-Path 行を追加しない点に注意してください。
/home/djb/Mailbox.sosqmail-local は、行全体をファイル名として解釈します。 qmail-local は、 可能ならフロック形式(flock-style)のロックを用いて、 メール・メッセージをそのファイルに追加します。 qmail-local は、メール・メッセージを mbox 形式で保存します。 mbox 形式については、mbox (5) に説明されています。
[警告]
qmail-local がファイルをロックすることができても、 ディスクが満杯になった時など、 ファイルの書き込みで問題が生じた場合、 qmail-local は、ファイルを元の長さに切捨てます。 しかし、 配送中にシステムがクラッシュした場合、 メール・ボックスがおかしくなることを防止できません。
/home/djb/Maildir/qmail-local は、行全体を、 maildir 形式で、 ディレクトリの名前として解釈します。 qmail-local は、 受信メッセージを、 このディレクトリに、 信頼できる形で保存します。
.qmail に実行ビットが設定されている場合、
.qmail 完全に空か存在しない場合、 qmail-local は、 システム管理者により設定された defaultdelivery 命令に従います。 通常、defaultdelivery は ./Mailbox なので、 qmail-local は、 メール・メッセージを Mailbox に、 mbox 形式で追加します。
.qmail は、 行末に、余分な空白やタブを含んでもかまいません。 空白行も許されていますが、 .qmail の最初の行は、空白行ではいけません。
.qmail が、誰もが書き込める場合やグループのメンバーが書き込める場合、 qmail-local は停止し、一時的な失敗(temporary failure)を表示します。
$ chmod +t $HOMEホーム・ディレクトリがスティッキである場合、 qmail-local は、 すべてのメッセージの配送を一時的に延期します。
編集が終了したら、スティッキ・ビットを元に戻します。
$ chmod -t $HOME次のような方法で、 新しい .qmail ファイルをテストしておくと良いでしょう。
$ /var/qmail/bin/qmail-local -n $USER ~ $USER '' '' '' '' ./Mailboxホーム・ディレクトリにスティッキ・ビットが設定されている場合、 警告が表示されます。
別名ユーザーは、すべての他のアドレスを制御します。 ローカルへの配送は、 homedir/.qmail-local ファイルによって制御されます。 ここで、homedir は、別名のホーム・ディレクトリです。
以下の記述では、 qmail-local は、メッセージのアドレスを local@domain として扱っています。 ここで、local は、.qmail-ext により制御されています。
.qmail-ext が完全に空である場合、 qmail-local は、システム管理者により設定された、 defaultdelivery 命令を解釈します。
.qmail-ext が存在しない場合、 qmail-local デフォルトの .qmail ファイルを試します。 例として、 ext が foo-bar の場合、 qmail-local は、最初に .qmail-foo-bar を試みます。 次に、.qmail-foo-default を試し、 最後に、.qmail-default を試します。 これらのどれも存在しければ、 qmail-local は、メッセージを返送します。
例外として、 基本的なユーザーのアドレスに関して、 qmail-local は、 存在しない .qmail を空の .qmail と同様に扱います。
[警告]
qmail-local が、 .qmail-ext または .qmail-default で指示されたメッセージを転送するとき、 .qmail-ext-owner が存在するかどうかを検査します。 存在した場合、 qmail-local は、 転送されたメッセージについて、 表書き発信者(envelope sender)として、 local-owner@domain を使用します。 存在しない場合、 オリジナルのメッセージの表書き発信者のままにします。 例外として、 表書き発信者が空アドレスや#@[]の場合、 つまり差戻しメール(bounce message)の場合、 qmail-local は、いつもオリジナルの表書き発信者のままにします。
qmail-local も、VERPs (variable envelope return paths) をサポートします。 .qmail-ext-owner と .qmail-ext-owner-default の両方が存在する場合、 qmail-local は、local-owner-@domain-@[] を、 表書き発信者として使用します。 このため、 受信者 recip@reciphost には、 表書き発信者が local-owner-recip=reci-phost@domain のように見えることになります。
プログラムが終了コード 99 を返す場合、 qmail-local は、.qmail 中の以降の行を無視しますが、 さらに、以前の転送行に注意を払います。
一つの命令における、一時的な失敗や恒久的な失敗が、 他の処理に影響を与えないよう、 独立した命令を設定するために、 命令を別々の .qmail-ext ファイルに移動します。 また、 .qmail-exts のすべてに転送するように、 中心の .qmail ファイルを設定します。 qmail-local は、同時に複数の転送行を扱えることに注意してください。