Postfix バーチャルドメイン(VirtualDomain)を利用し複数ドメインを受信する

Postfix バーチャルドメイン(VirtualDomain)を利用し複数ドメインを受信するには?

この疑問に回答します。

クラウド型のメール(Office365やGmail)の普及により、最近は自身でメールサーバーを構築する機会が減ってきました。急激に用途が変わって来たことを感じます。

各種Webサービスからの通知メールやメルマガ送信された際の返信先は集約させています。集約するには複数ドメインを受信出来る必要があります。このような場合は、Postfixのバーチャルドメイン(VirtualDomain)を利用すると便利です。

バーチャルドメイン(VirtualDomain)とは

Postfixの設定ファイル main.cf で記載するドメイン(mydomain や mydestination)以外のドメインを受信出来るようにするための機能です。

Postfixの設定

Virtual Domain(/etc/postfix/main.cf)の設定

Postfixの設定ファイル(main.cf)に記載してバーチャルドメインを有効化させます。

# vi /etc/postfix/main.cf
virtual_alias_maps = hash:/etc/postfix/virtual

Virtual Domainの設定は外部ファイルで管理します。設定自体はとても簡単ですが注意点があります。

  • mydomain  mydestination に指定したドメインを virtual_alias_domains に含めないこと
  • メールの配送先ユーザーは存在していること
この事だけを忘れないようにしてください。

Virtual Domain(/etc/postfix/virtual)の設定

# vi /etc/postfix/virtual
# Virtual Domains
hogehoge.jp                       virtual
# Virtual alias
noreplay@hogehoge.jp                 user1
webmaster@hogehoge.jp                user2

まず初めに、バーチャルドメインを記載します。

その後に受信するバーチャルドメインのメールアドレスと実際に配送するユーザー名を記載します。

Virtual Domain設定の反映

先ほど設定を加えた /etc/postfix/virtual をハッシュ化させる必要があります。postmapコマンドを利用します。

# postmap /etc/postfix/virtual

ハッシュ化すると、/etc/postfix/virtual.db というファイルが作成されます。stringsコマンドを利用するとハッシュ化された中身を見る事が可能です。

# strings /etc/postfix/virtual.db
user1
noreplay@hogehoge.jp
user2
webmaster@hogehoge.jp 
virtual
hogehoge.jp

Postfixにハッシュ化したファイルを読み込ませます。

CentOS 6 以前の場合

# /etc/init.d/postfix reload

CentOS 7 以降の場合

# systemctl reload postifx 

aliases の設定

Postfixのバーチャルドメインは便利なのですが、一つだけダメところは存在しているユーザー(/etc/passwordに載っている)の必要があります。ユーザーにローカル配送されると不便なので、aliases を利用して別のメールアドレスに転送します。

# vi /etc/aliases
noreplay:   userA@hogehoge.com
webmaster:  userB@hogehoge.com

このaliasesファイルもハッシュ化させて、Postfixに読み込ませる必要があります

# newaliases

CentOS 6 以前の場合

# /etc/init.d/postfix reload

CentOS 7 以降の場合

# systemctl reload postifx 

以上、「Postfix バーチャルドメイン(VirtualDomain)を利用し複数ドメインを受信する」という記事でした。

コメント