ヘプタゴンの技術ブログ

サーバ/ネットワーク/linux/AWSとか青森を拠点でやってます

Postfixadmin環境でドメイン毎にcatch Allを設定する

通常postfixでは、
存在しないアカウント宛(メールアドレスの@より前)のメールは
SMTP接続のRCPT TOの段階でエラーを返送し、
メールを受け取りません。

今回はqmailのように、存在しないアカウント宛でもメールを受け取り、
特定のメールアドレスで受信する設定(catch all:キャッチオール)を
行います。

なお、postfix+dovecot+mysql+postfixadminで構築済みの環境を想定しています。
まだの場合はこの辺を参考に。

http://e-garakuta.net/techinfo/doku.php/linux/postfix-virtual

vi /etc/postfix/main.cf
————–

virtual_mailbox_maps = proxy:mysql:$config_directory/mysql_virtual_mailbox_maps.cf

virtual_mailbox_maps = proxy:mysql:$config_directory/mysql_virtual_mailbox_maps.cf,hash:/etc/postfix/virtual
————–
=>mysqlに加えて、virtualファイルでもメールアドレスの参照を行うようにする。
最初にpostfixadminで設定されているアドレスはmysqlを参照して配送され、
次にpostfixadminで設定されていないアドレスは、virtualを参照するようになる。

vi /etc/postfix/virtual
————
@test.com test.com/test@test.com/
————
=>ドメイン宛のすべてのメールを配送したメールボックス(Maildir形式)へ配送する。

postmap /etc/postfix/virtual

/etc/init.d/postfix reload

 

上記を組み合わせることで、
postfixadminで配送されないメール(存在しないアカウント)を、
ドメイン毎に任意のメールボックスへ配送することが可能となります。

もし、キャッチオールアドレスが1つの場合は、
luser_relayを使って制御もできるのかな。