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

Объясните формат user @ domain значения параметра postfix $ virtual_mailbox_maps

Я пытаюсь настроить почтовый сервер с помощью этого статья. В основном с использованием postfix и dovecot.

У меня есть тестовая установка, которая работает, но я не понимаю некоторых (многих) вещей и пытаюсь исправить это перед переносом.

Из многих вещей это наиболее сбивает с толку: я не понимаю, как работает вторая часть параметров $ 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? (И почему, если адрес электронной почты уже указан в качестве ключевого параметра?). Dovecot использует $ 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 получает входящую почту, в основном это можно разделить на три процесса:

  1. Получите электронную почту, выполнив SMTP-транзакцию с почтовым сервером отправителя и применив ограничения SMTP, например: проверьте, существует ли получатель
  2. Сохраните электронную почту, отправив ее одному из агентов доставки (dovecot, local, virtual)

На основе двух описанных выше процессов параметр virtual_mailbox_maps имеет (как минимум) две функции:

  1. В качестве проверки получателя при получении почты postfix, чтобы postfix мог отклонить несуществующего получателя. Эта проверка выполнялась, когда reject_unauth_destination называется.
  2. Параметр, где виртуальный (8) Агент доставки ищет почтовый ящик. Параметр $virtual_mailbox_base безоговорочно добавляется к этому пути, поэтому абсолютный путь к хранилищу maildir $virtual_mailbox_base$virtual_mailbox_maps.

Вторая функция используется только в том случае, если вы настроили postfix для отправки электронной почты на адрес virtual Агент доставки. Основываясь на учебнике, который вы опубликовали выше, postfix будет использовать dovecot агент доставки вместо virtual.

virtual_transport = dovecot

Потому что это Dovecot-Ida кто доставит письмо, тогда virtual_mailbox_maps не использовался на этом этапе (хранение электронной почты). Вместо конфигурации постфикса dovecot будет использовать этот параметр

mail_location = maildir:/var/mail/vmail/%d/%n/mail:LAYOUT=fs

чтобы определить, где хранить электронное письмо.


Где документально подтверждено, что формат файла $ virtual_mailbox_maps - "адресный адрес" и что второй должен совпадать с первым для работы SMTP (нота: Это основано на моих эмпирических наблюдениях)?

Параметр virtual_mailbox_maps должен состоять из одного или нескольких таблицы поиска. . Все справочные таблицы Postfix хранят информацию в виде пар (ключ, значение). Так вот почему virtual_mailbox_maps Файл состоит из двух столбцов: левая сторона для ключа, а правая для значения.

Большинство справочных таблиц Postfix используются для поиска информации. Например, агент виртуальной доставки использует virtual_mailbox_maps найти путь к почтовому ящику получателя. Таким образом, в правой части вашей хеш-таблицы должен быть указан путь.

Однако с некоторыми таблицами Postfix нужно знать, только если ключ поиска существует . Любой непустой результат поиска здесь можно использовать значение: результат поиска не используется. Например, smtpd использует virtual_mailbox_maps чтобы проверить, существует ли получатель.

На самом деле вы можете поместить любую запись в правую часть virtual_mailbox_maps поскольку постфикс не будет его использовать. В этом случае нет такого формата, как «адрес адрес».


Когда я заменил $virtual_mailbox_maps запись с помощью, например, user@domain1.com ОК, доставка работала, но отправка электронной почты не удалась (с Адрес отправителя отклонен: не принадлежит пользователю)

Это потому, что у вас есть этот параметр в 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 на нем postfix проверит, ваше имя пользователя 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. Но автор статьи решил их объединить. Возможно, причина в том, что вам нужно изменить только один файл для добавления / удаления действительного получателя.