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).

Я не хочу створювати псевдонім для кожного домену, оскільки у мене їх є декілька. Я також не хочу використовувати підстановку (наприклад, інформація @ *), оскільки є й інші домени, які не є псевдонімамиmain.com

Отже ... що це саме?


Я очікував того ж і досі не розумію, чому це не так.
Джош М.

Відповіді:


4

Пояснення міститься в документації: http://www.postfix.org/VIRTUAL_README.html#virtual_alias

Ви хочете "псевдонімові скриньки" aka virtual_mailbox_alias та virtual_mailbox_maps, але говорити про "домени псевдонімів": http://www.postfix.org/ADDRESS_CLASS_README.html#virtual_alias_class


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) сторінки сторінки :

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

  pattern address, address, ...

Коли шаблон відповідає поштовій адресі, замініть його на відповідну адресу.

і

За допомогою пошукових запитів з індексованих файлів, таких як DB або DBM, або з мережевих таблиць, таких як NIS, LDAP або SQL, кожен запит користувача @ домен створює послідовність шаблонів запитів, як описано нижче. Кожен шаблон запиту надсилається до кожної заданої таблиці пошуку, перш ніж спробувати наступний шаблон запиту, поки не буде знайдено збіг.

...

@domain address, address, ...

Переадресація пошти для інших користувачів у домені на адресу.

і

Результат пошуку підлягає перезапису адреси: Коли результат має форму @otherdomain, результат стає тим самим користувачем у otherdomain. Це працює лише для першої адреси в результаті пошуку кількох адрес.

Таким чином, якщо це /etc/postfix/virtualзробити, ви отримаєте псевдонім з повним доменом, який ви хочете:

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

Потім, оскільки цей файл є хеш-таблицею, вам потрібно запустити postmap( пояснення , вручну ):

postmap /etc/postfix/virtual

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


Отже, в інтерфейсі PostfixAdmin є помилка , оскільки інтерфейс ( edit.php?table=aliasdomain) не скаже користувачеві, що жодного псевдоніма насправді не буде, якщо позначити його як включене.
Пітер Краус

2
Я б не сказав, що це саме помилка, оскільки вона насправді налаштовує домен віртуального псевдоніма. Швидше за все, я підозрюю, що PostfixAdmin очікує, що ви знаєте, що таке віртуальні домени Postfix, і що вам також потрібно додати фактичні псевдоніми, щоб змусити їх робити що-небудь. Напевно, було б краще, якби це вам сказало.
Сем Ханес

1

@Josh M.

Я поняття не маю, чи це правильний шлях та / або хороша практика, але я використовую щось подібне:

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, - все псевдоніми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.