■概要

現在運用中のメールサーバーで、メールアドレスxxxxxxxx@wakuwakustation.comの他に、xxxxxxxx@virtual.comでもメールを送受信できるようにする。ここでは、vpopmailを導入して、以下のような特徴をもつメールシステムを構築する。

・メインドメイン、バーチャルドメインでメールボックスは別々とする(例:centos@wakuwakustation.comと、centos@virtual.comのメールボックスは別々とする)
・メインドメインも1バーチャルドメインとして扱う(メール利用のためだけにシステムアカウントを追加する必要がなくなる)

なお、ドメイン1つでvpopmailを導入しても問題はない

メールサーバー(qmail)構築済であること


■ドメイン名取得

追加するメールアドレスのドメイン名を取得する。⇒ドメイン名取得(独自ドメイン編)ドメイン名取得(ieServer.Net編)を参照

■vpopmailインストール

(1)vpopmailインストール準備
※Postfixからの乗り換えの場合、vpopmailで使用するid89をpostfixユーザに割当てられているため、Postfix削除及び、
postfixユーザ削除を先に行う
[root@centos ~]# yum -y remove postfix ← Postfix削除

[root@centos ~]# userdel postfix ← postfixユーザ削除

[root@centos ~]# groupadd -g 89 vchkpw ← vchkpwグループ作成

[root@centos ~]# useradd -g vchkpw -u 89 vpopmail -s /sbin/nologin -m -k /dev/null ← vpopmailユーザ作成

(2)vpopmailインストール
[root@centos ~]# wget http://nchc.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.25.tar.gz ← vpopmailダウンロード

※最新版のURLはダウンロードページで確認すること

[root@centos ~]# tar zxvf vpopmail-5.4.25.tar.gz ← vpopmail展開

[root@centos ~]# cd vpopmail-5.4.25 ← vpopmail展開先ディレクトリへ移動

[root@centos vpopmail-5.4.25]# vi vpopmail.c ← vpopmail.c編集(ユーザ追加時に自動でスパムメール用メールボックスが作成されるようにする)
メールサーバーでウィルス&スパムチェック導入している場合のみ
 const char *dirnames[] = {"Maildir", "Maildir/new", "Maildir/cur",
        "Maildir/tmp"};
        ↓変更
 const char *dirnames[] = {"Maildir", "Maildir/new", "Maildir/cur", "Maildir/tmp",
        "Maildir/.Spam", "Maildir/.Spam/new", "Maildir/.Spam/cur", "Maildir/.Spam/tmp"};

[root@centos vpopmail-5.4.25]# ./configure --disable-clear-passwd ← configure
※メールユーザパスワードを平文で保存しないようにする設定を追加

[root@centos vpopmail-5.4.25]# make && make install-strip ← vpopmailインストール

[root@centos vpopmail-5.4.25]# cd ← vpopmail展開先ディレクトリを抜ける

[root@centos ~]# rm -rf vpopmail-5.4.25 ← vpopmail展開先ディレクトリ削除

[root@centos ~]# rm -f vpopmail-5.4.25.tar.gz ← ダウンロードしたvpopmail削除

■vpopmail設定

[root@centos ~]# cp /etc/tcp.smtp* /home/vpopmail/etc ← /etc/tcp.smtpと/etc/tcp.smtp.cdbをvpopmail環境へ移行

[root@centos ~]# vi /home/vpopmail/etc/vlimits.default ← デフォルト制限設定ファイル編集
# default quota for newly created users (in bytes)
# example shows a user with a 10MB quota and a limit of 1000 messages
#default_quota           10485760
#default_maxmsgcount     1000
default_quota           104857600 ← 追加(1ユーザのメールボックス容量を100MB(100*1024*1024)とする場合)
※上記を指定しない場合は無制限となる

■qmailのvpopmail対応

