3: 2010-10-04 (Mon) 02:14:11 maruo source Cur: 2010-10-05 (Tue) 03:08:41 maruo source
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認識率が相当向上しました。これでしばらくは安心でしょう♪


Front page   Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 5253, today: 4, yesterday: 1
ページ内検索

ログイン

ユーザー名:


パスワード:





パスワード紛失

メインメニュー

サブメニュー
自宅鯖計画

Gentoo Linuxな生活

玄箱HGにGentoo格闘記

航空ショーへ行こう

モータースポーツな世界

奥深き写真の世界への誘い

我思う ゆえに我あり



携帯用QRコード