讓 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
這個 postfix 安裝通常使用 a
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
這是基於出色的NSA-proof your email in 2 hours指南。
現在,這個 StackOverflow 問題聲稱
virtual_transport
並transport_maps
不能很好地結合在一起,儘管我在 postfix 文件中找不到任何可以驗證這一說法的東西。作者已經解決了他們的問題,只是使用transport_maps
which 似乎對我來說不是一個選項。請注意,我還收到一個警告,即
local_recipient_maps
mailman3 中的選項會覆蓋早期的定義,作為 dovecot 傳遞的一部分。這可以通過在一行上指定兩個值來解決,如下所示:local_recipient_maps = $virtual_mailbox_maps hash:/path/to/var/data/postfix_lmtp
但這並不能解決問題。有沒有人有任何想法或經驗來完成這項工作?我意識到 mailman3 仍然被認為是新的。這就是我玩它的原因。
我已經弄清楚了這一點。原來連結的 StackOverflow 問題中的聲明是錯誤的。確實可以
virtual_transport
和transport_maps
一起使用。我的問題是用於確定的 SQL 查詢virtual_mailbox_maps
自然只會1
在數據庫中定義郵箱時返回。一旦該檢查失敗,該消息就被拒絕。-- 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,但允許將列表地址映射到郵遞員本地傳輸來覆蓋它。transport_maps