Mailman3で遊んでいて、この問題が発生しました。mailman3、Webインターフェイス、およびhyperkittyがmailman-bundlerを使用してインストールされています。規定の接尾辞構成をmain.cf
に追加しました。
recipient_delimiter = +
unknown_local_recipient_reject_code = 550
owner_request_special = no
transport_maps = hash:/path/to/var/data/postfix_lmtp
local_recipient_maps = hash:/path/to/var/data/postfix_lmtp
relay_domains = hash:/path/to/var/data/postfix_domains
リストされたファイルは誰でも読み取り可能であるため、アクセス許可の問題はありません。 Webインターフェイスを介してドメイン/リストを正常に作成できますが、リストアドレスにメールを送信しようとすると、次のメッセージが表示されてメールが拒否されます。
Recipient address rejected: User unknown in virtual mailbox table
この接尾辞のインストールでは、通常、virtual_transport
を使用してメールをdovecotに配信します。対応する構成は次のようになります。
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-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
これは優れた 2時間であなたの電子メールをNSAプルーフする ガイドに基づいています。
さて、 このStackOverflowの質問 はvirtual_transport
とtransport_maps
がうまく連携しないと主張していますが、この主張を検証する後置ドキュメントには何も見つかりません。作者はtransport_maps
を使用するだけで問題を解決しましたが、これは私には選択肢ではないようです。
Mailman3のlocal_recipient_maps
オプションが、鳩小屋の配信の一部として以前の定義をオーバーライドするという警告も表示されることに注意してください。これは、1行に両方の値を次のように指定することで解決できます。
local_recipient_maps = $virtual_mailbox_maps hash:/path/to/var/data/postfix_lmtp
しかし、それは問題を解決しません。この作品を作るためのアイデアや経験はありますか? mailman3はまだ新しいと見なされていることに気づきました。だから私はそれで遊んでいます。
私はこれを理解しました。リンクされたStackOverflowの質問の主張は誤りであることが判明しました。 virtual_transport
とtransport_maps
を一緒に使用することは確かに可能です。私の問題は、virtual_mailbox_maps
がデータベースでメールボックスが定義されている場合にのみ1
を返すことを決定するために使用されるSQLクエリでした。そのチェックが失敗するとすぐに、メッセージは拒否されました。
-- from: mysql-virtual-mailbox-maps.cf
query = SELECT 1 FROM virtual_users WHERE name = 'name = '%s'
Mailman3マッピングをvirtual_mailbox_maps
設定に追加すると、問題が解決しました。これは私の作業構成です:
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 hash:/path/to/var/data/postfix_lmtp
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
local_recipient_maps = hash:/path/to/var/data/postfix_lmtp mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
transport_maps = hash:/path/to/var/data/postfix_lmtp
virtual_transport
をデフォルトにdovecotに設定しますが、リストアドレスをmailmanローカルトランスポートにマップするtransport_maps
でオーバーライドできます。