web-dev-qa-db-ja.com

mailman3をpostfixとdovecotでうまく再生する

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_transporttransport_mapsがうまく連携しないと主張していますが、この主張を検証する後置ドキュメントには何も見つかりません。作者はtransport_mapsを使用するだけで問題を解決しましたが、これは私には選択肢ではないようです。

Mailman3のlocal_recipient_mapsオプションが、鳩小屋の配信の一部として以前の定義をオーバーライドするという警告も表示されることに注意してください。これは、1行に両方の値を次のように指定することで解決できます。

local_recipient_maps = $virtual_mailbox_maps hash:/path/to/var/data/postfix_lmtp

しかし、それは問題を解決しません。この作品を作るためのアイデアや経験はありますか? mailman3はまだ新しいと見なされていることに気づきました。だから私はそれで遊んでいます。

4
Stephan Klein

私はこれを理解しました。リンクされたStackOverflowの質問の主張は誤りであることが判明しました。 virtual_transporttransport_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でオーバーライドできます。

3
Stephan Klein