пятница, 27 декабря 2013 г.

Postfix - отбрасывание почты, адресованной любому домену, кроме явно разрешенных

В процессе разработки или саппорта часто используются базы данных в которых содержится информация о реальных адресах электронной почты. Чтобы не допустить случайную отправку писем на реальные (клиентские) адреса в нашей локальной сети запрещены соединения на 25 порт к внешним серверам. Почту для внутренних серверов пересылает почтовый шлюз для которого открыта лазейка на 25 порт нашего внешнего почтового сервера. Таким образом почта может быть либо отправлена внутри локальной сети, либо на ящик, находящийся на нашем внешнем почтовом сервере.

Эта мера достаточно эффективна, но периодически приходят уведомления о недоставленных письмах. Когда их 1-2 в день с этим можно спокойно жить, но когда их становится 30-50 штук, то читать их нет смысла, а каждый раз удалять их из почтового ящика postmaster'а лениво.

Сегодня мне стало особенно лениво и я добавил отбрасывание почты, адресованной любым доменам, кроме явно разрешенных. В этом случае почта якобы доставляется, но не генерируется сообщение о недоставленном письме и в итоге и приложение и postmaster остаются довольны.

Для реализации мне потребовалось создать файл карты /etc/postfix/transport, который выглядит примерно так:

example.local  :
example.com    :
example.org    :
*              discard: Not allowed destination - silently discarded

создать хешированый вариант карты

# postmap hash:/etc/postfix/transport

добавить в /etc/postfix/main.cf

transport_maps = hash:/etc/postfix/transport

и перечитать конфигурацию postfix

# service postfix reload

После этого можно попробовать отправлять почту через релей - при попытке отправить письмо на домен, не входящий в список разрешенных, в логе почтовой системы появится запись вроде этой

Dec 27 16:13:02 server postfix/discard[2717]: 55B574E300: to=, relay=none, delay=0.06, delays=0.05/0/0/0, dsn=2.0.0, status=sent (Not allowed destination - message silently discarded)

5 комментариев:

  1. а если надо наоборот, все письма отправлять кроме определенного relay(МХ) к примеру *.barracudanetworks.com

    ОтветитьУдалить
    Ответы
    1. Всмысле не отправлять почту на домены у которых MX = *.barracudanetworks.com?

      Удалить
  2. Ответы
    1. Я такого не делал, потому не знаю наверняка. Но думаю стоит начать с этого: http://serverfault.com/questions/663418/relay-host-based-on-destination-mx-record

      Удалить
  3. есть идеи? готов заплатить за совет

    ОтветитьУдалить