トップ |

2005年11月11日

qmail + Courier-IMAP + Qmail-Scanner + Clam AntiVirus + SpamAssassin

今度新規にメールサーバを構築する時は、qmail + Courier-IMAP の組み合わせにしようかと思っています。
なので、タイトルの導入手順をメモっておきます。
受信メールサーバを IMAP ,システムの文字コードがUTF-8(デフォルト)の場合で、メールユーザはメールサーバ構築後作成するものとしています。

Clam AntiVirus インストール
dag 用 GPG キーインポート

[root@server ~]# rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

dag 用 yum リポジトリ設定ファイル作成

[root@server ~]# vi /etc/yum.repos.d/dag.repo

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
includepkgs=clamd clamav*

Clam AntiVirusインストール

[root@server ~]# yum -y install clamd

Clam AntiVirus を常駐起動する
clamd 設定ファイル編集

[root@server ~]# vi /etc/clamd.conf

root権限で動作するようにする(コメントアウト

#User clamav

clamd 起動

[root@server ~]# /etc/rc.d/init.d/clamd start

clamd 自動起動設定,確認

[root@server ~]# chkconfig clamd on
[root@server ~]# chkconfig --list clamd

ウィルス定義ファイル最新化

[root@server ~]# freshclam

※以後のウィルス定義ファイルのアップデートは、/etc/cron.daily/freshclamにより毎日自動で行われる

ウィルススキャン実行スクリプト作成

[root@server ~]# vi clamscan

#!/bin/bash

PATH=/usr/bin:/bin
CLAMSCANTMP=`mktemp`
clamdscan --recursive --remove / > $CLAMSCANTMP
[ ! -z "$(grep FOUND $CLAMSCANTMP)" ] && \
grep FOUND $CLAMSCANTMP | mail -s "Virus Found" root
rm -f $CLAMSCANTMP

実行権限付加

[root@server ~]# chmod +x clamscan

毎日自動実行されるディレクトリへ移動

[root@server ~]# mv clamscan /etc/cron.daily/

SpamAssassin インストール

[root@server ~]# yum -y install spamassassin

TLECで公開されている日本語のスパムメールに対応したSpamAssassin用のルールファイルをセットアップする
ルールファイル最新化スクリプト作成

[root@server ~]# vi spamassassin-update

#!/bin/bash

# TLEC(http://tlec.linux.or.jp/)より最新のルールファイルダウンロード
cd /etc/mail/spamassassin
wget -qN http://tlec.linux.or.jp/docs/user_prefs
cp user_prefs local.cf

# スパム判断したメールを添付形式にしないように設定
echo "report_safe 0" >> local.cf

# 受信メールサーバーがPOPの場合(IMAPサービスが未起動の場合)はメール件名に「*****SPAM*****」の文字列を付加するように設定
if [ -z "$(/usr/sbin/lsof -i:imap)" ] && [ -z "$(/usr/sbin/lsof -i:imaps)" ]; then
    echo "rewrite_header Subject *****SPAM*****" >> local.cf
fi

# SpamAssassin再起動
/etc/rc.d/init.d/spamassassin restart > /dev/null

実行権限付加

[root@server ~]# chmod +x spamassassin-update

スクリプト実行

[root@server ~]# ./spamassassin-update

ルールファイル確認(local.cf があること)

[root@server ~]# ll /etc/mail/spamassassin

毎日自動実行されるディレクトリへ移動

[root@server ~]# mv spamassassin-update /etc/cron.daily/

SpamAssassin 起動(おそらく起動済み)

[root@server ~]# /etc/rc.d/init.d/spamassassin start

SpamAssassin自動起動設定,確認

[root@server ~]# chkconfig spamassassin on
[root@server ~]# chkconfig --list spamassassin

qmail インストール準備

qmail インストールディレクトリ作成

[root@server ~]# mkdir /var/qmail

qmail インストールに必要なユーザ,グループを作成する

[root@server ~]# groupadd nofiles
[root@server ~]# useradd -g nofiles -s /sbin/nologin alias -m -d /var/qmail/alias -k /dev/null
[root@server ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaild
[root@server ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaill
[root@server ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmailp
[root@server ~]# groupadd qmail
[root@server ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailq
[root@server ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailr
[root@server ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmails

qmail インストール

qmail ダウンロード(最新版確認

[root@server ~]# wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz

日本標準時間対応パッチダウンロード

[root@server ~]# wget http://wuarchive.wustl.edu/pub/FreeBSD/ports/local-distfiles/sada/qmail-date-localtime.patch.gz

SMTP-Auth 対応パッチダウンロード

[root@server ~]# wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz

不正中継拒否対応パッチダウンロード

[root@server ~]# wget http://www.qmail.org/qmail-smtpd-relay-reject

qmail 展開

[root@server ~]# tar zxvf qmail-1.03.tar.gz

日本標準時間対応パッチ展開

[root@server ~]# gunzip qmail-date-localtime.patch.gz

日本標準時間対応パッチを qmail 展開先ディレクトリへ移動

[root@server ~]# mv qmail-date-localtime.patch qmail-1.03

SMTP-Auth 対応パッチ展開

[root@server ~]# tar zxvf qmail-smtpd-auth-0.31.tar.gz

SMTP-Auth 対応パッチを qmail 展開先ディレクトリへ移動

[root@server ~]# /bin/mv qmail-smtpd-auth-0.31/* qmail-1.03

不正中継拒否対応パッチを qmail 展開先ディレクトリへ移動

[root@server ~]# mv qmail-smtpd-relay-reject qmail-1.03

qmail 展開先ディレクトリへ移動

[root@server ~]# cd qmail-1.03

日本標準時間対応パッチ施行

[root@server qmail-1.03]# patch < qmail-date-localtime.patch

SMTP-Auth 対応パッチ施行

[root@server qmail-1.03]# patch < auth.patch

不正中継拒否対応パッチ施行

[root@server qmail-1.03]# patch < qmail-smtpd-relay-reject

error.h 編集(変更)(エラーメッセージを出力してインストールが失敗してしまうことの対処)

[root@server qmail-1.03]# vi error.h

extern int errno;

#include<errno.h>

qmail に QMAILQUEUE 環境変数対応パッチを施行する。
QMAILQUEUE 環境変数対応パッチダウンロード

[root@server qmail-1.03]# wget http://www.qmail.org/qmailqueue-patch

QMAILQUEUE 環境変数対応パッチ施行

[root@server qmail-1.03]# patch < qmailqueue-patch

qmail インストール

[root@server qmail-1.03]# make setup check

qmail 初期設定

[root@server qmail-1.03]# ./config-fast `hostname`

自ドメイン名を受信ドメイン名として追加

[root@server qmail-1.03]# echo `hostname -d` >> /var/qmail/control/rcpthosts

自ドメイン名をローカルドメイン名として追加

[root@server qmail-1.03]# echo `hostname -d` >> /var/qmail/control/locals

qmail 展開先ディレクトリを抜ける

[root@server qmail-1.03]# cd

man コマンドで qmail コマンドのマニュアルを参照できるようにする

[root@server ~]# echo "MANPATH /var/qmail/man" >> /etc/man.config

SMTP-Auth 対応パッチ展開先ディレクトリ削除

[root@server ~]# rm -rf qmail-smtpd-auth-0.31

ダウンロードした SMTP-Auth 対応パッチ削除

[root@server ~]# rm -f qmail-smtpd-auth-0.31.tar.gz

qmail 展開先ディレクトリ削除

[root@server ~]# rm -rf qmail-1.03

ダウンロードした qmail 削除

[root@server ~]# rm -f qmail-1.03.tar.gz

checkpassword インストール

SMTP認証,POP認証に使用する checkpassword をインストールする
checkpassword ダウンロード(最新版確認

[root@server ~]# wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz

展開

[root@server ~]# tar zxvf checkpassword-0.90.tar.gz

展開先ディレクトリへ移動

[root@server ~]# cd checkpassword-0.90

error.h 編集(変更

[root@server checkpassword-0.90]# vi error.h

extern int errno;

#include<errno.h>

checkpassword インストール

[root@server checkpassword-0.90]# make && make setup check

展開先ディレクトリを抜ける

[root@server checkpassword-0.90]# cd

展開先ディレクトリ削除

[root@server ~]# rm -rf checkpassword-0.90

ダウンロードした checkpassword 削除

[root@server ~]# rm -f checkpassword-0.90.tar.gz

checkpassword の所有者,所有グループ変更

[root@server ~]# chown root:nofiles /bin/checkpassword

checkpassword が所有者権限で動作するように設定

[root@server ~]# chmod 4750 /bin/checkpassword

ucspi-tcp インストール

qmail へのSMTP接続制御を行うため、tcpserver が含まれた ucspi-tcp をインストールする
ucspi-tcp ダウンロード(最新版確認

[root@server ~]# wget ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz

展開

[root@server ~]# tar zxvf ucspi-tcp-0.88.tar.gz

展開先ディレクトリへ移動

[root@server ~]# cd ucspi-tcp-0.88

error.h 編集(変更

[root@server ucspi-tcp-0.88]# vi error.h

extern int errno;

#include<errno.h>

ucspi-tcp インストール

[root@server ucspi-tcp-0.88]# make setup check

展開先ディレクトリを抜ける

[root@server ucspi-tcp-0.88]# cd

ucspi-tcp 展開先ディレクトリ削除

[root@server ~]# rm -rf ucspi-tcp-0.88

ダウンロードした ucspi-tcp 削除

[root@server ~]# rm -f ucspi-tcp-0.88.tar.gz

中継の許可を指定するファイルを作成する

[root@server ~]# vi /etc/tcp.smtp

192.168.1.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""

/etc/tcp.smtp の cdb 形式データベースを作成

[root@server ~]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

fastforward インストール

sendmail 用システム共通メール転送設定ファイル(/etc/aliases)を qmail で利用するのに必要な fastforward をインストールする
fastforward ダウンロード(最新版確認

[root@server ~]# wget http://cr.yp.to/software/fastforward-0.51.tar.gz

展開

[root@server ~]# tar zxvf fastforward-0.51.tar.gz

展開先ディレクトリへ移動

[root@server ~]# cd fastforward-0.51

error.h 編集(変更

[root@server fastforward-0.51]# vi error.h

extern int errno;

#include<errno.h>

fastforward インストール

[root@server fastforward-0.51]# make setup check

展開先ディレクトリを抜ける

[root@server fastforward-0.51]# cd

展開先ディレクトリ削除

[root@server ~]# rm -rf fastforward-0.51

ダウンロードした fastforward 削除

[root@server ~]# rm -f fastforward-0.51.tar.gz

旧 newaliases コマンド無効化

[root@server ~]# chmod 0 /usr/bin/newaliases

旧 newaliases コマンドをリネーム

[root@server ~]# mv /usr/bin/newaliases /usr/bin/newaliases.bak

newaliases コマンドを fastforward に置換え

[root@server ~]# ln -s /var/qmail/bin/newaliases /usr/bin/newaliases

/etc/aliases の cdb 形式データベース作成

[root@server ~]# newaliases

/etc/aliases の cdb 形式データベース作成確認

[root@server ~]# ll /etc/aliases.cdb

/etc/aliases.cdb を qmail が参照するように設定

[root@server ~]# echo "|/var/qmail/bin/fastforward -p -d /etc/aliases.cdb" > /var/qmail/alias/.qmail-default

qmail 設定

1メールあたりのサイズに上限を設定(10MB(10*1024*1024)にする場合)

[root@server ~]# echo "10485760" > /var/qmail/control/databytes

※制限を超えた場合、送信元へエラー通知される

ダブルバウンスメールは破棄する

[root@server ~]# touch /var/qmail/control/doublebounceto

新規ユーザ追加時に自動でユーザのホームディレクトリに Maildir 形式のメールボックスが作成されるようにする

[root@server ~]# rm -rf /etc/skel/Maildir
[root@server ~]# /var/qmail/bin/maildirmake /etc/skel/Maildir

qmail 起動

旧SMTPサーバ(sendmail)停止
sendmail 停止

[root@server ~]# /etc/rc.d/init.d/sendmail stop

自動起動設定解除,確認

[root@server ~]# chkconfig sendmail off
[root@server ~]# chkconfig --list sendmail

旧sendmailコマンド無効化

[root@server ~]# chmod 0 /usr/lib/sendmail
[root@server ~]# chmod 0 /usr/sbin/sendmail

旧sendmailコマンドをリネーム

[root@server ~]# mv /usr/lib/sendmail /usr/lib/sendmail.bak
[root@server ~]# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak

sendmail コマンドを qmail に置き換え

[root@server ~]# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
[root@server ~]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

qmail 起動コマンドサンプルを所定の場所へコピー

[root@server ~]# cp /var/qmail/boot/proc /var/qmail/rc

※他にも /var/qmail/boot/ ディレクトリに幾つかサンプルがあります。適当なものを利用します。

qmail 起動スクリプト作成

[root@server ~]# vi /etc/rc.d/init.d/qmail

#!/bin/bash
#
# qmail
#
# chkconfig: 2345 80 30
# description: qmail start/stop script

# Source function library.
. /etc/rc.d/init.d/functions

PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

[ -f /var/qmail/rc ] || exit 0

start() {
    # Start daemons.
    if [ -z $(/sbin/pidof qmail-send) ] ; then
        echo -n "Starting qmail"

        # qmail
        csh -cf '/var/qmail/rc &' 2>&1 > /dev/null

        # SMTP
        tcpserver -qv -l0 -HR -u `id -u qmaild` -g `id -g qmaild` ¥
        -x /etc/tcp.smtp.cdb 0 smtp ¥
        qmail-smtpd `hostname` /bin/checkpassword /bin/true 2>&1|¥
        splogger smtp &

        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch /var/lock/subsys/qmail
        return $RETVAL
    else
        echo "qmail is already started"
    fi
}

stop() {
    # Stop daemons.
    if [ ! -z $(/sbin/pidof qmail-send) ] ; then
        echo -n "Shutting down qmail"
        /bin/kill $(/sbin/pidof tcpserver)
        /bin/kill $(/sbin/pidof qmail-send)
        until [ -z $(/sbin/pidof qmail-send) ] && [ -z $(/sbin/pidof tcpserver) ]; do :; done
        echo
        rm -f /var/lock/subsys/qmail
    else
        echo "qmail is not running"
    fi
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  status)
        if [ ! -z $(/sbin/pidof qmail-send) ] ; then
            echo -n "qamil (pid"
            echo -n " `/sbin/pidof qmail-send`"
            echo -n " `/sbin/pidof tcpserver`"
            echo ") is running..."
        else
            echo "qmail is stoped"
        fi
        ;;
   *)
        echo "Usage: qmail {start|stop|restart|status}"
        exit 1
esac

exit 0

実行権限付加

[root@server ~]# chmod +x /etc/rc.d/init.d/qmail

qmail 起動

[root@server ~]# /etc/rc.d/init.d/qmail start

自動起動設定,確認

[root@server ~]# chkconfig qmail --add
[root@server ~]# chkconfig qmail on
[root@server ~]# chkconfig --list qmail

ルータ設定でポート25番をOPENする

Courier-IMAP インストール

Courier Authentication Library インストールに必要なパッケージをインストール

[root@server ~]# yum -y install expect mysql-devel postgresql-devel

Courier Authentication Library ダウンロード(最新版確認

[root@server ~]# wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.58.tar.bz2

Courier Authentication Library の RPM パッケージ作成

[root@server ~]# rpmbuild -tb courier-authlib-0.58.tar.bz2

作成した RPM パッケージインストール

[root@server ~]# rpm -Uvh /usr/src/redhat/RPMS/i386/courier-authlib-0.58-1.i386.rpm

[root@server ~]# rpm -Uvh /usr/src/redhat/RPMS/i386/courier-authlib-devel-0.58-1.i386.rpm

ダウンロードした Courier Authentication Library 削除

[root@server ~]# rm -f courier-authlib-0.58.tar.bz2

Courier-IMAP の RPM パッケージ作成は root ではできないため、一般ユーザ( nanami とする)で行う
Courier-IMAP インストールに必要なパッケージをインストール

[root@server ~]# yum -y install fam-devel openldap-servers

一般ユーザへ切替

[root@server ~]# su - nanami

RPM パッケージ作成作業用ディレクトリ作成

[nanami@server ~]$ mkdir -p rpm/{SOURCES,SPECS,BUILD,RPMS/i386}

RPM パッケージ作成作業用ディレクトリ設定

[nanami@server ~]$ echo "%_topdir   $HOME/rpm" >> .rpmmacros

Courier-IMAP ダウンロード(最新版確認

[nanami@server ~]$ wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-imap-4.0.6.tar.bz2

specファイル取り出し

[nanami@server ~]$ tar jxvf courier-imap-4.0.6.tar.bz2 courier-imap-4.0.6/courier-imap.spec

famをgaminに置き換え

[nanami@server ~]$ sed -i 's/fam/gamin/g' courier-imap-4.0.6/courier-imap.spec

修正した spec ファイルを所定のディレクトリへ移動

[nanami@server ~]$ mv courier-imap-4.0.6/courier-imap.spec rpm/SPECS/

ダウンロードしたソースアーカイブを所定のディレクトリへ移動

[nanami@server ~]$ mv courier-imap-4.0.6.tar.bz2 rpm/SOURCES/

courier-imap インストール時に以下のエラーメッセージが出力されないように、perl のパスがデフォルトの /usr/bin/perl で認識されるようにする
エラー: Failed dependencies:
              /usr/local/bin/perl is needed by courier-imap-4.0.6-1.i386

[nanami@server ~]$ export PATH=`echo $PATH|sed 's/\/usr\/local\/bin/\/usr\/bin/g'`

Courier-IMAP の RPM パッケージ作成

[nanami@server ~]$ rpmbuild -bb --define 'xflags "--enable-unicode=iso-2022-jp,iso-8859-1"' rpm/SPECS/courier-imap.spec

spec ファイル取り出し時に作成されたディレクトリ削除

[nanami@server ~]$ rm -rf courier-imap-4.0.6

root へ戻る

[nanami@server ~]$ exit

作成した RPM パッケージをインストール

[root@server ~]# rpm -Uvh /home/nanami/rpm/RPMS/i386/courier-imap-4.0.6-1.i386.rpm

RPM パッケージ作成作業用ディレクトリ設定ファイル削除

[root@server ~]# rm -f /home/nanami/.rpmmacros

RPM パッケージ作成作業用ディレクトリ削除

[root@server ~]# rm -rf /home/nanami/rpm

Courier-IMAP 設定

POP 機能の無効化

[root@server ~]# sed -i 's/POP3DSTART=YES/POP3DSTART=NO/g' /usr/lib/courier-imap/etc/pop3d

POP(SSL) 機能の無効化

[root@server ~]# sed -i 's/POP3DSSLSTART=YES/POP3DSSLSTART=NO/g' /usr/lib/courier-imap/etc/pop3d-ssl

courier-IMAP 認証設定ファイル編集
認証機能を PAM 認証のみにする(変更

[root@server ~]# vi /etc/authlib/authdaemonrc

authmodulelist="authuserdb authpam authpgsql authldap authmysql authcustom authvchkpw authpipe"

authmodulelist="authpam"

Courier-IMAP 起動

courier-authlib 起動

[root@server ~]# /etc/rc.d/init.d/courier-authlib start

courier-IMAP 起動

[root@server ~]# /etc/rc.d/init.d/courier-imap start

自動起動設定,確認

[root@server ~]# chkconfig courier-authlib on
[root@server ~]# chkconfig courier-imap on

[root@server ~]# chkconfig --list courier-authlib
[root@server ~]# chkconfig --list courier-imap

ルータ設定でポート143番をOPENする

maildrop インストール

Qmail-Scanner がメールを解析するのに必要な reformimeを含んでいる maildrop をインストールする
maildrop インストールに必要なpcre-devel をインストール

[root@server ~]# yum -y install pcre-devel

maildrop ダウンロード(最新版確認

[root@server ~]# wget http://jaist.dl.sourceforge.net/sourceforge/courier/maildrop-2.0.1.tar.bz2

maildrop の RPM パッケージ作成

[root@server ~]# rpmbuild -tb maildrop-2.0.1.tar.bz2

作成したRPMパッケージをインストール

[root@server ~]# rpm -Uvh /usr/src/redhat/RPMS/i386/maildrop-2.0.1-2.i386.rpm

[root@server ~]# rpm -Uvh /usr/src/redhat/RPMS/i386/maildrop-man-2.0.1-2.i386.rpm

ダウンロードした maildrop を削除

[root@server ~]# rm -f maildrop-2.0.1.tar.bz2

Qmail-Scanner インストール

Qmail-Scanner インストールに必要な perl-suidperl をインストール

[root@server ~]# yum -y install perl-suidperl

qscand ユーザ作成

[root@server ~]# useradd -M -d /tmp -s /sbin/nologin qscand

Qmail-Scanner ダウンロード(最新版確認

[root@server ~]# wget http://jaist.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-1.25.tgz

展開

[root@server ~]# tar zxvf qmail-scanner-1.25.tgz

展開先ディレクトリへ移動

[root@server ~]# cd qmail-scanner-1.25

configure

[root@server qmail-scanner-1.25]# ./configure --install --scanners clamdscan,verbose_spamassassin

応答

‥‥‥‥
[Hit to continue]
空ENTER
‥‥‥‥
Continue? ([Y]/N)
y
‥‥‥‥
Continue? ([Y]/N)
y
‥‥‥‥
Finished installation of initial directory structure for Qmail-Scanner
under /var/spool/qmailscan and qmail-scanner-queue.pl under /var/qmail/bin.空ENTER
‥‥‥‥

展開先ディレクトリを抜ける

[root@server qmail-scanner-1.25]# cd

Qmail-Scanner テストツールを退避

[root@server ~]# mv ./qmail-scanner-1.25/contrib/test_installation.sh /root

展開先ディレクトリ削除

[root@server ~]# rm -rf qmail-scanner-1.25

ダウンロードした Qmail-Scanner 削除

[root@server ~]# rm -f qmail-scanner-1.25.tgz

Qmail-Scanner 設定

ウィルス感染メール削除スクリプト作成

[root@server ~]# vi qmail-scanner

#!/bin/bash
rm -f /var/spool/qmailscan/quarantine/new/*

実行権限付加

[root@server ~]# chmod +x qmail-scanner

ウィルス感染メール削除スクリプトを毎日自動実行されるディレクトリへ移動

[root@server ~]# mv qmail-scanner /etc/cron.daily

SpamAssassin の Qmail-Scanner 対応

SpamAssassin 起動オプション設定ファイル編集

[root@server ~]# vi /etc/sysconfig/spamassassin

追加

SPAMDOPTIONS="-d -c -m5 -H -u qscand"

SpamAssassin 再起動

[root@server ~]# /etc/rc.d/init.d/spamassassin restart

qmail の Qmail-Scanner 対応

QMAILQUEUE 環境変数を /etc/tcp.smtp へ追加

[root@server ~]# echo ":allow,QMAILQUEUE=\"/var/qmail/bin/qmail-scanner-queue.pl\"" >> /etc/tcp.smtp

/etc/tcp.smtp の cdb 形式データベース再作成

[root@server ~]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

qmail 起動スクリプト編集

[root@server ~]# vi /etc/rc.d/init.d/qmail

追加

#!/bin/bash
#
# qmail
#
# chkconfig: 2345 80 30
# description: qmail start/stop script

# Source function library.
. /etc/rc.d/init.d/functions

PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE

‥‥‥‥
‥‥‥‥

qmail 再起動

[root@server ~]# /etc/rc.d/init.d/qmail restart

スパムメール振分け設定

SpamAssassin がスパム判定したメールはスパム専用メールボックスへ配送するようにし、未承諾広告メール(件名に「未承諾広告※」が含まれているメール)は自動的に削除するようにする

新規ユーザ追加時に自動でスパム専用メールボックスが作成されるようにする

[root@server ~]# maildirmake -f Spam /etc/skel/Maildir

procmail設定ファイル編集

[root@server ~]# vi /etc/procmailrc

SHELL=/bin/bash
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
SPAM=$MAILDIR/.Spam/
#LOGFILE=$HOME/procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力

# 未承諾広告メール削除※システムの文字コードがUTF-8(デフォルト)の場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:\/.*
* ? echo "$MATCH" | nkf -mwZ2 | sed 's/[[:space:]]//g' | egrep '未承諾広告※'
/dev/null

# SpamAssassin がスパム判定したメールはスパム専用メールボックスへ配送
:0
*^X-Spam-Flag: YES
$SPAM

メールユーザ( sakura )追加

ユーザにSSHによるリモート接続を開放しない場合

[root@server ~]# useradd -s /sbin/nologin sakura
[root@server ~]# passwd sakura

ユーザにSSHによるリモート接続を開放する場合

[root@server ~]# useradd sakura
[root@server ~]# passwd sakura

メールソフト設定

Outlook Expressを起動し、メニューの「ツール」⇒「アカウント」⇒「メール」タブ⇒「追加」ボタン⇒「メール」としてメール設定を行う

「表示名」に送信者の名前(任意)を入力して「次へ」

「電子メールアドレス」に送信者のメールアドレスを入力して「次へ」

「受信メールサーバーの種類」で「IMAP」を選択
「受信メールサーバー」にメールサーバー名を入力
「送信メールサーバー」にメールサーバー名を入力して「次へ」

「パスワード」にパスワードを入力して「次へ」

「完了」

追加したアカウントをダブルクリックしてプロパティを開く

「サーバー」タブの「このサーバーは認証が必要」をチェックして「OK」

「IMAP」タブの「ルートフォルダのパス」に「INBOX」と入力
「IMAP」タブの「送信済みアイテムのパス」に「Sent」と入力
「IMAP」タブの「下書きのパス」に「Drafts」と入力して「OK」

「閉じる」

「はい」

「OK」

メールアカウント選択して「IMAPフォルダ」ボタン押下

「リセット」ボタン押下して「Spam」フォルダが表示される

「Spam」フォルダを選択して「表示」ボタン押下、「OK」ボタン押下

「Spam」フォルダが表示される

ウィルス&スパムチェック確認

Qmail-Scanner に付属していたツールを使用して、ウィルス感染メールの排除、スパムメールの検知及び、正常メールの正常配送を確認する
テストメールは root 宛に送信されるので、あらかじめ root 宛メールをメールクライアントに設定したユーザ( sakura )宛に転送するようにしておく

旧 root 宛メール転送設定削除

[root@server ~]# sed -i '/^root:/d' /etc/aliases

sakura 宛に転送する

[root@server ~]# echo "root: sakura" >> /etc/aliases

確認

[root@server ~]# grep ^root /etc/aliases
root: sakura

転送設定反映

[root@server ~]# newaliases

Qmail-Scanner テストツール実行

[root@server ~]# ./test_installation.sh -doit

「Qmail-Scanner test (1/4): inoffensive message」という件名のメール(正常テストメール)が受信トレイに配送されること
「Qmail-Scanner anti-spam test (4/4): checking SpamAssassin [if present] (There yours for FREE!)」という件名のメール(スパムテストメール)がSpamフォルダに配送されること
「Qmail-Scanner viral test (2/4): checking perlscanner...」という件名のメール(ウィルステストメール)が配送されないこと
「Qmail-Scanner viral test (3/4): checking non-perlscanner AV...」という件名のメール(ウィルステストメール)が配送されないこと

Qmail-Scanner テストツール削除

[root@server ~]# rm -f test_installation.sh

スパムメール学習

SpamAssassin 学習スクリプト作成

[root@server ~]# vi spamassassin-learn

#!/bin/bash

PATH=/usr/bin:/bin

for user in `ls /home/`
do
    # 正常メール
    hammail=/home/$user/Maildir/cur

    # 正常メール学習
    if [ -d "$hammail" ]; then
        # 正常メールをSpamAssassinに学習させる
        su $user -s "/bin/bash" -c "sa-learn --ham $hammail | \
        logger -p mail.info -t 'sa-learn for $user'"
    fi

    # スパムメール
    spammail=/home/$user/Maildir/.Spam/cur

    # スパムメール学習
    if [ -d "$spammail" ]; then
        # スパムメールをSpamAssassinに学習させる
        su $user -s "/bin/bash" -c "sa-learn --spam $spammail | \
        logger -p mail.info -t 'sa-learn for $user'"
    fi
done

実行権限付加

[root@server ~]# chmod 700 spamassassin-learn

SpamAssassin 学習スクリプトを毎日自動実行されるディレクトリへ移動

[root@server ~]# mv spamassassin-learn /etc/cron.daily/

投稿者 ゆう : 2005年11月11日 11:36 | カテゴリー CentOS (27)

PR 年間580円からの格安ドメイン取得サービス─ムームードメイン
★月額263円/容量1GB/機能満載! ロリポップ!レンタルサーバー ★
ホスティングするならリンククラブ!レンタルサーバならリンククラブ!


トラックバック

このエントリーのトラックバックURL:
http://www.wave440.com/blog/mt-trbk.cgi/157

コメントを投稿




保存しますか?