[root@centos ~]# vi /etc/rc.d/init.d/qmail ← qmail起動スクリプト編集
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 &
        ↓変更
        # SMTP
        tcpserver -qv -l0 -HR -u `id -u vpopmail` -g `id -g vpopmail` \
        -x /home/vpopmail/etc/tcp.smtp.cdb 0 smtp \
        qmail-smtpd `hostname` /home/vpopmail/bin/vchkpw /bin/true 2>&1|\
        splogger smtp &

        # SMTPS
        tcpserver -qvs -l0 -HR -u `id -u qmaild` -g `id -g qmaild` \
        -n /var/qmail/cert.pem -x /etc/tcp.smtp.cdb 0 smtps \
        qmail-smtpd `hostname` /bin/checkpassword /bin/true 2>&1|\
        splogger smtps &
        ↓変更メールサーバー間通信内容暗号化(ucspi-tcp-ssl)導入済の場合のみ
        # SMTPS
        tcpserver -qvs -l0 -HR -u `id -u vpopmail` -g `id -g vpopmail` \
        -n /var/qmail/cert.pem -x /home/vpopmail/etc/tcp.smtp.cdb 0 smtps \
        qmail-smtpd `hostname` /home/vpopmail/bin/vchkpw /bin/true 2>&1|\
        splogger smtps &

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

[root@centos ~]# /etc/rc.d/init.d/qmail restart ← qmail再起動
Shutting down qmail
Starting qmail

■qmail-pop3dのvpopmail対応(受信メールサーバーをPOPにする場合)

