前回までと同様に、qmailの動作を設定する場合は/var/qmail/control下のファイルを状況に合わせて編集します。
まず、バーチャルドメインあてに来たメールを受信可能にするため、rcpthostsファイルに次の行を追加します。
atmarkit.jp |
/var/qmail/control/rcpthosts |
2行目は「○○@host1.atmarkit.jp」や「○○@mail.atmarkit.jp」のように、メールアドレスにホスト名が指定されている場合でも受け取れるようにするもので、「*.atmarkit.jp」のようなワイルドカード指定になります。必要がなければ1行目だけでも構いません。
次にvirtualdomainsファイルを用意して、バーチャルドメインあてに来たメールの制御ができるように次の行を追加します。virtualdomainsファイルは標準では存在しないので、新規に作成する必要があります。
virtual_domain:user |
例えば、example.jpドメインのメールサーバとして運用されているホスト「host1」に、atmarkit.jpドメインをバーチャルドメインメールとして追加する場合を考えます。このhost1には、「mail_user」がホームディレクトリを持つユーザーとして登録されており、このユーザーが今回追加するatmarkit.jpドメインの管理を任されたとします。この場合、次のような行をvirtualdomainsファイルに追加します。
atmarkit.jp:mail_user |
/var/qmail/control/virtualdomains |
「.atmarkit.jp」は前述のワイルドカード指定になるため、必要に応じて追加・削除します。ファイルの編集が終わったら、変更を有効にするためにqmail-sendプロセスの再立ち上げを行います。
# ps aux | grep qmail-send |
制御は、mail_userのホームディレクトリ下の.qmailファイルで行います。user1@atmarkit.jpを同一サーバ内のuser1、すなわちuser1@example.jpに転送する場合は、.qmail-user1ファイルを用意して次の1行を追加します。
&user1 |
~mail_user/.qmail-user1 |
他ホストのアドレスに転送する場合も同様です。user2@atmarkit.jpをuser2@atmarkit.co.jpに転送するには、.qmail-user2ファイルを次のようにします。
&user2@atmarkit.co.jp
|
~mail_user/.qmail-user2 |
バーチャルドメインの管理を託されたユーザーは、自身のホームディレクトリに「.qmail-受け取りたいユーザー名」でファイルを作成し、中身を「&転送先アドレス」で記述します。/var/qmail/alias/で各エイリアスを作成した要領で(第1回 qmailによるSMTPサーバの構築)、指定されたバーチャルドメイン専用の「alias」ディレクトリを1ユーザーのホームディレクトリに作成できるというわけです。すなわち、/var/qmail/aliasでできることがそのまま使えます。
例えば、実在しないユーザーをまとめて代行受信する「キャッチオールアカウント」を使えるようにするには、.qmail-defaultファイルを用意すればいいことになります(第4回 メーリングリストの構築と運用(前編))。バーチャルドメインあてに来た、実在しないユーザー(すなわち「~/mail_user/.qmail-ユーザー名」ファイルが存在しない)のメールをuser3@atmarkit.co.jpで代行受信させるには次のようにします
&user3@atmarkit.co.jp
|
~/mail_user/.qmail-default |
/var/qmail/aliasでできることがバーチャルドメインでそのまま使えるということは、/var/qmail/aliasで用意しなければならなかった.qmailファイルを、同じように作成しておく必要性があるということを意味します。最低限、.qmail-postmasterや.qmail-rootを用意しておきましょう。単に、/var/qmail/alias下の同名ファイルにシンボリックリンクを張るだけでも構いませんし、バーチャルドメインの管理者を指定しておくというのも悪い選択ではありません。
virtualdomainsファイルは、次のように書くこともできます。
virtual_user@virtual_domain:user |
先の例で使用した「user2@atmarkit.jpをuser2@atmarkit.co.jpに転送」の場合、virtualdomainsファイルは次のように記述することもできます。
user2@atmarkit.jp:mail_user
|
/var/qmail/control/virtualdomains |
.qmail-user2ファイルを同じように、~mail_user/ディレクトリ下に作成します。
&user2@atmarkit.co.jp
|
~mail_user/.qmail-user2 |
2つのvirtualdomainsの書き方から分かるのは、「:」の前後で指定されたキーワードはuser/domainのくくりに関係なく、「:」の前で指定されたキーワードと送られてきたアドレスが後方一致する場合、メールアドレスに「:」後のキーワードを加えた拡張アドレス(第4回 メーリングリストの構築と運用(前編))に書き直し、ローカル配信に切り替えるということです。つまり、virtualdomainsファイルの記述が「suffix:prefix」で指定されている場合にuser4@suffixあてのメールが配信されてくると、アドレスを「prefix-user4@suffix」に書き直してローカル配信に切り替えます。
prefix-user4は拡張メールアドレスとして、prefix/ディレクトリ下の.qmail-user4ファイルの制御下に入ります。それを応用して、prefixにあらかじめ拡張アドレスを指定しておいたらどうなるでしょうか。
atmarkit.jp:mail_user-control1 |
/var/qmail/control/virtualdomains |
この場合、user5@atmarkit.jpあてに来たメールは、あて先がmail_user-control1-user5@atmarkit.jpに書き換えられることになります。すると、~mail_user/の.qmail-control1-user5ファイルで転送先を指定すればいいことになります。一見複雑な作業をしているように見えるこの方法には、メリットがあります。
まず、virtualdomaisファイルを用いたバーチャルドメインでは、管理者が2つのバーチャルドメインを管理する場合、同じバーチャルユーザーを別々の方法で制御することができません。例えば、user6@atmarkit.jpとuser6@atmarkit.co.jpをバーチャルドメインメールとして使用して、両ドメインともmail_userユーザーで管理し、かつuser6@atmarkit.jpはtest1@example.jpへ転送し、user6@atmark.co.jpはtest2@example.jpへ転送しなくてはいけない場合です。いままでの方法では次のような記述が考えられます。
atmarkit.jp:mail_user |
/var/qmail/control/virtualdomains |
この場合、user6@atmarkit.jpアドレス用に.~mail_user/qmail-user6ファイルを「&test1@example.jp」の内容で作成します。では、user6@atmarkit.co.jpアドレス用の~mail_user/.qmail-user6ファイルはどうなるでしょうか? すでに使用されているため、test2@example.jpへ転送するすべがありません。
複数のバーチャルドメインを1人のユーザーに管理させ、それぞれのバーチャルドメインのユーザーを独立して定義する場合は、prefixに拡張アドレスを使用します。今回の例では、
atmarkit.jp:mail_user-control1 |
/var/qmail/control/virtualdomains |
とし、メールアドレス「user6@atmarkit.jp」は~mail_user/.qmail-control1-user6ファイル、メールアドレス「user6@atmarkit.co.jp」は~mail_user/.qmail-control2-user6ファイルを使って制御すれば、目的を果たすことができます。
以上が、virtualdomainsファイルを使ったバーチャルドメインメールの構築法です。ここで、「この方法ではあらかじめ何らかのメールアドレスを持っていることが最低条件になるのでは?」と思われた方、正解です。ここまでは、バーチャルドメインメールをいかに転送させるかという観点で説明してきました。それがqmailでバーチャルドメインを扱ううえでの動作原理だからです。
しかし、/etc/passwordによる認証やほかのメールサーバに依存することなくユーザーを定義する、つまり「FTPやtelnetは要らないからメールだけ使えるユーザーをバーチャルドメインごとに作りたい!」という要求もあるでしょう。現状のqmailで、そこまで可能でしょうか? まず、メールボックスの振り分けが可能かどうかから見ていきましょう(注)。
バーチャルドメインあてに来たメールの最終的な制御には、.qmailファイルを使用します。.qmailファイルは単に転送先を指定するだけでなく、ローカルのファイルや個別のMaildirに配信することも可能です。user2@atmarkit.jpあてのメールを~mail_user/Maildir.user2/に保存する場合は、次のように.qmail-user2ファイルを作成します。
./Maildir.user2/ |
~mail_user/.qmail-user2 |
次に、mail_user権限でMaildir.user2ディレクトリをMaildir形式で作成します。
$ /var/qmail/bin/maildirmake Maildir.user2 |
この作業をrootで行う場合は、
# /var/qmail/bin/maildirmake Maildir.user2 |
として、オーナーを変更することをお忘れなく。
Mailbox形式で保存する場合は、.qmailの中身を変えます。
./Mailbox.user2 |
~mail_user/.qmail-user2 |
Mailboxファイルは、最初のメールが配送されたときに自動で作成されます。
Copyright © ITmedia, Inc. All Rights Reserved.