Server By FreeBSD

Mail Server

sendmail + SpamAssassin + ClamAV によるメイルサーバを構築する
以前、SpamAssassin を導入した時は(多分設定の問題だと思うが) メイルの受信環境がボロボロになってしまい 復旧に時間がかかったので暫く敬遠していたが、 Web Site を公開しているせいか UCE があまりにも酷いので 再度 SpamAssassin を導入してみる。

機能

今回設定した機能を以下に示す。

ソフトウェアの導入

ports から以下のソフトウェアを導入する

sendmail の設定

sendmail で SpamAssassin と ClamAV を利用するために以下の設定を追加する。
同時に all.rbl.jp list.dsbl.orgsbl-xbl.spamhaus.org という3個所の RBL を参照する設定も追加する。

dnl DNS base RBL
FEATURE(dnsbl,`all.rbl.jp')dnl
FEATURE(dnsbl,`list.dsbl.org')dnl
FEATURE(dnsbl,`sbl-xbl.spamhaus.org')dnl

dnl SpamAssassin Milter
INPUT_MAIL_FILTER(`spamassassin',`S=local:/var/run/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl

dnl ClamAV Milter
INPUT_MAIL_FILTER(`clmilter', `S=local:/var/run/clamav/clmilter.sock, F=, T=S:4m;R:4m')dnl

以下の設定を /etc/mail/freebsd.mc に追加して make (1) を実行すると FQDN.cfFQDN.submit.cf が作成されるので、それぞれを sendmail.cfsubmit.cf と 名称変更して sendmail (8) を再起動する。

自動実行の設定

起動時に自動で実行される様に /etc/rc.conf に以下の設定を追加する。
spamd はオプションで指定しない場合は nobody ユーザとして動作するが、 nobody ユーザのログインディレクトリが /nonexistent のため、 実行時に以下のエラーが /var/log/maillog に表示される場合がある。

auto-whitelist: open of auto-whitelist file failed: locker: safe_lock: cannot create tmp lockfile /nonexistent/.spamassassin/auto-whitelist.lock.サーバ名.PID for /nonexistent/.spamassassin/auto-whitelist.lock: No such file or directory

その場合は /etc/rc.confspamd の実行オプションに -u spamd を追加して、 実行ユーザを明示的に指定する事によりエラーが表示されなくなる

spamass_milter_enable="YES"            # spamd milter を有効にする
spamd_enable="YES"                     # spamd を有効にする
spamd_flags="-u spamd"                 # spamd の実行時オプション
clamav_clamd_enable="YES"              # ClamAV を有効にする
clamav_milter_enable="YES"             # ClamAV milter を有効にする
clamav_freshclam_enable="YES"          #fresh clam を有効にする

運用

freshclam を実行しているのでパターンファイルは最新の物が 自動でダウンロードさせれるが、 ClamAV のソフトウェアが更新された場合は以下のコマンドで ClamAV の最新版を導入する。

# cd /usr/ports/security/clamav
# make WITH_MILTER=yes
# make deinstall
# make WITH_MILTER=yes install clean
# /usr/local/etc/rc.d/clamav-clamd.sh restart
# /usr/local/etc/rc.d/clamav-freshclam.sh restart
# /usr/local/etc/rc.d/clamav-milter.sh restart

ClamAV-0.93.1 から clamd のソケットファイルの デフォルト値が /var/run/clamav/clamd から /var/run/clamav/clamd.sock に変更になった様なので /etc/rc.conf 内に以下の設定を追加する。

clamav_clamd_socket="/var/run/clamav/clamd"

Last Update: 4 Feb. 2010