[root@centos ~]# vi /etc/rc.d/init.d/qmail ← qmail起動スクリプト編集
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 vpopmail` -g `id -g vpopmail` \
        -x /home/vpopmail/etc/tcp.smtp.cdb 0 smtp \
        qmail-smtpd `hostname` /home/vpopmail/bin/vchkpw /bin/true 2>&1|\
        splogger smtp &

        # SMTPS
        tcpserver -qvs -l0 -HR -u `id -u vpopmail` -g `id -g vpopmail` \
        -n /var/qmail/cert.pem -x /home/vpopmail/etc/tcp.smtp.cdb 0 smtps \
        qmail-smtpd `hostname` /home/vpopmail/bin/vchkpw /bin/true 2>&1|\
        splogger smtps &

        # POP3
        tcpserver -qvRH -u `id -u qmaild` -g `id -g qmaild` \
        0 pop3 qmail-popup `hostname` /bin/checkpassword \
        qmail-pop3d Maildir 2>&1 | splogger pop3 &
        ↓変更
        # POP3
        tcpserver -qvRH -u `id -u vpopmail` -g `id -g vpopmail` \
        0 pop3 qmail-popup `hostname` /home/vpopmail/bin/vchkpw \
        qmail-pop3d Maildir 2>&1 | splogger pop3 &

        # POP3S
        tcpserver -qvsRH -u `id -u qmaild` -g `id -g qmaild` \
         -n /var/qmail/cert.pem \
        0 pop3s qmail-popup `hostname` /bin/checkpassword \
        qmail-pop3d Maildir 2>&1 | splogger pop3s &
        ↓変更メールサーバー間通信内容暗号化(ucspi-tcp-ssl)導入済の場合のみ
        # POP3S
        tcpserver -qvsRH -u `id -u vpopmail` -g `id -g vpopmail` \
         -n /var/qmail/cert.pem \
        0 pop3s qmail-popup `hostname` /home/vpopmail/bin/vchkpw \
        qmail-pop3d Maildir 2>&1 | splogger pop3s &

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

[root@centos ~]# /etc/rc.d/init.d/qmail restart ← qmail再起動
Shutting down qmail
Starting qmail

■Dovecotのvpopmail対応(受信メールサーバーをIMAPにする場合)

[root@centos ~]# yum -y install yum-utils ← yumでSRPMをダウンロードするyumdownloaderを含むyum-utilsをインストール

[root@centos ~]# vi /etc/yum.repos.d/CentOS-source.repo ← SRPM用リポジトリ設定ファイル新規作成
[source]
name=CentOS-$releasever - source
baseurl=http://mirror.centos.org/centos/$releasever/os/SRPMS/
enabled=0
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[root@centos ~]# yumdownloader --enablerepo=source --source dovecot ← DovecotのSRPMをダウンロード

[root@centos ~]# rpm -ivh dovecot-1.0-1.2.rc15.el5.src.rpm ← DovecotのSRPMを展開
※ユーザ、グループが存在しない旨の警告メッセージが表示されるが問題ない

[root@centos ~]# vi /usr/src/redhat/SPECS/dovecot.spec ← specファイル編集
%configure                           \
    --with-vpopmail                  \ ← 追加

[root@centos ~]# rpmbuild -bb --clean /usr/src/redhat/SPECS/dovecot.spec ← DovecotのRPMを作成
※時間がかかる
rpmbuildが「ビルド依存性の失敗」で異常終了した場合

[root@centos ~]# /etc/rc.d/init.d/dovecot stop ← 起動済Dovecot停止
Dovecot Imap を停止中:                                     [  OK  ]

[root@centos ~]# yum -y remove dovecot ← インストール済Dovecot削除

[root@centos ~]# rpm -ivh /usr/src/redhat/RPMS/i386/dovecot-1.0-1.2.rc15.i386.rpm ← 作成したDovecotのRPMをインストール

[root@centos ~]# /bin/mv /etc/dovecot.conf.rpmsave /etc/dovecot.conf ← 旧Dovecot設定ファイルを流用

[root@centos ~]# vi /etc/dovecot.conf ← Dovecot設定ファイル編集(CentOS5の場合)
  # vpopmail authentication 
  passdb vpopmail { ← コメント解除
    # [cache_key=] - See cache_key in PAM for explanation.
    #args =
  } ← コメント解除

  # vpopmail 
  userdb vpopmail { ← コメント解除
  } ← コメント解除

# Valid UID range for users, defaults to 500 and above. This is mostly
# to make sure that users can't log in as daemons or other system users.
# Note that denying root logins is hardcoded to dovecot binary and can't
# be done even if first_valid_uid is set to 0.
#first_valid_uid = 500
first_valid_uid = 89 ← 追加
#last_valid_uid = 0

vpopmail導入により不要になったシステムアカウントによる認証設定を無効化する
※無効化しないと認証に時間(2~3秒くらい)がかかり、/var/log/secureに認証エラーメッセージが記録される
  # PAM authentication. Preferred nowadays by most systems.
  # Note that PAM can only be used to verify if user's password is correct,
  # so it can't be used as userdb. If you don't want to use a separate user
  # database (passwd usually), you can use static userdb.
  # REMEMBER: You'll need /etc/pam.d/dovecot file created for PAM
  # authentication to actually work. 
  #passdb pam { ← 行頭に#を追加(コメントアウト)
    #  [session=yes] [setcred=yes] [cache_key=] []
    #
    # session=yes makes Dovecot open and immediately close PAM session. Some
    # PAM plugins need this to work, such as pam_mkhomedir.
    #
    # setcred=yes makes Dovecot establish PAM credentials if some PAM plugins
    # need that. They aren't ever deleted though, so this isn't enabled by
    # default.
    #
    # cache_key can be used to enable authentication caching for PAM
    # (auth_cache_size also needs to be set). It isn't enabled by default
    # because PAM modules can do all kinds of checks besides checking password,
    # such as checking IP address. Dovecot can't know about these checks
    # without some help. cache_key is simply a list of variables (see
    # doc/variables.txt) which must match for the cached data to be used.
    # Here are some examples:
    #   %u - Username must match. Probably sufficient for most uses.
    #   %u%r - Username and remote IP address must match.
    #   %u%s - Username and service (ie. IMAP, POP3) must match.
    #
    # If service name is "*", it means the authenticating service name
    # is used, eg. pop3 or imap (/etc/pam.d/pop3, /etc/pam.d/imap).
    #
    # Some examples:
    #   args = session=yes *
    #   args = cache_key=%u dovecot
    #args = dovecot
  #} ← 行頭に#を追加(コメントアウト)

  # /etc/passwd or similar, using getpwnam()
  # In many systems nowadays this uses Name Service Switch, which is
  # configured in /etc/nsswitch.conf. WARNING: nss_ldap is known to be broken
  # with Dovecot. Don't use it, or users might log in as each others!
  # http://wiki.dovecot.org/AuthDatabase/Passwd
  #userdb passwd { ← 行頭に#を追加(コメントアウト)
  #} ← 行頭に#を追加(コメントアウト)

[root@centos ~]# vi /etc/dovecot.conf ← Dovecot設定ファイル編集(CentOS4の場合)
auth_userdb = vpopmail ← 変更

auth_passdb = vpopmail ← 変更

#first_valid_uid = 500
first_valid_uid = 89 ← 追加
#last_valid_uid = 0

[root@centos ~]# /etc/rc.d/init.d/dovecot start ← Dovecot起動
Dovecot Imap を起動中:                                     [  OK  ]

[root@centos ~]# chkconfig dovecot on ← Dovecot自動起動設定

[root@centos ~]# chkconfig --list dovecot ← Dovecot自動起動設定確認
dovecot         0:off   1:off   2:on    3:on    4:on    5:on    6:off ← ランレベル2~5のonを確認

[root@centos ~]# rm -f dovecot-1.0-1.2.rc15.el5.src.rpm ← DovecotのSRPMを削除

[root@centos ~]# rm -f /usr/src/redhat/RPMS/i386/* ← RPM作成後始末

[root@centos ~]# rm -f /usr/src/redhat/SOURCES/* ← RPM作成後始末

[root@centos ~]# rm -f /usr/src/redhat/SPECS/* ← RPM作成後始末

[root@centos ~]# vi /etc/yum.conf ← yum設定ファイル編集
exclude=dovecot ← 追加(Dovecotをyumによるアップデート対象外にする)

■SpamAssassinのvpopmail対応(メールサーバーでウィルス&スパムチェック導入している場合のみ)

[root@centos ~]# vi /etc/sysconfig/spamassassin ← SpamAssassin起動オプション設定ファイル編集
# Options to spamd
SPAMDOPTIONS="-d -c -m5 -H"
↓
SPAMDOPTIONS="-d -m5 -v -u vpopmail --virtual-config-dir=/home/vpopmail/domains/%d/%l/.spamassassin" ← vpopmail対応オプション追加

[root@centos ~]# chown vpopmail. /var/run/spamassassin/ ← SpamAssassinPIDファイル格納ディレクトリ所有者変更

[root@centos ~]# /etc/rc.d/init.d/spamassassin restart ← SpamAssassin再起動
spamd を停止中:                                            [  OK  ]
spamd を起動中:                                            [  OK  ]

■メインドメイン移行

メインドメイン環境をvpopmail配下へ移行する

(1)メインドメイン追加
メインドメインをvpopmailへ追加する。
[root@centos ~]# /home/vpopmail/bin/vadddomain `hostname -d` ← メインドメイン追加
Please enter password for postmaster:  ← postmaster@wakuwakustation.comのパスワード応答※パスワードは表示されない
enter password again:  ← postmaster@wakuwakustation.comのパスワード応答(確認)※パスワードは表示されない
NOTICE: Out of order entries found in /var/qmail/control/rcpthosts
   Sorting...
   
[root@centos ~]# vi /home/vpopmail/domains/`hostname -d`/.qmail-default ← メインドメインの.qmail-default編集
| /var/qmail/bin/fastforward -p -d /etc/aliases.cdb ← 追加(/etc/aliasesを有効にする)
| /var/qmail/bin/dot-forward `/home/vpopmail/bin/vuserinfo -d $EXT@$HOST`/.forward ← 追加(.forwardを有効にする)
| /home/vpopmail/bin/vdelivermail '' delete ← 変更(宛先不明メールは送信元へ通知せずに捨てる)※
宛先不明メールを送信元に通知せずに捨てる理由

(2)システムアカウント移行
システムアカウントをvpopmail配下のメインドメインへ移行する。
[root@centos ~]# /home/vpopmail/bin/vconvert -e -c `hostname -d` ← ユーザアカウント/パスワードの移行
※パスワードをもっているシステムアカウントのみvpopmail配下に移行される

[root@centos ~]# /home/vpopmail/bin/vuserinfo -n -D `hostname -d` ← 移行されたユーザの確認
user1
・
・
・
userx

(3)メールデータ移行
システムアカウントのメールデータ(~/Maildir/,~/.forward,~/.qmail)をvpopmail配下のメインドメイン内該当ユーザのホームディレクトリへ移行する
[root@centos ~]# vi migrate-maildir ← メールデータ移行スクリプト作成
#!/bin/bash

DOMAIN=`hostname -d`

migrate()
{
    user=$1
    if [ $user = "root" ]; then
        home="/root"
    else
        home="/home/$user"
    fi
    
    if [ -d $home/Maildir ] && [ -d /home/vpopmail/domains/$DOMAIN/$user/Maildir ]; then
        /bin/cp -r $home/Maildir \
        /home/vpopmail/domains/$DOMAIN/$user
        [ -f $home/.forward ] && /bin/cp -r $home/.forward \
        /home/vpopmail/domains/$DOMAIN/$user
        [ -f $home/.qmail ] && /bin/cp -r $home/.qmail \
        /home/vpopmail/domains/$DOMAIN/$user
        chown -R vpopmail. /home/vpopmail/domains/$DOMAIN/$user
        echo $user
    fi
}

# メールデータ移行(一般ユーザ)
for user in `ls /home/`;
do
    migrate $user
done

# メールデータ移行(rootユーザ)
migrate root

[root@centos ~]# sh migrate-maildir ← メールデータ移行スクリプト実行
user1
・
・
・
userx

[root@centos ~]# rm -f migrate-maildir ← メールデータ移行スクリプト削除

(4)/etc/aliases修正
/etc/aliasesでroot宛メールをローカルアカウント宛に転送するように設定している場合(例:root宛メールをcentosユーザへ転送するように設定している場合)、転送先をvpopmail対応に修正する。
[root@centos ~]# vi /etc/aliases ← /etc/aliases編集
root: centos@wakuwakustation.com ← root宛メール転送先をcentos@wakuwakustation.comに修正

[root@centos ~]# newaliases ← /etc/aliases修正反映

■バーチャルドメイン追加

バーチャルドメイン(例としてvirtual.com)を追加する

(1)バーチャルドメイン追加
[root@centos ~]# /home/vpopmail/bin/vadddomain virtual.com ← バーチャルドメイン追加
Please enter password for postmaster:  ← postmaster@virtual.comのパスワード応答※パスワードは表示されない
enter password again:  ← postmaster@virtual.comのパスワード応答(確認)※パスワードは表示されない

[root@centos ~]# vi /home/vpopmail/domains/virtual.com/.qmail-default ← バーチャルドメインの.qmail-default編集
| /var/qmail/bin/fastforward -p -d /etc/aliases.cdb ← 追加(/etc/aliasesを有効にする)
| /var/qmail/bin/dot-forward `/home/vpopmail/bin/vuserinfo -d $EXT@$HOST`/.forward ← 追加(.forwardを有効にする)
| /home/vpopmail/bin/vdelivermail '' delete ← 変更(宛先不明メールは送信元へ通知せずに捨てる)※

※postmasterのパスワードをランダムに設定する場合
[root@centos ~]# /home/vpopmail/bin/vadddomain -r virtual.com ← バーチャルドメイン追加
Random password: 5nUH3RdG ← ランダムに設定されたパスワード
宛先不明メールを送信元に通知せずに捨てる理由

(2)バーチャルドメイン用メールユーザ追加
[root@centos ~]# /home/vpopmail/bin/vadduser virtual-user@virtual.com ← メールユーザ追加
Please enter password for virtual-user@virtual.com:  ← パスワード応答※パスワードは表示されない
enter password again:  ← パスワード応答(確認)※パスワードは表示されない

※パスワードをランダムに設定する場合
[root@centos ~]# /home/vpopmail/bin/vadduser -n virtual-user@virtual.com ← メールユーザ追加

[root@centos ~]# /home/vpopmail/bin/vpasswd -r virtual-user@virtual.com ← メールユーザパスワード設定
Random password: ErZ#Loc7 ← ランダムに設定されたパスワード※気に入らない場合は繰り返せばOK

(3)バーチャルドメイン用メールユーザパスワード変更
[root@centos ~]# /home/vpopmail/bin/vchangepw ← メールユーザパスワード変更
Please enter the email address: virtual-user@virtual.com ← メールアドレス応答
virtual-user@virtual.com
Enter old password:  ← 現在パスワード応答※パスワードは表示されない
Please enter password for virtual-user@virtual.com:  ← 新パスワード応答※パスワードは表示されない
enter password again:  ← 新パスワード応答(確認)※パスワードは表示されない
Password successfully changed.

(4)バーチャルドメイン用メールユーザ削除
[root@centos ~]# /home/vpopmail/bin/vdeluser virtual-user@virtual.com ← メールユーザ削除
※問い合わせもなく削除されるので誤操作に注意

(5)バーチャルドメイン削除
[root@centos ~]# /home/vpopmail/bin/vdeldomain virtual.com ← バーチャルドメイン削除
※問い合わせもなく削除されるので誤操作に注意

■メールクライアント設定

vpopmailでは、ユーザ識別をメールアドレスで行うため、メールクライアントのアカウント名には、「ユーザ名」ではなく、「ユーザ名@ドメイン名」のようにメールアドレスを指定する。その他はメールサーバー構築(qmail編)の「■メールクライアント設定」を参照


■メインドメイン確認

・内部で同一ユーザ同士でメールの送受信
・内部で他ユーザ間でメールの送受信
・内部で外部(プロバイダのメールアドレス等)との送受信
・内部で携帯との送受信※
・外部(会社等)で同一ユーザ同士でメールの送受信
・外部(会社等)で他ユーザ間でメールの送受信
・外部(会社等)で外部(プロバイダのメールアドレス等)との送受信
・外部(会社等)で携帯との送受信※

※携帯はドメイン指定受信等でメールサーバーからのメールが拒否されないようにしておくこと

■バーチャルドメイン確認

・内部で同一ユーザ同士でメールの送受信
・内部で他ユーザ間でメールの送受信
・内部で外部(プロバイダのメールアドレス等)との送受信
・内部で携帯との送受信※
・外部(会社等)で同一ユーザ同士でメールの送受信
・外部(会社等)で他ユーザ間でメールの送受信
・外部(会社等)で外部(プロバイダのメールアドレス等)との送受信
・外部(会社等)で携帯との送受信※

※携帯はドメイン指定受信等でメールサーバーからのメールが拒否されないようにしておくこと

■メインドメイン⇔バーチャルドメイン確認

・内部でメインドメインユーザとバーチャルドメインユーザ間での送受信
・外部でメインドメインユーザとバーチャルドメインユーザ間での送受信

■スパムメール振分け設定のvpopmail対応(メールサーバーでウィルス&スパムチェック導入している場合のみ)

SpamAssassinがスパム判定したメールはスパムメール用メールボックスへ配送するようにする。
また、未承諾広告メール(件名に「未承諾広告※」が含まれているメール)は自動的に削除するようにする。
[root@centos ~]# vi /home/vpopmail/etc/maildroprc ← vpopmail用maildrop設定ファイル新規作成
SHELL="/bin/bash"
import EXT
import HOST
DELIVER="|/home/vpopmail/bin/vdelivermail '' delete"
VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST`
logfile "/home/vpopmail/maildrop.log" # ログを記録する場合

