Manpages

名 前

procmailrc − procmail の rcfile 【 訳 注 : 設 定 フ ァ イ ル 】

書 式

$HOME/.procmailrc

説 明

取 り 敢 え ず す ぐ 始 め た い 場 合 は 、 procmail (1) マ ニ ュ ア ル の 最 後 に あ る 備 考 を 参 照 さ れ た い 。

rcfile は (procmail に と っ て 特 別 な 意 味 を 持 つ も の も あ る ) い く つ も の 環 境 変 数 へ の 値 の 設 定 と レ シ ピ を 含 め る こ と が で き る 。 最 も 簡 単 な 形 式 は 、 到 着 し た メ ー ル の ヘ ッ ダ を 検 索 す る 、 一 行 に お さ ま る 正 規 表 現 よ り な る レ シ ピ で あ る 。 マ ッ チ し た 最 初 の レ シ ピ は 、 メ ー ル の 行 き 先 (通 常 は フ ァ イ ル )を 決 定 す る 為 に 使 わ れ る 。 も し 、 処 理 が rcfile の 終 り に 到 達 す る と 、 procmail は メ ー ル を $DEFAULT へ 配 送 す る 。 【 訳 注 : procmail で は 、 受 信 す る メ ー ル に 対 す る 様 々 な 処 理 の 命 令 を recipe (レ シ ピ /処 方 )と 呼 ん で い る 。 】 レ シ ピ は 2種 類 存 在 す る : 配 送 指 示 と 非 配 送 指 示 で あ る 。 マ ッ チ す る 配 送 の 指 示 が あ る 場 合 、 procmail は (推 測 し た ) メ ー ル が 配 送 さ れ た と 見 な す 。 そ し て 、 レ シ ピ の 動 作 指 示 を 首 尾 良 く 完 遂 し た 後 、 rcfile の 処 理 を 終 了 す る 。 非 配 送 の 指 示 が あ る 場 合 、 レ シ ピ の 動 作 指 示 を 首 尾 良 く 完 遂 し た 後 、 rcfile の 処 理 は 続 行 さ れ る 。 配 送 レ シ ピ は メ ー ル の ヘ ッ ダ 及 び /又 は 本 文 に 以 下 の 作 用 を 引 き 起 こ す : フ ァ イ ル へ 書 き 込 ま れ る 、 プ ロ グ ラ ム に 呑 み 込 ま れ る 、 あ る い は メ ー ル ア ド レ ス へ 転 送 さ れ る 。 非 配 送 の レ シ ピ は 以 下 の 通 り : プ ロ グ ラ ム や フ ィ ル タ の 出 力 を procmail が 取 り 込 む も の 、 あ る い は 入 れ 子 構 造 の ブ ロ ッ ク を 開 始 さ せ る も の 。

procmail に 対 し 、 配 送 レ シ ピ を あ た か も 非 配 送 レ シ ピ で あ る か の よ う に 取 り 扱 う よ う に 命 令 す る こ と も で き る 。 そ の 際 に は 、 該 当 す る レ シ ピ に ’c’ フ ラ グ を 指 定 す る 。 こ う す る と procmail は 当 該 レ シ ピ へ 配 送 す る 為 の メ ー ル の カ ー ボ ン コ ピ ー を 作 成 し 、 rcfile の 処 理 を 続 行 す る 。 沢 山 の レ シ ピ を 使 う こ と に よ っ て 、 受 信 し た メ ー ル を 、 幾 つ か の メ ー ル フ ォ ル ダ へ と て も 簡 単 に 振 り 分 け る こ と が で き る 。 但 し 、 メ ー ル は そ れ ら メ ー ル フ ォ ル ダ に 同 時 に 到 達 す る か も 知 れ な い 、 と い う こ と も 心 に 留 め て お い て 欲 し い 。 (幾 つ か の procmail プ ロ グ ラ ム が 同 時 に 起 動 す る 場 合 を 想 定 し て い る 。 沢 山 の メ ー ル が 到 着 す る な ら 、 あ り 得 な い こ と で は な い 。 ) こ の こ と で ぐ ち ゃ く ち ゃ に な ら な い 為 に 、 是 非 と も ロ ッ ク フ ァ イ ル を 正 し く 使 っ て 頂 き た い 。 環 境 変 数 の 指 定レ シ ピ は rcfile 中 に 自 由 に 配 置 で き る 。 procmail に と っ て 特 別 な 意 味 を 持 つ 環 境 変 数 は 全 て 、 解 析 さ れ た 瞬 間 に 、 適 切 に 使 わ れ る 。 (す な わ ち 、 必 要 な と き に は い つ で も 新 た に MAILDIR を 指 定 す れ ば 、 カ レ ン ト デ ィ レ ク ト リ を 変 更 で き る し 、 新 た に LOCKFILE を 指 定 す れ ば ロ ッ ク フ ァ イ ル を 切 替 え る こ と が で き る し 、 い つ で も umask を 変 更 で き る 等 々 。 可 能 性 は 無 限 で あ る :−) 。 こ れ ら 環 境 変 数 の 設 定 や 値 の 置 換 は sh(1) に お け る 処 理 と 完 全 に 等 し い 。 (こ れ は あ ら ゆ る 引 用 符 や エ ス ケ ー プ を 含 む 。 ) 更 に 特 典 と し て 、 ’=’ の 前 後 の 空 白 は 無 視 し て く れ る し 、 環 境 変 数 の 後 に ’=’ が な い 場 合 は そ の 環 境 変 数 自 体 を 環 境 か ら 消 去 し て く れ る 。 procmail か ら 起 動 さ れ る 、 バ ッ ク ク ォ ー ト で 囲 ま れ た プ ロ グ ラ ム は 、 メ ー ル 全 体 を 標 準 入 力 か ら 受 け 取 る 。 コ メ ン ト
# か ら 始 ま る 行 は 、 全 て の 文 字 が 改 行 ま で 無 視 さ れ る 。 但 し 、 条 件 行 に は 当 て は ま ら な い 。 条 件 行 に は コ メ ン ト が 付 け ら れ な い 。 レ シ ピ
’:’で 始 ま る 行 は レ シ ピ の 開 始 を 示 す 。 書 式 は 以 下 の 通 り : : 0 [flags] [ : [locallockfile] ] <ゼ ロ あ る い は そ れ 以 上 の 条 件 (1行 に 1つ )>
<ア ク シ ョ ン 行 は 厳 密 に 1つ > 条 件 行 は 先 頭 に ’*’ が 付 く 。 こ の 文 字 に 続 く 全 て の 文 字 は 、 先 頭 と 末 尾 の 空 白 を 除 き 、 procmail 内 部 の egrep へ 正 確 に 渡 さ れ る 。 こ れ ら の 正 規 表 現 は 一 般 的 な egrep(1) の 拡 張 正 規 表 現 と 完 全 に 互 換 性 が あ る 。 拡 張 正 規 表 現 の 章 も 参 照 さ れ た い 。 条 件 行 は 論 理 積 で 評 価 さ れ る ; 条 件 が な い 時 は デ フ ォ ル ト で 全 て 真 と な る 。 使 用 可 能 な フ ラ グ は 以 下 の 通 り :

H ヘ ッ ダ を

egrep す る (デ フ ォ ル ト )。 (訳 注 : 正 確 に は 、 egrep と 同 じ 正

規 表 現 の 解 釈 に て 検 索 を 行 う 。 フ ラ グ を 省 略 す る と 、 こ の ’H’ フ ラ グ が 付 さ れ た も の と み な さ れ 、 続 く 条 件 行 は ヘ ッ ダ が 対 象 と な る 。 )

B 本 文 を

egrep す る 。

D 内 部 の

egrep に 対 し て 大 文 字 と 小 文 字 を 区 別 す る よ う 指 示 す る (デ フ ォ

ル ト で は 逆 に 大 小 文 字 を 区 別 し な い )。

A こ の レ シ ピ は 、

(現 在 の ネ ス ト 構 造 の 段 階 に お け る ) ’A’ あ る い は ’a’ フ

ラ グ が 付 さ れ て い な い 直 前 の レ シ ピ も 同 様 に マ ッ チ し な い 限 り 、 実 行 さ れ な い 。 こ れ に よ っ て 、 あ る 条 件 が 成 立 し た 時 に 実 行 さ れ る ア ク シ ョ ン を 複 数 列 挙 で き る 。

