TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #4594 12.5K
Почтовый сервер postfix позволяет очень гибко управлять транспортом почты во всех направлениях. Меня не раз спрашивали, можно ли сделать так, чтобы на какой-то домен почта не отправлялась, но при этом клиент во время отправки не получал никакой ошибки. То есть он как-будто всё отправил, но письмо реально не ушло.

Я так сходу не придумал как это сделать стандартными средствами postfix без костылей. У него есть настройка smtpd_recipient_restrictions, где можно управлять разрешениями для получателей. Там можно явно указать, что для конкретного домена отправка запрещена. Но клиент при попытке отправить туда письмо, получит обратное письмо с ошибкой на тему того, что это запрещено.

Это не всегда удобно. Можно подумать, что это нужно для того, чтобы ввести в заблуждение пользователя почты, чтобы он не знал, что письмо реально не доставлено. Но на самом деле нет. Это чаще всего нужно не для этого. Например, может быть софт, который делает какие-то отправки по определённому набору доменов. И отправлять ему можно только туда. Если в его список рассылки по какой-то причине попадут другие домены, а вы настроите smtpd_recipient_restrictions, то его завалит обратными письмами с ошибками.

В общем, ситуации бывают разные. Расскажу, как всё это можно настроить встроенными инструментами postfix. Он будет отправлять письма только разрешённым доменам или наоборот, запретит отправку на какие-то домены, но при этом отправляющий будет думать, что всё ОК, обратного письма с ошибкой он не получит. При этом в логе postfix будет явно видно, что письмо не было отправлено.

Настраиваем параметр transport_maps, добавляя в /etc/postfix/main.cf:

transport_maps = hash:/etc/postfix/transport_map

Создаём файл /etc/postfix/transport_map следующего содержания:

example.com   discard: Not allowed destination

Создаём индексированный файл и перечитываем конфигурацию:

# postmap /etc/postfix/transport_map
# postfix reload

Теперь при отправке письма на домен example.com клиент не получит никакой ошибки. Он будет считать, что письмо нормально отправлено. При этом в логе postfix это отразится вот так:

2025-05-06T11:41:29.689884+03:00 mailsrv postfix/discard[3974535]: 887AA11B319: to=<user@example.com>, relay=none, delay=0.18, delays=0.17/0.01/0/0, dsn=2.0.0, status=sent (Not allowed destination)

Отправки реально не было, так как relay=none. Можно сделать и обратную ситуацию. Отменить отправку на все домены, кроме example.com. Тогда файл transport_map будет выглядеть так:

example.com :
* discard: Not allowed destination

Для example.com обычная доставка, для всех остальных - discard. Поясню, как это работает. Данный параметр я знаю давно и активно использую. Пример файла transport_map из моей практики:

websrv.site.ru local
backupmail.ru relay:[backupmail.ru]:25
* relay:[smtp.yandex.ru]:465

Первый домен websrv.site.ru используется как локальный. Вся почта для этого домена отправляется только локально в рамках данного сервера. Второй домен backupmail.ru используется для бэкапа всей корреспонденции. Ящики из этого домена настроены как сборщики копий через bcc_maps всей входящей и исходящей почты. Третья строчка указывает отправлять всю остальную почту через smtp сервер Яндекса.

Подробно я эту тему рассматривал в отдельной статье:

⇨ Postfix - выбор сервера для отправки в зависимости от получателя

Там как раз рассматривается параметр transport_maps, но не в контексте задачи скрытого запрета отправки писем. Для запрета мы просто указали соответствующий транспорт - discard, вместо relay. И письма в итоге не отправляются.

Если у кого-то есть вопросы по настройке postfix, можете задавать в комментариях. Попробую подсказать. Я много всего обычного и не очень настраивал на postfix.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#postfix
  • 👍 102
  • 👎 3
More from @srv_admin
  1. Oct 7, 2026Рассказываю про одну простую, но очень полезную в хозяйстве штуку для передачи файлов межд…
  2. Oct 7, 2026❓Какие реальные возможности у 1С:Расширенная корпоративная лицензия (1С:РКЛ) и как компани…
  3. Oct 7, 2026Столкнулся на днях с типичной ситуацией, когда катастрофически вырос Load Average на серве…
  4. Oct 6, 2026🎉 10 лет Kaspersky Anti Targeted Attack — юбилейный стрим! Друзья, делимся анонсом важног…
  5. Oct 6, 2026Компания Selectel выкатила в public preview своего бесплатного ИИ-агента aish. Далее будет…
  6. Oct 5, 2026На прошлой неделе Mikrotik сделал рассылку с обзором своих новых продуктов. Я последние го…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →