連載
» 2002年02月09日 00時00分 UPDATE

実用qmailサーバ運用・管理術(6):バーチャルドメインにおけるqmailの運用 (3/3)

[鶴長鎮一,@IT]
前のページへ 1|2|3       

POP Before SMTP機能付きvpopmailの導入

 以上の作業で、メールボックスやMaildirをバーチャルドメイン固有のユーザーごとに振り分けることが可能です。では、バーチャルドメインのアカウントしか持っていないユーザーは、どうやってサーバに保存されているメールを取り出したらいいのでしょうか。

 本連載では、メールの取り出しにqmail-pop3dを使用しました。しかし、これまでに紹介したqmail-pop3d+checkpwやqmail-pop3d+checkpassword(第2回 POP/IMAPサーバの構築と不正中継対策)では/etc/passwd認証を使うため、サーバに登録されていないユーザーはPOPが使えません。同じ理由から、telnetでサーバに入ってimなどのUNIXメールコマンドを使用することもできません。この問題を解決するには、qmailにcheckpasswdやcheckpw以外の認証モジュールを組み込む必要があります。それが、これから紹介するvpopmailです。

vpopmailのインストール

 vpopmailは、Inter7 Internet Technologies社()が提供しているソフトウェアです。バーチャルドメインやバーチャルユーザーを実現するとともに、APOP認証やPOP Before SMTPにも対応しています。大規模なサービスを展開する場合は、バーチャルユーザーをSQLデータベースに登録することも可能です。

注:同社は、qmailのインストールや保守などの有償サポートを手掛ける一方、vpopmailをはじめとする多数のqmailアドインソフトをGPLライセンスで無償提供しています。http://www.inter7.com/

 では、vpopmailをPOP Before SMTPが使えるようにインストールします。最新版であるvpopmail-5.0.1.tar.gzをhttp://www.inter7.com/vpopmail/download.htmlからダウンロードし、適当な作業ディレクトリに展開します。

# tar xvfz vpopmail-5.0.1.tar.gz
# cd vpopmail-5.0.1

 次に、vpopmailが使用するユーザーとグループを登録します。ここでは、例としてgroupid、useridともに「89」を使用しています()。

注:「マシンの管理に必要なアカウントは0?99を使用する」という習慣に従っています。それぞれの環境に合わせて使用してください。

# groupadd -g 89 vchkpw
# useradd -g vchkpw -u 89 vpopmail

 グループ名に「vchkpw」を使用しているのは、vpopmailが以前はvchkpwと呼ばれていたことに由来するものでしょう()。

注:どうして改名したかについては、ソースに付属しているFAQの「10. Why was the name of the package changed from vchkpw to vpopmail?」に書かれています。

 useraddで作られるデフォルトのホームディレクトリは/home/vpopmailになります。/homeのディスク容量が足りない場合やバックアップルールでほかのディレクトリを指定したい場合などは、useraddを次のように実行します。

# useradd -g vchkpw -u 89 -d 指定の場所 vpopmail

 いよいよインストールです。POP Before SMTPに対応させるには、configureを次のように実行します。

# ./configure --enable-roaming-users=y
# make
# make install-strip

 POP Before SMTPで、最後のPOP接続からSMTPのRelayを許可する制限時間をデフォルトの3時間より短くする場合は、configure時に下記のオプションも指定します。

--enable-relay-clear-minutes=指定分数

コラム 管理者必見のconfigureのオプション

# configure --help.


を実行すると、ほかにもさまざまなオプションあることが分かります。中には、ディスク使用容量を制限するquotaなど、管理者垂ぜんのオプションが多数用意されています。SQLデータベースやLDAPを利用した認証なども大変興味深いのですが、これらは次回に紹介します。


 vpopmailによるPOP Before SMTPの仕組みは、第2回 POP/IMAPサーバの構築と不正中継対策で紹介したrelay-ctrlと同じです。ただし、/etc/tcp.smtpや/etc/tcp.smtp.cdbファイルは、tcpserverのデフォルト位置のものではなく、vpopmailが用意する/home/vpopmail/etc/tcp.smtpと/home/vpopmail/etc/tcp.smtp.cdbを使用します。/home/vpopmail/etc/tcp.smtpを新規に作成する場合は、次の1行があれば十分です。

