Back to page

− Links

 Print 

Diff of SPAM対策とウィルスチェックで悩む :: Nest Of Hawk

Diff of xpwiki:SPAM対策とウィルスチェックで悩む

« Prev[3]  
3: 2010-10-04 (Mon) 02:14:11 maruo[4] source[5] Cur: 2010-10-05 (Tue) 03:08:41 maruo[4] source[6]
Line 140: Line 140:
*SpamAssassinの設定 [#c7e7143e] *SpamAssassinの設定 [#c7e7143e]
 +以下は、設定変更行ったら、amavisd_newを再起動するのを忘れないでね!
 +
**ベイズフィルタの学習 [#q052a4f1] **ベイズフィルタの学習 [#q052a4f1]
先ほど、SpamAssassinには自動学習機能があるといいました。ですので、収集されたメールから、Spam学習ルールを作る自動化シェルスクリプトを作りました。 先ほど、SpamAssassinには自動学習機能があるといいました。ですので、収集されたメールから、Spam学習ルールを作る自動化シェルスクリプトを作りました。
Line 151: Line 153:
これで受信時の自動学習及びベイズフィルタの使用を定義。ア~ンドamavisが溜め込むベイズフィルタをデフォルトルールとする事にしたです。そりで、 これで受信時の自動学習及びベイズフィルタの使用を定義。ア~ンドamavisが溜め込むベイズフィルタをデフォルトルールとする事にしたです。そりで、
- HOME=/var/amavis + HOME=/var/amavis 
- find /var/spool/imap -type d -name SPAM -exec /usr/bin/sa-learn --spam {} \;+ find /var/spool/imap -type d -name SPAM -exec /usr/bin/sa-learn --spam {} \;
というわけで、imapフォルダ下にあるSPAMって名前のフォルダ下にあるSPAMメールを毎日自動学習するようにCRONシェルを設定して、おしまいでっす。 というわけで、imapフォルダ下にあるSPAMって名前のフォルダ下にあるSPAMメールを毎日自動学習するようにCRONシェルを設定して、おしまいでっす。
 +
 +さらに、
 + sa-learn --ham <SPAMでないメールがあるディレクトリ>
 +と指定すると、SPAMでないメールも学習してくださいます。
**sa-updateの設定 [#d2bc7662] **sa-updateの設定 [#d2bc7662]
 +もともとspamassassinは、バージョンアップ毎に更新したルールをパッケージに付与していまいたが、これだとイタチごっこに対する対応が遅い、ということで、spamassassin 3以上になると、NWから定期的に更新したルールを取ってこれるようになりました。これにはsa-updateというツールを使用します。
 +まず、sa-updateを使用するのに、GPGのキーファイルを作成してやります。例えば/foo/var.keysという名前で、
 + 26C900A46DD40CD5AD24F6D7DEE01987265FA05B
 + 5244EC45
 +こんな中身のファイルを作ってやります。テキストでそのまんまね。で、以下のコマンドをcronなどで定期的に実行してやって。
 + /usr/bin/sa-update --gpgkeyfile /foo/var.keys
 +これで、/var/lib/spamassassin配下に、定期的にアップデートファイルが作られますのねで。
 +
 +**DCCの設定 [#bb0aedb2]
 +手元にあるSPAMだけだと、パターン数が少なすぎて、すべてをマッチさせるのは難しいもの。このために、NWのサーバに貯められているSPAMパターンと照合するという手があります。そのいくつかに、DCC,Pyzor,Razor等があります。今回私はDCCを選択いたしました。どうもDCCが一番精度がいいらしい?という評判だったので。で、DCCを導入いたします。
 +***DCCDのインストール [#p25ea2b2]
 +まず/etc/portage/package.keywordsに mail-filter/dcc を追加いたします。んで
 + # emerge dcc
 +/etc/dcc/dcc_confを編集いたします。以下に特に注意して。
 + DCCD_ENABLE=off
 + DCCIFD_ENABLE=on
 +さらに、/etc/init.d/dccにバグがあるので、以下を編集してやります。
 + if [[ "${DCCIFD}" != "on" ]]
 +               ↓
 + if [[ "${DCCIFD_ENABLE}" != "on" ]]
 +で、DCCを起動してやってください。
 + # rc-update add dcc default
 + # /etc/init.d/dcc start
 +次に、/etc/spamassassin/v310.preを編集します。
 + # loadplugin Mail::SpamAssassin::Plugin::DCC
 +                               ↓
 + loadplugin Mail::SpamAssassin::Plugin::DCC
 +     コメントを外してやる
 +そして、/etc/spamassassin/local.cfに、以下を追加してやってください。
 + # DCC Configuration
 + use_dcc 1
 + dcc_home /var/dcc
 + dcc_path /usr/bin/dccproc
 + add_header all  DCC _DCCB_: _DCCR_
 +以上でっす
 +
**SPFの設定 [#ve425015] **SPFの設定 [#ve425015]
 +spamassassinにSPFを設定するのは楽ちんです。/etc/spamassassin/init.preを以下のように編集します。
 + # SPF - perform SPF verification.
 + #
 + #loadplugin Mail::SpamAssassin::Plugin::SPF
 +                   ↓
 + loadplugin Mail::SpamAssassin::Plugin::SPF
 +         コメントを外す
 +以上でっす。
 +
* Postfix側の設定[#p8bce71c] * Postfix側の設定[#p8bce71c]
 +spamassassinだけでは、受信したメールをSPAMと分類するだけ。入り口であるPostfixにて怪しいものを拒否する手があります。先程述べたgreylistingですが、これをPosftix上で実現してくれるツールが、Postgreyです。
 +
**Postgrey [#vba5c072] **Postgrey [#vba5c072]
 +***インストール [#xbcc195d]
 + # emerge postgrey
 +***設定 [#f25ff92b]
 +/etc/conf.d/postgreyに、設定を追加いたします。重要なのは以下ですかね
 + # 初受信のサーバを、何秒受信拒否するか。デフォルトは5分
 + POSTGREY_DELAY=300
 + # postgreyへのオプション指定。--max-ageは、受信許容したサーバのキャッシュを何日で消去するか。デフォルトは30日
 + POSTGREY_OPTS="--max-age=30"
 +そしてpostgreyを起動してやります。
 + # rc-update add postgrey default
 + # /etc/init.d/postgrey start
 +で、最後にpostfixの設定。/etc/postfix/main.cfに以下の設定を追記します。
 + smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,
 +     reject_unauth_destination,check_policy_service inet:127.0.0.1:10030
 +後ろにある、check_policy_service inet:127.0.0.1:10030が重要です。smtpd_recipient_restrictionsは項目の順序も重要ですので、気をつけてね!で、最後に
 + # /etc/init.d/postfix reload
 +
**バックアップサーバ側の設定 [#ra8dcbd0] **バックアップサーバ側の設定 [#ra8dcbd0]
 +今までは、メインサーバのpostfixがダウンしてしまった場合、上位のDDNS側で、エラーではじかれたメールをプロバイダに転送してくれるよう設定してました。でも、これがSPAM大量増産の大本!せっかくこちらのPostfixでエラーで弾かれても、全部プロバイダに転送されちゃう。そのため、このプロバイダへの転送を止めちゃえば、SPAMも減るってもの。
 +しかし、もしもメインサーバがダウンした場合、外部から送信されてきたメールが着信せず、消えてしまいかねないので、それも困る。このためバックアップサーバが受信して、キューイングしておいてくれるように設定しておきます。
 +メインサーバのpostfixとの設定の違いは
 +-受信したら、自分のドメインに該当するメールアドレスのみ、メインサーバのpostfixへ転送する
 +-上記の設定なので、amavisに転送する設定は行わない
 +
 +その他の設定(SMTP-AUTH/postgrey)は有効としておきます。このため、メインサーバとの差分として、amavis設定を削除し、転送用設定を付け加えときます。/etc/postfix/main.cfに以下を追加します。
 + transport_maps = hash:/etc/postfix/transport
 +さらに、/etc/postfix/transportというファイルを作り、ドメインと転送先をそれぞれ指定。
 + example.net smtp:[XXX.XXX.XXX.XXX]
 + .example.net smtp:mail.server
 +example.netは、MXレコードを引かずに([]を付けるとMXレコードを参照しない)IPアドレスXXX.XXX.XXX.XXXに転送する。.example.net(XXX.example.net等)はmail.serverに転送する、という設定。で、
 + # postmap transport
 +を実行して、ハッシュマップを作ります。最後に
 + # /etc/init.d/postfix reload
 +で完成。
 +
 +ちなみに、このバックアップサーバは、メールを受信したらキューイングしてとっておいてくれます。マスタサーバが生き返ったら、再送してくれるありがたいサーバとなります。マスタサーバが死んでる間は、こいつに貯めておいてもらえば、わざわざプロバイダに転送してもらわなくて済むという寸法。
 +
*結果 [#kfe32905] *結果 [#kfe32905]
 +劇的にSPAMメールが減りました!それまでは1日に300~400通近いSPAMが、1/6以下に減りました。なぜSPAMが0近くにならないかというと、プロバイダのメールに着信するSPAMは、無条件で受信しちゃうから…しかし、そのメールはspamassassinにてSPAMに分類されます。bayesフィルタ、ルール、DCC、SPFを噛ますことで、SPAM認識率が相当向上しました。これでしばらくは安心でしょう♪
« Prev[3]