« phpの設定ファイル /etc/php.ini のmbstring について | メイン | F-Prot Antivirus for Linux Workstationsの導入 »

Postfixでバーチャル運営

Postfixの設定にバーチャルを適用することにより
複数のドメインでメールの送受信が行う事が出来るようになる。

この編ではPostfixが先ず正常に動作していることが大前提である。

当方のメールサーバのシステムはSMTPーAUTH認証によるものである。
この編ではSMTP-AUTHの設定は割愛致します。

機会があれば別スレを立てますのでそちらで御願いします。

■設定を触るファイルは以下のファイル
/etc/postfix/main.cf
/etc/postfix/virtual
/etc/postfix/sender_canonical


▼main.cfの設定

#vi /etc/postfix/main.cf
最下部に


### Virtual による送受信の設定  ###
virtual_alias_maps = hash:/etc/postfix/virtual
sender_canonical_maps = hash:/etc/postfix/sender_canonical

等とバーチャルでの送受信の際の参照先を追加する。

:wq

Postfixが参照するファイルは後述するが
virtual.db
sender_canonical.db
になる予定。

 

■送信側の設定
sender_canonicalファイルはデフォルトでcanonicalというファイルが用意されているようだ。
自分でわかりやすくするために新規に作成しました。

このファイルに「実在ユーザー 対応するバーチャルドメインユーザー」
という書式で列挙していく。
「実在するunixユーザ  送信するアドレス」の形でも良い。

これによって実在ユーザーで送信したメールの送信者のアドレスが、
バーチャルドメインのユーザーに書き換えられるとのこと…

実在ユーザ = user
対応するバーチャルドメインのユーザ = ***@***.com
とする。

#vi /etc/postfix/sender_canonical
user   ***@***.com

と追加してみた。

postmapコマンドを用いハッシュデータベースを作成し設定を反映させる。


#postmap /etc/postfix/sender_canonical
#service postfix restart

先ほど、main.cfで
sender_canonical_maps = hash:/etc/postfix/sender_canonical
としたが「hash:」をつけて「hash:/etc/postfix/sender_canonical」と指定した場合
「/etc/postfix/sender_canonical.db」が参照されるためmain.cf内の
「hash:/etc/postfix/sender_canonical」には拡張子である「.db」を付す必要はない。

■受信側の設定
受信側の設定もまた「/etc/postfix/virtual」で「/etc/postfix/sender_canonical」 で設定したように
記述していくわけだがフォーマットは「受信するメールアドレス  実在するunixユーザ」と記述していく。

#vi /etc/postfix/virtual
***.com anything
***@***.com   user

:wq

この場合の「***.com anything」はドメイン名を付す。

postmapコマンドを使い設定を反映させる。


#postmap /etc/postfix/virtual


「virtual.db」が作成されたかどうか確認。

#ls /etc/postfix/virtual.db

出来ている。

#service postfix restart


postfixを再起動。

■ここからが結構はまった…
さてここで先ほど設定したバーチャルで送受信をLAN内部・外部ともへいろいろ送受信してみる。

出来ているぞ…

さて、ログの確認を…


#cat /var/log/maillog
#do not list bbb.com in BOTH mydestination and virtual_alias_domains


??何かダブって記述したのか??
「mydestination と virtual_alias_domains の両方にbbb.com ドメインを記述してはいけない」
と直訳すればそうだが…

# postconf -n
としてpostfixの設定ファイルを今一度確認する。

mydestination = $myhostname, localhost.$mydomain, $mydomain, aaa.net, bbb.com

mydestination = $myhostname, localhost.$mydomain, $mydomain

こうしなくてはいけないのかな?

バーチャルで運用する場合mydestinationには認識したいドメインを列挙していくはずだったが…

■結果
この判断で良かった。
これに加えもう一点ある。

myhostnameとmydomainを同じ名前にしていたことも原因だったのかもしれない。
この直前にDNSサーバを構築したので
myhostname = aaa.net を myhostname = mail.aaa.net
としてやった。

myhostname と mydomain を同じにした場合は
mydestination と virtual_alias_domains に同じドメインを
指定したことになるので恐らくこのエラーを吐いたのではないかと推測。

現在はエラー無くして正常に稼働中である。

トラックバック

このエントリーのトラックバックURL:
http://jpaccess.net/cgi-bin/blog/mt-tb.cgi/224

コメントを投稿