Настройка Catch-all адреса в Postfix

Автор: | 3 июня 2022

Задача простая — получать почту, которая была отправлена на несуществующие ящики нашего домена. Конечно будет и спам. И тут выбор каждого — делать так или нет. Но порой обычный человек может скопировать адрес с ошибкой, набрать руками с опечаткой и т.д., и можно просто вернуть пользователю письмо с ошибкой, что такого адресата нет, а можно получить все эти письма на определенный ящик, который проверять и разбирать. Я расскажу как настроить такой ящик.

Вводные данные:

  • Ubuntu 20.04
  • Postfix 3.4.13
  • Один домен для почты
  • Пользователи хранятся как системные аккаунты Linux

Итак, последовательность будет такая:

Во-первых, создаем virtual alias для postfix:

nano /etc/postfix/virtual

В этом файле нужно перечислить реальные ящики и к кому они должны приходить, и затем указать какому пользователю будет приходить catch-all адрес. Содержимое файла будет примерно таким:

petr@mydomain.ru petr #real mailbox
sale@mydomain.ru sale #real mailbox
saler@mydomain.ru sale #alias
@mydomain.ru support #catch-all to user support

Сохраняем, закрываем и создаем hash для postfix из этого файла

postmap /etc/postfix/virtual

Результатом этого будет создание файла /etc/postfix/virtual.db . Идем дальше.

Во-вторых, нужно указать postfix на полученный файл. Открываем конфиг main.cf и добавляем строчку:

nano /etc/postfix/main.cf

virtual_alias_maps = hash:/etc/postfix/virtual

Сохраняем, закрываем и перечитываем конфиг postfix

systemctl reload postfix

Теперь отправляем два письма, одно на адрес petr@mydomain.ru , второе на адрес somebody@mydomain.ru . В логах должны увидеть примерно следующее.

postfix/qmgr[118654]: ED68C2A114F: from=<megamail@gmail.com>, size=2853, nrcpt=1 (queue active)                                                                              
postfix/local[118701]: ED68C2A114F: to=<petr@mydomain.ru>, relay=local, delay=0.01, delays=0/0/0/0, dsn=2.0.0, status=sent (delivered to maildir)
postfix/qmgr[118654]: ED68C2A114F: removed
postfix/smtpd[118693]: disconnect from mail-ej1-f45.google.com[209.85.218.45] ehlo=2 starttls=1 mail=1 rcpt=1 bdat=1 quit=1 commands=7
postfix/smtpd[118693]: connect from mail-ej1-f53.google.com[209.85.218.53]
postfix/smtpd[118693]: C8AA92A114F: client=mail-ej1-f53.google.com[209.85.218.53]
postfix/cleanup[118700]: C8AA92A114F: message-id=<1391780861.20220603011324@gmail.com>
postfix/qmgr[118654]: C8AA92A114F: from=<megamail@gmail.com>, size=2879, nrcpt=1 (queue active)
postfix/local[118701]: C8AA92A114F: to=<support@mydomain.ru>, orig_to=<somebody@mydomain.ru>, relay=local, delay=0.01, delays=0.01/0/0/0, dsn=2.0.0, status=sent (delivered to maildir)
postfix/qmgr[118654]: C8AA92A114F: removed

Пётр получил свое письмо напрямую, а support получил письмо через catch-all, в логе это отображено в блоке orig_to=

Всё. Радуемся.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*