Назад | Перейти на главную страницу

Получение mailman3 для приятной игры с postfix и dovecot

Я играю с mailman3, и я столкнулся с этой проблемой: mailman3, веб-интерфейс, а также 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

Перечисленные файлы доступны для чтения всем, поэтому проблем с разрешением быть не должно. Я могу успешно создать домен / список через веб-интерфейс, но когда я пытаюсь отправить почту на адрес списка, почта отклоняется со следующим сообщением:

Recipient address rejected: User unknown in virtual mailbox table

Эта установка postfix обычно использует virtual_transport доставлять почту в голубятню. Соответствующая конфигурация выглядит так:

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 часа руководство.

Сейчас, этот вопрос StackOverflow заявляет, что virtual_transport и transport_maps не работают вместе, хотя я не могу найти ничего в документации по postfix, подтверждающей это утверждение. Автор решил свою проблему, просто используя transport_maps что не кажется мне вариантом.

Обратите внимание, что я также получаю предупреждение о том, что 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 к дефолт на голубятню, но позволяет переопределить transport_maps который сопоставляет адреса списка с местным транспортом почтальона.