Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名前

       procmail - 自律型メールプロセッサ

書式

       procmail [-ptoY] [-f fromwhom]
            [parameter=value | rcfile] ...
       procmail [-toY] [-f fromwhom] [-a argument] ...
            -d recipient ...
       procmail [-ptY] -m [parameter=value] ...  rcfile
            [argument] ....br procmail -v

説明

       取り敢えずすぐ始めたい場合は、後の 備考 を参照されたい。

       procmail  は、メールの到着後  .forward  ファイルの仕組みを通じてただちに自動起動されるだろ
       う。 あるいは、システム管理者がインストールした場合は、 メーラ内部から直接起動されることも
       ある (訳注: 原文は mailer と書かれているが、ここでは MUA ではなく MTA を指しているものと推
       測する)。 procmail は起動すると、まずいくつかの環境変数をデフォルト値に設定する。 それから
       EOF  (End Of File; ファイルの終端) に行き当たるまで、 標準入力からメールメッセージを読み込
       み、ヘッダーと本文を分離する。        その後、コマンドラインに引数が指定されていなければ、
       $HOME/.procmailrc    という名前のファイルを探し始める。   このファイル内の処理レシピに従っ
       て、到着したメールメッセージは適切なフォルダ (及びその他) に配送される。 もし rcfile  が見
       つからないか、  rcfile の処理が終わったら、 procmail は メールをシステムのデフォルトのメー
       ルボックスに保存する。

       rcfile が存在せず、さらにコマンドラインに -p も指定されていない場合、 /etc/procmailrc ファ
       イルが存在すれば、procmail  は $HOME/.procmailrc を読み込む前に、 このファイルに書かれてい
       るコマンドを解釈する。 /etc/procmailrc  を作成するときは十分に注意を払わなければならない。
       なぜなら、状況によっては、このファイルの解釈は  root 権限で 実行される場合がありえるからで
       ある (もちろん $HOME/.procmailrc の場合はそのようなことはない)

       procmail は、 suid root されているか、或は root 権限で動作している場合、  機能拡張され、下
       位互換性のあるメール配送エージェントとして動作できるようになる。

       また、procmail  は汎用のメールフィルタとしても使える。 つまり、(元々は一般的な目的のメール
       フィルタだったが) 特別な sendmail のルールを使用して procmail を実行できるようにする仕組み
       が 設けられたのである。

       rcfile のフォーマットは procmailrc(5)  マニュアルページで詳細に解説されている。

       重みつきスコアリング手法については procmailsc(5) に詳しい説明がある。

       rcfile のレシピの例は procmailex(5)  マニュアルページを参照されたい。

   シグナル
       TERMINATE   直ちに終了し、メールをキューに戻す。

       HANGUP      直ちに終了し、メールを送信元へ送り返す。

       INTERRUPT   直ちに終了し、メールを送信元へ送り返す。

       QUIT        直ちに終了し、ユーザには何も通知せずにメールを消去する。

       ALARM       強制的に時間切れで終了させる ( TIMEOUT を参照されたい)。

       USR1        VERBOSE=off と同じ意味。

       USR2        VERBOSE=on と同じ意味。

