vpopmailでバーチャルドメイン

qmail単体でもvirtualdomainsファイルを編集することでバーチャルドメインは実現できますが、vpopmailというツールを利用することでより便利にバーチャルドメイン構成を実現することが出来ます。

vpopmailを利用するメリットとして以下のものがあげられます。

  • ドメインやユーザの削除、追加がコマンドラインで実行できる
  • システムパスワード(/etc/passwd)を作成せず、ユーザ追加ができる
  • POP before SMTPを実装
  • APOPを実装
  • 認証方式としてデータベースを利用できるMySQL,ORACLE等(試したことはありません)

では、実際にvpopmailのインストールから利用方法まで説明します。
また、あらかじめ qmailのインストール が完了しているものとして説明しています。

ソースの入手

以下のURLからソースを入手してください。
http://sourceforge.net/projects/qmailadmin/

今回はvpopmail5.4.0.tar.gzをダウンロードしました。
http://ovh.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.0.tar.gz

インストール

ここではvpopmail5.4.0.tar.gzをダウンロードしたものとして説明します。
ここでは、POP Before SMTP,APOP対応をしたインストール方法を解説しています。

(1) vpopmailを操作する専用ユーザの作成
グループ名 vchkpw , ユーザ名 vpopmail で作成します。FreeBSDの場合はvpopmailのユーザIDは89が予約されているようなので89があいていれば89を利用しましょう。

# groupadd -g 89 vchkpw
# useradd -u 89 -g 89 -d /home/vpopmail -m -s/bin/bash vpopmail

(2) リレー許可DBの作成
Ver 5.2.1のときはリレーのDBの作成が無くてもインストールができましたが5.4.0ではインストール時、怒られてしまうので必要なディレクトリ、ファイルを作成します。

# chmod 755 /home/vpopmail/
# mkdir /home/vpopmail/etc
# cd /home/vpopmail/etc
# echo '127.:allow,RELAYCLIENT=""' > tcp.smtp <-リレー許可として127.を追加
# tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp  <-cdbの作成
# chown -R 89:89 /home/vpopmail/etc

(3) コンパイル・インストール
では、コンパイル・インストールを始めましょう。

$ tar xvfz vpopmail-5.4.0.tar.gz
$ cd vpopmail-5.4.0
$ su
# ./configure --enable-roaming-users=y \ 
  --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
  --enable-relay-clear-minutes=30 --enable-qmail-ext=n
# make
# make install-strip

コンパイルオプション

--enable-roaming-users=(y|n)POP Before SMTPを有効にするかの指定
--enable-tcpserver-file=PATHPOP Before SMTPを有効にするときに追加するcdbファイルの指定
--enable-relay-clear-minutes=minutesPOP Before SMTPを有効にする際に許可する時間(分)の指定
--enable-qmail-ext=(y|n)拡張アドレスの利用の有無。追加するユーザに-ハイフンがある場合は指定は無効(n)にすることをおすすめします

(4) デフォルトドメインの指定
バーチャルドメインを利用する為に、メインとして利用するドメインを入力します。ここで指定したドメインはPOPするアカウントがメールアドレスの@前のものになります。それ以外のドメインはメールアドレス形式でのPOPとなります。
/home/vpopmail/etc/defaultdomain ファイルにデフォルトドメインを記入します。

# echo 'example.com' > /home/vpopmail/etc/defaultdomain

vpopmailの起動

バーチャルドメインを認識させるために現在動作しているqmailのPOP,SMTPの起動方法の変更が必要です。

(1) POPサーバ
変更箇所はPOPプログラムを /home/vpopmail/bin/vchkpw に変更します。

# /usr/local/bin/tcpserver -v -R -H 0 pop3 \
 /var/qmail/bin/qmail-popup hoge.example.com \
 /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
 | /var/qmail/bin/splogger pop3d 3 &

(2) SMTPサーバ
変更箇所はtcpserverが参照するcdbファイル(POP before SMTP有効の際に指定したもの)が変更箇所となります。

# /usr/local/bin/tcpserver -v -x /home/vpopmail/etc/tcp.smtp.cdb \ 
 -R -H -u 71 -g 70 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
 | /var/qmail/bin/splogger smtp 3 &

また、POP before SMTPを有効にした場合、定期的にデータベース削除のスクリプトを起動する必要があります。cronなどで設定したPOP before SMTPの時間以内の時間で起動するように設定しましょう。

*/15 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

起動スクリプトの作成

(1) daemontoolsで起動
daemontoolsで利用するスクリプトです。daemontoolsの利用方法は daemontoolsからサービス起動方法 を参照ください。

POPサーバ

