Postfixでバーチャルドメイン

Posted by joeartsea on 2009-02-26

Postfixで複数ドメイン運用する方法は幾つかありますが、最も手軽な方法はvirtual_alias_domainsで複数ドメインを設定する方法でしょう。まずPostfixの設定ファイルにvirtual_alias_domainsの行を追加します。RedHat系なら/etc/postfix/main.cfファイルをエディタで開いて修正します。

1
2
# vi /etc/postfix/main.cf
virtual_alias_domains = _example1.com, example2.com ←追加_

コンマ区切りで指定すれば複数のドメイン宛てメールを受け取れるようになります。たったこれだけで複数ドメインの最終配送先をこのサーバにすることができます。ただしメインドメインはvirtual_alias_domainsに指定せず従来どおりmydomainかmydestinationに直接指定します。通常、mydestinationにはmydomainを指定し、mydomainにメインドメイン名を定義します。

1
2
3
# vi /etc/postfix/main.cf
mydomain = _example.com ←メインドメイン_
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

さて、これでmydestinationとvirtual_alias_domainsで指定されたドメイン全ての最終配送先がこのメールサーバになったのですが、最終的に受け取ったメールを各ユーザに配賦するためには何かしらのマッピングを定義しなければなりません。それがvirtual_mapsになります。先ほどのvirtual_alias_domainsの下の行に以下を追加しましょう。

1
2
3
# vi /etc/postfix/main.cf
virtual_alias_domains = _example1.com, example2.com_
virtual_maps = hash:/etc/postfix/virtusertable_←追加_

hash:/etc/postfix/virtusertableは/etc/postfix/virtusertableというエイリアスファイルをルックアップテーブル形式で指定しています。つまりvirtusertableに受信メールアドレスと受信ユーザの対応表を設定し、そのマッピング設定を読み込むという流れです。/etc/postfix/virtusertableの中身は以下のようになります。

1
2
3
_#メールアドレス ユーザ_
[email protected].com user1
[email protected].com user2

最後にこのエイリアスファイルをpostmapコマンドでデータベース化します。

1
# postmap hash:/etc/postfix/virtusertable

ちなみにこのように設定すれば最もありがちなinfo@~メールアドレスも同じサーバで別のユーザが受け取ることができます。最後にPostfixを再起動することをお忘れなく。