web-dev-qa-db-ja.com

Postfix + mysql:virtual_aliasesのキャッチオールと組み合わせたvirtual_users

MySQLを使用してドメイン名、ユーザー、エイリアスを定義するPostfix(およびDovecot)サーバーを実行しています。これはすべて正常に動作していますが、ここで、既に一部のユーザーが定義されているドメインにキャッチオールを追加したいと思います。 virtual_usersテーブルにユーザーを追加しました。ユーザーを接続してメールを送信することはできますが、送信されるすべてのメールはキャッチオールによってキャプチャされます。これを解決する方法はありますか?

関連する構成ファイルと詳細:

/etc/postfix/main.cf:

virtual_transport = lmtp:unix:private/dovecot-lmtp  
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf  
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf  
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf  
local_recipient_maps = $virtual_mailbox_maps  

mysql仮想ユーザーテーブル:

+----+-----------+--------------+------------------------+  
| id | domain_id | password     | email                  |  
+----+-----------+--------------+------------------------+  
|  2 |         1 | passwordhash | [email protected] |  
+----+-----------+--------------+------------------------+  

mysql仮想エイリアステーブル:

+----+-----------+------------------------+-------------------------------+  
| id | domain_id | source                 | destination                   |  
+----+-----------+------------------------+-------------------------------+  
|  2 |         1 | @example.com           | [email protected]   |  
+----+-----------+------------------------+-------------------------------+  
5

デフォルトでは、接尾辞は常にvirtual_alias_mapsfirstで検索します。したがって、常に別のマップの別のエントリをオーバーライドします(例:alias_mapsおよびvirtual_mailbox_maps)。したがって、virtual_mailbox_mapsで定義されているメールアドレスを除外する必要があります。

それを除外するには、main.cfでvirtual_alias_mapsの新しいmysqlマップを作成する必要があります。

virtual_alias_maps = mysql:/etc/postfix/mailbox.cf, mysql:/etc/postfix/mysql-virtual-alias-maps.cf

次に、mailbox.cfでクエリを定義します

SELECT email from VIRTUALUSERTABLE WHERE email = %s

それでおしまい。クエリが必要なので、result = key lookupです。これが発生した場合、Postfixはメールをエイリアスでキャッチオールユーザーに送信しません。

参照: 後置チュートリアル

10
masegaloeh

私のシステムで同様の問題を検索していることがわかりました。同じドメインのメールボックスへの転送をバイパスするため、mailbox.cfを追加しても機能しませんでした。キャッチオールを配置した同じドメインのメールボックスに転送する必要がある場合は、送信元アドレスと宛先アドレスを仮想エイリアステーブルに追加する必要があります。

たとえば、上記の質問で[email protected][email protected]に転送した場合、admin @ example.comにはメールが表示されません。 [email protected]にのみ到着します

「より具体的なエイリアスは、一般的なキャッチオールエイリアスよりも優先されます。」参照: https://workaround.org/book/export/html/376

同じドメインに対して、mailbox.cfを追加するのではなく、このような追加の転送をセットアップします。

+----+-----------+------------------------+-------------------------------+  
| id | domain_id | source                 | destination                   |  
+----+-----------+------------------------+-------------------------------+  
|  1 |         1 | [email protected] | [email protected]             |  
|  2 |         1 | [email protected] | [email protected]        |  
+----+-----------+------------------------+-------------------------------+  
1
Jason