# 存在しないユーザ宛メールの処理
if ( $VHOME eq "" )
{
    to "$DELIVER"
}

# 未承諾広告メールの削除(ここから)
# 件名が日本語の場合
if (/^Subject:.*iso-2022-jp/:h)
{
    # 件名をUTF-8コードへ変換※システムの文字コードがUTF-8(デフォルト)の場合
    SUBJECT=`cat |grep Subject|nkf -mw`

    # 件名をEUCコードへ変換※システムの文字コードがEUCの場合
    SUBJECT=`cat |grep Subject|nkf -me`

    # 件名に未承諾広告※が含まれているメールを削除
    if ($SUBJECT =~ /.*未承諾広告※.*/)
    {
        to "/dev/null"
    }
}
# 未承諾広告メールの削除(ここまで)

# SpamAssassinによるスパムチェック
# ※fetchmail取り込みメールのスパム検査未実施対処
if (!/^X-Spam-/:h)
{
    exception {
        xfilter "/usr/bin/spamc"
    }
}

# SpamAssassinがスパム判定したメールはスパムメール用メールボックスへ配送
if (/^X-Spam-Flag: *YES/)
{
    to "$VHOME/Maildir/.Spam/"
}

# その他のメールは通常どおりに配送
to "$DELIVER"

[root@centos ~]# chown vpopmail. /home/vpopmail/etc/maildroprc ← vpopmail用maildrop設定ファイル所有者変更

