Main Contents

Apple Store(Japan)

qmail + qmail-scanner + Clamav + SpamAssassin

今や、 MTA の主流は Postfix... と言っても過言ではないくらい、 Postfix が使われていると思われます。
うちのサーバーでも、新しいのはみんな Postfix にしてるし。

でも、高速、セキュアな MTA として、 Postfix と qmail が人気を二分していた頃がありました。
その頃に qmail で構築した MTA が今でも現役バリバリで稼動しており、 大量のユーザーを抱えているため、なかなか移行できない。。というケースに陥いった、うちのメールサーバー。
qmail でも、いろいろパッチを当ててやれば、まだまだ十分使えるのですが、Postfix に比べて機能不足は否めません。。。

いろいろ調べたあげく、いまさらながら、qmail-scanner + Clamav + SpamAssassin で、ほぼ満足いくようなメールサーバーが構築できたので、簡単にまとめておきます。

導入は、ほとんど ports を使っているので、詳細は省略。。。要点のみです。
また、 portupgrade を使っているので、portinstall の場合とか読みかえてください。
  1. まず、suidperl が必要なので、Perl5.8 を ENABLE_SUIDPERL=yes オプションをつけてインストール。
      # portinstall -Cc -m ENABLE_SUIDPERL=yes lang/perl5.8
    
    -
  2. FreeBSD4.x系は、ports の Perl を使うように変更
     # use.perl port
    
  3. Clamav と SpamAssassin をインストール
     # portinstall -Cc security/clamav
     # portinstall -Cc mail/p5-Mail-SpamAssassin
    
  4. qmail を WITH_QMAILQUEUE_PATCH=yes オプション付きで再構築
     # portupgrade -Cc -m WITH_QMAILQUEUE_PATCH=yes mail/qmail 
    
  5. qmail-scanner をインストール。SpamAssassin と Clamav を使うように自動認識してくれるはず。してくれなかったら、起動してから再コンパイルしてみましょう。。
     #portinstall -Cc -m QMAILSCAN_NOTIFY=recips,admin mail/qmail-scanner
    
  6. 各種初期設定。。 /etc/rc.conf に追加
    clamav_clamd_enable="YES"
    clamav_freshclam_enable="YES"
    spamd_enable="YES"
    
    clamd を qscand で動作するように変更
    1. /usr/local/etc/clamd.conf
      User clama
      を
      User qscand
      に変更
      
    2. /var/run/clamav の所有者を qscand に変更
       # chown -R qscand:qscand /var/run/clamav
      
    3. 以下を /usr/local/etc/rc.d/qmail.sh と tcpserver の起動スクリプトに記載
      PRIFIX=/usr/local
      export QMAILQUEUE="${PREFIX}/bin/qmail-scanner-queue.pl"
      
    4. 各デーモンを起動
       # /usr/local/etc/rc.d/qmail.sh restart
       # /usr/local/etc/rc.d/clamav-clamd.sh start
       # /usr/local/etc/rc.d/clamav-freshclam.sh start
       # /usr/local/etc/rc.d/sa-spamd.sh start
      
      これでほぼ完了。。 /var/log/maillog を眺めて、エラーログがでてないかどうか確認しましょう。 qq temporary problem (#4.3.0) っていうのを返したり、 clamscan: corrupt or unknown ClamAV scanner error or memory/resource/perms problem - exit status 50 って出る場合は、だいたい permission 関係のトラブルでしょう。。 suidperl とか、 ちゃんと clamd が qscand で動いているかとか確認しましょう。
    5. あと、SpamAssassin は、 デフォルトで root の .spamassassin を見にいくので、-u username オプション付で起動して、ユーザーを指定したほうが良いでしょう。。
    とりあえず、ウイルスは Clamav が駆除してくれるし、 Spam は SpamAssassin が X-Spam-Status: ヘッダをつけてくれるので快適です。 SpamAssassin の設定は、http://spamassassin.jp/ 等を参考にすると良いです。

    2006-11-27 追記

    spamd を起動するユーザーを qscand にして、 local.cf に下記を追記
    bayes_path /home/qscand/.spamassassin/bayes
    bayes_file_mode 0660
    auto_whitelist_path /home/qscand/.spamassassin/auto-whitelist
    auto_whitelist_file_mode 0660
    
    /etc/rc.conf に下記を追記
    spamd_enable="YES"
    spamd_flags="-u qscand -c"
    
    こうすることで、すべてのユーザーは常に qscand の定義を使うようになります。 うちのように、メンテできるユーザーは管理者一人、、という使い方をする場合は、こうした方が良いかもしれません。

    TrackBacks

    トラックバックURL:

    Comments

    Post a comment

    (Think Different. では不適切なコメントを防止するため、コメントを掲載する前に管理者がコメントの内容を確認しています。コメントを初めて投稿する場合すぐに掲載されませんが、管理者が適切なコメントと判断した場合コメントは直ちに表示されますので、再度コメントを投稿する必要はありません。)

    コメントフォーム

Copyright © here.Creative Commons LicenseThis weblog is licensed under a Creative Commons License.