Я играю с 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
который сопоставляет адреса списка с местным транспортом почтальона.