以上の作業で、メールボックスやMaildirをバーチャルドメイン固有のユーザーごとに振り分けることが可能です。では、バーチャルドメインのアカウントしか持っていないユーザーは、どうやってサーバに保存されているメールを取り出したらいいのでしょうか。
本連載では、メールの取り出しにqmail-pop3dを使用しました。しかし、これまでに紹介したqmail-pop3d+checkpwやqmail-pop3d+checkpassword(第2回 POP/IMAPサーバの構築と不正中継対策)では/etc/passwd認証を使うため、サーバに登録されていないユーザーはPOPが使えません。同じ理由から、telnetでサーバに入ってimなどのUNIXメールコマンドを使用することもできません。この問題を解決するには、qmailにcheckpasswdやcheckpw以外の認証モジュールを組み込む必要があります。それが、これから紹介するvpopmailです。
vpopmailは、Inter7 Internet Technologies社(注)が提供しているソフトウェアです。バーチャルドメインやバーチャルユーザーを実現するとともに、APOP認証やPOP Before SMTPにも対応しています。大規模なサービスを展開する場合は、バーチャルユーザーをSQLデータベースに登録することも可能です。
では、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 |
次に、vpopmailが使用するユーザーとグループを登録します。ここでは、例としてgroupid、useridともに「89」を使用しています(注)。
# groupadd -g 89 vchkpw |
グループ名に「vchkpw」を使用しているのは、vpopmailが以前はvchkpwと呼ばれていたことに由来するものでしょう(注)。
useraddで作られるデフォルトのホームディレクトリは/home/vpopmailになります。/homeのディスク容量が足りない場合やバックアップルールでほかのディレクトリを指定したい場合などは、useraddを次のように実行します。
# useradd -g vchkpw -u 89 -d 指定の場所
vpopmail |
いよいよインストールです。POP Before SMTPに対応させるには、configureを次のように実行します。
# ./configure --enable-roaming-users=y |
POP Before SMTPで、最後のPOP接続からSMTPのRelayを許可する制限時間をデフォルトの3時間より短くする場合は、configure時に下記のオプションも指定します。
--enable-relay-clear-minutes=指定分数 |
# 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分にIPアドレスを整理して、接続から3時間以上(注)経過したものを除外します。
次に、既存のPOPサービスをvpopmailで置き換えるため、これまで使用してきたqmail起動スクリプト(第2回 POP/IMAPサーバの構築と不正中継対策)を下記のように変更します。
start) |
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 & |
書き換えたら、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 |
この後、atmarkit.jpバーチャルドメインの管理者用パスワードを入力します。このパスワードは、バーチャルユーザーの追加・削除でも使用します。パスワードは、vadddomainの2番目の引数として指定することも可能です。
# ./vadddomain atmarkit.jp 管理者用パスワード |
vadddomainコマンドにより、次のファイルに設定が追加されます。設定ファイルが存在しない場合は自動的に作成されます。
/var/qmail/control/locals |
次のファイルやディレクトリは新規に作成されます。
~vpopmail/domains/atmarkit.jp |
/var/qmail/control下のファイルを修正しているので、変更を有効にするためにqmail-sendプロセスを再起動します。
# ps aux | grep qmail-send |
以上でバーチャルドメインの追加作業は終了です。最初のバーチャルユーザーとしてpostmasterが用意されます。また、.qmail-defaultには、
| /var/vpopmail/bin/vdelivermail ''
bounce-no-mailbox |
の1行が追加され、あて先不明メールは「Sorry, no mailbox here by that name. vpopmail」というメッセージとともに返信されます。
登録したバーチャルドメインの削除には、vdeldomainコマンドを用います。
# cd ~vpopmail/bin |
vadddomainコマンドで作成したファイルやディレクトリ、追加された設定内容はバックアップされることなしに削除されます。バーチャルユーザーあてに届いているメールもMaildirごと削除されるので、vdeldomainコマンドの使用には細心の注意が必要です。
バーチャルドメインが用意できたら、バーチャルユーザーを追加してみましょう。先ほど作成したatmarkit.jpドメインに、ユーザー「user10」を追加します。
# cd ~vpopmail/bin |
または、
# ./vadduser user10@atmarkit.jp パスワード |
「@」以降のドメインが登録されたものでない場合はエラーになります(大文字・小文字の違いは無視されます)。ここで設定したパスワードを変更する場合は、vpasswdコマンドを使用します。
# ./vpasswd user10@atmarkit.jp |
または
# ./vpasswd user10@atmarkit.jp パスワード |
バーチャルユーザーを削除する場合は、vdeluserコマンドを使用します。
# cd ~vpopmail/bin |
バーチャルドメインの削除と同様、ユーザーの削除時にMaildirはバックアップされません。慎重に作業するように心掛けましょう。
では、実際にサーバに接続してみましょう。今回の例(バーチャルドメインatmarkit.jpをhost1.example.jp上で使用)では、メールクライアントに次のように設定します。POP接続とPOP Before SMTPの動作を確認してみましょう。
POPサーバ: | host1.example.jp |
---|---|
SMTPサーバ: | host1.example.jp |
ユーザー名: | user10@atmarkit.jp |
大抵のプロバイダでは「@」以前がユーザー名になりますが、vpopmailを使用した場合は「メールアドレスそのものがユーザー名」になります。これについては、NAMEベースのバーチャルドメインではなく、IPベースのバーチャルドメイン(バーチャルホストによる複数サイトの同時運用)を使用することで回避する方法もあります。
以上、バーチャルドメイン/バーチャルユーザーを利用する方法を紹介しました。昨今の流行であるバーチャルユーザーも、vpopmailを使えば簡単に導入できることがご理解いただけたと思います。強いてvpopmailの難点を挙げるとすれば、すべてrootでコマンドライン操作する必要があるということでしょうか。
実は、vpopmailには「qmailadmin」という強力なWebインターフェイスが用意されています。今回、SQL認証やquotaなどの管理者に必要と思われるオプションを紹介しなかったのは、このqmailadminを導入することで格段に管理操作が楽になるため、複雑な運用の話をするならqmailadminを紹介してからの方がいいのではと考えたからです。次回はvpopmailだけでなく、前回紹介したezmlmのWebインターフェイスとしても機能するqmailadminを紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.