Postfix: что такое псевдонимы доменов?

12

Мне показалось, что я понимаю «домены псевдонимов», так как это просто псевдоним для другого домена! Поэтому, когда я настраиваю почтовый ящик типа «info@main.com» и добавляю «alias.com» в качестве псевдонима домена для «main.com», адрес «info@alias.com» также будет работать ... Но нет !

Итак, я добавил эти домены:

  • main.com
  • alias.com

Я создал этот почтовый ящик:

  • info@main.com

Затем я сопоставил эти псевдонимы доменов:

  • alias.com => main.com

И тогда, когда я отправляю письмо на info@alias.com, я получаю эту ошибку:

Recipient address rejected: User unknown in virtual mailbox table (state 13).

Я не хочу создавать псевдоним для каждого домена, так как у меня есть несколько. Я также не хочу использовать подстановочный знак (например, info @ *), потому что есть и другие домены, которые не являются псевдонимамиmain.com

Итак ... что это такое?

skerit
источник
Я ожидал того же и до сих пор не понимаю, почему это не так.
Джош М.

Ответы:

4

Объяснение в документации: http://www.postfix.org/VIRTUAL_README.html#virtual_alias

Вы хотите "псевдонимы почтовых ящиков", также называемые virtual_mailbox_alias и virtual_mailbox_maps, но говорите о "доменах псевдонимов": http://www.postfix.org/ADDRESS_CLASS_README.html#virtual_alias_class

mailq
источник
3
Я не могу понять документы - откуда у вас есть domain1.comпсевдоним для любого почтового ящика <mailbox>@domain2.com?
Джош М.
2
@JoshM. Вы можете использовать хеш-таблицу virtual_alias_mapsс записью формы @domain1.com @domain2.com. Смотрите мой ответ для деталей.
Сэм Хейнс
12

Добавление alias.comк virtual_alias_domainsявляется правильным первым шагом, но это просто говорит Postfix, что вы хотите использовать этот домен для псевдонимов. Здесь не сказано, какими должны быть псевдонимы. Для этого вам нужно использовать виртуальную карту псевдонимов.

Сначала добавьте что-то вроде этого main.cf:

virtual_alias_domains = alias.com
virtual_alias_maps = hash:/etc/postfix/virtual

При добавлении virtual_alias_mapsвы получаете файл ( /etc/postfix/virtual), который используется в качестве виртуальной карты псевдонимов. Но что вы положили в этот файл? Согласно виртуальной (5) manpage :

Формат ввода для команды postmap (1) следующий:

  pattern address, address, ...

Когда шаблон соответствует почтовому адресу, замените его соответствующим адресом.

и

При поиске из индексированных файлов, таких как DB или DBM, или из сетевых таблиц, таких как NIS, LDAP или SQL, каждый запрос user @ domain создает последовательность шаблонов запросов, как описано ниже. Каждый шаблон запроса отправляется в каждую указанную таблицу поиска перед попыткой следующего шаблона запроса, пока не будет найдено совпадение.

...

@domain address, address, ...

Перенаправить почту другим пользователям в домене на адрес.

и

Результат поиска подлежит перезаписи адреса: если результат имеет форму @otherdomain, он становится тем же пользователем otherdomain. Это работает только для первого адреса в результате многоадресного поиска.

Поэтому, добавив это, /etc/postfix/virtualвы получите полный псевдоним домена, который вы хотите:

# map any <user>@alias.com to the matching <user>@main.com
@alias.com     @main.com

Затем, поскольку этот файл является хеш-таблицей, вам нужно запустить postmap( пояснение , man-страницу ):

postmap /etc/postfix/virtual

Вы можете найти больше информации о виртуальных доменах в HOWTO о Postfix Virtual Domain и о псевдонимах в HOWTO о перезаписи адресов Postfix .

Сэм Хейнс
источник
Итак, в интерфейсе PostfixAdmin есть ошибка , так как interface ( edit.php?table=aliasdomain) не может сказать пользователю, что на самом деле не будет псевдонима , если пометить его как включенный.
Питер Краусс
2
Я бы не сказал, что это ошибка, так как она фактически настраивает виртуальный домен псевдонимов. Скорее, я подозреваю, что PostfixAdmin ожидает, что вы знаете, что такое виртуальные псевдонимы Postfix, и что вам также необходимо добавить реальные псевдонимы, чтобы заставить их что-либо делать. Вероятно, было бы лучше, если бы он сказал вам это, хотя.
Сэм Хейнс
1

@ Джош М.

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

virtual_alias_maps = regexp:/etc/postfix/domain_rewriting pgsql:/etc/postfix/pgsql/     virtual_alias_maps.cf

$ cat /etc/postfix/domain_rewriting 
/^(.*)@domain1.com$/     ${1}@domain2.com
Максимилиан Кауль
источник
1
Хотя это не совсем неверно (это будет делать то, что вы ожидаете), использование таблицы регулярных выражений менее эффективно, чем использование хеш-таблицы с @domain1.com @domain2.comсинтаксисом, который я подробно описал в своем ответе.
Сэм Хейнс
1

Это моя короткая версия ответа @ sam-hanes (который работал для меня)

В вашем virtual_alias_maps добавьте:

@from.domain <tab> @to.domain

В командной строке выполните:

 postmap /path/to/yourvirtualalismapsfile

В вашем файле main.cf добавьте:

virtual_alias_domains : from.domain

virtual_alias_domains сообщает postfix, что все адреса почтовых ящиков в форме mailbox@from.domain являются псевдонимами.

ychaouche
источник