前回の記事でエイリアスを設定することで、別メールに転送したりPHPスクリプトを実行したりできました。 通常、Postfixでは一つのドメインに対して設定を行うことができるのですが、VirtualDomainを使うことで、複数ドメインで同じようなことができます。
今回の目標
- contact@baz.com, contact@qux.com, contact@quux.com にメール送信すると、baz_contact@gmail.com, qux_contact@gmail.com, quux_contact@gmail.com にそれぞれメールが転送されるようにする
- register@baz.com にメール送信すると、指定したPHPスクリプトが実行される
サーバ環境
- CentOS 6.4
- Postfix 2.6.6
DNSの設定
ドメインのDNSを管理している管理画面(レジストラ、Route53など)で以下のようにDNSを設定します。
baz.com
ホスト名 | レコード | TTL | VALUE |
---|---|---|---|
baz.com | A | 60 | 101.102.103.104 |
mail.baz.com | A | 60 | 101.102.103.104 |
baz.com | MX | 60 | 10 mail.baz.com |
baz.com | TXT | 60 | v=spf +ip:101.102.103.104 -all |
qux.com
ホスト名 | レコード | TTL | VALUE |
---|---|---|---|
qux.com | A | 60 | 101.102.103.104 |
mail.qux.com | A | 60 | 101.102.103.104 |
qux.com | MX | 60 | 10 mail.qux.com |
qux.com | TXT | 60 | v=spf +ip:101.102.103.104 -all |
quux.com
ホスト名 | レコード | TTL | VALUE |
---|---|---|---|
quux.com | A | 60 | 101.102.103.104 |
mail.quux.com | A | 60 | 101.102.103.104 |
quux.com | MX | 60 | 10 mail.quux.com |
quux.com | TXT | 60 | v=spf +ip:101.102.103.104 -all |
Postfixの設定
VirtualDomainの設定
# /etc/postfix/main.cf
# 以下を追加
virtual_alias_domains = baz.com qux.com quux.com
virtual_alias_maps = hash:/etc/postfix/virtual
- virtual_alias_domainsは、virtualdomainのリストを指定します。半角スペースまたはコンマ(,)で複数のドメインを指定することができます
- 注意点は、 mydomain または mydestination で指定したドメインをvirtual_alias_domains に含めてはいけません
- virtual_alias_maps は、virtual_alias_domainsで指定したVirtualDomainのメールアドレスとのエイリアスを設定します
- /etc/postfix/virtual は実際に存在するファイルを指定します
エイリアスの設定
以下のように設定します。
# /etc/postfix/virtual
# メール転送
contact@baz.com baz_contact@gmail.com
contact@qux.com qux_contact@gmail.com
contact@quux.com quux_contact@gmail.com
# スクリプト実行
register@baz.com baz_register
# /etc/aliases
baz_register: "|/usr/bin/php /tmp/register.php"
virtual.db作成
ヴァーチャルドメイン用のデータベースを作成する必要があり、postmapコマンドで行います。
$ sudo postmap /etc/postfix/virtual
実行すると、/etc/postfix/virtual.dbが作成されます。
エイリアスの設定を反映
newaliasesコマンドを実行します。
$ sudo newaliases
Postfixを再起動
$ sudo service postfix restart
設定されたかの確認
postmapコマンドを使うことでVirtualDomainの設定が正しくされたかの確認ができます。
$ postmap -q "contact@baz.com" hash:/etc/postfix/virtual
baz_contact@gmail.com
$ postmap -q "contact@qux.com" hash:/etc/postfix/virtual
qux_contact@gmail.com
$ postmap -q "contact@quux.com" hash:/etc/postfix/virtual
quux_contact@gmail.com
$ postmap -q "register@baz.com" hash:/etc/postfix/virtual
baz_register
-q オプションでメールアドレスを指定すると、/etc/postfix/virtual で設定されたエイリアスが表示されるはずです。 もし何も表示されなければ、設定がどこかで間違っていると思いますので設定を見直してください。
最後に
VirtualDomainを設定して複数ドメインでメールの設定を行いました。 基本的には前回と同様にエイリアスを設定することで使えるようになりました。