Я пытаюсь установить почтовый сервер с помощью этой статьи. В основном с помощью постфикса и голубятни.
У меня есть тестовая установка, которая работает, но я не понимаю некоторых (много) материала, и пытаюсь исправить это перед миграцией.
Из многих вещей это наиболее сбивает с толку: Я не понимаю, как вторая часть параметра $virtual_mailbox_maps работает.
У меня есть следующее в main.cf:
virtual_mailbox_maps = hash:/etc/postfix/virtual-mailbox-users
Мой/etc/postfix/virtual-mailbox-users смотрит как
user@domain1.com user@domain1.com
user@domain2.com user@domain2.com
etc, etc.
Во-первых, где я могу найти документацию второго параметра форматом user@domain1.com, большинство форматов имеет форму файла или каталога (как в/a/b/c).
Если я заменяю второй параметр чем-то еще, например,
user@domain1.com /tmp/foo
затем я могу отправить почту в user@domain1.com, но не от, который приводит к:
Мой второй вопрос: SMTP использует $virtual_mailbox_maps? (И почему, так как это уже имеет адрес электронной почты как основной параметр?). Голубятня использует $virtual_mailbox_maps?
(У меня есть партии больше вопросов, но это может помочь мне распутать некоторых. Например, я могу иметь всю почту к user@domain*.com, поставленному одному из почтовых ящиков, сказать user@domain1.com?)
(Извините декларативную природу заголовка, мой оригинал запустился с, 'Как к', но был отклонен.)
Я сделал эксперимент, где я заменил запись $virtual_mailbox_maps, например, user@domain1.com OK
, и доставка работала, но отказавшее электронное письмо отправки (с отклоненным адресом Отправителя: не принадлежавший пользователю). Так, правая сторона (значение) вопросы. Это - то, о чем был мой первый вопрос. (Я прочитал различные документы, описывающие формат, и т.д., но не могу найти ничего, что говорит конкретно о взаимодействии с SMTP.
Приложение: Благодаря @masegaloeh для того, чтобы разыскать это. Соответствующая конфигурация следующим образом, и 'поиск с помощью Google' smtpd_sender_login_maps
объясняет остальное.
root@generic:/etc/postfix# postconf -n| grep smtpd_sender
smtpd_sender_login_maps = $virtual_mailbox_maps
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch
Когда postfix получает входящую почту, в основном он может быть разделен на три процесса:
Основываясь на двух процессах, описанных выше, параметр virtual_mailbox_maps имеет (как минимум) две функции:
reject_unauth_destination
.$virtual_mailbox_base
безусловно префиксованный к этому пути, поэтому абсолютный путь хранилища maildir - $virtual_mailbox_base$virtual_mailbox_maps
.Вторая функция может быть использована только в том случае, если вы настроили postfix на отправку почты агенту доставки virtual
. На основании инструкции, которую вы написали выше, postfix будет использовать dovecot
вместо virtual
.
virtual_transport = dovecot
Так как доставка почты осуществляется через dovecot-lda, то virtual_mailbox_maps
на этом этапе (хранение электронной почты) не использовался. Вместо постфиксной конфигурации, dovecot будет использовать этот параметр
mail_location = maildir:/var/mail/vmail/%d/%n/mail:LAYOUT=fs
, чтобы определить, где хранить письмо.
Где документально подтверждено, что формат файла $virtual_mailbox_maps - это "адрес" и , что второй должен совпадать с первым, чтобы SMTP мог работать (note: Это основано на моих эмпирических наблюдениях)?
Параметр virtual_mailbox_maps
должен состоять из одной или нескольких поисковых таблиц .
. Во всех постфиксных таблицах поиска информация хранится в виде пар (ключ, значение). Поэтому файл virtual_mailbox_maps
состоит из двух столбцов: левый - для ключа, а правый - для значения.
Большинство постфиксных таблиц поиска используются для поиска информации. Например, виртуальный агент доставки использует virtual_mailbox_maps
для поиска пути к почтовому ящику получателя. Поэтому в правой части хэш-таблицы должен быть указан путь.
Однако, в некоторых таблицах Postfix должен знать только, существует ли ключ поиска.
. Здесь может быть использовано любое непустое значение результата поиска : результат поиска не используется. Например, smtpd использует virtual_mailbox_maps
для проверки, существует ли получатель.
Таким образом, на самом деле вы можете поместить любую запись в правую часть virtual_mailbox_maps
, так как постфикс его не будет использовать. В этом случае нет формата "адрес".
Когда я заменил запись
$virtual_mailbox_maps
, например, на user@domain1.com OK, и доставка сработала, но отправка почты не удалась (с Адрес отправителя отклонен: не принадлежит пользователю)
Это потому, что у вас есть этот параметр в main. cf
smtpd_sender_restrictions = reject_unknown_sender_domain,
reject_sender_login_mismatch
smtpd_sender_login_maps = $virtual_mailbox_maps
Когда у вас есть reject_sender_login_mismatch
и smtpd_sender_login_maps
на нем, постфикс будет проверять, совпадает ли ваше SASL имя пользователя с именем отправителя, указанным при отправке сообщения. Поэтому формат smtpd_sender_login_maps = $virtual_mailbox_maps
должен состоять из:
my.real.email@example.com my.sasl.username@example.com
В вашем случае my.real.email@example.com = my.sasl.username@example.com, поэтому в вашем $virtual_mailbox_maps
должен быть указан "адрес".
Конечно, вы можете предоставить smtpd_sender_login_maps
с другой таблицей с virtual_mailbox_maps
. Но автор статьи решил их объединить. Возможно, причина заключается в том, что вам нужно изменить только один файл на добавление/удаление действительного получателя