postfix-policyd-spf-python

Настройка Что такое SPF - универсальная SPF запись в Postfix.

  • Устанавливаем необходимые пакеты:
    # aptitude install postfix-policyd-spf-python
  • Добавляем в /etc/postfix/main.cf
    policy-spf_time_limit = 3600s

    Далее ищем объявление smtpd_recipient_restrictions и добавляем в него (после reject_unauth_destination) строку check_policy_service unix:private/policy-spf.

    ...
     reject_unauth_destination
     check_recipient_access hash:/etc/postfix/roleaccount_exceptions
     reject_non_fqdn_hostname
     check_helo_access pcre:/etc/postfix/pcre_helo_checks.cf
     check_sender_mx_access cidr:/etc/postfix/cidr_mx_access
     check_policy_service unix:private/policy-spf
     permit
  • Переходим к файлу /etc/postfix/master.cf: в него добавляем следующую строку:
    policy-spf  unix  -       n       n       -       0       spawn
      user=nobody argv=/usr/bin/policyd-spf /etc/postfix-policyd-spf-python/policyd-spf.conf
  • Дополнительные настройки в файле /etc/postfix-policyd-spf-python/policyd-spf.conf и описания настроек в файле policyd-spf.conf.commented.
    policyd-spf.conf
    #  For a fully commented sample config file see policyd-spf.conf.commented
     
    debugLevel = 1
    # Этот параметр определяет, отбрасывать ли действительно письма,
    # если они нарушают SPF, или просто писать об этом в логи и пропускать
    defaultSeedOnly = 1
     
    HELO_reject = SPF_Not_Pass
    # SPF_Not_Pass =
    # Отбрасываем все сообщения, кроме:
    # 1. которые прошли SPF-валидацию
    # 2. В домене нет SPF записи
    # 3. Произошла временная ошибка (DNS упал?)
    Mail_From_reject = Fail
     
    PermError_reject = False
    # При наличии ошибок при проверке пропускаем почту
    TempError_Defer = False
     
    # перечисляйте IPs без пробелов
    skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0/104,::1,10.26.95.0/24
     
    #  Domain_Whitelist: List of domains whose sending IPs (defined by passing
    #  their SPF check should be whitelisted from SPF.
    #  Example (default is no domain whitelist):
    Domain_Whitelist = example1.com,example2.com

    Для дополнительно информации читаем справку

    man policyd-spf.conf
Для применения изменений в файле policyd-spf.conf обязательно перегрузите postfix
# service postfix restart
PQ VPS сервера в 28+ странах.