Email

讓 mailman3 與 postfix 和 dovecot 配合得很好

  • November 3, 2015

我正在玩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 安裝通常使用 avirtual_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_transporttransport_maps不能很好地結合在一起,儘管我在 postfix 文件中找不到任何可以驗證這一說法的東西。作者已經解決了他們的問題,只是使用transport_mapswhich 似乎對我來說不是一個選項。

請注意,我還收到一個警告,即local_recipient_mapsmailman3 中的選項會覆蓋早期的定義,作為 dovecot 傳遞的一部分。這可以通過在一行上指定兩個值來解決,如下所示:

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

但這並不能解決問題。有沒有人有任何想法或經驗來完成這項工作?我意識到 mailman3 仍然被認為是新的。這就是我玩它的原因。

我已經弄清楚了這一點。原來連結的 StackOverflow 問題中的聲明是錯誤的。確實可以virtual_transporttransport_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

引用自:https://serverfault.com/questions/733304