a

’A’ と 同 じ 意 味 を 持 つ が 、 更 に 追 加 さ れ る 条 件 と し て 、 現 在 の レ シ ピ が 実 行 さ れ る 前 に 、 直 前 の レ シ ピ は 必 ず 正 常 終 了 し な け れ ば な ら な い 、 と い う 制 約 が あ る 。

E

こ の レ シ ピ は 直 前 の レ シ ピ が 実 行 さ れ な か っ た 時 に だ け 実 行 さ れ る 。 こ の レ シ ピ の 実 行 は ま た 、 直 後 に ’E’ フ ラ グ を 伴 う 全 て の レ シ ピ の 実 行 が 禁 止 さ れ る 。 こ れ に よ り 、 ’else if’ ア ク シ ョ ン を 構 築 す る こ と が で き る 。

e

こ の レ シ ピ は 直 前 の レ シ ピ の 実 行 が 失 敗 し た 時 に だ け 実 行 さ れ る 。 (す な わ ち 、 直 前 の ア ク シ ョ ン 行 の 実 行 結 果 が エ ラ ー を 伴 う 終 了 で あ っ た 場 合 で あ る 。 )

h

メ ー ル の ヘ ッ ダ を パ イ プ 、 フ ァ イ ル あ る い は メ ー ル 配 送 先 (デ フ ォ ル ト )に 渡 す 。

b

メ ー ル の 本 文 を パ イ プ 、 フ ァ イ ル あ る い は メ ー ル 配 送 先 (デ フ ォ ル ト )に 渡 す 。
f

パ イ プ を フ ィ ル タ と 見 な す 。

c 受 信 し た メ ー ル の カ ー ボ ン コ ピ ー を 作 成 す る 。 こ れ は 配 送 レ シ ピ に だ け 意 味 が あ る 。 こ の フ ラ グ が 唯 一 有 効 な 非 配 送 レ シ ピ は 入 れ 子 構 造 に て 使 わ れ る 場 合 で あ る 。 こ の 時 、 カ ー ボ ン コ ピ ー を 生 成 す る 為 に 、 実 行 中 の

procmail プ ロ セ ス の ク ロ ー ン が 作 成 さ れ る 。 (ロ ッ ク フ ァ イ ル は 継 承 さ れ な い 。 ) こ れ に よ っ て ク ロ ー ン は 普 通 に 実 行 さ れ 、 親 プ ロ セ ス は こ の 時 点 の ブ ロ ッ ク の 処 理 を 飛 ば し て 次 に 進 む 。

w フ ィ ル タ あ る い は プ ロ グ ラ ム の 実 行 終 了 を 待 ち 、 そ の 終 了 コ ー ド を チ ェ ッ ク す る

(通 常 は 無 視 さ れ る ); フ ィ ル タ が 正 常 終 了 し な か っ た 場 合 、 テ キ ス ト は フ ィ ル タ さ れ ず 、 フ ィ ル タ に 渡 す 以 前 の 状 態 の ま ま に な る 。

W

’w’ フ ラ グ と 同 じ 意 味 を 持 つ が 、 あ ら ゆ る ’プ ロ グ ラ ム の 失 敗 ’ の メ ッ セ ー ジ は 抑 止 さ れ 、 出 力 さ れ な い 。

i

こ の レ シ ピ に お け る あ ら ゆ る 書 き 込 み エ ラ ー を 無 視 す る (す な わ ち 、 通 常 は 早 期 に 閉 じ ら れ た パ イ プ に 起 因 す る )。
r

Raw mode で あ る 。 メ ー ル の 最 後 が 空 行 と な る よ う な 処 理 を 行 わ ず 、 メ ー ル が 入 力 さ れ た と お り に 書 き 出 す 。

正 し い 正 規 表 現 で は な い も の の 、 特 殊 な 条 件 を 設 定 す る も の が あ る 。 使 用 す る 際 に 、 下 記 の 条 件 記 号 は 先 頭 に な け れ ば な ら な い :

! 条 件 の 論 理 否 定 。

$ こ の 条 件 の 直 後 に 続 く ダ ブ ル ク ォ ー ト で 囲 ま れ た 中 身 を

sh(1) の 置 換

ル ー ル に 従 っ て 置 換 す る 。 そ し て 先 頭 の 空 白 を 読 み 飛 ば し た 後 、 再 度 解 析 す る 。

? 指 定 し た プ ロ グ ラ ム の 終 了 コ ー ド を 使 う 。

< 指 定 し た バ イ ト 数

(10進 数 )よ り メ ー ル 全 体 の バ イ ト 数 が 小 さ い か 否 か 比 較 す る 。

>

’<’ の 反 対 。

変 数 名

?? こ の 環 境 変 数 の 値 に 対 し 、 こ の 条 件 の 後 に 続 く 項 目 と 照 合 す る (疑 似 変 数 は 指 定 で き な い )。 特 殊 な ケ ー ス と し て 、 環 境 変 数 名 が ’B’, ’H’, ’HB’ お よ び ’BH’ の 場 合 は ; こ の レ シ ピ の 初 期 フ ラ グ に よ っ て 定 義 さ れ た デ フ ォ ル ト の ヘ ッ ダ /本 文 検 索 領 域 を 単 に 上 書 き す る 。

\ 上 述 の 条 件 記 号 の 意 味 を 消 す 為 に 、 記 号 の 直 前 に 置 い て 使 わ れ る 。

(訳

注 : こ の ’\’ (バ ッ ク ク ォ ー ト ) は 、 条 件 記 号 の 意 味 を 消 し て 通 常 の 文 字 (literal character: リ テ ラ ル 文 字 ) と し て 扱 う 機 能 を 持 つ も の で あ り 、 条 件 記 号 で は な い 。 よ っ て 、 本 来 は 条 件 記 号 と 同 列 に 扱 わ れ て 説 明 さ れ る べ き も の で は な い 。 ま た 、 こ の マ ニ ュ ア ル の 後 半 に 例 示 が あ る が 、 こ れ ら 条 件 記 号 の 先 頭 に 使 わ れ る だ け に 留 ま ら な い の で 、 注 意 が 必 要 で あ る 。 ) ロ ー カ ル ロ ッ ク フ ァ イ ル 最 初 の レ シ ピ 行 に 2個 目 の ’:’ を レ シ ピ の 末 尾 に 付 加 す る と 、 procmail は ロ ー カ ル ロ ッ ク フ ァ イ ル を (こ の レ シ ピ に 対 し て の み ) 使 用 す る 。 ’:’ の 後 に 、 オ プ シ ョ ン と し て 任 意 の ロ ー カ ル ロ ッ ク フ ァ イ ル 名 を 指 定 で き る ; も し 、 ’:’ の 後 に ロ ー カ ル ロ ッ ク フ ァ イ ル 名 を 指 定 し な い 場 合 は 、 配 送 先 の フ ァ イ ル 名 (あ る い は ’>>’ 【 訳 注 : 追 加 リ ダ イ レ ク タ 】 の 後 に 指 定 さ れ る フ ァ イ ル 名 ) に 拡 張 子 $LOCKEXT を 付 加 し た フ ァ イ ル 名 が ロ ー カ ル ロ ッ ク フ ァ イ ル 名 と し て 使 わ れ る 。 レ シ ピ の ア ク シ ョ ン 行 ア ク シ ョ ン 行 は 以 下 に 記 す 文 字 で 開 始 す る :

! こ の 後 に 指 定 さ れ る 全 て の メ ー ル ア ド レ ス に メ ー ル を 転 送 す る 。 【 訳 注 : メ ー ル ア ド レ ス は ス ペ ー ス で 区 切 っ て 列 挙 可 能 。 】

| 指 定 し た プ ロ グ ラ ム を 実 行 し 、 そ の プ ロ グ ラ ム の 標 準 入 力 に メ ー ル を パ イ プ で 渡 す 。 も し 、