#!/bin/sh
exec env - PATH="/var/qmail/bin:/usr/local/bin:/bin:/usr/bin" \
envdir /etc/relay-ctrl relay-ctrl-chdir \
tcpserver -v -R -H 0 pop3 qmail-popup \
`/bin/cat /var/qmail/control/me` /home/vpopmail/bin/vchkpw \
relay-ctrl-allow qmail-pop3d Maildir 2>&1

SMTPサーバ

#!/bin/sh
exec env - PATH="/var/qmail/bin:/usr/local/bin:/bin:/usr/bin" \
envdir /etc/relay-ctrl relay-ctrl-chdir \
tcpserver -v -x /home/vpopmail/etc/tcp.smtp.cdb -R -H \
-u `/usr/bin/id -u qmaild` -g `/usr/bin/id -g qmaild` \
0 smtp qmail-smtpd 2>&1

(2) init.d制御
通常よく利用される /etc/rc.d/init.d/qmail も用意しました。よかったら利用してください。

#!/bin/sh
# chkconfig: 345 85 15
# description: Dynamic Relay Authorization Control
# processname: qmail
#
# qmail: /var/qmail
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

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

case "$1" in
  start)
        # Start daemons.
        echo "Starting qmail."

        # qmail
        csh -cf '/var/qmail/rc &'

        # POP3 by vpopmail
        envdir /etc/relay-ctrl relay-ctrl-chdir \
        tcpserver -v -R -H 0 pop3 qmail-popup \
        `/bin/cat /var/qmail/control/me` /home/vpopmail/bin/vchkpw \
        relay-ctrl-allow qmail-pop3d Maildir 2>&1 \
        | splogger pop3d 3 &

        # SMTP
        envdir /etc/relay-ctrl relay-ctrl-chdir \
        tcpserver -v -x /home/vpopmail/etc/tcp.smtp.cdb -R -H \
        -u `/usr/bin/id -u qmaild` -g `/usr/bin/id -g qmaild` \
        0 smtp qmail-smtpd 2>&1 \
        | splogger smtp 3 &

        echo
        touch /var/lock/subsys/qmail
        ;;
  stop)
        # Stop daemons.
        echo "Shutting down qmail."
        kill $(/sbin/pidof tcpserver)
        kill $(/sbin/pidof qmail-send)
        echo
        rm -f /var/lock/subsys/qmail
        ;;
   *)
        echo "Usage: S99qmail {start|stop}"
        exit 1
esac

exit 0 

メールアドレスの設定・運用

(1) ドメインの追加
ドメイン追加は、付属のツールで追加をします。管理者であるpostmasterが作成されます。
【書式】
# vadddomain 追加したいドメイン

# cd /home/vpopmail/bin/
# vadddomain example.com
Please enter password for example.com: <-postmasterのパスワード
enter password again: <-postmasterのパスワード再入力

作成が完了すると/home/vpopmail/domains/以下にドメインのディレクトリが生成されます。
その中にユーザを管理することになります。

(2)アドレスの追加
こちらも付属の追加ツールを利用します。セキュリティのため、vpopmailユーザにスイッチして実行することが推奨されています。
【書式】
# vadduser 追加したいメールアドレス

# cd /home/vpopmail/bin/
# su vpopmail
# ./vadduser hoge@example.com
Please enter password for hoge@example.com: <-POPパスワード
enter password again: <-パスワード再入力

/home/vpopmail/domains/ドメイン名/以下に作成したユーザのディレクトリとMaildirのディレクトリが作成されています。ここにメールが配送されるようになります。
これでメールアドレスの作成は完了です。

POPアカウントはバーチャルドメイン使用にしましたのでメールアドレス形式でPOPする必要があります。

メールアドレスhoge@example.com
POPアカウントhoge@example.com

/home/vpopmail/etc/defaultdomainに指定したドメインであれば hoge のみでPOPできます。このデフォルトドメインはもちろん1ドメインでの利用しかできませんので慎重にきめましょう。

また、これだけの設定ですでにPOP before SMTPAPOP も対応しているんです。

今までの設定がvpopmailを使うようにすると本当に楽になりますね。

marronおすすめの参考書 by Amazon
Q-Mail Q-Mail
Oreilly & Associates Inc / John R. Levine, Russell Nelson
¥ 3,965
The Qmail Handbook The Qmail Handbook
Apress / Dave Sill
¥ 5,021
Running Qmail (Sams White Book Series) Running Qmail (Sams White Book Series)
Sams / Richard Blum

Copyright(C) 2004-2006 マロンくん.NET ~サーバ管理者への道~ All Rights. Reserved.