Мне казалось, что я понял «Псевдонимы доменов» как то, что это просто псевдоним для другого домена! Поэтому, когда я настраиваю почтовый ящик типа «info@main.com» и добавляю «alias.com» в качестве псевдонима домена для «main.com», адрес «info@alias.com» также будет работать ... Но нет !
Итак, я добавил эти домены:
Я создал этот почтовый ящик:
Затем я сопоставил эти псевдонимы доменов:
А затем, когда я отправляю письмо на адрес info@alias.com, я получаю эту ошибку:
Recipient address rejected: User unknown in virtual mailbox table (state 13).
Я не хочу создавать псевдоним для каждого домена, так как у меня их несколько. Я также не хочу использовать подстановочный знак (например, info @ *), потому что есть и другие домены, которые не являются псевдонимами main.com
Итак ... что это именно?
Добавление 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, каждый запрос 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
(объяснение, справочная страница):
postmap /etc/postfix/virtual
Вы можете найти больше информации о виртуальных доменах в Postfix Virtual Domain HOWTO и о псевдонимах в Postfix Address Rewriting HOWTO.
Объяснение в документации: 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
@ Джош М.
Я понятия не имею, правильный ли это способ и / или хорошая практика, но я использую что-то вроде этого:
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
Это моя короткая версия ответа @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 являются псевдонимами.