
いますぐ実践! Linux システム管理 / Vol.214 / 読者数:2025名こんばんは、うすだです。 申し訳ございません、1週間すっぽかしてしまいました。 先週は、とある原稿を猛烈に書いておりまして、思った以上に項目が大量にあり、 朝までかかってしまい、着手すらできませんでした。 その原稿とやらは、本来なら昨年末までに仕上げる予定だったのですが、 いろいろ(いろいろ?)重なってしまい、間延びしてしまったのでした。 ま、すべては、無計画に過ごしてきたおのれの責任です。 ただ、会社でも、いろいろ(いろいろ?)ご指摘を受けて、 振り返る必要に迫られているのですが、未だに考えられていないということは、 自分でも苦手な領域なんだろうな、ということは薄々気づいています。 そろそろ逃げずに立ち向かわねばと思いつつも、当メルマガは1週間遅れで発行しないと、 なんて思ってやっぱり逃げている自分に再度気づいて、 いつもの自己嫌悪に陥りそうな状況です。
とりあえず書いてから考えるってことで、今回もはりきってまいります。 今回のお題 - procmail をもう少し使いこなしてみる前回、procmail というものがどういうもので、どう使うものなのかを、 ざっくりとご紹介しました。
Vol.213 - procmail でメールを振り分ける 今回はその続きで、procmail について、もうちょっと踏み込んでみたいと思います。 前回の補足を少しだけまず、設定ファイルですが、「$HOME/.procmailrc」の設定ファイルだけでなく、 すべての人に共通の「/etc/procmailrc」も解釈されます。
また、アクションですが、「ディレクトリ名/」のように、最後に「/」をつけると、
Maildir形式で記録します。 DEFAULT=$HOME/Maildir/ 環境変数で動作が変わりますprocmail は、 「$HOME/.procmailrc」という設定ファイルにレシピという設定をずらずらと書いていきます。
ですが、レシピだけでなく、環境変数を書くことができます。
procmail は、MAILDIRで指定したディレクトリで動作します。そのため、 相対パスで指定したファイルなどは、 MAILDIRからたどれるようになっている必要があります。
どのレシピにも該当しない場合は、DEFAULT で指定した配送先に送信されます。 DEFAULT="! usu@usupi.org" 書き込めないなどの理由で配送できなかった際は、 ORGMAIL で指定されたところに配送します。これも ! などは解釈されませんでした。 procmailの設定をあれこれ試行錯誤して路頭に迷ったときは、 LOGFILE を指定してみましょう。指定したファイルにログが出力されるため、 どんなふうに処理されたのかがわかります。 LOGFILE=maillog 例を以下に示します。 $ cat ~/maillog ...前略... From usu@usupi.org Sun Jan 29 17:37:28 2012 Subject: test Folder: /var/mail/tetsuzo 12345 といっても、ログの出力は、そのままではそっけないので、 以下のようにVERBOSEを有効にしましょう。詳細の情報が吐かれるようになります。 VERBOSE=on たとえばこんな感じに吐かれます。 procmail: [4649] Sun Jan 29 18:19:02 2012 procmail: Assigning "UMASK=027" procmail: Bypassed locking "/var/mail/oei.lock" procmail: Assigning "LASTFOLDER=/var/mail/oei" procmail: Opening "/var/mail/oei" procmail: Acquiring kernel-lock procmail: Notified comsat: "oei@11817:/var/mail/oei" From usu@usupi.org Sun Jan 29 18:19:02 2012 Subject: test Folder: /var/mail/oei 12345
あと、UMASKで、記録するファイル等のパーミッションを変更できます。 UMASK=027 また、これら以外にも、自分で勝手に決めた環境変数を設定して使うことができます。 SPAMDIR=$HOME/spam/ ...中略... $SPAMDIR SpamAssassin を噛ませてみる
SpamAssassin というメールフィルタがあります。
SpamAssassin 標準入力からメールを受け取り、スパムかどうかを判定して、 その結果を「X-Spam-云々」というヘッダで付加し、 標準出力に吐くコマンドっぽいものです。 そのため、届いたメールを spamassassin に渡したり、 スパム判定されたメールを取り除いたりといった処理は、procmail に任されています。 ここでは、SpamAssassinのインストールや設定手順を割愛して、 procmailの設定だけを紹介させていただきます。 まず、spamassassinを通すだけであれば、以下のような設定になります。 :0fw * ! ^X-Spam.* | /usr/bin/spamassassin
ここで、前回説明していないフラグ「f」と「w」が出てきました。 ただ、上記の場合、ヘッダがつくだけで、届くメールが減るわけではありません。 (「X-Spam-Status」フラグを見て、 スパム判定されたものに削除マークをつける設定をMUAにしているなどの場合は、 意味があります。) そこで、スパム判定されたものは、別に追いやってしまいましょう。 :0fw * ! ^X-Spam.* | /usr/bin/spamassassin :0: * ^X-Spam-Status: Yes spam/.
こうすると、まずspamassassinでスパム判定を行い、
スパムと判定されたメール…つまり「X-Spam-Status」ヘッダが「Yes」なメールを、
spam というディレクトリ以下に追いやります。 おわりに以上、procmail について、ちょっとだけ余計にご紹介しました。 結局のところは、人によって設定したい内容が異なるため、 意図した通り動いてくれるかどうか、己れで試行錯誤をするしかありません。 一番いいのは、どうでもいいアカウントを作って試すことです。 もしそれが許されない環境の場合は、 .forward に自分と procmail の双方に配送されるようにしておき、 .procmailrc に LOGFILE と VERBOSE を設定して試行錯誤するしかないと思います。 なにはともあれ、いろいろ試してみてください。 宿題の答え前回の宿題は、 $HOME/.procmailrc がないときの procmail の動作を確認しましょう。 でした。 ただ単に、$HOME/.forward には procmail を呼ぶように設定しておいたままの状態で、 $HOME/.procmailrc をなくしてしまうだけです。 というわけで、やってみましょう。 $ cat ~/.forward "| exec /usr/bin/procmail" $ mv ~/.procmailrc ~/.procmailrc- としてメールを出すと… /var/spool/mail/ユーザ名 に追記されました。
これは、postfix などの MTA で Maildir を使うよう設定してあっても、
問答無用でそのようになります。
ちなみに、$HOME/.procmailrc をこうしておくと、
ちゃんとMaildir形式で保存されました。 DEFAULT=$HOME/Maildir/ 今回の宿題今回の宿題は、 自分宛のメールで、MIMEマルチパートじゃなく、本文が5kB未満のもの だけを携帯メールに転送する設定をしてください。 です。
いままでの寄せ集め…もとい、集大成です。 あとがき先々週、TDD(テスト駆動開発)の勉強会に参加してきました。
セミナーや勉強会というやつに参加するのは、ものすごく久しぶりです。 それでも、みんなTDDを知りたい学びたいという共通意識があるためか、 同じテーブルのひとといろいろ話したり、 ペアプログラミングというものを体験したりと、充実した時を過ごすことができました。
ポストイットを模造紙に貼ったりしながら、
いまどきのアジャイルな開発もよいもんだなあ、なんて思ったりしました。 また、実際にOSSを開発されているひとから、直接話を伺うことができたことも、 大きな収穫でした。なんらかの形で貢献していこうと決意して、 会場を後にしました。
…いまのところは、原稿に追われていてぜんぜんできていないのですが。
おっと、次回は、2週間後の 2/11 にお送りしたいと思います。
今回も、ここまで読んでいただき、たいへんありがとうございました。
「いますぐ実践! Linux システム管理」の解除は、以下からできます。
バックナンバーは、こちらにほぼ全部そろっています。
「栗日記」- 年賀状を公開しております。地味…。 |
▼ トップ ▼ プロフィール ▼ リンク
▼ 作ってみました
▼ せんでん
▼ 最近読んだ本
▼ 気に入ってる本 |