127.:allow,RELAYCLIENT=""

 POP Before SMTPの仕組みがrelay-ctrlと同じであることは前述しました。これは、POP接続してきた端末IPアドレスの記録も同じように行われ、それを定期的に消す作業も同じく必要になるということです。vpopmailでも、cronデーモンを利用して行います。

# crontab -e
40 * * * * /home/vpopmail/bin/clearopensmtp > /dev/null 2>&1

 これで、毎時40分にIPアドレスを整理して、接続から3時間以上()経過したものを除外します。

注:configure時に「--enable-relay-clear-minutes」を付加した場合は、そこで指定された分数になります。

 次に、既存のPOPサービスをvpopmailで置き換えるため、これまで使用してきたqmail起動スクリプト(第2回 POP/IMAPサーバの構築と不正中継対策)を下記のように変更します。

start)
〜省略〜
#Vsmtp
/usr/local/bin/tcpserver -H -R -l [サーバのFQDN] -v -x /home/vpopmail/etc/tcp.smtp.cdb -u [qmaildのUID] -g [nofilesのGID] 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
(/usr/local/bin/tcpserver〜smtpd 3 &までを1行で記述)

#Vpop
/usr/local/bin/tcpserver -H -R -l [サーバのFQDN] -v 0 pop3 /var/qmail/bin/qmail-popup [サーバのFQDN] /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 3 &
(/usr/local/bin/tcpserver〜smtpd 3 &までを1行で記述)

stop)
〜省略〜

 UNIX認証であるcheckpasswordなどの認証プログラムと併用する場合は、どちらかのポート番号を変更する必要があります。vpopmailを1100番で起動させるには、tcpserverのオプションで「1100」を指定します。

/usr/local/bin/tcpserver -H -R -l [サーバのFQDN] -v 0 1100 /var/qmail/bin/qmail-popup [サーバのFQDN] /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 3 &
(/usr/local/bin/tcpserver〜smtpd 3 &までを1行で記述)

 書き換えたら、qmailを再起動します。

コラム ポート番号

 TCP/IPポート番号の割り当ては、自由に選択できるわけではありません。予約されている番号があるため、使用されていないものを見つけて割り当てます。

0〜1023番 WELL KNOWN PORT NUMBERS(よく使用されるポート)
1024〜49151番 REGISTERED PORT NUMBERS(すでに割り当てが決まっているポート)
参考:RFC 1700「ASSIGNED NUMBERS」http://www.atmarkit.co.jp/fwin2k/network/tcpip002/rfc1700.txt


 以上でインストールは終了です。vpopmailユーザーのホームディレクトリ(デフォルトは/home/vpopmail)には、いくつかのファイルが作成されていると思います。これらのファイルを使用したvpopmailの操作方法を順に見ていきましょう。

バーチャルドメインの追加・削除

 バーチャルドメインを追加するには、vpopmailユーザーのホームディレクトリ(以下~vpopmail)下のbin/ディレクトリにあるvadddomainコマンドを使用します。これを使って、atmarkit.jpドメインをバーチャルドメインに追加してみましょう。

# cd ~vpopmail/bin
# ./vadddomain atmarkit.jp

 この後、atmarkit.jpバーチャルドメインの管理者用パスワードを入力します。このパスワードは、バーチャルユーザーの追加・削除でも使用します。パスワードは、vadddomainの2番目の引数として指定することも可能です。

# ./vadddomain atmarkit.jp 管理者用パスワード

 vadddomainコマンドにより、次のファイルに設定が追加されます。設定ファイルが存在しない場合は自動的に作成されます。

/var/qmail/control/locals
/var/qmail/control/rcpthosts
(rcphostsが50行以上の場合は/var/qmail/control/morercpthostsになる)
/var/qmail/control/virtualdomains
/var/qmail/users/assign
/var/qmail/users/cdb

 次のファイルやディレクトリは新規に作成されます。