オプション

       -v   バージョン番号とコンパイル時の環境設定を表示して終了する。

       -p   古い環境をすべて保存する。  procmail は通常、起動時に TZ を除くすべての環境変数の値を
            消去する。 但し、どのような場合においても: procmail  が内包するあらゆるデフォルト値は
            同一名の既存の環境変数より優先される。 すなわち、 procmail は既に定義されている同名の
            環境変数には全くお構いなく、  procmail   のデフォルト値にてそれらを適切に上書きする。
            procmail で予め設定されている環境変数の一覧については、 procmailrc(5)  を参照のこと。
            -p         と          -m          が両方指定されている場合は、予め設定する環境変数は
            LOGNAME、HOME、SHELL、ORGMAIL  および MAILDIR だけに限定される。 (訳注: procmail の通
            常動作は、 TZ  以外の親プロセスの環境変数を全削除すると共に、自身の動作にかかわる環境
            変数を多数「上書き」設定する。  -p オプションが指定されると、 procmail は自身の動作に
            かかわる5つの環境変数のみを設定し、それ以外の親プロセスにて設定されている環境変数を削
            除しない。結果として親プロセスの環境が保持される。)

       -t   procmail  をフェールソフトにする。 つまり、ユーザが指定したどの配送先にも procmail が
            メールを配送できない場合、 メールはバウンスせず  (配送エラーメールとして送り返されず)
            メールキューに戻る。 その後しばらくしてから再度配送を試みる。

       -f fromwhom
            fromwhom を送信者(sender)にして、先頭の `From ' 行を再作成する (-f の代わりに、今では
            使われなくなっているが -r が使用できる)。 fromwhom が `-' 1個だけの場合、procmail  は
            `From  '  行のタイムスタンプの  更新のみ行う  (これはタイムスタンプが存在する場合であ
            る。なければ新たに作成する)。

       -o   誰にも `From ' 行の生成を許可させないで、単に偽物を上書きする。

       -Y   従来の Berkeley mailbox フォーマットを想定し、 Content-Length: フィールドはすべて無視
            する。

       -a 引数
            このオプションは、  $1 にコマンドライン引数を設定する。 後続する -a 引数 はそれぞれ次
            の番号の変数 ($2、$3、他) に設定される。 このオプションで procmail にメタ情報を渡すこ
            とができる。 通常、sendmail メーラルールから $@x 情報を渡すことに用いられる。

       -d recipient ...
            これは明示的な配送モードを有効にする。 配送はローカルユーザ recipient へ行われる。 も
            ちろん、これは procmail が root 権限を備える場合 (或は procmail が 受取人の euid 及び
            egid  で動作している場合)  にのみ可能である。 procmail は指定された受取人に setuid さ
            れ、  受取人により引数のない状態で起動されたかのようにメールを配送する。  (すなわち、
            rcfile が見つからない場合、配送は通常のメールのように 行われる)。 このオプションは -p
            とは互換性がない。

       -m   procmail を汎用のメールフィルタにする。 このモードでは rcfile  をコマンドラインで一つ
            指定しなければならない。  rcfile に後続する引数に制限はない。 rcfile が後方参照のない
            /etc/procmailrcs/ で始まる絶対パスである (すなわち、親ディレクトリが指定できない)  場
            合、 セキュリティの侵害がない場合のみ procmailは rcfile (またはシンボリックリンク) の
            所有者のユーザ属性になる。 このオプションのより詳細な使用法は下記の    を参照された
            い。 引数に `=' が入っている場合は、すべて環境変数への値の割り当てと見なす。 デフォル
            ト値が割り当てられた後に、この割り当てがI<全て>評価され、  その後に最初の  rcfile  が
            オープンされる。

       その他の引数はすべて  rcfile  のパスと見なされる。 (このパスは絶対パスか、または `./' で始
       まっていれば 現在のディレクトリからの相対パスのいずれかである。 その他のすべての相対  パス
       は、  -m オプションを使用しない限り $HOME からの相対パスである。 -m オプションを使用した場
       合、すべての相対パスは現在のディレクトリからの 相対パスとなる。)  そして procmail は、コマ
       ンドラインで最初に見つかった  rcfile  を使用して  起動する。  先行する引数に指定されている
       rcfile に合致する HOST 指示 (HOST-directive) を有しない場合、または引数が 存在しない場合に
       のみ、コマンドライン上にて次に指定されている rcfile が 一つだけ解析される。

       rcfile を何も指定しない場合は $HOME/.procmailrc を検索する。 rcfile が見つからなくても、環
       境変数のデフォルト設定と コマンドラインで指定された値に従って処理を続行する。

       rcfile のレシピの例は procmailex(5)  のマニュアルページを参照されたい。 rcfile  のちょっと
       したサンプルは、後述する 備考 にを参照のこと。

       sendmail.cf  の文法を多少なりとも知っているシステム管理者以外は、 これ以降の「例」は読み飛
       ばして頂きたい。

       -m オプションは、sendmail.cf ファイルのルールから procmail を呼び出す際に 使われるのが一般
       的である。このようにするには、自分の   sendmail.cf   ファイルに、  (procmail  を立ち上げる
       `local' メーラはおそらく既に存在するだろうが、 それに加えて)  `procmail'  メーラを別途追加
       すると都合が良い。 このような `procmail' メーラを作成するには、次のようにすればいいだろう:

              Mprocmail, P=/usr/bin/procmail, F=mSDFMhun, S=11, R=21,
                      A=procmail -m $h $g $u

       こうすれば、   (大抵の場合   ruleset  0  にある)  以下のようなルールを使用して、  メールを
       procmail メーラを通じてフィルタできる。  (ただし、ルールを継続して記述するために行頭にタブ
       があることと、 コメントを分離するためにタブがあることに注意。)

              R$*<@some.where>$*
                      $#procmail $@/etc/procmailrcs/some.rc $:$1@some.where.procmail$2
              R$*<@$*.procmail>$*
                      $1<@$2>$3       Already filtered, map back

       そして /etc/procmailrcs/some.rc は次のように簡単になる:

              SENDER = "<$1>" # 空の送信者アドレスを修正 SHIFT = 1 # $@ から除去

              :0 # 全てのゴミメールを放り込む * ^Subject:.*junk /dev/null

              :0 w # それ以外の全てのメールを通過させる ! -oi -f "$SENDER" "$@"

       /etc/procmailrcs/some.rc  ファイルの中からメールを送信するときには 特に注意されたい。 最初
       のルールに合致するアドレスにメールを再度送信すると、メールの  無限ループを引き起こすことに
       なる。

ファイル

       /etc/passwd            受取人の LOGNAME, HOME, SHELL の各変数のデフォルトを設定する。

       /var/spool/mail/$LOGNAME
                              システムメールボックス;  システムメールボックスとそれを格納するすぐ
                              上のディレクトリが存在しなければ、 両方とも procmail が起動する度毎
                              に作成される。

       /etc/procmailrc        初期のグローバル rcfile

       /etc/procmailrcs/      rcfile に特権を与えるパス

       $HOME/.procmailrc      デフォルトの rcfile

       /var/spool/mail/$LOGNAME.lock
                              システムメールボックスのlockfile (procmail が自動的に使用することは
                              ない。 但し、変数 $DEFAULT が /var/spool/mail/$LOGNAME と等しく、且
                              つ procmail が $DEFAULT へ配送する場合を除く。)

       /usr/sbin/sendmail     デフォルトのメール転送ソフト

       _????`hostname`        procmail  が一時的に作成する、大きさが 0 バイトで `ファイル名が重複
                              しない' ファイル

関連項目

       procmailrc(5), procmailsc(5), procmailex(5), sh(1), csh(1), mail(1), mailx(1), binmail(1),
       uucp(1), aliases(5), sendmail(8), egrep(1), grep(1), biff(1), comsat(8), lockfile(1),
       formail(1), cron(1)

診断 (エラーメッセージ一覧)

       Autoforwarding mailbox found (自動転送メールボックスが見つかった)
                              システムメールボックスに suid または sgid  ビットがセットされている
                              場合、  procmail は当該メールボックスへ配送してはいけないことを示す
                              べく、 EX_NOUSER で 終了する。

       Bad substitution of "x" ("x" の不正な置換)
                              有効な環境変数名が指定されていない。

       Closing brace unexpected (閉じ括弧が検出されない)
                              開き括弧に対応する閉じ括弧がない(ブロックがネストしている)。

       Conflicting options (オプションが矛盾する)
                              有効な組み合わせになっていないオプションがある。

       Conflicting x suppressed (矛盾する x は削除された)
                              フラグ x は当該レシピの他のフラグと併存できない。

       Couldn't create "x" ("x" を作成できない)
                              システムメールボックスが見つからず、作成できない。または作成されな
                              い。

       Couldn't create maildir part "x" (maildir "x" を作成できない)
                              maildir  フォルダ "x" の作成に必要な1つまたは複数のサブディレクトリ
                              が なく、また procmail はそのサブディレクトリを作成できない。

       Couldn't create or rename temp file "x" (一時ファイル "x" の作成または名前変更ができない)
                              ディレクトリフォルダ "x" への配送の仕組みにエラーが発生した。

       Couldn't determine implicit lockfile from "x" ("x" から暗黙の lockfile が決定できない)
                              リダイレクタ `>>'  がないので、単純に  `$LOCKEXT'  をローカルロック
                              ファイルのファイル名として使用する。

       Couldn't read "x" ("x" が読めない)
                              procmail が rcfile を開くことができなかったか、 rcfile が通常のファ
                              イルでなかったか、 或は procmail が最大番号のファイル名のファイルを
                              探そうとしても MH ディレクトリを開くことができなかった。

       Couldn't unlock "x" ("x" のロックが解除できない)
                              ロックファイルが既に消滅しているか、またはロックファイルがあるディ
                              レクトリの書き込み 権限がない。

       Deadlock attempted on "x" ("x" のデッドロック未遂)
                              当該レシピで指定されているローカルロックファイルは、 まだ有効に機能
                              し続けている $LOCKFILE と同じである。

       Denying special privileges for "x" ("x" への特別な権限を拒否)
                              セキュリティ侵害が見つかった (例: -p オプションまたはコマンドライン
                              の変数割り当て)か、  procmail  が不十分な権限しか持っていないので、
                              procmail  は  rcfile に付随する識別情報 (ユーザ ID 及びグループ ID)
                              にならない。 (訳注: rcfile のユーザ ID とグループ ID  に  setuid  /
                              setgid  しない。 setuid / setgid に関するセキュリティ上の問題に対応
                              するエラーメッセージ。)

       Descriptor "x" was not open (ファイル記述子 "x" を開けられなかった)
                              procmail は起動したが、 stdin, stdout  または  stderr  と接続されな
                              かった。 (おそらくセキュリティが破壊されそうになったためであろう。)

       Enforcing stricter permissions on "x" ("x" のパーミッションをより厳しくする)
                              受取人のシステムメールボックスが安全でないことがわかったので、 安全
                              性を向上させた。

       Error while writing to "x" ("x" へ書き込みをする際にエラーが発生した)
                              サブディレクトリが存在しないか、書き込み許可がないか、パイプが壊れ
                              てしまったか、 またはディスクが一杯である。

       Exceeded LINEBUF (LINEBUF 超過)
                              バッファオーバーフローが検出された。LINEBUF          が小さすぎる。
                              PROCMAIL_OVERFLOW が設定された。

       MAILDIR is not an absolute path (MAILDIR が絶対パスでない。)

       MAILDIR path too long (MAILDIR パスが長すぎる。)

       ORGMAIL is not an absolute path (ORGMAIL が絶対パスでない。)

       ORGMAIL path too long (ORGMAIL パスが長すぎる。)

       default rcfile is not an absolute path (デフォルトの rcfile が絶対パスでない。)

       default rcfile path too long (デフォルトの rcfile へのパスが長すぎる。)
                              指定された項目のフルパスは、展開すると LINEBUF よりも長かったか、或
                              は そのフルパスの先頭がファイルセパレータではなかった。

       Excessive output quenched from "x" ("x" からの過剰な出力が抑止された)
                              プログラムまたはフィルタ  "x" の出力が procmail の LINEBUF のサイズ
                              を越えたので、 溢れた残りの分は破棄され、 PROCMAIL_OVERFLOW  がセッ
                              トされた。

       Extraneous x ignored (無関係な x は無視された)
                              このレシピで使用しているアクション行、または他のフラグがあるので、
                              フラグ x は無意味になる。

       Failed forking "x" ( "x" の fork に失敗した)
                              プロセステーブルが一杯である (と共に NORESRETRY が使い尽くされた)。

       Failed to execute "x" ("x" の実行に失敗した)
                              プログラムがパスにないか、実行可能ではない。

       Forced unlock denied on "x" ("x" へのアンロックの強行に失敗した)
                              ロックファイル "x" が存在するディレクトリに書き込み許可がないか、ま
                              たは複数の procmail が全く同時にロックを強行しようとしている。

       Forcing lock on "x" ("x" のロックを強行する)
                              タイムアウトしたため、  ロックファイル  "x"  は強制的に削除される。
                              (LOCKTIMEOUT も合わせて参照されたい)

       Incomplete recipe (不完全なレシピ)
                              レシピの開始は見つかったが、レシピの終了が見つからないまま EOF で行
                              き詰まってしまった。

       Insufficient privileges (不十分な権限)
                              procmail が配送モードで動作するには、procmail に root 権限が 必要で
                              あるか、 procmail の (e)uid および (e)gid  が正しいものでなければな
                              らない。メールはバウンスする。

       Invalid regexp "x" (無効な正規表現 "x")
                              正規表現 "x" にはエラーがある (多くの場合、括弧が不足していたり余計
                              だったりする)。

       Kernel-lock failed (カーネルロックが失敗した)
                              カーネルがサポートするロック機能を試みている間に、 それら機能呼び出
                              しのうちの1つが失敗した  (通常 OS エラーを示す)。 procmail はこのエ
                              ラーを無視し、処理を続行する。

       Kernel-unlock failed (カーネルアンロックが失敗した)
                              上記説明を参照。

       Lock failure on "x" ("x" のロック失敗)
                              このエラーは、適切でない (そして不正な)  ロックファイル名を指定して
                              いるか、 または権限が不足していたり存在しないサブディレクトリを指定
                              したために ロックファイル が作成できなかった場合にのみ生じる。

       Lost "x" ("x" が消失した)
                              procmail は自身のクローンを作ろうとしたが、 rcfile "x" が  見つから
                              なかった  (その rcfile が削除されたか、或は rcfile が相対パスで指定
                              されていて、 前回 procmail がその rcfile を開いてからディレクトリを
                              変更したかのいずれかである)。

       Missing action (動作の不足)
                              現在のレシピが不完全であることがわかった。

       Missing closing brace (閉じ括弧不足)
                              ネストしているブロックの開始はあるが終了が無い。

       Missing name (名前の不足)
                              -f オプションには特別な引数が必要である。

       Missing argument (引数の不足)
                              -a オプションが指定されたが、引数が忘れられている。

       Missing rcfile (rcfile がない)
                              -m  オプションが指定されているが、 -m オプションは引数として rcfile
                              名が必要である。

       Missing recipient (受取人がない)
                              -d オプションを指定したか、または別の名前で  procmail  が呼び出され
                              た。 その際、引数として 1つ以上の受取人が必要である。

       No space left to finish writing "x" ("x" の書き込みを終了させるだけの容量がない)
                              "x"  を含むファイルシステムに、配送メッセージをファイルに書き込むだ
                              けの十分な空き容量がない。

       Out of memory (メモリ不足)
                              システムにスワップスペースが不足している (そして NORESRETRY  が使い
                              尽くされた)。

       Processing continued (処理が続行されている)
                              コマンドラインで認識されないオプションは無視され、そのまま処理を続
                              行する。

       Program failure (nnn) of "x" (プログラム "x" が失敗した (nnn))
                              procmail から起動されたプログラムが、EXIT_SUCCESS (=0) ではなく nnn
                              を返した;  nnn が負なら、そのプログラムが死んだことを示すシグナルで
                              ある。

       Quota exceeded while writing "x" ("x" の書き込み中にディスクの割当量を超過した)
                              "x"  を含むそのファイルシステムにおける、受取人に対するファイルサイ
                              ズの制限の為に、 メッセージをファイルへ配送することが許されない。

       Renaming bogus "x" into "x" (間違っている名前 "x" を "x" に変更する)
                              受取人のシステムメールボックスが誤りだったので、  procmail は回避動
                              作を行った。

       Rescue of unfiltered data succeeded/failed (フィルタされていないデータの救出に
                              成功した / 失敗した)  (procmail から起動した)  フィルタの実行に失敗
                              したので、procmail はメールをフィルタに渡す以前のテキストに戻そうと
                              した。

       Skipped: "x" ("x" はスキップされた)
                              rcfile の "x"  については  (文法エラーに因り)  何も行われず無視され
                              た。

       Suspicious rcfile "x" (rcfile "x" は疑わしい)
                              rcfile の所有者が受取人もしくは root のいずれでもないか、 rcfile 自
                              体またはこれが存在するディレクトリが誰でも書き込み可能になっている
                              か、 この rcfile がデフォルトの rcfile ($HOME/.procmailrc) である場
                              合はそのファイル自体または ファイルを含むディレクトリがグループ書き
                              込み可能である  (group writable) かのいずれかであった。 (したがって
                              rcfile は使われなかった)

       Terminating prematurely whilst waiting for ... (... を待っている間の中途終了)
                              procmail は .. を待っている間にシグナルを受信した。

       Timeout, terminating "x" (時間切れ: "x" の終了)
                              プログラムまたはフィルタ "x" は実行中に時間切れとなった。

       Timeout, was waiting for "x" ("x" を待っていたが時間切れになった)
                              プログラム或はフィルタの実行中、またはファイル "x" の処理中に時間切
                              れとなった。 "x" がプログラムまたはフィルタの場合、もはや動作してい
                              ないように見えた。

       Truncated file to former size (ファイルを元のサイズに切り詰めた)
                              ファイルの配送が成功しなかったので、そのファイルは元のサイズに切り
                              詰められた。

       Truncating "x" and retrying lock ("x" の切り詰めとロックの再試行)
                              "x" は有効なファイル名ではないか。またはファイルが空ではない。

       Unable to treat as directory "x" ("x" をディレクトリとして扱えない)
                              "x"  の末尾が  MH または maildir フォルダであることを示しているか、
                              或はそれらのいずれかへリンクされている二番目のフォルダとして記述さ
                              れていたが、 "x" は既に存在していて、且つディレクトリではない。 (訳
                              注: メールボックス名の末尾が "/" で終る場合は maildir として、 "/."
                              で終る場合は MH として扱われる。詳細は procmailrc (5) を参照。)

       Unexpected EOL (予期しない EOL)
                              引用符を閉じ忘れているか、 EOF の回避をし忘れている。 (訳注: 原文及
                              びソース中のエラーメッセージには EOL (End Of Line: 行末) と書かれて
                              いるが、ソースを参酌すると EOF (End Of File: ファイル終端) の間違い
                              と推測する。)

       Unknown user "x" (未知のユーザ "x")
                              指定された受取人に対応する uid がない。

拡張診断

       VERBOSE 変数に値を設定すると、拡張診断機能を有効/無効にできる。

       [pid] time & date      procmail の pid とタイムスタンプである。 procmail  が診断をログ記録
                              する時にはいつでも生成され、  少なくとも最後のタイムスタンプから1秒
                              は経過している。

       Acquiring kernel-lock (カーネルロックの獲得)
                              procmail は、直前に開いたファイル (記述子) をカーネルロックしようと
                              している。

       Assigning "x" ("x" の割り当て)
                              環境変数割り当て。

       Assuming    identity    of    the   recipient,   VERBOSE=off   (受取人のユーザ属性を想定す
       る。VERBOSE=off)
                              特権があればそれらをすべて破棄し、拡張診断機能を自動的に無効にす
                              る。

       Bypassed locking "x" ("x" のロック回避)
                              procmail       はメールスプールディレクトリへアクセスできなかったの
                              で、カーネルのロック機能しかあてにならなかった。

       Executing "x" ("x" の実行)
                              プログラム "x" を起動する。 シェルを介在させずに procmail  から直接
                              "x"  を起動する場合、 procmail は引数と引数の間にカンマを挿入して引
                              数の区切りを示す。

       HOST mismatched "x" (このホストのホスト名は "x" と一致しない)
                              このホストのホスト名を "x" と認識した。 HOST には何か余計なものが含
                              まれていた。 (訳注: ホスト名の検証結果に関するメッセージ。)

       Locking "x" ("x" をロックする)
                              ロックファイル "x" を作成する。

       Linking to "x" ("x" にリンクする)
                              ディレクトリフォルダ間にハードリンクを作成する。

       Match on "x" ("x" で一致する)
                              条件が一致した。

       Matched "x" (一致した "x")
                              "x" が MATCH に 割り当てられた。

       No match on "x" ("x" には何も一致しない)
                              条件が一致せず、レシピは読み飛ばされた。

       Non-zero exitcode (nnn) by "x" ("x" は 0 以外の終了コード (nnn) で終了した)
                              レシピの条件文として、或は  `W'  フラグのを用いるアクション行として
                              procmail から起動されたプログラムは、 EXIT_SUCCESS (=0)  ではない終
                              了コード  nnn を返して終了した。 この使い方は全く予期しない状態では
                              ないことを示す。 (訳注:  すなわち、プログラムの終了コードを条件分岐
                              に用いるレシピにおいては、このメッセージが出ても必ずしも何らかの異
                              常を示すものではない。)

       Notified comsat: "$LOGNAME@offset:file" (comsat の通知: "$LOGNAME@offset:file")
                              `file' の `offset' の位置に、ユーザ $LOGNAME 宛てのメールが  到着し
                              たと、comsat/biff へ通知した。 (訳注: biff はメールの到着を通知する
                              ユーティリティ。 comsat は biff サーバ。各々 biff.1  及び  comsat.1
                              を参照。)

       Opening "x" ("x" を開いている)
                              Opening  "x"  ("x" のオープン)  追加のためにファイル "x" を開く (訳
                              注: append mode: 追加モード)

       Rcfile: "x"            rcfile は "x" に変更された。

       Reiterating kernel-lock (カーネルロックの繰り返し)
                              いくつかのロック方式を試行している最中に、そのうちの一つが失敗し
                              た。 その試行のすべてが間をおかず連続して成功するまで、 procmail は
                              カーネルロックを繰り返す。

       Score: added newtotal "x" (スコア: 追加の結果、新しい合計値は "x" となった)
                              この条件によってスコアに点が追加された。 スコアは `新しい合計値' に
                              なった。

       Unlocking "x" ("x" のロック解除)
                              ロックファイル "x" を再び削除する。

警告

       システムメールボックス以外の任意のメールボックスに対して自分のメールシェルを起動する場合
       は、その前に lockfile(1) を使用するシェルスクリプトを作成すること。  (もちろん、自分のメー
       ルシェルが  (ローカルであるかグローバルであるかにかかわらず) rcfile で指定したロックファイ
       ルと同じものを使用している場合は別である。)

       万が一 procmail を自身の正常終了前に絶対 kill しなければならない場合は、  まず最初に通常の
       kill  コマンドを試してみること。  (つまり kill -9 ではない 。終了コードについては シグナル
       を参照のこと)  さもないと、 ロックファイル がいくつか削除されない場合がある。

       -t オプションは注意して使用すること。 (例えば rcfile に誤りがあるために)  procmail  が何度
       もメールの配送失敗を繰り返すと、システムのメールキューが   溢れる可能性がある。   こうなる
       と、ローカルの postmaster と他のユーザの両方に迷惑をかけるだろう。

       /etc/procmailrc ファイルは root 権限で実行される場合があるので、  このファイルに書き込む内
       容には十分に注意すること。  SHELL は現在の受取人のシェルと同じになるため、 procmail でシェ
       ルを起動する      必要がある場合は、最初にこの変数を何らかの無難な値に設定しておくとよい。
       DROPPRIVS も参照のこと。

       /etc/procmailrcs/ にあるファイルに対して chown(1) が許可されていれば、そのファイルの現在の
       所有者は、そのファイルを rootにでも (他の誰にでも) chown  できることを心に留めておくこと。
       そこで、セキュリティを最大限強化するため、このディレクトリは  必ず root だけが 実行可能 で
       あることを確認すること。

       自分のドメイン宛ての全てのメールに対して POP  アカウントが1つしかないような、  1つのメール
       ボックスを複数のユーザが共有する場合、  procmail は適切なツールではない。 使用している MTA
       をどうにかして設定して、 そのメッセージの宛先を procmail  に伝えるいくつかのヘッダを受取人
       データのエンベロープに追加すればそのような共有も可能になるだろう。  しかしこれは通常正しい
       行為ではない。 おそらく、その MTA に「仮想ユーザテーブル」機能が備わっているかどうかを調べ
       るか、 Fetchmail の `multidrop' 機能を調べる方がいい。

バグ

       procmail     は強制的にロックファイルを削除した後、     新しいロックファイルを作成する前に
       $SUSPEND 秒待つ。 これは、古くなったロックファイルを削除しようとする他のプロセスが、  新た
       に作成されたロックファイルを誤って削除しないようにする為である。

       procmail   は、暴走したフィルタを終了する為に通常の  TERMINATE  シグナルを使用する。  しか
       し、そのシグナルにフィルタが応答するかどうかは確認しない。 それに procmail  がシグナルを送
       るのはそのフィルタ自体であり、 そのフィルタのどの子プロセスにもシグナルは送らない。

       複数行に渡る、長過ぎる Content-Length: フィールドは正しく処理されない。

       複数行に渡る一つのヘッダに含まれる改行は、 マッチングの際にはそれをそのまま1個の空白として
       扱うのではなく、 無視されるだろう。

その他

       メールヘッダに Content-Length:  フィールドがあり、  -Y  オプションが指定されていなければ、
       procmail  はそのフィールドに指定されているサイズを正しいサイズになるように調整する。  その
       際、 procmail は Content-Length: フィールドのフィールド幅を変更しない。

       Content-Length: フィールドがない場合、または -Y オプションが指定されている状態で  procmail
       が通常のメールフォルダに  メールを追加する場合、メッセージ本文中で消印 (postmark) と間違え
       そうな 全ての行の行頭には `>' が追加され、これにより偽造メールヘッダを無害化する。  この消
       印は、以下の正規表現を用いて検索する。 (訳注: 消印 (postmark) はエンベロープ From を示す行
       のことである。 mbox 形式メールボックスにメッセージを配送する際には、 識別文字列 "From " と
       混同しないように、  本文中で行頭に "From" がある場合は、該当する全ての行の行頭に引用符 '>'
       を付加する。 なお、引用符の追加は MH フォルダ形式と maildir フォルダ形式では行われない。)
              `\nFrom '

       明示的配送モードで使用される配送先のユーザ名が /etc/passwd になければ、 procmail  は明示的
       配送モードになっていなかったものとして処理を継続する。  明示的配送モードになっておらず、且
       つ実行中の procmail の uid に 対応する /etc/passwd エントリがない場合、HOME  ,  LOGNAME  ,
       SHELL   及び   ORGMAIL   の各変数のデフォルト値は、それぞれ   /   ,   #uid   ,  /bin/sh  ,
       /tmp/dead.letter になる。

       明示的配送モードの時、メッセージヘッダの先頭に `From ' 行がない場合、procmail はこれを生成
       する。  `From '行が既にある場合は、 procmail はそれには手を付けずにそのまま残す。 procmail
       を起動したユーザのユーザ或はグループ ID が root, daemon, uucp, mail, x400, network,  list,
       slist,  lists or news のいずれでもなく、それでも新しい `From ' 行を生成ないし受け入れる 必
       要がある場合は、偽造メールと区別しやすくするために procmail は `>From ' 行を追加する。

       セキュリティ上の理由から、 procmail が使用する rcfile は絶対パスか $HOME  からの相対パス指
       定であり、且つその所有者が受取人または  root であり、 且つ rcfile 自体とこれを含むディレク
       トリの両方共誰でも書き込みできる状態であってはならない (訳注: world writable: other  (その
       他)    の書き込みビット    (w)    が立っている状態を指す。    man    chmod    参照。)   更
       に、$HOME/.procmailrc ファイルの場合は、同一グループユーザが書き込み可能であってはならない
       し、 また $HOME ディレクトリが同一グループから書き込み可能であってはならない。

       /var/spool/mail/$LOGNAME  が偽のメールボックスである (すなわち、メールボックスの所有者が受
       取人でないか、  メールボックスが書き込みできないか、メールボックスがシンボリックリンク或は
       ハードリンクである)  場合、 procmail は起動時にそのメールボックスを `BOGUS.$LOGNAME.' で始
       まり、 inode-sequence-code で終わるファイル名に変更しようとする。 もしこれができないとわか
       ると、  ORGMAIL には初期値が 設定されない。 結果として、適切な rcfile のない状態でメールの
       配送が行われなくなる。

       /var/spool/mail/$LOGNAME   は正規のメールボックスだが、   パーミッションが甘すぎる場合は、
       procmail  はこれを修正する。 procmail にこのようなパーミッション操作をさせないようにするに
       は、 メールボックスに必ず u+x ビットを立てること。

       メールをディレクトリ、MH フォルダ、または maildir フォルダに配送する際には、 procmail の複
       数起動による混乱を防ぐ為にロックファイルを使う必要は ない。

       MH フォルダへの配送は、通常のディレクトリや mailbox への配送よりも若干の時間を 要する。 こ
       れは procmail が (すぐに使えるファイル名を採用しないで) MH フォルダ内で ファイル名として使
       える次の番号を検索しなければならないからである。

       -t オプションが指定されていない限り、procmail は一般的な失敗に関して EX_CANTCREAT を返す。
       -t オプションが指定されている場合には EX_TEMPFAIL を返す。

       egrep 風のヘッダ検索をより良く行う為に、 procmail は複数行にわたる  全てのヘッダフィールド
       を連結して一行にする。 但し、これは内部的な処理であり、メールを配送する際には、 改行は元の
       状態に戻る。

       (たとえば procmail が違う名前でリンクされていて、その違う名前で 起動される場合のように) 起
       動する  procmail の名前が `procmail' で 始まっていない場合、その procmail は明示的配送モー
       ドで起動され、 (-d オプションが指定された時と同様に) コマンドラインの引数に 受取人名が必要
       になる。

       Comsat/biff  通知は udp を使用して行われる。 この通知は、procmail が通常のログファイルのエ
       ントリを生成した時に 一回送出される。通知メッセージは下記の拡張フォーマット  (または最後の
       配送先がファイル以外の時のフォーマットと酷似したもの)  である:
              $LOGNAME@offset_of_message_in_mailbox:absolute_path_to_mailbox

       procmail がメールの配送の際にファイルを開く時は、 procmail は常に fcntl(2)  によるカーネル
       ロックの方法を使用する。

       procmail は NFS 環境でも使用可能で、 8 ビット問題はない。(訳注: 8bit clean:  データの8ビッ
       ト目を遮ることなく透過的にデータ転送を行えることを指す。)

備考

       procmail をコマンドラインオプション -h または -? にて起動すると、 コマンドラインヘルプとレ
       シピフラグのクイックリファレンスのページが 表示される。

       メールフィルタ(特に procmail)に関して、初心者向けに優れた FAQ がある: これは Nancy McGough
       <nancym@ii.com> が保守しており、 mail-server@rtfm.mit.edu に以下の内容の本文をメールすれば
       入手できる (訳注: http://www.faqs.org/faqs/mail/filtering-faq/ からも閲覧可能)。
              send usenet/news.answers/mail/filtering-faq

       もし procmail が当該ホストのデフォルトのメール配送エージェントとしてインストール  されてい
       なければ (システム管理者に問い合わせること)、自分宛のメールが到着した時に 起動されることを
       確認する必要がある。 この場合、自分の $HOME/.forward に以下の行を書いておくこと  (このファ
       イルは誰でも読み込み可能で なければならない ことに注意)。 その際、必ずシングルクォートとダ
       ブルクォートを含むこと。 さらに、自分のサイトで smrsh (the SendMail Restricted SHell) が動
       いている と分かっていれば別だが、そうでなければ、このパスは 絶対パス にすること。

       "|exec /usr/bin/procmail"

       procmail      は、既に一杯になっているシステムメールボックスの      後処理にも使用できる。
       $HOME/.forward  ファイルを使いたくないとか、  使用できない場合にこれが役に立つ場合がある。
       (この場合は以下のスクリプトを cron(1) から定期的に呼び出しても良いし、メールを読み始める際
       に必ず起動するようにしても良い。)

              #!/bin/sh

              ORGMAIL=/var/spool/mail/$LOGNAME

              if cd $HOME &&
               test -s $ORGMAIL &&
               lockfile -r0 -l1024 .newmail.lock 2>/dev/null
              then
                trap "rm -f .newmail.lock" 1 2 3 13 15
                umask 077
                lockfile -l1024 -ml
                cat $ORGMAIL >>.newmail &&
                 cat /dev/null >$ORGMAIL
                lockfile -mu
                formail -s procmail <.newmail &&
                 rm -f .newmail
                rm -f .newmail.lock
              fi
              exit 0

   $HOME/.procmailrc のちょっとしたサンプル:
       PATH=/usr/local/bin:/usr/bin:/bin
       MAILDIR=$HOME/Mail      #you'd better make sure it exists
       DEFAULT=$MAILDIR/mbox   #completely optional
       LOGFILE=$MAILDIR/from   #recommended

       :0:
       * ^From.*berg
       from_me

       :0
       * ^Subject:.*Flame
       /dev/null

       その他の rcfile レシピの例は procmailex(5)  マニュアルページを参照されたい。

SOURCE

       このプログラムは     procmail     mail-processing-package     (v3.22)     の一部で      あ
       り、http://www.procmail.org/ または ftp.procmail.org の pub/procmail/ で入手できる。

MAILINGLIST

       procmail パッケージの全てのプログラムに関連した質問へのメーリングリストが ある:
              <procmail-users@procmail.org>
                     質問/回答の投稿用アドレス。
              <procmail-users-request@procmail.org>
                     参加申込用のアドレス。

       新しいバージョンやオフィシャルパッチについての情報を常時入手したい場合  には、以下のメール
       アドレスに参加申込をすること:
              procmail-announce-request@procmail.org
       (これは購読専用のメーリングリストである)。

著者

       Stephen R. van den Berg
              <srb@cuci.nl>
       Philip A. Guenther
              <guenther@sendmail.com>