Задача простая — получать почту, которая была отправлена на несуществующие ящики нашего домена. Конечно будет и спам. И тут выбор каждого — делать так или нет. Но порой обычный человек может скопировать адрес с ошибкой, набрать руками с опечаткой и т.д., и можно просто вернуть пользователю письмо с ошибкой, что такого адресата нет, а можно получить все эти письма на определенный ящик, который проверять и разбирать. Я расскажу как настроить такой ящик.
Вводные данные:
- Ubuntu 20.04
- Postfix 3.4.13
- Один домен для почты
- Пользователи хранятся как системные аккаунты Linux
Итак, последовательность будет такая:
Во-первых, создаем virtual alias для postfix:
1 |
nano /etc/postfix/virtual |
В этом файле нужно перечислить реальные ящики и к кому они должны приходить, и затем указать какому пользователю будет приходить catch-all адрес. Содержимое файла будет примерно таким:
1 2 3 4 |
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 из этого файла
1 |
postmap /etc/postfix/virtual |
Результатом этого будет создание файла /etc/postfix/virtual.db . Идем дальше.
Во-вторых, нужно указать postfix на полученный файл. Открываем конфиг main.cf и добавляем строчку:
1 |
nano /etc/postfix/main.cf |
1 |
virtual_alias_maps = hash:/etc/postfix/virtual |
Сохраняем, закрываем и перечитываем конфиг postfix
1 |
systemctl reload postfix |
Теперь отправляем два письма, одно на адрес petr@mydomain.ru , второе на адрес somebody@mydomain.ru . В логах должны увидеть примерно следующее.
1 2 3 4 5 6 7 8 9 10 |
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=
Всё. Радуемся.