おしながき TLECとは何か 活動の模様 TLEC ML の入会方法 topic (tlec 謹製おりじなるこんてんつ) 関連リンク集(工事中)
Sorry! This page is Japanese only!
手っ取り早く設定をしたい方は、こちらの文書をお読み下さい。
プロバイダの pop サーバから fetchmail でメイルを取り込む際に、 SpamAssassin で spam か ham (通常のメイルを SpamAssassin ではこう呼んでいる) かを判断し、 procmail で自動的に振り分ける方法を以下に記します。
プロバイダの pop サーバからメイルを取り込むと、 spam が混じっている経験をお持ちの方は多いと思います。
結構、気になりませんか?
ストレスを感じてませんか?
もし、メイルを取り込む際に、自動的に spam を抜き取って、普通のメイルだけを読むことができれば、どれが spam なのか普通のメイルなのか目視で振り分けなければならないストレスから開放されます。
この文書では、Windows / Macintosh 等の環境でメイルを読み書きする人 (勿論、 Linux 等の UNIX 系環境で読み書きする人も含みます) の為に、 Linux を用いたメイルフィルタとその設定方法の説明をします。
この文書では、筆者の環境の都合上、 Debian GNU/Linux を例として説明します。他のディストリビューションをお使いの方は、適宜読み変えて下さい。
先ず、大雑把な仕組みを説明します。
プロバイダの pop サーバのメイルを直接メイラから取り込むのではなく、一旦 Linux マシン (以下、 JF 文書にならって "Linux BOX" と表記します) を経由してメイルを取り込みます。
Linux BOX では、受信したメイルを一つずつ機械的に読んで、 spam か ham かを判断し、振り分ける処理を行います。
メイラには、 Linux BOX にて動作している pop サーバを読みに行く設定をします。
メイラは Linux BOX 内で spam が大幅に取り除かれた状態で pop サーバを読みに行きますので、メイラ上で spam を気にする機会が大幅に減ります。
ネットワークの構成例
+-------------+ +--------------+ +-------------------+
|プロバイダの +----+ブロードバンド+----+ Linux BOX = |
|pop サーバ | | ルータ +-+ |ローカル pop サーバ|
+-------------+ +--------------+ | +-------------------+
|
| +---------------+
+--+Windows マシン/|
|Macintosh 他 |
+---------------+
ネットワークの構成例
プロバイダの pop サーバからメイルを取り込むには、例えば fetchmail を使います。
fetchmail は、取り込んだメイルをローカルメイル振り分けのツールに渡します。
ここでは代表的なメイル振り分けツールとして、 procmail を使います。
procmail は、何も設定しなければ、 Linux BOX 内のメイルスプールディレクトリ ( /var/mail/username ) に貯め込みます。
ここで、受信したメイルが spam かそうでない ( ham ) かの判断を行うツールを通します。
この文書では、 spam 判別ツールとして SpamAssasssin を使います。
procmail の設定ファイル ( ~/.procmailrc ) にて、 SpamAssassin を通す設定を行います。
SpamAssassin は、メイルを読み込み、その特徴から spam か ham かを判断します。
判断した結果を、メイルのヘッダに埋め込みます。
SpamAssassin から戻されたメイルは、再び procmmail で読み込まれます。
procmail では SpamAssassin がメイルのヘッダに埋め込んだ判別結果を元に、 spam ならメイルスプールディレクトリ以外の場所に振り分けます。
メイルスプールに溜ったメイルを Windows マシン等のメイラから読み出す為には、 qpopper 等の pop サーバを使います。
メイルの流れ
+-------------+ +----------------------------------+ +---------------+
|プロバイダの +----+ Linux BOX +----+Windows マシン/|
|pop サーバ | | =ローカル pop サーバ | |Macintosh 他 |
+-------------+ +----------------------------------+ +---------------+
spam の集積場所
メイル ↑
取り込み |メイルスプール
プロバイダの−−→fetchmail−→procmail−−→qpopper−−→Windows マシン
pop サーバ | ↑ 等のメイラ
| |判別結果が
↓ |ヘッダに埋め込まれる
SpamAssassin
メイルの流れ
各々のソフトの簡単な紹介をしておきます。
fetchmail は PC-UNIX で事実上の標準となっている、メイル取り込みツール(pop / imap クライアント) です。
procmail は長い歴史を持つ、ローカルメイル配送ツール (MDA: Mail Delivery Agent) です。
SpamAssassin はメイルの特徴を捉え、そのスコアを累積加算して spam か否かを判断する、基本的にはルールベースの spam 判断ツールです。
SpamAssassin の特徴は、「何でもあり」のフィルタソフトウェアです。
SpamAssassin は、 spam を識別する為に、以下の技術を駆使します:
パターンマッチングは、正規表現ベースの古典的なフィルタリング技術です。かつては procmail のパターンマッチングから始まり、現在の多くのフィルタにも用いられています。
spam 発信者 (spammer) が発する迷惑メイル (spam) はどんどん巧妙になって来ており、文体や送信経路が毎回変化し、多様化しています。そのような spam の特徴を単調なルールで判別することは難しくなって来ています。
そこで、最近になって機械が自動的に特徴を捉え、学習するフィルタ「ベイジアンフィルタ(Bayesian Filter)」という技術が注目されています。
SpamAssassin もこの技術を採り入れ、「学習するフィルタ」と「ルールベースのフィルタ」の、両方の機能を併せ持っています。
SpamAssassin 以外にも、このベイジアンフィルタの理論を採用した spam 判定ツールがあります。一例として筆者が知る限りのものを列挙します。他にもあるかも知れません:
参考:
リンク名 A Plan for Spam
URL: http://www.shiro.dreamhost.com/scheme/trans/spam-j.html
リンク名 Better Bayesian Filtering
URL: http://www.shiro.dreamhost.com/scheme/trans/better-j.html
DNSBL は、 spam を発信するサーバの IP アドレスを登録しているサービスの総称です。第三者中継を許す MTA や、 spammer が spam を発信或は中継する為に利用する web ホスティングサービスや、プロバイダの動的 IP から直接 spam 送信が行われた際の IP アドレス等の IP アドレスが、まさに「ブラックリスト」として、登録されています。このサービスに対し、 DNS のプロトコルで問い合わせることにより、そのサーバがシロかクロかを判別します。
元々は受信側 MTA が送信側 MTA の IP アドレスを調べて、ブラックリストに載っていれば受信を拒絶する、という風に使われるものです。
しかし、 SpamAssassin の場合は、メイルのヘッダに含まれる Received: 行の中から IP アドレスを抜き出して、それら全てに対して問い合わせを行います。
DNSBL は多種多様のものがあり、また運用ポリシーも様々で、登録されている IP の数も然ることながら、信頼性も多種多様です。
ですので、特定の DNSBL に頼りきってしまうことは危険であるとも考えられます。
しかし、 SpamAssassin は設定したルールに対して点数によるスコアリングを設定できますので、 DNSBL のサーバ毎にスコアリングを調整し、判断の信頼性を向上させることができます。
URIBL は DNSBL の派生系ともいえるかも知れません。
spam の本文中にある、 spammer が誘い込もうとする web サービスの URI 文字列から、ドメイン名を抽出し、 DNSBL 同様、サーバに登録します。 SpamAssassin は、受信したメイルの本文から URI 文字列を抽出し、 URIBL サーバに問い合わせを行い、その URI がシロかクロかを判別します。
こちらも、 DNSBL 程ではありませんが、運用ポリシーによって信頼性に若干の上下が見受けられます。
共同型フィルタリングネットワーク (collaborative spam filtering network) は、メイルの本文から「署名」を検出し、これをサーバに登録されている spam の「署名」と照合し、合致していれば spam と判定する、というものです。 SpamAssassin から利用できるサービスとして、 Vipul's Razor, Pyzor, DCC (Distributed Checksum Clearinghouses) があります。
[2006.12.23追記]
また、 SpamAssassin はプラグインによる機能追加が比較的容易にできる点も特色として挙げられます。
最近普及しつつある SPF や DomainKeys も利用可能です。
SpamAssassin は、以上の spam 判定技術、すなわち現在知られている主要な spam 判定技術を全て利用できます。
それだけではなく、「これらを全てスコアリングできる」点が、大きな特色です。
例えば、信頼性の低い DNSBL のチェックがあるメイルにおいて、ベイジアンフィルタが spam であると判定すれば、 spam である可能性がより高くなります。逆に、信頼性の低い DNSBL のチェックがあるメイルにおいて、ベイジアンフィルタが低い値を付している場合、改めて見直す必要がある、と言えましょう。また、このように検証することにより、 DNSBL の信頼性が推測できます。
特定のルールの組合せがあれば有無を言わさず spam と判定することもできます。
spammer はフィルタをすり抜ける為の工夫を常に行っており、 spam は日々変化するものです。 spam 検出は、如何に少ない手間で、如何にすり抜ける spam を抑えるか、にあると思います。
各々のソフトのインストールはディストリビューション毎に異なります。
例えば、 debian なら:
sid / sarge の場合: $ sudo apt-get install fetchmail procmail spamassassin qpopper libnet-dns-perlfetchmailconfwoody の場合: /etc/apt/sources.list に、以下を追加: deb http://backports.azumanga-daioh.org/debian woody spamassassin 次に、 $ sudo apt-get install fetchmail procmail spamassassin qpopper libnet-dns-perlfetchmailconf
といった感じでしょうか。
fetchmailconf は使っても使わなくても良いです。( fetchmailconf は管理者向けのツールなので、ここでは敢えて使わないこととします。)
Windows / Macintosh 等、 Linux BOX 上ではない別のマシンにてメイルを読み書きしたい場合は、 qpopper 等の pop サーバをインストールします。
fetchmail の設定の前に、自分のアカウントを mail グループに追加する必要があります。
でないと、 procmail がメイルスプールディレクトリにロックファイルを作れません。
addgroup コマンドや、 vigr コマンド等で、自分のアカウントを mail グループへ追加して、一旦ログアウトし、再度ログインして下さい。
それでは ~/.fetchmailrc の設定内容です。
詳細は man fetchmail を参照してください。
以下の内容を参考にして、エディタで作成して下さい:
poll www2.palnet.or.jp proto APOP
user "matsuda" there password "wei_ha_oreno_tamashii_no_sakebi" is yoh here options fetchall
mda "/usr/bin/procmail -p -f %F"
もし、マシンの処理速度等の都合で、 SpamAssassin の動作が遅い為に pop サーバにタイムアウトで切断されることが頻発するようでしたら、 mda 以下の文を削除してみましょう。
SpamAssassin の動作は、子プロセスで稼働する Razor2 / Pyzor / DCC の各クライアントの実行終了を待つのでどうしても遅くならざるを得ません。その為、 pop サーバにタイムアウトで切断されることが往々にして起こります。したがいまして、 mda 以下の文を削除することを強くお薦めします。
こうすると、 fetchmail は標準的な動作として、 localhost の TCP 25 番ポートと通信して、 'is ACCOUNT here' で指定されたアカウントに対してメイルを渡します。
localhost の TCP 25 番ポート、すなわち自分のマシンの mta を適切に設定しておいて下さい。
基本的には内部のメイルの引渡しを行い、 mta から mda (procmail) を呼び出すだけで、外部への配送を行わないので、よほど変な設定を行わない限り、メイルは mta が設定する自分の mbox 等に配送されることでしょう。
なお、 fetchmail から mta へメイルを引き渡す際、 .forward は削除するべきです。
多くの場合、バウンス (bounce: 複数のホスト間で配送が繰り返されてしまうこと) が発生してしまい、ろくなことがありません。
詳しくは、各 mta のマニュアル等を参照されてください。
mta ですが、外向けに運用するのでない限り、ディストリビューションがデフォルトに設定する mta を用いるべきです。多くの場合、 postfix か exim 辺りでしょう。
間違っても、日本語文書が充実しているからといって、全くサポートが行われていない qmail のような mta は使うべきではありません。トラブルの原因になります。
以上を設定したら、 chmod 600 ~/.fetchmailrc で、 group / other のパーミッションを落します。
でないと fetchmail に怒られます:
土 6月 07 14:27:36 hoge:~$ touch testfetchmailrc 土 6月 07 14:27:43 hoge:~$ ls -l testfetchmailrc -rw-r--r-- 1 yoh yoh 0 2003-06-07 14:27 testfetchmailrc 土 6月 07 14:27:46 hoge:~$ fetchmail -v -f testfetchmailrc /home/yoh/testfetchmailrc は -rwx--x--- (0710) 以外のパーミッションであってはいけません。 土 6月 07 14:27:52 hoge:~$ chmod 600 testfetchmailrc 土 6月 07 14:28:00 hoge:~$ ls -l testfetchmailrc -rw------- 1 yoh yoh 0 2003-06-07 14:27 testfetchmailrc 土 6月 07 14:28:02 hoge:~$ fetchmail -v -f testfetchmailrc fetchmail: メールサーバが指定されておりません。 土 6月 07 14:28:04 hoge:~$
以上、設定できたら試しにお使いのメイラで自分宛にメイルを送信して、それを fetchmail で受信してみて下さい。
後述する procmail / SpamAssassin の設定をする必要はありません。
あくまでも fetchmail で正しくメイルが取り込めるのかを確かめるだけです。
$ fetchmail -v 或は $ fetchmail -v -f ~/.fetchmailrc.yahoobb (-f で任意の設定ファイルを読み込みます。)
こういう時の為に、普段使っているメイルアドレスとは別の「実験用」メイルアドレスを用意しておくのも良いでしょう。
例えば、 Yahoo! Japan の無料 pop アカウントのように、同じプロバイダであっても、 pop サーバのアカウントが普段のメイルアドレスで使用しているものとは別のアカウントであれば良いです。
え?
無料アカウントの広告がウザい?
それなら procmail のレシピで(ry
~/.procmailrc の中身
SpamAssassin パッケージに .procmailrc のサンプルがありますので、そちらを参考にして下さい。
それも嫌な場合は、以下の内容を参考にして、エディタで作成して下さい: (とは言えども、サンプルの丸写しなんですけど(汗))
SHELL=/bin/sh DEFAULT=$ORGMAIL SPAM=$HOME/spam/spam/. DOUBT=$HOME/spam/doubt/. # call SpamAssassin :0fw: spamassassin.lock * < 256000 | SpamAssassin :0H: * X-Spam-Flag: YES * X-Spam-Status:.*autolearn=spam $SPAM :0H: * X-Spam-Flag: YES $DOUBT
筆者が作成したサンプルも良ければ見て頂ければ幸いです。
こちらはウィルスのフィルタリングも行っていますので、両方のファイルをダウンロードされて下さい。
- procmailrc.sample
- virusrc
fetchmail とは違い、 procmail のレシピ (recipe: メイル振り分けのルールを procmail ではこう呼んでいる) は、 sendmail.cf に次ぐと言われる位、何が書かれているのか非常に判り難いです。
この際、このレシピの詳しい内容はさておき、これをこのままコピーすることをお薦めします。
勿論、詳しく知りたい方は man procmailrc や各種サイトを探してみるのも良いでしょう。
取り敢えず、最低限知っておくこととしては:
SPAM=$HOME/spam/spam.txt の場合、 ~/spam/ というディレクトリに mbox 形式の spam.txt に spam が放り込まれます。SPAM=$HOME/spam/ の場合、 ~/spam/ というディレクトリに maildir 形式のディレクトリを作成し、そこに spam が放り込まれます。SPAM=$HOME/spam/. の場合、 ~/spam/ というディレクトリを MH 形式フォルダと見倣して、そこに spam が放り込まれます。
お薦めは、後の取り扱いが楽な MH 形式でしょうか。
勿論、お好みで使い分けても良いでしょう。
参考: リンク名 [linux-users:99350] Re: spamの処理
URL: http://search.luky.org/linux-users.9/msg09359.html
さて、上記の ~/.procmailrc は
~/spam/spam/ と
~/spam/doubt/
というディレクトリを MH 形式フォルダと見倣して、 SpamAssassin の判断結果に応じてメイルを振り分けます。
~/spam/spam/ には SpamAssassin が「明らかに spam」と判断したものが放り込まれ、
~/spam/doubt/ には SpamAssassin が「恐らく spam の疑いが濃いもの」と判断したものが放り込まれます。
そこで、以下のコマンドを実行して下さい:
$ mkdir ~/spam $ cd ~/spam $ mkdir spam $ mkdir doubt
実行結果はこんな風になります:
yoh@hoge:~$ mkdir ~/spam yoh@hoge:~$ cd ~/spam/ yoh@hoge:~/spam$ mkdir spam yoh@hoge:~/spam$ mkdir doubt yoh@hoge:~/spam$ cd yoh@hoge:~$ ls -lR ~/spam/ /home/yoh/spam/: total 8 drwxr-xr-x 2 yoh yoh 4096 Jan 18 19:59 doubt drwxr-xr-x 2 yoh yoh 4096 Jan 18 19:59 spam /home/yoh/spam/doubt: total 0 /home/yoh/spam/spam: total 0 yoh@hoge:~$
ここまで出来たら、 procmail が正しく設定されているか否かを確認する為に、もう一度、お使いのメイラで自分宛にメイルを送信して、それを fetchmail で受信してみて下さい。
恐らく、正しく設定されていれば、 procmail から SpamAssassin が呼び出され、 SpamAssassin の最初の起動ではこんなメッセージが出ることと思います:
日 6月 08 08:11:15 hoge:~$ fetchmail -v fetchmail: 6.2.1 は pop.mail.yahoo.co.jp とプロトコル POP3 を用いて 2003年06月08日 08時11分33秒 に交信しています。交信が開始されました。 fetchmail: POP3< +OK hello from popgate(2.23.11) fetchmail: POP3> CAPA fetchmail: POP3< -ERR popgate unknown command fetchmail: popgate unknown command fetchmail: Repoll immediately on fakedaccount@pop.mail.yahoo.co.jp fetchmail: POP3< +OK hello from popgate(2.23.11) fetchmail: POP3> USER fakedaccount fetchmail: POP3< +OK password required. fetchmail: POP3> PASS * fetchmail: POP3< +OK maildrop ready, 2 messages (2306 octets) (112999 6291456) fetchmail: POP3> STAT fetchmail: POP3< +OK 2 2306 2 通のメッセージがアカウント fakedaccount , サーバ pop.mail.yahoo.co.jp 宛に届いています。 (2306 バイト) fetchmail: POP3> LIST fetchmail: POP3< +OK 2 messages (2306 octets) fetchmail: POP3< 1 614 fetchmail: POP3< 2 1692 fetchmail: POP3< . fetchmail: POP3> RETR 1 fetchmail: POP3< +OK 614 octets fakedaccount@pop.mail.yahoo.co.jp 宛に届いた 1 番目のメッセージ(全部で 2 通)を読み込んでいます (614 バイト) #*procmail: Missing action The -P option has been removed. Created user preferences file: /home/yoh/.spamassassin/user_prefs サーバからメッセージを削除しました。 fetchmail: POP3> DELE 1 fetchmail: POP3< +OK message 1 marked deleted fetchmail: POP3> RETR 2 fetchmail: POP3< +OK 1692 octets fakedaccount@pop.mail.yahoo.co.jp 宛に届いた 2 番目のメッセージ(全部で 2 通)を読み込んでいます (1692 バイト) #************procmail: Missing action The -P option has been removed. サーバからメッセージを削除しました。 fetchmail: POP3> DELE 2 fetchmail: POP3< +OK message 2 marked deleted fetchmail: POP3> QUIT fetchmail: POP3< +OK server signing off. fetchmail: 6.2.1 は pop.mail.yahoo.co.jp とプロトコル POP3 を用いて 2003年06月08日 08時11分38秒 に交信しています。交信が終了しました。 fetchmail: 通常の終了です。status 0 日 6月 08 08:11:38 hoge:~$
取り込んだメイルのヘッダを確かめてみて下さい。
以下のような文字列があれば成功です!
X-Spam-Status: No, hits=0.0 required=5.0
tests=none
version=2.55
X-Spam-Level:
X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp)
上述の通り、初めて SpamAssassin を起動すると、 ~/.spamassassin/ というディレクトリが掘られ、そこには user_prefs の雛型ファイルが置かれますので、そこに 出来合いの user_prefs を放り込みます。
それと、拙作 user_prefs の機能を最大限発揮するために、 private_prefs を ~/.spamassassin/ ディレクトリに作成します。
$ cd ~/.spamassassin $ wget -O user_prefs http://tlec.linux.or.jp/docs/user_prefs $ wget http://tlec.linux.or.jp/docs/private_prefs
上記 user_prefs は筆者が日々 spam をチェックし、すり抜けたりスコアが低くて autolearn=no になってしまうものについては随時ルールの見直しを行っています。ご利用される方は、 web アンテナ等で巡回チェックして戴ければ幸いです。
private_prefs は筆者が独自に作成したものです。
拙作 user_prefs は徐々に多くの方に使われるようになりました。また、 spammer の活動の活発化や、筆者の力量不足もあって、筆者は user_prefs を頻繁に更新しています。
一方、メイル受信経路を検出するルールにおいて、 trusted_networks は各ユーザ毎に適切に設定されていなければなりません。
拙作 user_prefs をダウンロードして使っている方にとっては、ダウンロード後に再度 trusted_networks を書き直す手間を生じることとなり、極めて不便です。
そこで、個々のユーザの環境に依存する設定項目を、 user_prefs から分離し、 include 構文にて読み込むこととしました。
また、 2006年4月17日より、 ISP の動的 IP から直接 mta へ送信される spam の送信経路を検出する「MYMTA」という項目を新設しました。
この機能を利用することにより、 NG ワードのスコアを適切に嵩上げすることができ、日本語 spam の検出率を高めることができます。
拙作 user_prefs は、 spam 判定の為の多様なルールを列挙するだけでなく、ベイジアンフィルタの自動学習の手間をできる限り軽減することを目的として作成しています。
spammer はフィルタを潜り抜けるべく日々努めており、 spam は日々変化していきます。
ですので、メンテナンスフリーな spam フィルタはあり得ません。
ベイジアンフィルタであっても、学習の手間を怠れば、たちまち検出率が悪化します。
したがいまして、 spam の目視確認を怠ることはできません。
拙作 user_prefs は、そういう目視確認の手間を極力軽減することを目的としています。
すなわち、 spam と判定できるに足る多様なルールを記述することで、 autolearn=no となる spam を出来る限り減らし、目視確認及びベイジアンフィルタの手動学習の手間を極力減らすように工夫しています。
是非、拙作 user_prefs をお使いになって、快適な spam フィルタライフをお楽しみ下さい。
予め spam だけのメイルと ham だけのメイルを沢山用意しておき、 SpamAssassin に対して明示的に spam と ham を学習させます。
SpamAssassin に対し、本番に備えて予習させておくと、 spam 検出率がぐっと向上します。
[spam の学習]
$ sa-learn --spam ~/spam/spam.txt or $ sa-learn --spam ~/Mail/spam/*
[ham の学習]
$ sa-learn --ham ~/Mail/inbox/*
因みに、拙作 user_prefs では、 ベイジアンフィルタのスコアを意図的に上げてあります。
「spam なんていつも削除してるからそんな沢山持ってねーよ」という人の為に、 Linux-users メイリングリストの spam をかき集めてみました。
上記はちょっと古いので、筆者が常用するメイルアドレス (yoh@flcl.org) 宛に2004年8月下旬頃から来た spam をかき集めてみました。
とは言えども、 qpopper の設定でやることはありません。
勿論、 poppasswd を起動することで APOP 対応にすることも出来ますが、所詮自分だけのローカル環境です。
そのような設定をしなくても、 Linux BOX 上の自分のアカウントとパスワードで pop3 プロトコルにてメイルを取り込んで良いでしょうし、気になる方は poppasswd で APOP にして下さい。
むしろ、お使いのメイラの方に以下の設定をする必要があります:
qpopper と自分のメイラの設定の確認の意味を込めて、再びお使いのメイラで自分宛にメイルを送信して、それを fetchmail で受信してみて下さい。
fetchmail で受信したメイルは、 /var/mail/(あなたのアカウント名) に貯め込まれます。
次に、自分のメイラでそのメイルを取り込みましょう。「受信」を行って下さい。
うまく受信できましたか?
これで、 fetchmail を起動して、メイルを SpamAssassin で選別する環境ができました。
さて、メイルの受信の度毎に fetchmail を手動で実行するのは「たいぎぃ」です。
定期的に自動実行させちゃいましょう。
こういう、定期的にソフトを自動起動させる為に cron があります。
cron の設定を行う前に、 ~/.fetchmailrc の設定をちょっと直します。
fetchmail の実行結果をログ記録する設定です。
これを設定しないと、実行結果のログが毎回メイルで報告されちゃいます。
set logfile "/home/yoh/fetchmailerr"
poll www2.palnet.or.jp proto APOP
user "matsuda" there password "wei_ha_oreno_tamashii_no_sakebi" is yoh here options fetchall
mda "/usr/bin/procmail -p -f %F"
この設定で、 fetchmail の実行結果が /home/yoh/fetchmailerr というファイルに保存されるようになりました。
さて、それでは crontab -e を実行して、設定を書き込みましょう。
以下の例は、5分毎に fetchmail を実行する設定です:
0-59/5 * * * * fetchmail -v
実は、 fetchmail 自身にも定期的にメイルを取り込む機能がありますが、筆者は敢えてこの機能を使っていません。
同様に、一つの ~/.fetchmailrc で複数の pop サーバを列挙することもできますが、これも敢えて別々の設定ファイルに分けて、毎回 fetchmal を起動するようにしています。
例えば、複数の pop サーバのうちの一つがこけてしまうと、単一の ~/.fetchmailrc に列挙している場合、他の pop サーバの取り込みにまで影響してしまい、メイルの取り込みが一切出来なくなってしまいます。
fetchmail のデーモンモードも同様です。
特に、筆者は fetchmail のデーモンモードが知らないうちにこけて止まっていた、という事故を何度も経験していまして、デーモンモードを信用できません。
ですので、筆者の場合はシェルスクリプトにて pop サーバ毎に fetchmail の実行コマンドを列挙しています。
そうすれば、仮にどれか一つの pop サーバがこけたとしても、シェルスクリプト内でその指定行をコメントアウトするだけで、他の pop サーバの取り込みは問題なく出来るからです。
勿論、こういうやり方が最善とは言いません。
たまたま、私の場合は pop サーバがこけていたりプロバイダがメンテナンスで繋がらなかった、というような経験を通じて、 fetchmail はデーモンモードよりもあくまで単純にクライアントソフトとしてのみ使うのが望ましい、と判断しただけのことです。
あくまで運用の工夫の参考例として、拙作スクリプトをご覧になって頂ければ幸いです:
#! /bin/bash
if [ ! -e ~/stopfetchmail ] && [ ! -e ~/.fetchmail.pid ]; then
(
fetchmail -v -f ~/.fetchmailrc.flcl;
fetchmail -v -f ~/.fetchmailrc.nifty;
fetchmail -v -f ~/.fetchmailrc.yahoojp;
fetchmail -v -f ~/.fetchmailrc.yahoojp2;
fetchmail -v -f ~/.fetchmailrc.freemail;
fetchmail -v -f ~/.fetchmailrc.freeserve;
fetchmail -v -f ~/.fetchmailrc.freeserve2;
) >& ~/fetchmailerr &
else
exit 0
fi
上記スクリプトでは、 fetchmail のロックファイルの存在チェックと、 fetchmail の起動を意図的に中止させる為のファイル ( ~/stopfetchmail ) の存在チェックを行っています。
例えば、 ~/.procmailrc や ~/.spamassassin/user_prefs のメンテナンスを行うような場合には、 fetchmail には動いて欲しくない訳です。
それをいちいち crontab -e で呼び出して、コメントアウトさせるのは大変です。
そこで、
$ touch ~/stopfetchmail
とすれば、 crontab を起動しなくても上記シェルスクリプトが fetchmail の起動を回避してくれます。
メンテナンスが終ったら、
$ rm -v ~/stopfetchmail
として、 fetchmail の起動を再開させます。
バージョン 3.0 シリーズでは、 SpamAssassin はウィルスメイルの検出を一切やらないことが明言されています。
そこで、フリーのウィルススキャナとして定番になりつつある clamav を導入します。
clamav は phishing mail も検出してくれますので、 SpamAssassin の負荷軽減に大いに役立ってくれます。
以下は、 procmailrc のサンプルです。ぐぐると幾つか見つかりますが、一番簡単なものを真似させてもらいました。(汗)
ウィルス定義ファイルを読み込むオーバヘッドを気にしまして、 clamscan を使わず、 clamdscan を使っています。
ウィルスはサイズが大きいのが多いので、 SpamAssassin の前に処理させます。実際、 clamdscan は SpamAssassin に比べるとかなり高速です。
SHELL=/bin/sh LOGFILE=$HOME/Mail/procmail.log DEFAULT=$ORGMAIL SPAM=$HOME/spam/spam/. DOUBT=$HOME/spam/doubt/. VIRUS=$HOME/spam/virus/. # Clam Antivirus :0 HB * ? clamdscan -m --quiet - ;test $? = "1" $VIRUS # call spamassassin :0fw: spamassassin.lock * < 600000 | spamassassin :0H: * X-Spam-Flag: YES * X-Spam-Status:.*autolearn=spam $SPAM :0H: * ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* $SPAM :0H: * X-Spam-Flag: YES $DOUBT
Special Thanks to:
ちぱ@地雷屋, たかすぎさめ@しあわせイパーイ, ぽた, そかさめ, 他 %tlec な面々
おしながき TLECとは何か 活動の模様 TLEC ML の入会方法 topic (tlec 謹製おりじなるこんてんつ) 関連リンク集(工事中)