$SHELLMETAS に 含 ま れ る 文 字 が ’|’ 直 後 に 指 定 さ れ る プ ロ グ ラ ム の コ マ ン ド ラ イ ン 中 に あ れ ば 、 プ ロ グ ラ ム は $SHELL を 介 し て 起 動 さ れ る 。 オ プ シ ョ ン と し て 、 こ の パ イ プ 記 号 の 前 に variable= を 指 定 す る と 、 プ ロ グ ラ ム の 標 準 出 力 が 環 境 変 数 variable に 取 り 込 ま れ る 。 (こ の 時 点 に お い て procmail は rcfile の 処 理 を 終 了 し な い 。 ) 【 訳 注 : す な わ ち 、 パ イ プ 記 号 の 後 に 指 定 さ れ る プ ロ グ ラ ム が 終 了 し な い と 、 procmail の プ ロ セ ス は 終 了 で き な い 。 】 こ の パ イ プ 記 号 だ け を 指 定 し 、 パ イ プ 記 号 の 後 に プ ロ グ ラ ム 等 の 記 述 を 一 切 し な い 場 合 に は 、 procmail は メ ー ル を 標 準 出 力 に 書 き 出 す 。

{ の 後 に ス ペ ー ス 、 タ ブ 、 改 行 の い ず れ か 一 つ 以 上 を 伴 う こ と に よ り 、 入 れ 子 構 造 の 開 始 を 示 す 。 次 の 閉 じ 括 弧 ま で の 全 て は 、 こ の レ シ ピ に て 指 定 さ れ る 条 件 に 依 存 す る 。 ネ ス ト の 数 は 無 制 限 で あ る 。 閉 じ 括 弧 は 単 に ブ ロ ッ ク の 終 り を 示 す 為 だ け に 存 在 し 、 ど の よ う な 状 態 で あ っ て も 閉 じ 括 弧 に

procmail を 終 了 さ せ る 機 能 は な い 。 ブ ロ ッ ク の 終 了 に 到 達 す れ ば 、 そ の ブ ロ ッ ク の 後 の 処 理 を 続 行 す る 。 ネ ス ト さ れ た ブ ロ ッ ク 上 に お い て 、 フ ラ グ ’H’ と ’B’ だ け が ブ ロ ッ ク を 導 く 条 件 と し て 作 用 し 、 逆 に フ ラ グ ’h’ と ’b’ は ブ ロ ッ ク 内 に お い て は 全 く 意 味 を な さ な い 。 以 上 に 示 し た 以 外 の も の は 全 て メ ー ル ボ ッ ク ス 名 (フ ァ イ ル 名 、 デ ィ レ ク ト リ 、 絶 対 パ ス あ る い は カ レ ン ト デ ィ レ ク ト リ か ら の 相 対 パ ス (MAILDIR を 参 照 の こ と )) と し て 解 釈 さ れ る 。 フ ァ イ ル 名 の 場 合 (ま だ 存 在 し て い な い 可 能 性 も あ る ) は 、 メ ー ル は そ の フ ァ イ ル に 追 加 さ れ る 。 デ ィ レ ク ト リ 名 の 場 合 、 メ ー ル は 指 定 さ れ た デ ィ レ ク ト リ 内 に 重 複 し な い こ と を 保 証 さ れ た フ ァ イ ル 名 $MSGPREFIX* と し て 新 た に 作 成 さ れ 、 配 送 さ れ る 。 メ ー ル ボ ッ ク ス の デ ィ レ ク ト リ 名 が "/." で 終 っ て い る と 、 当 該 デ ィ レ ク ト リ は MH フ ォ ル ダ と 見 な さ れ る ; す な わ ち 、 procmail は そ の デ ィ レ ク ト リ 内 に 存 在 す る 有 効 な 最 終 メ ッ セ ー ジ 番 号 の フ ァ イ ル 名 を 探 し 、 そ の 次 の 番 号 を 新 た な メ ー ル の フ ァ イ ル 名 と す る 。 メ ー ル ボ ッ ク ス の デ ィ レ ク ト リ が "/" で 終 っ て い る と 、 当 該 デ ィ レ ク ト リ は maildir フ ォ ル ダ と 見 な さ れ る ; す な わ ち 、 procmail は 一 旦 メ ッ セ ー ジ を "tmp" と い う サ ブ デ ィ レ ク ト リ に フ ァ イ ル と し て 配 送 し た 後 、 "new" と い う サ ブ デ ィ レ ク ト リ へ リ ネ ー ム (rename) す る 。 メ ー ル ボ ッ ク ス を MH フ ォ ル ダ あ る い は maildir フ ォ ル ダ と し て 指 定 し た 際 に 、 も し 指 定 さ れ た デ ィ レ ク ト リ が な い 場 合 は 、 procmail は そ の デ ィ レ ク ト リ を 新 た に 作 成 す る 。 メ ー ル ボ ッ ク ス の 作 成 規 則 と し て 、 当 該 デ ィ レ ク ト リ 名 を そ の 時 点 で 存 在 し て い な い フ ァ イ ル 名 と し て 置 き 換 え る よ う な 処 理 は 行 わ な い 。 procmail が デ ィ レ ク ト リ に 配 送 し て い る 時 に は 、 配 送 先 に 複 数 の デ ィ レ ク ト リ を 指 定 で き る 。 ( procmail は 複 数 デ ィ レ ク ト リ へ の 配 送 を ハ ー ド リ ン ク を 用 い て 行 う 。 ) 環 境 変 数 の デ フ ォ ル ト 値
LOGNAME, HOME お よ び SHELL
あ な た (受 信 者 ) の デ フ ォ ル ト 値

PATH

$HOME/bin:/bin:/usr/bin:/usr/local/bin :/usr/bin/X11 (但 し 、 /etc/procmailrc を 除 く 。 /etc/procmailrc の 場 合 は 、 次 の よ う に な る : ’/bin :/usr/bin:/usr/local/bin:/usr/bin/X11’.)

SHELLMETAS

&|<>~;?*[

SHELLFLAGS

−c

ORGMAIL

/var/spool/mail/$LOGNAME

(オ プ シ ョ ン −m を 指 定 し て い な い 場 合 に 限 る 。 −m を 指 定 す る と 設 定 さ れ な い 。 )

MAILDIR

$HOME

(但 し 、 最 初 の 読 み 込 み に 成 功 し た rcfile の フ ァ イ ル 名 が ’./’ で 始 ま っ て い る か 、 −m オ プ シ ョ ン が 指 定 さ れ て い る 場 合 を 除 く 。 こ れ ら の 場 合 、 MAILDIR の デ フ ォ ル ト 値 は ’.’ に な る 。 )

DEFAULT

$ORGMAIL

MSGPREFIX

msg.

SENDMAIL

/usr/sbin/sendmail

SENDMAILFLAGS

−oi

HOST

現 在 の ホ ス ト 名

COMSAT

no

(rcfile が コ マ ン ド 行 で 指 定 さ れ て い る 場 合 )

PROCMAIL_VERSION

3.22

LOCKEXT

.lock

上 記 以 外 に 、 procmail の 実 行 の 際 に 初 期 化 さ れ る か 予 め 設 定 さ れ る 環 境 変 数 と し て 、 IFS, ENV, PWD が あ る 。 セ キ ュ リ テ ィ 上 の 理 由 に よ り 、 procmail の 実 行 開 始 の 際 に procmail プ ロ グ ラ ム に リ ン ク さ れ て い る ラ ン タ イ ム リ ン カ の 動 作 を 変 更 す る 恐 れ の あ る 環 境 変 数 は 全 て 除 去 さ れ る 。 環 境 変 数 沢 山 の 環 境 変 数 に 面 食 ら っ て し ま う 前 に 、 こ れ ら は 全 て 妥 当 な デ フ ォ ル ト 値 を 備 え て い る こ と を 忘 れ な い で い て 欲 し い 。

MAILDIR

procmail が 動 作 す る 際 の カ レ ン ト デ ィ レ ク ト リ 。 (す な わ ち 、 全 て の パ ス は $MAILDIR か ら の 相 対 指 定 で あ る こ と を 意 味 す る 。 )

DEFAULT

デ フ ォ ル ト の メ ー ル ボ ッ ク ス フ ァ イ ル 。 (特 に 指 定 し な い 場 合 、 procmail は こ の メ ー ル ボ ッ ク ス へ メ ー ル を 追 記 す る 。 ) こ の メ ー ル ボ ッ ク ス フ ァ イ ル へ の 書 き 込 み に 先 立 ち 、 procmail は $DEFAULT$LOCKEXT と い う ロ ッ ク フ ァ イ ル を 自 動 的 に 作 成 し て 用 い る 。 こ の 変 数 を 明 示 的 に 設 定 す る 必 要 は な い 。 デ フ ォ ル ト で シ ス テ ム 標 準 の メ ー ル ボ ッ ク ス が 設 定 さ れ て い る か ら で あ る 。 【 訳 注 : 但 し 、 qmail に て /var/mail/useraccountname か ら $HOME/Mailbox へ の シ ン ボ リ ッ ク リ ン ク が 張 ら れ て い る 環 境 下 で は 、 src/authenticate.c の MAILSPOOLHOME の コ メ ン ト ア ウ ト を 外 し 、 #define MAILSPOOLHOME "/Mailbox" と 定 義 さ せ て ビ ル ド し た 上 で 、 ~/.procmailrc で は DEFAULT=$HOME/Mailbox に 設 定 す る 必 要 が あ る 。 そ う し な い と 、 シ ン ボ リ ッ ク リ ン ク は /var/spool/mail/BOGUS.useraccountname.PID に リ ネ ー ム さ れ て し ま う 。 シ ン ボ リ ッ ク リ ン ク の フ ァ イ ル 名 を 書 き 換 え る 理 由 は procmail.1 を 参 照 さ れ た い 。 】

LOGFILE

こ の フ ァ イ ル に は procmail か ら 発 生 し た エ ラ ー メ ッ セ ー ジ あ る い は 診 断 メ ッ セ ー ジ (通 常 は 何 も な い :−) あ る い は procmail か ら 起 動 さ れ た 任 意 の プ ロ グ ラ ム の メ ッ セ ー ジ も 含 ま れ る 。 こ の フ ァ イ ル が 設 定 さ れ な い 場 合 、 診 断 メ ッ セ ー ジ あ る い は エ ラ ー メ ッ セ ー ジ は 送 信 者 へ メ ー ル に て 返 送 さ れ る 。 LOGABSTRACT も 参 照 の こ と 。

VERBOSE

こ の 変 数 に ’yes’ ま た は ’on’ を 書 き 込 む と 、 拡 張 診 断 メ ッ セ ー ジ 機 能 が 有 効 に な る 。 再 度 こ れ を 無 効 に す る に は 、 ’no’ ま た は ’off’ を 設 定 す る 。

LOGABSTRACT

実 行 終 了 す る 直 前 に 、 procmail は 配 送 メ ッ セ ー ジ の 要 約 を $LOGFILE に ロ グ 記 録 す る 。 ロ グ に は ヘ ッ ダ の ’From ’ と ’Subject:’ 、 最 終 的 に 送 達 さ れ た フ ォ ル ダ 、 メ ッ セ ー ジ の バ イ ト 数 が 記 録 さ れ る 。 こ の 環 境 変 数 に ’no’ を 設 定 す る と 、 こ の よ う な 要 約 の 生 成 が 抑 止 さ れ る 。 こ の 環 境 変 数 に ’all’ を 設 定 す る と 、 実 行 に 成 功 し た 配 送 レ シ ピ の 処 理 結 果 の 要 約 を ロ グ 記 録 す る 。

LOG

こ の 変 数 に 割 り 当 て ら れ た も の は す べ て $LOGFILE に 追 加 さ れ る 。

ORGMAIL

通 常 、 シ ス テ ム メ ー ル ボ ッ ク ス (ORiGinal MAILbox の 略 ) を 指 す 。 (’filesystem full’ 等 の ) 何 ら か の 原 因 で メ ー ル を 配 送 で き な い 場 合 、 こ の メ ー ル ボ ッ ク ス が 最 後 の 手 段 と な る 。 procmail が こ の メ ー ル ボ ッ ク ス へ の 保 存 に 失 敗 し た 場 合 (深 刻 な 、 深 刻 な ト ラ ブ ル で あ る :−)、 メ ー ル は 送 信 元 に 返 送 さ れ る 。

LOCKFILE

グ ロ ー バ ル な ロ ッ ク フ ァ イ ル 。 こ の フ ァ イ ル が 既 に 存 在 し て い る 場 合 、 procmail は 処 理 を 進 め る 前 に こ の フ ァ イ ル が 除 去 さ れ る 迄 待 ち 、 (当 該 フ ァ イ ル が 除 去 さ れ た ら ) 処 理 に 先 立 っ て 同 様 の ロ ッ ク フ ァ イ ル を 自 ら 作 成 し よ う と す る 。 グ ロ ー バ ル ロ ッ ク フ ァ イ ル の 使 用 は で き る だ け 控 え て 欲 し い 。 可 能 な 限 り 、 代 わ り に (レ シ ピ 毎 に ) ロ ー カ ル ロ ッ ク フ ァ イ ル を 使 っ て 欲 し い 。

LOCKEXT

ロ ー カ ル ロ ッ ク フ ァ イ ル を 識 別 す る 為 に 、 配 送 先 フ ァ イ ル の フ ァ イ ル 名 に 付 加 す る 拡 張 子 。 (オ ン 設 定 さ れ て い る 時 の み 、 レ シ ピ 毎 に 。 )

LOCKSLEEP

も し 、 procmail が 処 理 に 先 立 っ て ロ ッ ク フ ァ イ ル を 作 成 し よ う と し た 際 に 、 ロ ッ ク フ ァ イ ル が 既 に 存 在 し て い た 場 合 、 procmail が ロ ッ ク フ ァ イ ル の 再 作 成 を 待 つ 秒 数 。 特 に 指 定 な き 場 合 、 デ フ ォ ル ト と し て 8秒 が 設 定 さ れ て い る 。

LOCKTIMEOUT

ロ ッ ク フ ァ イ ル が 最 後 に 変 更 さ れ た /作 成 さ れ た 時 点 か ら 、 procmail が 「 こ れ は 誤 っ て 残 っ た ロ ッ ク フ ァ イ ル で あ り 、 今 、 強 制 的 に 削 除 で き る 」 と 決 定 す る 前 に 経 過 し な け れ ば な ら な い 秒 数 。 こ れ に ゼ ロ を 設 定 す る と 、 タ イ ム ア ウ ト は 生 じ な い 。 す な わ ち 、 procmail は ロ ッ ク フ ァ イ ル が 取 り 除 か れ る 迄 永 遠 に 待 つ こ と と な る 。 特 に 指 定 な き 場 合 、 デ フ ォ ル ト と し て 1024秒 が 設 定 さ れ て い る 。 こ の 変 数 は sendmail/procmail の 不 明 瞭 な ハ ン グ ア ッ プ を 防 ぐ 為 に 有 用 で あ る 。 procmail は マ シ ン を 跨 っ た ク ロ ッ ク ず れ に 影 響 さ れ な い 。
TIMEOUT

procmail が 、 「 い く つ か 起 動 し た 子 プ ロ セ ス の ど れ か が ハ ン グ し て い る 」 と 決 定 す る 迄 に 経 過 し な け れ ば な ら な い 秒 数 。 こ の 変 数 に 設 定 さ れ た 時 間 が 経 過 す る と 、 問 題 と な る プ ロ グ ラ ム は procmail か ら TERMINATE シ グ ナ ル を 受 け 、 rcfile の 処 理 は 続 行 さ れ る 。 こ れ に ゼ ロ を 設 定 す る と 、 タ イ ム ア ウ ト は 生 じ な い 。 す な わ ち 、 procmail は 子 プ ロ セ ス が 終 了 す る 迄 永 遠 に 待 つ こ と と な る 。 特 に 指 定 な き 場 合 、 デ フ ォ ル ト と し て 960秒 が 設 定 さ れ て い る 。

MSGPREFIX

メ ッ セ ー ジ を デ ィ レ ク ト リ に 配 送 す る 際 に 使 用 す る 、 フ ァ イ ル 名 の 接 頭 辞 。 (但 し 、 maildir 或 い は MH デ ィ レ ク ト リ に 配 送 す る 際 に は 使 わ れ な い 。 )

HOST

こ れ が マ シ ン の ホ ス ト 名 と 異 な る 場 合 、 現 在 の rcfile の 処 理 を 直 ち に 中 断 す る 。 こ の 他 に も rcfile が コ マ ン ド ラ イ ン に て 指 定 さ れ た 場 合 は 、 処 理 は 次 の rcfile へ 続 行 さ れ る 。 全 て の rcfile が 使 い 尽 く さ れ る と 、 プ ロ グ ラ ム は 終 了 す る が 、 エ ラ ー は 生 成 さ れ な い 。 (す な わ ち 、 メ イ ラ に と っ て み れ ば メ ー ル は 配 送 さ れ た か の よ う に 見 え る 。 )

UMASK

こ の 変 数 名 が 全 て を 物 語 っ て い る 。 (わ か ら な い な ら 気 に し な い で 欲 し い :−) UMASK へ の 指 定 は 全 て 8進 数 の 数 値 と し て 取 り 扱 わ れ る 。 特 に 指 定 な き 場 合 、 デ フ ォ ル ト と し て 077が 設 定 さ れ て い る 。 umask の 指 定 が o+x を 許 可 す る 設 定 に な っ て い る 場 合 、 procmail が 直 接 配 送 す る 全 て の メ ー ル ボ ッ ク ス は o+x モ ー ド 変 更 を 受 け 入 れ る 。 こ れ は 新 着 メ ー ル の 有 無 の チ ェ ッ ク に 役 立 つ 。

SHELLMETAS

も し 、 SHELLMETAS に 含 ま れ る 文 字 が 指 定 さ れ る フ ィ ル タ や プ ロ グ ラ ム の コ マ ン ド ラ イ ン 中 に あ れ ば 、 プ ロ グ ラ ム は 直 接 実 行 さ れ ず 、 コ マ ン ド ラ イ ン は $SHELL に 渡 さ れ 、 $SHELL を 介 し て 起 動 さ れ る 。
SHELLFLAGS

$SHELL の 実 行 は 以 下 の よ う な コ マ ン ド ラ イ ン に て 実 行 さ れ る :

"$SHELL" "$SHELLFLAGS" "$*";

SENDMAIL 転 送 機 能 を 使 っ て い な い 場 合 、 気 に す る 必 要 は な い 。 こ の 変 数 に は 、 あ ら ゆ る メ ー ル を 転 送 す る 為 に 呼 び 出 さ れ る プ ロ グ ラ ム を 指 定 す る 。 起 動 方 法 は 次 の 通 り :

"$SENDMAIL" $SENDMAILFLAGS "$@";

NORESRETRY

process table full’, ’file table full’, ’out of memory’ あ る い は ’out of swap space’ と い う エ ラ ー が 発 生 し た 際 の 、 再 試 行 の 回 数 。 こ の 変 数 に 設 定 す る 数 が 負 の 値 の 場 合 、 procmail は 無 限 に 再 試 行 す る ; 特 に 指 定 な き 場 合 、 デ フ ォ ル ト と し て 4回 が 設 定 さ れ て い る 。 再 試 行 は $SUSPEND 秒 の 間 隔 を 伴 っ て 実 行 さ れ る 。 こ れ は 、 元 々 以 下 の よ う な ア イ デ ィ ア か ら 端 を 発 し て い る 。 例 え ば 、 ス ワ ッ プ ス ペ ー ス が 使 い 尽 く さ れ た か 、 あ る い は プ ロ セ ス テ ー ブ ル が 一 杯 に な っ た 場 合 、 大 概 は 他 の 幾 つ か の プ ロ グ ラ ム も こ の 状 態 を 同 様 に 検 出 し て 中 断 す る か 、 ク ラ ッ シ ュ す る だ ろ う 。 8−) こ の こ と に よ り 、 貴 重 な リ ソ ー ス が procmail の 為 に 開 放 さ れ る で あ ろ う こ と を 期 待 し て い る 。

SUSPEND

何 ら か の 利 用 で き な い も の (メ モ リ 、 fork 【 訳 注 : 子 プ ロ セ ス の 生 成 】 等 ) の 為 に procmail が 待 た な け れ ば な ら な い 際 に 、 一 時 停 止 す る 秒 数 。 特 に 指 定 な き 場 合 、 デ フ ォ ル ト と し て 16秒 が 設 定 さ れ て い る 。 LOCKSLEEP も 参 照 の こ と 。

LINEBUF

内 部 ラ イ ン バ ッ フ ァ の 大 き さ 。 128未 満 に は 設 定 で き な い 。 rcfile か ら 読 み 込 む 行 は 、 展 開 前 後 に か か わ ら ず $LINEBUF を 越 え て は な ら な い 。 特 に 指 定 な き 場 合 、 デ フ ォ ル ト と し て 2048バ イ ト が 設 定 さ れ て い る 。 勿 論 、 こ の 制 限 は メ ー ル 自 身 の 読 み 込 み に は 適 用 さ れ な い 。 メ ー ル の 行 は 任 意 の 長 さ に な り 得 る し 、 バ イ ナ リ フ ァ イ ル も あ り 得 る 。 PROCMAIL_OVERFLOW も 参 照 の こ と 。

DELIVERED

こ れ に ’yes’ が 設 定 さ れ て い る と 、 procmail は (メ ー ル エ ー ジ ェ ン ト に 対 し ) メ ー ル が 配 送 さ れ た か の 如 く 振 舞 う 。 こ の 変 数 に ’yes’ が 設 定 さ れ た 後 に メ ー ル の 配 送 に 失 敗 し た 場 合 、 メ ー ル は 失 わ れ る 。 (す な わ ち 、 送 信 元 に 返 送 さ れ な い 。 )
TRAP

procmail の 処 理 が シ グ ナ ル の 受 信 に よ ら ず 、 一 致 に よ っ て 正 常 終 了 す る 時 、 こ の 変 数 の 内 容 を 実 行 す る 。 メ ー ル の コ ピ ー は 標 準 入 力 か ら 読 み 込 め る 。 こ の コ マ ン ド に て 生 成 さ れ る 全 て の 出 力 は $LOGFILE へ 追 記 さ れ る 。 TRAP の 用 途 と し て は : 一 時 フ ァ イ ル の 消 去 、 カ ス タ マ イ ズ し た 要 約 の ロ グ 記 録 等 。 EXITCODE 及 び LOGABSTRACT も 参 照 さ れ た い 。

EXITCODE

デ フ ォ ル ト で は 、 procmail は 以 下 の 場 合 に お い て 終 了 コ ー ド "0" (正 常 終 了 ) を 返 す : メ ッ セ ー ジ を 正 常 に 配 送 で き た 場 合 。 変 数 HOST が 設 定 さ れ て お ら ず 、 コ マ ン ド ラ イ ン に て rcfile が 全 く 指 定 さ れ て い な か っ た 場 合 。 上 記 以 外 の 場 合 、 procmail は 失 敗 を 示 す 終 了 コ ー ド を 返 す 。 上 述 の デ フ ォ ル ト 動 作 を 実 行 す る 前 に 、 procmail は こ の 変 数 の 値 を 調 べ る 。 こ の 変 数 に 正 の 値 が 設 定 さ れ て い る 場 合 、 procmail は 正 常 終 了 時 の 終 了 コ ー ド と し て こ の 値 を 用 い る 。 こ の 変 数 が 設 定 さ れ て い な が ら そ の 値 が 空 で あ り 、 且 つ 変 数 TRAP が 設 定 さ れ て い る 場 合 は 、 procmail は 変 数 TRAP に 記 述 さ れ て い る プ ロ グ ラ ム の 帰 り 値 を 終 了 コ ー ド と し て 返 す 。 こ の 変 数 が 設 定 さ れ て い な い 場 合 、 変 数 TRAP に 記 述 さ れ て い る プ ロ グ ラ ム を 実 行 す る 直 前 に 、 終 了 コ ー ド を 設 定 す る 。 【 訳 注 : す な わ ち 、 TRAP プ ロ グ ラ ム の 終 了 コ ー ド は 用 い ら れ な い 。 】
LASTFOLDER

procmail が メ ー ル を フ ォ ル ダ や プ ロ グ ラ ム に 配 送 す る 際 に は 、 必 ず こ の 変 数 に 値 が 設 定 さ れ る 。 こ の 変 数 の 値 は 、 procmail が メ ー ル を 配 送 し た 最 後 の フ ァ イ ル (あ る い は プ ロ グ ラ ム ) の 名 前 で あ る 。 最 終 配 送 が 複 数 の デ ィ レ ク ト リ フ ォ ル ダ に 対 す る も の で あ る な ら 、 $LASTFOLDER に は ス ペ ー ス で 区 切 ら れ た ハ ー ド リ ン ク の フ ァ イ ル 名 リ ス ト が 格 納 さ れ る 。

MATCH

レ シ ピ 中 に 正 規 表 現 の マ ッ チ ン グ 文 字 列 を 抽 出 す る 指 示 が あ る と 、 こ の 変 数 が 設 定 さ れ る 。 ’\/’ ト ー ク ン 以 後 の 正 規 表 現 に 合 致 す る テ キ ス ト が 全 て 格 納 さ れ る 。

SHIFT

こ の 変 数 に 正 の 値 を 設 定 す る と 、 sh(1) の ’shift’ コ マ ン ド と 同 じ 効 果 が 得 ら れ る 。 こ の コ マ ン ド は procmail を 一 般 的 な メ ー ル フ ィ ル タ と し て 使 う 際 に 、 procmail に 渡 さ れ た 引 数 を 抽 出 す る 時 に 最 も 有 用 で あ る 。
INCLUDERC

(カ レ ン ト デ ィ レ ク ト リ か ら の 相 対 指 定 で ) rcfile の フ ァ イ ル 名 を 指 定 す る と 、 そ の フ ァ イ ル を 現 在 の rcfile の 一 部 と し て 組 み 込 む 。 【 訳 注 : include: イ ン ク ル ー ド 】 入 れ 子 構 造 が で き 、 そ の 数 は シ ス テ ム リ ソ ー ス (メ モ リ 及 び フ ァ イ ル デ ィ ス ク リ プ タ ) に よ っ て の み 制 限 さ れ る 。 イ ン ク ル ー ド さ れ る rcfile の パ ー ミ ッ シ ョ ン 及 び 所 有 者 は チ ェ ッ ク さ れ な い の で 、 INCLUDERC を 使 用 す る 場 合 に は 、 イ ン ク ル ー ド さ れ る rcfile あ る い は rcfile の あ る デ ィ レ ク ト リ へ の 書 き 込 み 権 限 を 、 信 用 で き る ユ ー ザ だ け が 持 つ こ と を 確 認 す べ き で あ る 。 な お 、 INCLUDERC に 対 す る コ マ ン ド ラ イ ン 引 数 の 指 定 は 無 意 味 で あ り 、 何 の 効 果 も 持 た な い 。

SWITCHRC

(カ レ ン ト デ ィ レ ク ト リ か ら の 相 対 指 定 で ) rcfile の フ ァ イ ル 名 を 指 定 す る と 、 procmail の 処 理 は そ の フ ァ イ ル へ 切 替 え ら れ る 。 こ の 変 数 に 指 定 さ れ た rcfile の フ ァ イ ル 名 が 存 在 し な い も の で あ る か 、 通 常 の フ ァ イ ル で な い か 、 あ る い は /dev/null で あ る 場 合 は 、 エ ラ ー が ロ グ 記 録 さ れ 、 そ れ 以 降 の 現 在 の rcfile の 処 理 が 継 続 さ れ る 。 そ う で な い 場 合 、 procmail に よ る 現 在 の rcfile の 処 理 は 中 断 さ れ 、 こ の 変 数 に 記 述 さ れ た rcfile の 処 理 が 開 始 さ れ る 。 変 数 SWITCHRC の 内 容 を 消 去 す る と 、 そ の 時 点 で 割 り 当 て が 終 了 し た か の 如 く 、 そ れ ま で 実 行 し て い た 現 在 の rcfile の 処 理 を 中 断 す る 。 INCLUDERC と 同 様 、 rcfile の パ ー ミ ッ シ ョ ン 及 び 所 有 者 は チ ェ ッ ク さ れ ず 、 ま た コ マ ン ド ラ イ ン 引 数 の 指 定 は 無 意 味 で あ り 、 何 の 効 果 も 持 た な い 。

PROCMAIL_VERSION 実 行 中 の procmail バ イ ナ リ の バ ー ジ ョ ン 番 号 。
PROCMAIL_OVERFLOW

procmail が バ ッ フ ァ オ ー バ フ ロ ー を 検 出 す る と 、 こ の 変 数 に 何 ら か の 値 が 設 定 さ れ る 。 オ ー バ フ ロ ー 発 生 時 の 操 作 の 詳 細 は 、 バ グ の 章 を 参 照 の こ と 。

COMSAT デ フ ォ ル ト で は

Comsat(8)/biff(1) に よ る メ ー ル 到 着 時 の 通 知

が 有 効 に な っ て い る 。 こ の 変 数 に ’no’ を 設 定 す る と 、 こ の 機 能 を オ フ に で き る 。 別 の 方 法 と し て 、 こ の 変 数 に ’service@’, ’@hostname’ あ る い は ’service@hostname’ と 設 定 す る こ と に よ り 、 biff サ ー ビ ス を カ ス タ マ イ ズ で き る 。 特 に 指 定 な き 場 合 、 デ フ ォ ル ト は ’biff@localhost’ で あ る 。

DROPPRIVS こ の 変 数 に

’yes’ を 設 定 す る と 、 procmail は 本 来 持 っ て い る 権

限 (suid あ る い は sgid) を 全 て 放 棄 す る 。 こ れ は /etc/procmailrc フ ァ イ ル の 後 半 を 確 実 に 受 信 者 の 権 限 に て 実 行 さ せ た い 時 に の み 役 立 つ 。 拡 張 正 規 表 現

standard 次 の ト ー ク ン は procmail 内 部 の egrep お よ び 標 準 的 な egrep(1) の 両 方 で 知 ら れ た 表 現 で あ る (egrep の 一 部 に は 非 標 準 の 拡 張 を 含 む 実 装 が あ る こ と に 注 意 さ れ た い ):

^ 行 頭

$ 行 末

. 改 行 以 外 の す べ て の

1 文 字 と マ ッ チ す る

a*

*の 直 前 の 文 字 aの 0回 以 上 の 繰 り 返 し

a+

*の 直 前 の 文 字 aの 1回 以 上 の 繰 り 返 し

a?

0個 あ る い は 1個 の a

[^−a−d]

ハ イ フ ン (dash)で も な く 、 aか ら dま で で も な く 、 改 行 で も な い 、 任 意 の 1文 字
de|abc

’de’あ る い は ’abc’の 文 字 列 の い ず れ か

(abc)*

文 字 列 ’abc’ の 0回 以 上 の 繰 り 返 し

\. 単 一 の ド

ッ ト ; あ ら ゆ る 特 殊 文 字 の 特 別 な 意 味 付 け を 除 去 し 、 リ テ ラ ル 文 字 と し て マ ッ チ ン グ さ せ た い 場 合 に は 、 \ を 先 頭 に 置 い て 使 う 。 $\ の 変 数 代 入 も 参 照 の こ と 。 勿 論 、 こ れ ら は 単 な る 一 例 で し か な い の で 、 よ り 複 雑 な 組 合 せ も 有 効 で あ る 。 次 の ト ー ク ン の 意 味 は procmail 特 有 の 拡 張 定 義 で あ る :

^ or $ 改 行 と マ ッ チ す る

(複 数 行 に わ た る マ ッ チ ン グ 用 )

^^ 正 規 表 現 の 先 頭 に 記

述 す る こ と に よ り 、 検 索 領 域 の 一 番 最 初 の 部 分 に マ ッ チ す る 。 あ る い は 、 正 規 表 現 の 末 尾 に 記 述 す る こ と に よ り 、 検 索 領 域 の 一 番 最 後 の 部 分 に マ ッ チ す る 。

\< or \> 単 語 の 直 前 あ る い は 直 後 の 文 字 に マ ッ チ す る 。 こ れ ら は 単 に

’[^a−zA−Z0−9_]’ の 省 略 形 で し か な い が 、 但 し 、 改 行 に も マ ッ チ す る 。 こ れ ら は 実 際 の 文 字 に マ ッ チ す る の で 、 単 語 の 区 切 り に の み 有 用 で あ り 、 単 語 間 の ス ペ ー ス を 区 切 る も の で は な い 。

\/ 正 規 表 現 を 、

\/ を 境 に し て 二 つ に 分 け る 。 \/ の 右 側 の 正 規 表 現

に マ ッ チ し た 文 字 列 は 、 環 境 変 数 MATCH に 格 納 さ れ る 。

procmailex(5) man page を 参 照 さ れ た い 。

警 告

環 境 の 基 礎 と な る シ ェ ル が コ マ ン ド ラ イ ン の 継 続 行 の 指 示 に バ ッ ク ス ラ ッ シ ュ を 必 要 と し な い も の で あ っ た と し て も 、 プ ロ グ ラ ム 名 を 指 定 す る ア ク シ ョ ン 行 に お け る 継 続 行 は 、 常 に バ ッ ク ス ラ ッ シ ュ で 終 っ て い な け れ ば な ら な い 。 こ れ は 二 段 階 の 構 文 解 析 処 理 が 必 要 だ か ら で あ る (第 一 に procmail, 次 に シ ェ ル (あ る い は そ う で な い 場 合 は 、 変 数 SHELLMETAS の 内 容 に 依 存 す る ))。 レ シ ピ 中 の 正 規 表 現 の 条 件 行 に コ メ ン ト を 入 れ な い こ と 。 そ れ ら の 行 は 内 部 の egrep に 文 字 通 り そ の ま ま 渡 さ れ る (但 し 、 行 末 の 継 続 行 指 定 の 為 の バ ッ ク ス ラ ッ シ ュ を 除 く )。 複 数 行 に わ た る 正 規 表 現 条 件 行 に お け る 行 頭 の 空 白 は 、 通 常 無 視 さ れ る (す な わ ち 、 イ ン デ ン ト 可 能 で あ る )。 但 し 、 連 続 す る 条 件 行 が ダ ブ ル ク ォ ー テ ー シ ョ ン 内 の sh(1) の 置 換 規 則 に 従 っ て 評 価 さ れ る 場 合 を 除 く 。 あ な た 自 身 の ア カ ウ ン ト へ メ ー ル を 転 送 す る 等 の 危 険 な 行 為 を 行 う 際 に は 、 デ ッ ド ロ ッ ク を 見 張 っ て い て 頂 き た い 。 デ ッ ド ロ ッ ク は 変 数 LOCKTIMEOUT に 指 定 さ れ て い る 時 間 が 経 過 す る と 、 正 常 終 了 の 結 果 と し て な く な っ て し ま う 。 幾 つ か の 環 境 変 数 の デ フ ォ ル ト 値 は 、 procmail 内 部 に 定 義 済 の デ フ ォ ル ト 値 に て 常 に 上 書 き さ れ る 。 こ の デ フ ォ ル ト 値 を 更 に 上 書 き し た い 場 合 は 、 rcfile に て 直 接 指 定 す る か 、 あ る い は コ マ ン ド ラ イ ン の 引 数 に て 指 定 し な け れ ば な ら な い 。

/etc/procmailrc は 、 ユ ー ザ rcfile を 処 理 す る 時 点 の PATH 設 定 を 変 更 す る こ と は で き な い 。 /etc/procmailrc に て PATH を 設 定 し て も 、 /etc/procmailrc の 処 理 を 終 了 し た 時 点 で リ セ ッ ト さ れ て し ま う 。 こ の 領 域 に お け る 将 来 の 拡 張 が 望 ま れ る が 、 procmail を 所 望 の 値 に て 定 義 し て 再 コ ン パ イ ル す る の が 、 現 時 点 で の 唯 一 の 解 決 法 で あ る 。 レ シ ピ の 一 部 分 に お い て シ ェ ル が 解 釈 す る ’|’ に よ る パ イ プ 動 作 の 内 部 で 設 定 す る 環 境 変 数 は 、 レ シ ピ の 終 了 後 に そ の 値 は 保 持 さ れ な い 。 何 故 な ら 、 そ れ ら 環 境 変 数 の 指 定 は procmail の サ ブ シ ェ ル 上 で 行 わ れ る か ら で あ る 。 環 境 変 数 の 設 定 を 確 実 に 保 持 し た い な ら 、 レ シ ピ の ’|’ の 前 に 環 境 変 数 を 設 定 し な け れ ば な ら な い 。 そ う す れ ば 、 プ ロ グ ラ ム の 標 準 出 力 が そ の 環 境 変 数 の 値 と し て キ ャ プ チ ャ さ れ る 。 も し 、 配 送 指 示 で ’h’ あ る い は ’b’ フ ラ グ の み 指 定 さ れ 、 且 つ レ シ ピ が マ ッ チ し 、 そ し て 更 に ’c’ フ ラ グ が な い 場 合 、 各 々 の フ ラ グ に 対 応 す る メ ー ル の 本 文 あ る い は ヘ ッ ダ は 、 エ ラ ー メ ッ セ ー ジ 等 を 伴 う こ と な く 静 か に 消 え 去 る 。 【 訳 注 : す な わ ち 、 レ シ ピ の 指 示 行 が ’c’ フ ラ グ を 伴 わ な い ’h’ の み の 場 合 は メ ー ル 本 文 が 、 同 様 に ’b’ の み の 場 合 は メ ー ル ヘ ッ ダ が 、 各 々 失 わ れ る 。 】

関 連 項 目

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

バ グ

procmail 自 身 が 処 理 で き る 環 境 変 数 の 置 換 機 能 は 以 下 の 通 り : $name, ${name}, ${name:−text}, ${name:+text}, ${name−text}, ${name+text}, $\name, $#, $n, $$, $?, $_, $−, $=; procmail の 置 換 機 能 に よ れ ば 、 上 述 の 置 換 機 能 は 以 下 の よ う に 置 換 さ れ る : $\name は $name 内 に 存 在 す る 全 て の 特 殊 正 規 表 現 文 字 の 機 能 を \ で 無 効 化 し た 文 字 列 に 等 し く 置 換 さ れ る 。 $_ は 現 在 の rcfile の フ ァ イ ル 名 に 置 換 さ れ る 。 $− は $LASTFOLDER に 置 換 さ れ る 。 $= は 最 後 の レ シ ピ の ス コ ア を 含 む 。 更 に 、 $\name の 置 換 結 果 は 決 し て 空 白 文 字 で は 分 割 さ れ な い 。 −a あ る い は −m オ プ シ ョ ン が 用 い ら れ る 時 、 $# は 指 定 し た 引 数 の 数 に 展 開 さ れ る 。 そ し て 、 "$@" (ダ ブ ル ク ォ ー テ ー シ ョ ン は 必 須 ) は 指 定 し た 引 数 に 展 開 さ れ る 。 し か し な が ら 、 "$@" は プ ロ グ ラ ム の 引 数 リ ス ト に 使 う 時 に だ け 展 開 さ れ 、 且 つ こ の 展 開 動 作 は 一 回 だ け で あ る 。

procmail に よ っ て 行 わ れ る ク ォ ー ト さ れ な い 変 数 展 開 は 、 常 に ス ペ ー ス 、 タ ブ 、 及 び 改 行 文 字 に よ っ て 分 割 さ れ る ; IFS 変 数 は 内 部 で は 用 い ら れ な い 。 (訳 注 : IFS は Internal Field Separator (内 部 フ ィ ー ル ド セ パ レ ー タ ) の こ と で 、 あ る 文 字 列 を 指 定 し た 文 字 毎 に 分 割 し 、 配 列 変 数 に 格 納 す る 際 に 指 定 す る 区 切 り 文 字 で あ る 。 sh や bash 等 の コ マ ン ド ラ イ ン 展 開 に 用 い ら れ る が 、 こ の 環 境 変 数 に お か し な 値 を 設 定 す る と 、 セ キ ュ リ テ ィ が 脅 か さ れ る 可 能 性 が 指 摘 さ れ て い る 。 )

procmail は ’~’の 展 開 を サ ポ ー ト し な い 。 ラ イ ン バ ッ フ ァ 長 $LINEBUF は rcfile の 処 理 の 際 に 用 い ら れ る 。 $LINEBUF の 制 限 か ら は み 出 て し ま う 変 数 展 開 は 切 り 詰 め ら れ 、 そ の 時 点 で PROCMAIL_OVERFLOW が 設 定 さ れ る 。 オ ー バ フ ロ ー し た 行 が 条 件 行 あ る い は ア ク シ ョ ン 行 で あ る 場 合 、 当 該 行 は 解 析 あ る い は 処 理 に 失 敗 し た も の と 見 倣 さ れ 、 procmail は そ れ 以 降 の 処 理 を 継 続 す る 。 オ ー バ ー フ ロ ー し た 行 が 変 数 設 定 あ る い は レ シ ピ の 開 始 行 で あ る 場 合 、 procmail は そ の 時 点 で 当 該 rcfile 全 体 の 処 理 を 中 断 す る 。 グ ロ ー バ ル ロ ッ ク フ ァ イ ル が 相 対 パ ス で あ り 、 且 つ カ レ ン ト デ ィ レ ク ト リ が グ ロ ー バ ル ロ ッ ク フ ァ イ ル が 作 成 さ れ た 時 点 と は 異 な る 時 に procmail が 終 了 し た 場 合 、 グ ロ ー バ ル ロ ッ ク フ ァ イ ル は 消 去 さ れ な い (処 方 箋 : グ ロ ー バ ル ロ ッ ク フ ァ イ ル は 絶 対 パ ス に て 指 定 す べ し )。

rcfile が 相 対 パ ス で あ り 、 rcfile 中 に て 最 初 に 開 い た MAILDIR が 相 対 パ ス を 含 ん で お り 、 且 つ 、 rcfile を 開 い た 時 か ら カ レ ン ト デ ィ レ ク ト リ が 変 更 さ れ た 後 に procmail に 自 身 の ク ロ ー ン を 作 成 す る 指 示 が な さ れ た 場 合 、 procmail は 自 身 の ク ロ ー ン を 作 成 で き な い (処 方 箋 : rcfile の 指 定 は 絶 対 パ ス に て 行 う か 、 rcfile 中 の MAILDIR の 指 定 に 絶 対 パ ス が 含 ま れ る よ う に 注 意 す べ し )。 レ シ ピ 上 で fork し な い ネ ス ト さ れ た ブ ロ ッ ク の 先 頭 に 記 す ロ ー カ ル ロ ッ ク フ ァ イ ル は 、 期 待 通 り に は 動 作 し な い 。 レ シ ピ か ら 標 準 出 力 を 環 境 変 数 へ 取 り 込 む 時 、 必 ず 最 後 の 改 行 が 一 つ だ け 取 り 除 か れ る 。 幾 つ か の 適 切 で な い 、 あ る い は 不 明 瞭 な 正 規 表 現 は 変 数 MATCH に 不 正 な 値 を 設 定 し て し ま う 。 そ の 際 、 正 規 表 現 中 の \/ ト ー ク ン の 左 側 に あ る 一 つ 以 上 の 不 要 な ’*’, ’+’, あ る い は ’?’ 記 述 子 は 正 常 動 作 の 為 に 除 去 さ れ る 。

そ の 他

正 規 表 現 に ’^TO_’ と あ る 場 合 、 ’(^((Original−)?(Resent−)?(To|Cc|Bcc) |(X−Envelope|Apparently(−Resent)?)−To):(.*[^−a−zA−Z0−9_.])?)’ と 置 換 さ れ る 。 こ れ に よ り 、 特 定 の ア ド レ ス を 含 む 送 付 先 の 記 述 を 全 て 捕 捉 で き る だ ろ う 。 正 規 表 現 に ’^TO’ と あ る 場 合 、 ’(^((Original−)?(Resent−)?(To|Cc|Bcc) |(X−Envelope|Apparently(−Resent)?)−To):(.*[^a−zA−Z])?)’ と 置 換 さ れ る 。 こ れ に よ り 、 特 定 の 単 語 を 含 む 送 付 先 の 記 述 を 全 て 捕 捉 で き る だ ろ う 。 正 規 表 現 に ’^FROM_DAEMON’ と あ る 場 合 、 ’(^(Mailing−List:|Precedence :.*(junk|bulk|list)|To: Multiple recipients of |(((Resent−)?(From |Sender)|X−Envelope−From):|>?From )([^>]*[^(.%@a−z0−9])?(Post(ma?(st(e?r)?|n)|office)|(send)?Mail(er)? |daemon|m(mdf|ajordomo)|n?uucp|LIST(SERV’u’ |proc)|NETSERV|o(wner|ps) |r(e(quest|sponse)|oot)|b(ounce’u’ |bs\.smtp)|echo|mirror|s(erv(ices? |er)|mtp(error)?|ystem)|A(dmin(istrator)?|MMGR|utoanswer))(([^).! :a−z0−9][−_a−z0−9]*)?[%@>\t ][^<)]*(\(.*\).*)?)?$([^>]|$)))’, と 置 換 さ れ る 。 こ れ に よ り 、 大 多 数 の デ ー モ ン か ら 来 る メ ー ル を 捕 捉 で き る だ ろ う 。 (正 規 表 現 と し て い か が か な ? :−) 正 規 表 現 に ’^FROM_MAILER’ と あ る 場 合 、 ’(^(((Resent−)?(From|Sender) |X−Envelope−From):|>?From )([^>]*[^(.%@a−z0−9])?(Post(ma(st(er)?|n) |office)|(send)?Mail(er)?|daemon|mmdf|n?uucp|ops|r(esponse|oot) |(bbs\.)?smtp(error)?|s(erv(ices?|er)|ystem)|A(dmin(istrator)? |MMGR))(([^).!:a−z0−9][−_a−z0−9]*)?[%@>\t ][^<)]*(\(.*\).*)?)?$([^>] |$))’ と 置 換 さ れ る (’^FROM_DAEMON’ の 機 能 制 約 バ ー ジ ョ ン で あ る )。 こ れ に よ り 、 大 多 数 の メ イ ラ デ ー モ ン か ら 来 る メ ー ル を 捕 捉 で き る だ ろ う 。