[root@centos ~]# chmod 600 /home/vpopmail/etc/maildroprc ← vpopmail用maildrop設定ファイルパーミッション変更

[root@centos ~]# vi /home/vpopmail/domains/ドメイン名/.qmail-default ← 全ドメインの.qmail-default編集
| /home/vpopmail/bin/vdelivermail '' delete
↓
| maildrop /home/vpopmail/etc/maildroprc ← 変更

[root@centos ~]# vi /etc/logrotate.d/maildrop ← maildropログローテーション設定ファイル編集
/home/vpopmail/maildrop.log {
    missingok
    nocreate
    notifempty
}

■スパムチェック誤認識対応のvpopmail対応(メールサーバーでウィルス&スパムチェック導入している場合のみ)

[root@centos ~]# vi spamassassin-learn ← SpamAssassin学習スクリプト作成
#!/bin/bash

PATH=/usr/sbin:/usr/bin:/bin

for domains in `/home/vpopmail/bin/vdominfo -n|grep -v "^$"`
do
    for user in `/home/vpopmail/bin/vuserinfo -n -D $domains`
    do
        # 正常メール格納ディレクトリ
        hamdir=`/home/vpopmail/bin/vuserinfo -d $user@$domains`/Maildir/cur

        dbdir=`/home/vpopmail/bin/vuserinfo -d $user@$domains`/.spamassassin/
        [ ! -d $dbdir ] && mkdir $dbdir && chown vpopmail. $dbdir && chmod 700 $dbdir
        
        # 正常メール学習
        if [ -d "$hamdir" ]; then
            su vpopmail -s "/bin/bash" -c \
            "sa-learn --ham $hamdir --dbpath $dbdir | \
            logger -p mail.info -t 'sa-learn for $user'"
        fi

        # スパムメール格納ディレクトリ
        spamdir=`/home/vpopmail/bin/vuserinfo -d $user@$domains`/Maildir/.Spam/cur

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

            # 受信後一ヶ月経過したスパムメールを削除
            tmpwatch -m 720 $spamdir
        fi
    done
done

[root@centos ~]# chmod +x spamassassin-learn ← SpamAssassin学習スクリプトへ実行権限付加

[root@centos ~]# /bin/mv spamassassin-learn /etc/cron.daily ← SpamAssassin学習スクリプトを毎日自動実行されるディレクトリへ移動