名 前
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 [AT] somewhere.edu :
0
petcompil } 上 記 と 同 じ
こ と を 実 現 す
る 別 の 方 法 : :0 c *
^From.*peter * ^Subject:.*compilers ! william [AT] somewhere.edu
:
0 A
petcompil 同 じ こ と を
実 現 で き る が
、 上 記 の 方 法
よ り 少 し 動 作
が 遅 い 方 法 : :0 c *
^From.*peter * ^Subject:.*compilers ! william [AT] 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 [AT] own.address
| (formail −r −I"Precedence: junk"
\
−A"X−Loop:
your [AT] own.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 [AT] own.address
| formail −rD 8192 vacation.cache :
0 ehc # if the name was not in the cache
| (formail −rI"Precedence: junk" \
−A"X−Loop: your [AT] own.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 [AT] your.address
| formail −A "X−Loop:
yourname [AT] your.address" | \
$SENDMAIL −oi yourname [AT] the.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 [AT] your.address
* !^Subject:.*Re:
* !^FROM_DAEMON
* !^Subject: send file .*[/.]\.
{
MAILDIR=$HOME/fileserver # フ ァ イ
ル サ ー バ の デ
ィ レ ク ト リ に
移 動 :
0 fhw # 返 信 用 ヘ ッ
ダ 作 成 と フ ァ
イ ル 名 抽 出
* ^Subject: send file \/[^ ]*
| formail −rA "X−Loop:
yourname [AT] your.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 [AT] 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
Philip A. Guenther