Я хотел бы внести несколько доменов в белый список в моей конфигурации Postfix таким образом, чтобы все электронные письма из этих доменов принимались, если они правильно аутентифицированы с помощью SPF и / или DKIM, если он будет использоваться этим доменом. Это означает, что электронные письма, приходящие с этих доменов, должны не подвергаться обычному процессу DNSBL и серых списков, только проверке SPF и DKIM.
Прямо сейчас мне удалось сохранить электронные письма, приходящие с этих доменов из milter серых списков, настроив sender_access
файл и используя postmap
утилита для преобразования его в подходящую хеш-базу данных.
main.cf:
...
parent_domain_matches_subdomains = yes
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_rbl_client zen.spamhaus.org
reject_unauth_destination
check_sender_access hash:/etc/postfix/sender_access
check_policy_service unix:private/tumgreyspf
...
sender_access:
domain1.com OK
domain2.net OK
Я узнал о постэкран а также нашел аккуратный маленький пример, но похоже, что это мера только для DNSBL и лишь немного полезна в моем случае.
Если ваше ограничение не может применяться глобально ко всем случаям, вы можете использовать Классы ограничений Postfix. Идея состоит в том, чтобы исключить некоторые домены для разделения ограничений.
Я переупорядочиваю вашу текущую конфигурацию по следующим принципам: «легкие проверки должны выполняться перед тяжелыми». Итак, я предлагаю конфигурацию стать
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
check_sender_access hash:/etc/postfix/sender_access
reject_rbl_client zen.spamhaus.org
check_policy_service unix:private/tumgreyspf
Сейчас, классы ограничения постфикса следует применять через эту строку check_sender_access hash:/etc/postfix/sender_access
. Перед этим определите smtpd_restriction_classes параметр в main.cf
.
smtpd_restriction_classes = whitelistdomain
whitelistdomain =
check_policy_service unix:private/tumgreyspf
Поэтому содержание /etc/postfix/sender_access
стал
example.com whitelistdomain
example.org whitelistdomain
Логика такова, что postfix будет применять ограничения по умолчанию (allow_mynetwork, permission_sasl_authenticated, reject_unauth_destination) на весь домен. Тогда, поскольку example.com и example.org в whitelistdomain класс, postfix выполняет только check_policy_service unix: частный / tumgreyspf. Другие домены должны пройти ограничения по умолчанию.
Теперь проблема в том, как настроить tumgreyspf
чтобы исключить эти домены из серых списков.
На основе эта страница, здесь шаг для исключения серый список. Обратите внимание, что этот путь применяется к Debian. В другой системе может быть другой путь.
Сначала создайте папку для каждого домена
mkdir -p /var/lib/tumgreyspf/config/envelope_sender/example.com/
mkdir -p /var/lib/tumgreyspf/config/envelope_sender/example.org/
Создать конфигурацию файла в /etc/tumgreyspf/disablegreylist.conf
SPFSEEDONLY = 0
GREYLISTTIME = 600
CHECKERS = spf
OTHERCONFIGS =
Теперь создайте символическую ссылку на каждый каталог домена
ln -s /etc/tumgreyspf/disablegreylist.conf /var/lib/tumgreyspf/config/envelope_sender/example.org/__default__
ln -s /etc/tumgreyspf/disablegreylist.conf /var/lib/tumgreyspf/config/envelope_sender/example.com/__default__
Больше информации, страница github из tumgreyspf
Просто отсортируйте свой smtpd_recipient_restrictions
соответственно. Этот список обрабатывается спереди назад. Некоторые фильтры могут возвращать отклонение или ничего (черные списки, spf; либо злонамеренный отправитель, либо мы не знаем) или разрешение (SASL, сети, если они не совпадают, продолжить)
В вашем случае это будет:
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
check_policy_service unix:private/tumgreyspf
check_sender_access hash:/etc/postfix/sender_access
reject_rbl_client zen.spamhaus.org
reject_unauth_destination
Всегда разрешены локальные и аутентифицированные отправители. Для всех остальных мы проверяем наши sender_access
файл. Если совпадений нет, переходите к черным спискам, SPF и серым спискам.