VERBOSE, DELIVERED あ る い は COMSAT の よ う な 、 変 数 に ブ ー ル 値 を 割 り 当 て る 時 、 procmail は 以 下 の 文 字 列 か ら 始 ま る 文 字 列 を 論 理 真 と 認 識 す る : 非 ゼ ロ の 数 、 ’on’, ’y’, ’t’ あ る い は ’e’ 。 同 様 に 、 procmail は 以 下 の 文 字 列 か ら 始 ま る 文 字 列 を 論 理 偽 と 認 識 す る : ゼ ロ 、 ’off’, ’n’, ’f’ あ る い は ’d’ 。 レ シ ピ の ア ク シ ョ ン 行 が プ ロ グ ラ ム を 指 定 し て い る 場 合 、 空 行 に 唯 一 「 バ ッ ク ス ラ ッ シ ュ −改 行 」 の 組 合 せ の み 存 在 す る 行 は 、 改 行 へ 変 換 さ れ る 。

procmail に 組 み 込 ま れ て い る 正 規 表 現 エ ン ジ ン は 名 前 付 け さ れ た 文 字 ク ラ ス を サ ポ ー ト し な い 。

備 考

rcfile 内 に お い て 、 囲 み 記 号 等 で 囲 ま れ て い な い 行 頭 の 空 白 は 、 通 常 無 視 さ れ る 。 よ っ て 、 好 み に 応 じ て イ ン デ ン ト 可 能 で あ る 。 プ ロ グ ラ ム あ る い は フ ィ ル タ を 指 定 す る 、 ア ク シ ョ ン 行 の 先 頭 の ’|’ は $SHELLMETAS の チ ェ ッ ク の 前 に 除 去 さ れ る 。 環 境 変 数 の 指 定 だ け を 含 む 、 INCLUDERC デ ィ レ ク テ ィ ブ に 含 ま れ る フ ァ イ ル は sh と 共 有 さ れ う る 。 現 在 の コ マ ン ド ラ イ ン に お け る INCLUDERC 及 び SWITCHRC の 動 作 の 仕 様 は 未 確 定 で あ る 。 既 に 動 作 仕 様 は 一 度 変 更 さ れ て お り 、 将 来 に は 変 更 あ る い は 除 去 さ れ る 可 能 性 が あ る 。 本 当 に 複 雑 な 処 理 を 行 い た い な ら 、 procmail を 再 帰 的 に 呼 び 出 す こ と も 検 討 す る と 良 い だ ろ う 。 か つ て 、 レ シ ピ の 始 ま り を 示 す ’:0’ は 、 条 件 の 数 n に 応 じ て ’:n’ と 書 き 換 え る 必 要 が あ っ た 。

著 者

Stephen R. van den Berg

<srb [AT] cuci.nl>

Philip A. Guenther

<guenther [AT] sendmail.com>