Man page - procmailex(5)
Packages contains this manual
Available languages:
en es pl hu ja roManual
PROCMAILEX
名 前書 式
説 明
例
関 連 項 目
著 者
名 前
procmailex - procmail 設 定 フ ァ イ ル の 例
書 式
$HOME/.procmailrc の 設 定 例
説 明
設 定 フ ァ イ ル (rcfile) の 書 式 の 説 明 は procmailrc (5) を 参 照 の こ と 。
重 み つ き ス コ ア リ ン グ 手 法 に つ い て は procmailsc (5) に 詳 し い 説 明 が あ る 。
こ の manpage は 、 い ろ い ろ な レ シ ピ の 例 を 示 し た も の で あ る 。 rcfile 全 体 の 例 に つ い て は 、 procmail (1) の 備 考 の 節 や 、 procmail の ソ ー ス 配 布 に 含 ま れ る rcfile の サ ン プ ル (procmail*/examples/?procmailrc) を 参 照 し て ほ し い 。
例
scuba-dive メ ー リ ン グ リ ス ト か ら の メ ー ル を す べ て 選 び 出 し て scubafile と い う メ ー ル フ ォ ル ダ に 入 れ る (ロ ッ ク フ ァ イ ル と し て scubafile.lock を 使 用 す る )。
:0: * ˆTOscuba scubafile
peter か ら の メ ー ル で 、 Subject に compilers が 入 っ て い る も の を す べ て william に 転 送 す る (か つ メ ー ル の コ ピ ー を petcompil に 保 存 す る )。
:0
* ˆFrom.*peter
* ˆSubject:.*compilers
{
:0 c
! william@somewhere.edu
:0
petcompil
}
上 記 と 同 じ こ と を 実 現 す る 別 の 方 法 :
:0 c * ˆFrom.*peter * ˆSubject:.*compilers ! william@somewhere.edu
:0 A
petcompil
同 じ こ と を 実 現 で き る が 、 上 記 の 方 法 よ り 少 し 動 作 が 遅 い 方 法 :
:0 c * ˆFrom.*peter * ˆSubject:.*compilers ! william@somewhere.edu
:0 * ˆFrom.*peter * ˆSubject:.*compilers petcompil
procmail を 使 う の が ほ と ん ど 初 め て で 、 ち ょ っ と だ け 試 し て み た い 場 合 は 、 何 ら か の セ ー フ テ ィ ネ ッ ト を 設 け て お く と 助 か る こ と が 多 い 。 以 下 の 2 つ の レ シ ピ を 、 他 の ど の レ シ ピ よ り 前 に 入 れ て お く と 、 到 着 し た メ ー ル の う ち 常 に 最 新 の 32 通 を 保 存 す る こ と が で き る 。 こ の 機 能 を 働 か せ る た め に は 、 こ れ ら 2 つ の レ シ ピ を 追 加 す る 前 に $MAILDIR に ‘backup’ と い う 名 前 の デ ィ レ ク ト リ を 作 っ て お か な け れ ば な ら な い 。
:0 c backup
:0 ic | cd backup && rm -f dummy ‘ls -t msg.* | sed -e 1,32d‘
使 っ て い る メ ー ル シ ス テ ム が 、 各 メ ー ル の 先 頭 の ‘From ’ 行 を 生 成 し な か っ た り 、 間 違 っ た ‘From ’ 行 を 生 成 し た り す る 場 合 は 、 procmail を -f- オ プ シ ョ ン を つ け て 呼 び 出 す こ と で こ の 問 題 を 修 正 す る (す な わ ち 、 正 し い ‘From ’ 行 を つ け る ) こ と が で き る 。 こ の 問 題 を 解 決 す る 別 の 方 法 と し て は 、 以 下 の レ シ ピ を rcfile の 中 で 一 番 最 初 の レ シ ピ と し て 入 れ る 方 法 も あ る 。 こ う す る と 、 全 て の メ ー ル の ヘ ッ ダ は formail に よ り フ ィ ル タ リ ン グ さ れ る 。 formail は 、 メ ー ル の 先 頭 に あ る ‘From ’ 行 を 取 り 除 い た 上 で 、 さ ら に ‘From ’ 行 を 自 動 生 成 す る 。
:0 fhw | formail -I "From " -a "From "
管 理 者 (postmaster) 以 外 か ら 来 た 全 て の メ ー ル の ヘ ッ ダ を 、 (統 計 を と っ た り 、 メ ー ル の デ バ ッ グ の た め に ) 自 分 だ け の ヘ ッ ダ コ レ ク シ ョ ン に 追 加 す る に は 、 次 の よ う に 設 定 す る 。 書 き こ み 時 の ロ ッ ク フ ァ イ ル と し て ‘headc.lock’ を 使 用 す る 。 パ イ プ 処 理 が 完 了 す る 前 に ロ ッ ク フ ァ イ ル が 削 除 さ れ る こ と が な い よ う に 、 ‘w’ オ プ シ ョ ン を 指 定 し な け れ ば い け な い 。 指 定 し な か っ た 場 合 、 パ イ プ が 処 理 対 象 の メ ー ル を 受 け 付 け る と す ぐ に ロ ッ ク フ ァ イ ル は 削 除 さ れ て し ま う 。
:0 hwc: *
!ˆFROM_MAILER | uncompress headc.Z; cat >>headc;
compress
headc
上 記 の レ シ ピ で compress の 代 わ り に 、 も っ と 圧 縮 率 が 良 い gzip を 使 用 す る に は 以 下 の よ う に す れ ば よ い 。
:0 hwc: * !ˆFROM_MAILER | gzip >>headc.gz
1000 バ イ ト 未 満 の メ ー ル を す べ て 自 宅 の ア ド レ ス に 転 送 す る (こ の レ シ ピ の 場 合 、 ロ ッ ク フ ァ イ ル は 必 要 な い )。
:0 * < 1000 ! myname@home
surfing メ ー リ ン グ リ ス ト の ま と め 送 り の メ ー ル を 個 々 の メ ッ セ ー ジ に 分 割 し て 、 メ ー ル フ ォ ル ダ surfing に 格 納 す る 。 ロ ッ ク フ ァ イ ル と し て surfing.lock を 使 用 す る 。
:0: * ˆSubject:.*surfing.*Digest | formail +1 -ds >>surfing
postmaster や mailer-daemon か ら 来 た 全 て の メ ー ル (エ ラ ー で 戻 っ て き た メ ー ル な ど ) を postm フ ァ イ ル に 格 納 す る 。 ロ ッ ク フ ァ イ ル と し て postm.lock を 使 用 す る 。
:0: * ˆFROM_MAILER postm
簡 単 な 自 動 返 信 用 の レ シ ピ 。 こ の レ シ ピ は 、 デ ー モ ン か ら の メ ー ル (戻 っ て き た メ ー ル や メ ー リ ン グ リ ス ト か ら の メ ー ル な ど ) や 自 分 自 身 か ら の 自 動 返 信 の メ ー ル に は 自 動 返 信 し な い こ と を 保 証 し て い る 。 も し こ の よ う な 注 意 を 怠 っ た な ら ば 、 (メ ー ル ル ー プ な ど ) 大 変 な こ と が 起 こ り 得 る 。 こ の レ シ ピ を 用 い て 、 受 信 し た す べ て の メ ー ル に 対 し て 自 動 応 答 を 行 う た め に は 、 言 う ま で も な い が 、 rcfile の 他 の 全 て の レ シ ピ よ り 前 に こ れ を 置 く 必 要 が あ る 。 実 際 に は 、 講 読 し て い る メ ー リ ン グ リ ス ト か ら の メ ー ル を 処 理 す る レ シ ピ の 後 ろ に こ の レ シ ピ を 置 く こ と を 推 奨 す る 。 一 般 的 に は 、 メ ー リ ン グ リ ス ト に 対 し て 自 動 返 信 を 行 う の は よ い 考 え で は な い 。 (確 か に 、 正 規 表 現 !ˆFROM_DAEMON に よ っ て そ の よ う な メ ー ル は す で に 捕 ま え ら れ て い る は ず だ が 、 メ ー リ ン グ リ ス ト が 一 般 的 な 慣 習 に 従 っ て い な い 場 合 は 、 こ れ だ け で は 不 十 分 だ か ら で あ る 。 )
:0 h c
* !ˆFROM_DAEMON
* !ˆX-Loop: your@own.mail.address
| (formail -r -I"Precedence: junk" \
-A"X-Loop: your@own.mail.address" ; \
echo "Mail received.") | $SENDMAIL -t
以 下 は も っ と 複 雑 な 自 動 返 信 の レ シ ピ の 例 で 、 有 名 な vacation (1) プ ロ グ ラ ム と 同 じ 機 能 を 実 現 す る も の で あ る 。 こ の レ シ ピ は (メ ー ル ル ー プ を 防 ぐ な ど の ) 直 前 の レ シ ピ と 同 じ 方 針 で 作 ら れ て い る 。 さ ら に 、 こ の レ シ ピ で は 送 信 者 の 名 前 を 抽 出 し て vacation デ ー タ ベ ー ス を 作 っ て お り 、 名 前 が 新 し い も の だ っ た と き に は vacation.cache フ ァ イ ル に そ の 名 前 が 追 加 さ れ る (vacation.cache フ ァ イ ル は formail に よ り 管 理 さ れ て お り 、 常 に 最 近 の 送 信 者 名 が 格 納 さ れ 、 フ ァ イ ル の サ イ ズ の 上 限 が 約 8192 バ イ ト に な る こ と が formail に よ り 保 証 さ れ る )。 新 し い 送 信 者 名 だ っ た 場 合 は 、 自 動 応 答 メ ッ セ ー ジ が 送 信 さ れ る 。
見 て 分 か る よ う に 、 以 下 の レ シ ピ で は 条 件 の 「 間 」 に コ メ ン ト が 入 っ て い る 。 こ の よ う な コ メ ン ト の 入 れ 方 は 認 め ら れ て い る 。 し か し 、 条 件 と 同 じ 行 に コ メ ン ト を 入 れ て は 「 い け な い 」 。
SHELL=/bin/sh # for other shells, this might need adjustment
:0 Whc:
vacation.lock
# Perform a quick check to see if the mail was addressed to
us
* $ˆTo:.*\<$\LOGNAME\>
# Don’t reply to daemons and mailinglists
* !ˆFROM_DAEMON
# Mail loops are evil
* !ˆX-Loop: your@own.mail.address
| formail -rD 8192 vacation.cache
:0 ehc # if the
name was not in the cache
| (formail -rI"Precedence: junk" \
|
-A"X-Loop: your@own.mail.address" ; \ |
||
|
echo "I received your mail,"; \ |
||
|
echo "but I won’t be back until Monday."; \ |
||
|
echo "-- "; cat $HOME/.signature \ |
||
|
) | $SENDMAIL -oi -t |
TeX に 関 係 す る 全 メ ッ セ ー ジ を 、 texmail と い う デ ィ レ ク ト リ に 、 一 通 毎 に 別 の 、 他 と は 重 複 し な い 名 前 の フ ァ イ ル に 保 存 す る (こ こ で 指 定 す る デ ィ レ ク ト リ は あ ら か じ め 存 在 し な け れ ば な ら な い )。 こ の 場 合 、 ロ ッ ク フ ァ イ ル を 使 用 す る 必 要 が な い の で 、 レ シ ピ で も そ う な っ て い る 。
:0 * (ˆTO|ˆSubject:.*)TeX[ˆt] texmail
上 と 同 じ だ が 、 メ ー ル を 番 号 が 振 ら れ た フ ァ イ ル (MH 形 式 の フ ォ ル ダ ) に 格 納 す る 点 が 異 な る 。
:0 * (ˆTO|ˆSubject:.*)TeX[ˆt] texmail/.
メ ー ル を 同 時 に 複 数 の デ ィ レ ク ト リ ・ フ ォ ル ダ に 振 り 分 け る こ と も で き る 。 以 下 の レ シ ピ は 、 メ ー ル を 2 つ の MH 形 式 の フ ォ ル ダ と 1 つ の デ ィ レ ク ト リ ・ フ ォ ル ダ に 振 り 分 け る 。 実 際 に は フ ァ イ ル は 1 つ 作 成 さ れ る だ け で 、 追 加 で ハ ー ド リ ン ク が 2 つ 作 成 さ れ る 。
:0 * (ˆTO|ˆSubject:.*)TeX[ˆt] texmail/. wordprocessing dtp/.
会 議 (meeting) に 関 す る 全 メ ッ セ ー ジ を 月 毎 に 異 な る デ ィ レ ク ト リ に 保 存 す る 。 例 え ば 、 1994 年 1 月 だ っ た と す る と 、 フ ォ ル ダ 名 は ‘94-01/meeting’ と い う 名 前 と な り 、 ロ ー カ ル ロ ッ ク フ ァ イ ル は ‘94-01/meeting.lock’ に な る 。
:0: * meeting ‘date +%y-%m‘/meeting
上 と 同 じ だ が 、 ‘94-01’ デ ィ レ ク ト リ が 存 在 し な か っ た 場 合 、 自 動 的 に 作 成 さ れ る 。
MONTHFOLDER=‘date +%y-%m‘
:0 Wic * ? test ! -d $MONTHFOLDER | mkdir $MONTHFOLDER
:0: * meeting ${MONTHFOLDER}/meeting
上 と 同 じ だ が 、 少 し だ け 違 う 方 法 :
MONTHFOLDER=‘date +%y-%m‘ DUMMY=‘test -d $MONTHFOLDER || mkdir $MONTHFOLDER‘
:0: * meeting ${MONTHFOLDER}/meeting
複 数 の メ ー リ ン グ リ ス ト を 講 読 し て い て 、 そ の メ ー リ ン グ リ ス ト の い く つ か に ク ロ ス ポ ス ト す る 人 が い る 場 合 、 同 じ メ ッ セ ー ジ を 何 回 か 受 け 取 る こ と が よ く あ る (各 メ ー リ ン グ リ ス ト か ら は 一 通 だ が )。 以 下 の 簡 単 な レ シ ピ を 使 う と 、 重 複 し た メ ー ル を 除 去 す る こ と が で き る 。 こ の レ シ ピ で は 、 formail を 通 じ て 最 近 受 信 し た メ ー ル の Message-ID を 格 納 す る 8KB の キ ャ ッ シ ュ ・ フ ァ イ ル を 作 っ て い る 。 Message-ID は 新 着 メ ー ル 毎 に 一 意 で あ る こ と が 保 証 さ れ て い る の で 、 Message-ID を 使 う の は 重 複 す る メ ー ル を 除 く の に ま さ に ぴ っ た り の 方 法 で あ る 。 こ の レ シ ピ を rcfile の 一 番 最 初 に 置 く だ け で 、 重 複 す る メ ー ル は こ の レ シ ピ を 通 過 で き な く な る 。
:0 Wh: msgid.lock | formail -D 8192 msgid.cache
注 意 す べ き こ と と し て 、 こ れ よ り 後 の レ シ ピ で 配 信 に 問 題 が あ る と procmail は そ の メ ー ル を キ ュ ー に も う 一 度 入 れ よ う と す る 。 そ う す る と 、 次 回 の キ ュ ー 処 理 の 際 に こ の メ ー ル は 重 複 し て い る と み な さ れ 、 な く な っ て し ま う 。 自 分 の ス ク リ プ ト 作 成 技 術 に あ ま り 自 信 が な い 場 合 は 、 代 わ り に 以 下 の レ シ ピ を 使 う こ と が で き る 。 こ の レ シ ピ は 、 重 複 す る メ ー ル を ど こ か 捨 て て し ま う の で は な く 、 別 の フ ォ ル ダ に 入 れ る 。 も ち ろ ん 、 定 期 的 に こ の フ ォ ル ダ を 空 に す る の は 、 自 分 で や ら な い と い け な い 。
:0 Whc: msgid.lock | formail -D 8192 msgid.cache
:0 a: duplicates
procmail は MH 形 式 の フ ォ ル ダ に 直 接 メ ッ セ ー ジ を 配 信 す る こ と が で き る が 、 本 物 の MH が 管 理 し て い る 未 読 番 号 (unseen sequence) の 更 新 は 行 わ な い 。 procmail に も 未 読 番 号 の 更 新 を 行 わ せ た い 場 合 は 、 以 下 の よ う な レ シ ピ を 使 う と よ い 。 こ の 例 で は 、 本 文 に spam と い う 言 葉 を 含 む 全 て の メ ー ル を spamfold と い う MH フ ォ ル ダ に 入 れ て い る 。 ロ ー カ ル ロ ッ ク フ ァ イ ル が 必 要 な 点 に 注 意 す る こ と 。 な ぜ な ら 、 MH の プ ロ グ ラ ム 群 は 番 号 フ ァ イ ル (sequences file) の ロ ッ ク を 行 わ な い か ら で あ る 。 し た が っ て 、 番 号 フ ァ イ ル を 変 更 す る MH の プ ロ グ ラ ム が 非 同 期 で 複 数 実 行 さ れ る と 、 内 容 が お か し く な っ た り 、 い つ の 間 に か 変 更 が 失 わ れ る 可 能 性 が あ る 。 残 念 な が ら 、 ロ ッ ク フ ァ イ ル を 使 っ て も こ の 問 題 を 完 全 に 解 決 す る こ と は で き な い 。 ‘show’、 ‘mark’ や 他 の MH プ ロ グ ラ ム の 実 行 中 に rcvstore が 起 動 さ れ る こ と が あ り 得 る か ら で あ る 。 こ の 問 題 が MH の 将 来 の バ ー ジ ョ ン で 修 正 さ れ る こ と を 期 待 し て い る が 、 そ れ ま で は 、 番 号 が 失 な わ れ た り お か し く な っ た り す る 危 険 と 、 未 読 番 号 を 使 う 利 点 を 、 天 秤 に か け た 上 で 使 わ な け ら ば な ら な い だ ろ う 。
:0 :spamfold/$LOCKEXT * B ?? spam | rcvstore +spamfold
emacs の メ ー ル フ ォ ル ダ (RMAIL や VM と い っ た emacs 上 で 動 作 す る メ ー ル ・ パ ッ ケ ー ジ で 管 理 さ れ て い る メ ー ル フ ォ ル ダ ) に 直 接 配 信 す る 場 合 、 emacs と 同 じ ロ ッ ク フ ァ イ ル を 使 用 す べ き で あ る 。 emacs の メ ー ラ ー は こ の 点 で 少 し お か し な と こ ろ が あ り 、 す で に emacs の 内 部 バ ッ フ ァ に 読 み 込 ま れ て い る メ ー ル フ ォ ル ダ に 第 三 者 が メ ー ル を 配 信 す る と 、 非 常 に 混 乱 し て し ま う 。 以 下 の レ シ ピ は $HOME の 値 が /home/john の 場 合 の 例 で あ る 。
MAILDIR=Mail
:0:/usr/local/lib/emacs/lock/!home!john!Mail!mailbox
* ˆSubject:.*whatever
mailbox
別 の 方 法 と し て は 、 procmail 専 用 の メ ー ル ボ ッ ク ス を 設 け 、 procmail は そ こ に メ ー ル を 配 信 す る よ う に し て 、 定 期 的 に movemail を 使 っ て メ ー ル ボ ッ ク ス を 空 に し 、 内 容 を emacs メ ー ラ ー の フ ァ イ ル に コ ピ ー す る こ と も で き る 。 movemail は メ ー ル ボ ッ ク ス 単 位 の ロ ー カ ル ロ ッ ク フ ァ イ ル mailbox.lock を 使 用 す る 。 実 の と こ ろ 、 procmail と 一 緒 に 使 う 場 合 、 こ の 方 法 を 使 う 方 が 望 ま し い 。
メ ー ル か ら 特 定 の ヘ ッ ダ を 抽 出 し て 環 境 変 数 に 設 定 す る に は 、 以 下 の い ず れ か の 方 法 も 使 用 す る こ と が で き る 。
SUBJECT=‘formail -xSubject:‘ # 通 常 の フ ィ ー ル ド FROM=‘formail -rt -xTo:‘ # 特 殊 な 例
:0 h # 他 の 方 法 KEYWORDS=| formail -xKeywords:
procmailrc フ ァ イ ル 内 で 一 時 フ ァ イ ル を 使 っ て い て 、 procmail 終 了 直 前 に 一 時 フ ァ イ ル が 確 実 に 削 除 さ れ る よ う に す る に は 、 以 下 の よ う に す れ ば よ い 。
TEMPORARY=$HOME/tmp/pmail.$$ TRAP="/bin/rm -f $TEMPORARY"
キ ー ワ ー ド TRAP は procmail の 終 了 コ ー ド を 変 更 す る た め に 使 う こ と も で き る 。 つ ま り 、 通 常 の 終 了 コ ー ド の 代 わ り に 終 了 コ ー ド ‘1’ を procmail が 返 す よ う に し た い 場 合 、 以 下 の よ う に す れ ば よ い :
EXITCODE=""
TRAP="exit 1;" # 最 後 の
セ ミ コ ロ ン は
大 事 で あ る 。 exit
は 独 立 し た
# コ マ ン ド で は
な く シ ェ ル の
コ マ ン ド だ か
ら で あ る 。
終 了 コ ー ド に TRAP か ら 起 動 さ れ た プ ロ グ ラ ム の 結 果 を 反 映 さ せ る 必 要 が な い 場 合 は 、 以 下 の よ う に 書 く だ け で も よ い 。
EXITCODE=1
以 下 の レ シ ピ は 、 受 信 し た メ ー ル の う ち postscript フ ァ イ ル と 思 わ れ る メ ー ル を 全 部 印 刷 す る 。
:0 Bb * ˆˆ%! | lpr
次 の レ シ ピ は 同 じ 動 作 を す る が 、 も う 少 し 選 択 条 件 が 厳 し く な っ て い る 。 print-server か ら 来 た postscript フ ァ イ ル だ け を 印 刷 す る 。 最 初 の 条 件 は 、 ヘ ッ ダ 内 に 指 定 パ タ ン が 見 つ か っ た 場 合 の み マ ッ チ す る 。 二 番 目 の 条 件 は 、 メ ー ル 本 文 の 先 頭 で の み マ ッ チ す る 。
:0 b * ˆFrom[ :].*print-server * B ?? ˆˆ%! | lpr
上 と 同 じ だ が 、 少 し だ け 違 う 方 法 :
:0
* ˆFrom[ :].*print-server
{
:0 B b
* ˆˆ%!
| lpr
}
こ れ も 同 様 :
:0 HB b * ˆˆ(.+$)*From[ :].*print-server * ˆˆ(.+$)*ˆ%! | lpr
メ ー ル ア カ ウ ン ト を 2つ 持 っ て い る と し よ う 。 ど ち ら も 常 時 使 用 し て い る が 、 と て も 離 れ た 場 所 に あ る と す る (つ ま り 、 い ず れ か 一 方 の ア カ ウ ン ト に 届 い た メ ー ル し か 読 む こ と が で き な い と す る )。 ア カ ウ ン ト 1 に 届 い た メ ー ル を ア カ ウ ン ト 2 に 転 送 し 、 反 対 向 き も 行 い た い と い う 状 況 を 考 え る 。 ま ず 思 い つ く の は 、 両 方 の サ イ ト で .forward フ ァ イ ル を 使 う 方 法 だ が 、 も ち ろ ん う ま く 動 か な い 。 メ ー ル の ル ー プ が 起 こ っ て し ま う か ら だ 。 こ の メ ー ル の ル ー プ は 、 両 方 の サ イ ト の $HOME/.procmailrc フ ァ イ ル の 先 頭 に 以 下 の レ シ ピ を 入 れ て お く こ と で 避 け る こ と が で き る 。 両 方 の サ イ ト で 同 じ X-Loop: フ ィ ー ル ド を 追 加 す る よ う に し て お け ば 、 メ ー ル は ど ち ら の ア カ ウ ン ト か ら で も 安 全 に も う 一 方 の ア カ ウ ン ト に 転 送 す る こ と が で き る よ う に な る 。
:0 c
* !ˆX-Loop: yourname@your.main.mail.address
| formail -A "X-Loop:
yourname@your.main.mail.address" | \
$SENDMAIL -oi yourname@the.other.account
誰 か が 件 名 に ‘retrieve’ と い う キ ー ワ ー ド を 入 れ た メ ー ル を 送 っ て く る と 、 以 下 の レ シ ピ は 自 動 的 に info_file の 内 容 を 送 信 者 に 送 り 返 す 。 メ ー ル を 送 信 す る レ シ ピ で は い つ も そ う で あ る が 、 メ ー ル の ル ー プ が 起 こ ら な い よ う に 気 を 付 け る こ と 。
:0 *
!ˆFrom +YOUR_USERNAME * !ˆSubject:.*Re: *
!ˆFROM_DAEMON *
ˆSubject:.*retrieve | (formail -r ; cat info_file) |
$SENDMAIL -oi -t
今 度 は 、 メ ー ル で ア ク セ ス 可 能 な 非 常 に 簡 単 な フ ァ イ ル サ ー バ の 例 で あ る 。 も っ と 高 度 な 機 能 が 必 要 な 場 合 に は 、 SmartList を 調 べ て み る こ と を お 薦 め す る (SmartList は procmail の 配 布 場 所 と 同 じ 場 所 で 入 手 で き る )。 以 下 の リ ス ト に あ る よ う に 、 こ の フ ァ イ ル サ ー バ は 一 つ の リ ク エ ス ト に 対 し 最 大 で も 一 つ の フ ァ イ ル し か 送 り 返 さ な い 。 ま た 、 受 信 し た メ ー ル の 本 文 は 無 視 さ れ 、 Subject: 行 は 「 Subject: send file the_file_you_want」 (空 白 に は 意 味 が あ る ) と い う 形 式 に な っ て い な け れ ば な ら な い 。 フ ァ イ ル ネ ー ム が ド ッ ト (.) で 始 ま る フ ァ イ ル は 送 り 返 さ な い し 、 フ ァ イ ル サ ー バ の デ ィ レ ク ト リ ・ ツ リ ー の 外 部 に あ る フ ァ イ ル を 取 り 出 す こ と も で き な い よ う に な っ て い る (こ の 例 に 手 を 入 れ る 場 合 は 、 こ の 最 後 の 制 限 項 目 を 不 注 意 で 緩 め る こ と が な い よ う に 気 を つ け る こ と )。
:0
* ˆSubject: send file [0-9a-z]
* !ˆX-Loop: yourname@your.main.mail.address
* !ˆSubject:.*Re:
* !ˆFROM_DAEMON
* !ˆSubject: send file .*[/.]\.
{
MAILDIR=$HOME/fileserver # フ ァ イ
ル サ ー バ の デ
ィ レ ク ト リ に
移 動
:0 fhw #
返 信 用 ヘ ッ ダ
作 成 と フ ァ イ
ル 名 抽 出
* ˆSubject: send file \/[ˆ ]*
| formail -rA "X-Loop:
yourname@your.main.mail.address"
FILE="$MATCH" # 要 求 の あ っ た フ ァ イ ル 名
:0 ah
| cat - ./$FILE 2>&1 | $SENDMAIL -oi -t
}
以 下 の 例 は 、 特 定 の MIME 形 式 で エ ン コ ー ド さ れ て 届 い た plain-text の メ ー ル を 、 よ り コ ン パ ク ト な 8 ビ ッ ト 形 式 に 前 も っ て 変 換 す る 。 こ う す る こ と で 、 多 く の プ ロ グ ラ ム で 簡 単 に 使 用 し た り 表 示 し た り で き る よ う に な る 。 mimencode (1) プ ロ グ ラ ム は Nathaniel Borenstein の metamail パ ッ ケ ー ジ に 含 ま れ て い る 。
:0
* ˆContent-Type: *text/plain
{
:0 fbw
* ˆContent-Transfer-Encoding: *quoted-printable
| mimencode -u -q
:0 Afhw
| formail -I "Content-Transfer-Encoding: 8bit"
:0 fbw
* ˆContent-Transfer-Encoding: *base64
| mimencode -u -b
:0 Afhw
| formail -I "Content-Transfer-Encoding: 8bit"
}
以 下 の 例 は あ ま り 見 か け な い も の だ が 、 こ ん な 機 能 も こ と も で き る と い う 紹 介 で あ る 。 HOME デ ィ レ ク ト リ に ".urgent" と い う 名 前 の フ ァ イ ル が あ り 、 そ の フ ァ イ ル に (一 人 の ) 人 の 名 前 が 書 か れ て い て 、 そ の 人 か ら メ ー ル が 来 た 場 合 、 通 常 の メ ー ル フ ォ ル ダ に 入 れ る 代 わ り に $MAILDIR/urgent に 格 納 し た い と す る 。 こ の レ シ ピ で そ れ が で き る 。 (気 を 付 け る べ き 点 と し て 、 $HOME/.urgent の フ ァ イ ル サ イ ズ は $LINEBUF よ り 小 さ く す べ き で あ る 。 必 要 な ら LINEBUF の 値 を 増 や す こ と 。 )
URGMATCH=‘cat $HOME/.urgent‘
:0: * $ˆFrom.*${URGMATCH} urgent
procmail の 全 く 別 の 使 い 方 と し て 、 特 定 の (外 に 出 て い く ) テ キ ス ト や メ ー ル に 条 件 に 応 じ て フ ィ ル タ を 適 用 す る と い っ た 方 法 が あ る 。 代 表 的 な 例 と し て は 、 外 に 出 て い く 全 て の メ ー ル を 通 す フ ィ ル タ で 、 必 要 な 場 合 の み MIME エ ン コ ー ド さ れ る よ う に す る も の が あ る 。 こ の 場 合 に は 、 パ イ プ の 中 段 と し て procmail を 起 動 す る こ と に な る 。
cat newtext | procmail ./mimeconvert | mail chris@where.ever
mimeconvert rcfile に は 、 以 下 の よ う な ル ー ル が 入 る こ と だ ろ う (=0x80= や =0xff= に は 実 際 の 8 ビ ッ ト 文 字 を 入 れ る こ と ):
DEFAULT=| #
い つ も の よ う
に メ ー ル を 配
信 す る の で は
な く
# 標 準 出 力 に パ
イ プ す る
:0 Bfbw
* [=0x80=-=0xff=]
| mimencode -q
:0 Afhw
| formail -I ’MIME-Version: 1.0’ \
-I ’Content-Type: text/plain;
charset=ISO-8859-1’ \
-I ’Content-Transfer-Encoding:
quoted-printable’
関 連 項 目
procmail (1), procmailrc (5), procmailsc (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), mimencode (1), lockfile (1), formail (1)
著 者
Stephen R. van den Berg
<srb@cuci.nl>
Philip A. Guenther
<guenther@sendmail.com>