~vpopmail/domains/atmarkit.jp
~vpopmail/domains/atmarkit.jp/postmaster/Maildir
~vpopmail/domains/atmarkit.jp/vpasswd
~vpopmail/domains/atmarkit.jp/vpasswd.cdb

 /var/qmail/control下のファイルを修正しているので、変更を有効にするためにqmail-sendプロセスを再起動します。

# ps aux | grep qmail-send
qmails プロセスID  0.0  0.1  1088  368 ?  S Jan31  0:00 qmail-send
# kill -HUP プロセスID

 以上でバーチャルドメインの追加作業は終了です。最初のバーチャルユーザーとしてpostmasterが用意されます。また、.qmail-defaultには、

| /var/vpopmail/bin/vdelivermail '' bounce-no-mailbox

の1行が追加され、あて先不明メールは「Sorry, no mailbox here by that name. vpopmail」というメッセージとともに返信されます。

 登録したバーチャルドメインの削除には、vdeldomainコマンドを用います。

# cd ~vpopmail/bin
# ./vdeldomain atmarkit.jp

 vadddomainコマンドで作成したファイルやディレクトリ、追加された設定内容はバックアップされることなしに削除されます。バーチャルユーザーあてに届いているメールもMaildirごと削除されるので、vdeldomainコマンドの使用には細心の注意が必要です。

バーチャルユーザーの追加・削除

 バーチャルドメインが用意できたら、バーチャルユーザーを追加してみましょう。先ほど作成したatmarkit.jpドメインに、ユーザー「user10」を追加します。

# cd ~vpopmail/bin
# ./vadduser user10@atmarkit.jp

または、

# ./vadduser user10@atmarkit.jp パスワード

 「@」以降のドメインが登録されたものでない場合はエラーになります(大文字・小文字の違いは無視されます)。ここで設定したパスワードを変更する場合は、vpasswdコマンドを使用します。

# ./vpasswd user10@atmarkit.jp

または

# ./vpasswd user10@atmarkit.jp パスワード

 バーチャルユーザーを削除する場合は、vdeluserコマンドを使用します。

# cd ~vpopmail/bin
# ./vdeluser user10@atmarkit.jp

 バーチャルドメインの削除と同様、ユーザーの削除時にMaildirはバックアップされません。慎重に作業するように心掛けましょう。

 では、実際にサーバに接続してみましょう。今回の例(バーチャルドメインatmarkit.jpをhost1.example.jp上で使用)では、メールクライアントに次のように設定します。POP接続とPOP Before SMTPの動作を確認してみましょう。

POPサーバ: host1.example.jp
SMTPサーバ: host1.example.jp
ユーザー名: user10@atmarkit.jp

コラム メールアドレス自体がユーザー名

 大抵のプロバイダでは「@」以前がユーザー名になりますが、vpopmailを使用した場合は「メールアドレスそのものがユーザー名」になります。これについては、NAMEベースのバーチャルドメインではなく、IPベースのバーチャルドメイン(バーチャルホストによる複数サイトの同時運用)を使用することで回避する方法もあります。


qmailadminによる高度な運用は次回!

 以上、バーチャルドメイン/バーチャルユーザーを利用する方法を紹介しました。昨今の流行であるバーチャルユーザーも、vpopmailを使えば簡単に導入できることがご理解いただけたと思います。強いてvpopmailの難点を挙げるとすれば、すべてrootでコマンドライン操作する必要があるということでしょうか。

 実は、vpopmailには「qmailadmin」という強力なWebインターフェイスが用意されています。今回、SQL認証やquotaなどの管理者に必要と思われるオプションを紹介しなかったのは、このqmailadminを導入することで格段に管理操作が楽になるため、複雑な運用の話をするならqmailadminを紹介してからの方がいいのではと考えたからです。次回はvpopmailだけでなく、前回紹介したezmlmのWebインターフェイスとしても機能するqmailadminを紹介します。


前のページへ 1|2|3       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。