技術資料

virtmapsを使った複数ドメインのメール管理方法

2007.10.18

error この記事は最終更新日から17年以上が経過しています。

virtmaps とは

同一サーバーで、複数のドメインを利用する、所謂バーチャルドメインとかバーチャルサブホストとか、そんな感じで呼ばれているやつで使います。

SMTPサーバーは、このバーチャルドメインとかバーチャルサブホストとか呼ばれるものを処理できないらしいです。

例えば、僕が使っているこのレンタルサーバーで、今「abe-tatsuya.com」(このブログのドメインですね)と「goodhope.jp」(仕事の方のサイトのドメインです)の二つを管理しています。

その場合、Apache(Webサーバー)は、「abe-tatsuya.com と goodhope.jpは別物だ」と理解していますが、SMTPサーバーの方は、「hatsunemiku@abe-tatsuya.com と hatsunemiku@goodhope.jp は、どちらも同じうちのサーバーの hatsunemiku アカウント宛のメールだ」としか理解できません。
つまり、どっちのドメイン宛にメール出しても「hatsunemiku」という同一のメールボックスに届くわけです。

これだと、複数のドメインの「info@~~」とか「webmaster@~~」とか「support@~~」みたいな、よくあるわかりやすいメールアドレスを、それぞれ別のメールボックスで管理できなくて不便ですよね。

それを解決するのが、 virtmaps です。

virtmaps の設定方法

~/etc/virtmaps という設定ファイルを編集することで、virtmaps の挙動を設定することができます。

基本的な使い方は簡単。例えば上記の例の場合なら、

hatsunemiku@abe-tatsuya.com	hatsunemiku_a
hatsunemiku@goodhope.jp	hatsunemiku_g

という二行を追加すれば、「hatsunemiku@abe-tatsuya.com」宛のメールは「hatsunemiku_a」というメールボックスへ。「hatsunemiku@goodhope.jp」宛のメールは「hatsunemiku_g」というメールボックスへ。それぞれ渡されます。
※もちろん、事前に「hatsunemiku_a」「hatsunemiku_g」というメールアカウントを作成しておく必要があります。

設定ファイルを編集したら、シェル上で、

% vnewvirtmaps

というコマンドを実行すれば、編集した設定が反映されます。

また、ちょっと便利な使い方としては、例に出した「hatsunemiku@goodhope.jp」なんていうメールアドレスの場合、メール送信者がアドレスを直接入力して送ろうとした際に、間違って「hatunemiku@goodhope.jp」宛に送ってしまう、というようなことは、ありがちですよね。

こういう時に、

hatsunemiku@goodhope.jp	hatsunemiku_g
hatunemiku@goodhope.jp		hatsunemiku_g

としておけば、スペルミスの方のメールアドレスでも、ちゃんとメールボックスにメールが届きます。
(まあこれは本来 aliases で設定するべきものかもですが……それを複数ドメインで実現するには virtmaps じゃないと無理ですよね)。

それと、 virtmaps ではドメイン名でのワイルドカードが使えるので、

abe-tatsuya.com	tatsuya

としておくと、「aaaaa@abe-tatsuya.com」だろうが「kameda-brothers@abe-tatsuya.com」だろうが、そのメールアカウントを作っている・作っていないおかまいなしに、全ての「abe-tatusya.com」ドメイン宛のメールが「tatusya」のメールボックスに届きます。
※もちろん「tatsuya」というメールアカウントだけは作っておかないといけませんが。

なお、virtmaps の設定ファイルは、上から順に判定されていき、マッチした時点で処理され、そこから先は判定されません。
ですので、

abe-tatsuya.com		tatsuya
hatsunemiku@abe-tatsuya.com	hatsunemiku_a

とやっちゃうと、「hatsunemiku@abe-tatsuya.com」宛のメールも一行目の条件にマッチしてしまうため、「hatsunemiku_a」には届かず「tatsuya」に届いてしまいます。

virtmaps でできないこと

まず、正規表現は使えません。

正規表現が使えたら、何かのWebアプリケーションの動作確認テストとかで大量にメールアドレスを作って、新規登録のエラーパターンを試したい、とかいう時に、

test\d{3}@goodhope.jp	test

とか設定できると、凄く便利なんですけどね……。

それと、届いたメールを、パイプを使って何らかのプログラムに渡すようなこともできません。

Webアプリケーション側で、ランダムな文字列でメールアドレスを生成して、そのアドレス宛にユーザーからメールを送ってもらうことで、何らかの認証をする、なんていう仕組みは、特に携帯関連でこれからどんどんニーズが高まっていくと思いますが(mixiとかOpenPNEなんかも携帯での投稿機能をそれで実現してますよね)、それを virtmaps だけで実現することは出来ません。

mobile-service.com	"|/home/tatsuya/mail-filter.pl"

みたいなことができたら、凄く便利なんですけどね……。

ただ、これには抜け道があります。
virtmaps と aliases では、virtmaps が先に処理されて、その後 virtmaps によって振り分けられたアカウントに対して、aliases での設定が処理されるからです。

aliases ならパイプが使えるので、 virtmaps には

mobile-service.com	mailfilter

みたいな感じで、全てのメールを mailfilter アカウントに渡すようにしておいて、 aliases の設定ファイルに、

mailfilter: "|/home/tatsuya/mail-fileter.pl"

という風に「mailfilter」というアカウント宛のメールを「/home/tatsuya/mail-fileter.pl」に渡すように設定しておけば、結果的に「mobile-service.com」ドメイン宛の全てのメールを、「/home/tatsuya/mail-fileter.pl」というプログラムに渡して、何らかの認証処理等を行うことができるわけです。

Apacheでホスト名を設定する方法—httpd.conf での設定手順

2010.04.03

Apacheで特定のホスト名でアクセスできるように設定する方法を解説します。httpd.conf に適切な設定を追加し、ホスト名と対応するディレクトリを指定する方法を紹介します。

UNIX/Linux

定期的なFTPバックアップ転送を自動化する方法

2009.09.14

FTPを使用して、定期的にサーバー間でバックアップデータを転送する方法を解説します。シェルスクリプトとcronを使って、毎日自動的にバックアップを転送する仕組みを作る手順を紹介します。

FTP UNIX/Linux

さくらのレンタルサーバーでメール受信時にスクリプトを起動する設定方法

2009.04.05

さくらのレンタルサーバーで、メール受信時に特定のスクリプトを自動で実行するための設定方法を詳しく解説します。必要なアカウント設定から、メール転送設定、スクリプトの実行権限設定までを一通り紹介します。

UNIX/Linux

パーミッション初心者ガイド:755 と 666 の違いを理解する

2009.03.17

755 や 666 の数字が指し示すファイル権限とは?初心者向けに、ファイルのパーミッション設定を理解するための基本的な知識を紹介します。

UNIX/Linux

阿部辰也へのお仕事の依頼・お問い合わせ

お名前 *必須
会社名
メールアドレス *必須
電話番号
URL
お問い合わせのきっかけ
お問い合わせの内容 *必須
個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP