vpopmailのインストール

前回のqmailのインストールから初期設定の続きになります。qmailがすでにインストールされていることが条件となります。

1.vpopmailインストール準備

※Postfixからの乗り換えの場合、vpopmailで使用するid89をpostfixユーザに割当てられているため、Postfix削除及び、postfixユーザ削除を先に行って下さい。

postfixもsedmailもインストールされていない場合はpostfixやsendmailの削除、ユーザーの削除も不要です。

[root@ns ~]# yum -y remove postfix ← Postfix削除

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

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

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

2.vpopmailインストール

[root@ns ~]# wget http://sourceforge.net/projects/vpopmail/files/vpopmail-devel/5.4.33/vpopmail-5.4.33.tar.gz ← vpopmailダウンロード

[root@ns ~]# tar zxvf vpopmail33-5.4..tar.gz ← vpopmail展開

[root@ns ~]# cd vpopmail33-5.4. ← vpopmail展開先ディレクトリへ移動

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

[root@ns vpopmail33-5.4.]# make && make install-strip ← vpopmailインストール

[root@ns vpopmail33-5.4.]# cd ← vpopmail展開先ディレクトリを抜ける

[root@ns ~]# rm -rf vpopmail33-5.4. ← vpopmail展開先ディレクトリ削除

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

※メールサーバーでウィルス&スパムチェック導入している場合のみ、以下の設定をしてください。

[root@ns vpopmail33-5.4.]# 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"};

3.vpopmail設定

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

[root@ns ~]# 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           ←コメントを外す。デフォルトのメールボックスの容量は10MBになります。
※上記を指定しない場合は無制限となる

4.qmailのvpopmail対応

起動スクリプトをvpopmailに対応させます。

[root@ns ~]# 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 &

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

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

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

僕はpop3で受信しているのでこの設定にしたいと思います。

[root@ns ~]# 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 &

        # 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 &

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

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

6.メインドメイン移行

メインドメイン環境をvpopmail配下へ移行します。

[root@ns ~]# /home/vpopmail/bin/vadddomain `hostname -d` ← メインドメイン追加
Please enter password for postmaster:  ← postmaster@ドメイン名のパスワード応答※パスワードは表示されない
enter password again:  ← postmaster@wドメイン名のパスワード応答(確認)※パスワードは表示されない
NOTICE: Out of order entries found in /var/qmail/control/rcpthosts
   Sorting...

[root@ns ~]# vi /home/vpopmail/domains/`hostname -d`/.qmail-default ← メインドメインの.qmail-default編集
#| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox
| /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 ← 変更(宛先不明メールは送信元へ通知せずに捨てる)※

7.システムアカウント移行

システムアカウントをvpopmail配下のメインドメインへ移行する。

※パスワードをもっているシステムアカウントのみvpopmail配下に移行される

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

8.メールデータ移行

システムアカウントのメールデータ(~/Maildir/,~/.forward,~/.qmail)をvpopmail配下のメインドメイン内該当ユーザのホームディレクトリへ移行する

[root@ns ~]# 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@ns ~]# sh migrate-maildir ← メールデータ移行スクリプト実行
user1
・
・
・
userx

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

バーチャルドメインの追加はここでは触れておりません。