Как отключить проверки SPF для локальных сетей?

Вопрос или проблема

Когда настраиваю Postfix, как мне требовать SPF, но только если это не приходит от отправителя из локальной сети? Я попробовал следующее:

smtpd_recipient_restrictions=
    reject_invalid_hostname,
    permit_sasl_authenticated,permit_mynetworks,
    check_policy_service unix:private/policyd-spf,
    reject_unknown_helo_hostname

… и я думал, что в таком порядке permit_mynetworks будет проверяться перед проверкой политики SPF и позволит отправку. Однако это не так, и SPF не проходит, отклоняя любые письма из локальной сети. Я не уверен, как решить эту проблему.

Если это имеет значение, я пробовал это с использованием Postfix 3.9.

Ответ или решение

Для того чтобы настроить Postfix таким образом, чтобы проверки SPF выполнялись только для отправителей, не входящих в локальную сеть, необходимо правильно расставить порядок правил в секции smtpd_recipient_restrictions. Ваша текущая конфигурация не позволяет обойти проверку SPF для локальных сетей, потому что правила обрабатываются сверху вниз.

Ниже приведен пример конфигурации, который позволит достичь желаемого результата:

smtpd_recipient_restrictions =
    reject_invalid_hostname,
    permit_sasl_authenticated,
    permit_mynetworks,
    check_policy_service unix:private/policyd-spf,
    reject_unknown_helo_hostname,
    reject_unauth_destination

Объяснение конфигурации:

  1. reject_invalid_hostname – отклоняет сообщения, если обратное определение имени хоста недействительное.
  2. permit_sasl_authenticated – позволяет доставку сообщений от аутентифицированных пользователей.
  3. permit_mynetworks – позволяет пропустить проверку SPF для отправителей из локальных сетей (определяется переменной mynetworks).
  4. check_policy_service unix:private/policyd-spf – выполняет проверку SPF для всех других отправителей, которые не попадают в предыдущие категории.
  5. reject_unknown_helo_hostname – отклоняет сообщения от узлов, которые не могут быть определены по имени.
  6. reject_unauth_destination – отклоняет сообщения, которые не предназначены для данного почтового сервера.

Дополнительные рекомендации:

  • Убедитесь, что значения mynetworks правильно настроены в конфигурации Postfix. Вам нужно определить конкретные IP-адреса или сети, которые будут считаться локальными.

    Пример настройки mynetworks:

    mynetworks = 127.0.0.0/8 [::1]/128, <ВАШ_ЛОКАЛЬНЫЙ_IP_АДРЕС_ИЛИ_СЕТЬ>
  • После внесения изменений не забудьте перезагрузить Postfix для применения новых настроек. Это можно сделать с помощью команды:

    sudo systemctl restart postfix
  • Рекомендуется протестировать изменения с помощью утилит для отслеживания логов Postfix, таких как mail.log, чтобы убедиться, что сообщения от локальных сетей обрабатываются корректно.

Эта конфигурация должна удовлетворить ваши требования по исключению SPF-проверок для локальных сетей, при этом обеспечивая их выполнение для всех остальных отправителей.

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

Капча загружается...