娘とプリキュアオールスターズの映画を見ながらGoogle Appsを有料のPremier Editionにアップグレードした時の良い使いどころを考えていたら、ふとメールサーバのGoogle Appsへの移転時のミスに気が付きました。
daiwainsatsu.comはとあるサーバでバーチャルドメインの一つとして設定されているのですが、メールサーバをGoogle Appsに移転したのにも関わらずPostfixのバーチャルドメインの設定がそのまんまだったので同じセグメントで運用している他のバーチャルドメインからのメールがGmailに行ってませんでした。そりゃそうですよね・・・orz
せっかく7つもMXレコード書いたのに当然ですがそのことを知らないPostfixは今まで通りローカルのフォルダにそのままメールを配信していたわけです。外部からのメールは送受信ともに確認したが内部同士は全然忘れてました。まぁメールを消失したわけではないので大した問題ではありませんが、経験上この手の問題は根本治療しておかないと後から大変なことになる可能性があります。というワケでこれを機にPostfixのバーチャルドメイン設定の復習をしました。
Postfixでのバーチャルドメインの設定は基本的な設定が済んでいてユーザへ問題なくメールが配信されていればあとは簡単です。
まずは設定ファイルmain.cfのvirtual_alias_mapsの記述を確認します。
このhashというのはBerkeley DBを表しています。
/etc/postfix/main.cf
virtual_alias_maps = hash:/etc/postfix/virtual
使用可能なデータベースの形式はpostconfコマンドで確認できます。
# postconf -m btree cidr environ hash ldap nis pcre proxy regexp static unix
そのハッシュテーブルを作ります。
最初の一行目にはドメインを書きます。anythingの部分は何でもいいので説明とか入れとけばいいと思いますが慣例だとanythingとします。
二行目以降にメールアドレスとそれを受け取るユーザ名を書きます。
/etc/postfix/virtual
hogehoge.com anything hoge@hogehoge.com hoge info@hogehoge.com info webmaster@piyopiyo.com webmaster fuga@hogehoge.com fugahoge piyopiyo.com anything piyo@piyopiyo.com piyo info@piyopiyo.com info webmaster@piyopiyo.com webmaster fuga@piyopiyo.com fugapiyo
このようにvirtualに書くとhoge@hogehoge.comとpiyo@piyopiyo.comに来たメールはそれぞれユーザhogeとユーザpiyoに届きますが、info@hogehoge.comとinfo@piyopiyo.com、webmaster@piyopiyo.comとwebmaster@piyopiyo.comに来たメールは同じユーザに届くことになります。別のユーザに届ける場合はfugahogeやfugapiyoの様にしてその分ユーザを作らなければなりません。
ハッシュテーブルを書いただけではだめです。次にpostmapコマンドでハッシュテーブルをデータベース化してBerkeley DB形式のvirtual.dbを作ります。
# postmap /etc/postfix/virtual
後はpostfixをリロードして完了です。
# postfix reload
で、今回はこの/etc/postfix/virtualのGoogle Appsに移転した該当ドメイン関連の記述をコメントアウトして問題解決です。これでちゃんとBINDのMXレコードを見てそこに書いたサーバにメールを飛ばしてくれました。












