Назад | Перейти на главную страницу

Несколько проверок Postfix

Я хочу добиться с помощью Postfix следующего:

  1. Пропускать все письма через черный список
  2. Разрешить любым клиентам отправлять сообщения в список доменов
  3. Разрешить некоторым клиентам отправлять сообщения в любой домен

Вот что у меня: (постфикс 10.0.8.0, а некоторые отправители 10.0.8.0 и 10.0.9.0)

mynetworks_style = subnet

smtpd_recipient_restrictions = check_recipient_access sqlite:/etc/postfix/access-bl.query, check_client_access hash:/etc/postfix/trusted_clients, check_recipie
nt_access hash:/etc/postfix/local_domains, reject_unauth_destination, permit

Итак, сейчас черный список работает. файл /etc/postfix/trusted_clients содержит, кто может отправлять куда угодно (3), файл /etc/postfix/local_domains содержит, куда вы можете отправить (2). Эти двое в порядке, они вернулись как следует.

Моя проблема в том, чтобы все трое работали вместе. Не уверен, что это проблема с заказом. Сейчас отправляю тест из 10.0.9.17, и я получаю Relay access denied. Если я добавлю:

mynetworks = 10.0.8.0/24 10.0.9.0/24

тогда любой может отправить куда угодно, поэтому №2 не работает.

Версия Postfix - 2.10 в Ubuntu 14.04.

Любые идеи?

Выход postconf | grep restrictions:

smtpd_client_restrictions =
smtpd_data_restrictions =
smtpd_end_of_data_restrictions = 
smtpd_etrn_restrictions = 
smtpd_helo_restrictions = 
smtpd_recipient_restrictions = check_recipient_access sqlite:/etc/postfix/access-bl.query, check_client_access hash:/etc/postfix/trusted_clients, check_recipient_access hash:/etc/postfix/local_domains, reject_unauth_destination, permit_mynetworks
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination 
smtpd_sender_restrictions = 

В postfix 2.10 добавлен новый параметр smtpd_relay_restrictions был представлен. Это ограничение будет оценено ПЕРЕД smtpd_recipient_restrictions.

Фрагмент из официальная документация

smtpd_relay_restrictions (по умолчанию: permission_mynetworks, permission_sasl_authenticated, defer_unauth_destination) Ограничения доступа для управления ретрансляцией почты, которые SMTP-сервер Postfix применяет в контексте команды RCPT TO, до smtpd_recipient_restrictions. См. SMTPD_ACCESS_README, раздел «Отложенная оценка списков ограничения доступа SMTP» для обсуждения контекста и времени оценки.

Поэтому любой клиент за пределами mynetworks получите Relay Access Denied потому что это правило defer_unauth_destination.

Одно из решений - переместить ограничение (2) и (3) в smtpd_relay_restrictions.

smtpd_recipient_restrictions = 
    check_recipient_access sqlite:/etc/postfix/access-bl.query

smtpd_relay_restrictions = 
    permit_mynetworks, 
    permit_sasl_authenticated, 
    check_client_access hash:/etc/postfix/trusted_clients, 
    check_recipient_access hash:/etc/postfix/local_domains,
    reject_unauth_destination

Примечание:

  1. Вы можете разместить reject_unauth_destination в любом smtpd_relay_restrictions или smtpd_recipient_restrictions. Не нужно повторять оба места.
  2. smtpd_relay_restrictions предназначен для того, чтобы разместить там, где вы устанавливаете правило реле, в то время как smtpd_recipient_restrictions заполнитель для занесения в черный список спама (например, reject_non_fqdn_sender).