Если у вас на сервере стоит Postfix + SpamAssassin + ClamAV («полный комплект»), вы уже на хорошем пути. Но иногда SpamAssassin ошибается: важные письма от Nextcloud, Mangotalker или рассылок попадают под метку ***SPAM***, а настоящий спам проходит. Чтобы этого избежать — используйте чёрные и белые списки.
1. Чёрный список (blacklist)
Чёрный список — это список отправителей, доменов или IP-адресов, от которых письма нельзя принимать.
Вариант A: Блокировка по адресу отправителя
- Создайте файл:
/etc/postfix/sender_blacklist - Добавьте туда:
spammer@evil.com REJECT @spam-domain.net REJECT
- Создайте хэш-таблицу:
sudo postmap /etc/postfix/sender_blacklist
- Добавьте в
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
...все остальные правила...,
check_sender_access hash:/etc/postfix/sender_blacklist
Вариант B: Блокировка по IP-адресу
- Файл:
/etc/postfix/client_blacklist - Содержимое:
192.168.99.100 REJECT 203.0.113.0/24 REJECT
- Хэш:
sudo postmap /etc/postfix/client_blacklist
- В
main.cf:
smtpd_client_restrictions = check_client_access hash:/etc/postfix/client_blacklist
2. Белый список (whitelist)
Белый список — это список «доверенных» отправителей, чьи письма никогда не должны помечаться как спам.
Вариант A: Белый список в SpamAssassin
Это самый правильный способ — потому что SpamAssassin уже ставит метку ***SPAM***. Чтобы он игнорировал
- Откройте файл:
/etc/spamassassin/local.cf - Добавьте:
# Белый список по отправителю whitelist_from newsletter@mangotalker.com whitelist_from *@nextcloud.example.com # Или целые домены whitelist_from *@trusted-domain.org
- Перезапустите SpamAssassin:
sudo systemctl reload spamassassin
Теперь письма от этих адресов не будут получать баллы за спам и не получат метку ***SPAM***.
Вариант B: Белый список на уровне Postfix (обход фильтров)
Если вы хотите, чтобы письма от доверенных отправителей вообще не проходили через SpamAssassin, можно исключить их на уровне Postfix.
- Создайте файл:
/etc/postfix/sender_whitelist - Содержимое:
good@nextcloud.com OK @mangotalker.com OK
- Создайте хэш:
sudo postmap /etc/postfix/sender_whitelist
- В
main.cfдобавьте выше правила с content_filter:
smtpd_recipient_restrictions =
check_sender_access hash:/etc/postfix/sender_whitelist,
...остальные правила...,
check_policy_service unix:private/policy-spf,
...
И убедитесь, что правило content_filter=... (например, amavis или spamass-milter) применяется только если не сработало OK. В этом случае письмо с OK пропускается без фильтрации.
3. Как админы это делают на практике?
- Чёрные списки в Postfix — для грубой блокировки известных спамеров (IP или доменов).
- Белые списки в SpamAssassin — основной способ защиты «важных» писем от ложных срабатываний.
- DNSBL/RBL (например,
zen.spamhaus.org) — включают вsmtpd_recipient_restrictionsдля автоматической блокировки известных спам-сетей. - Ручная настройка — если письмо помечено как спам, но не должно быть, добавляют отправителя в
whitelist_from. - Логи — ваши друзья: смотрите
/var/log/mail.logи заголовки писем, чтобы понять, почему письмо попало в спам.
4. Полезные команды
# Проверить, как Postfix обработает адрес postmap -q "spammer@example.com" hash:/etc/postfix/sender_blacklist # Перезагрузить Postfix после изменений sudo systemctl reload postfix # Перезагрузить SpamAssassin sudo systemctl reload spamassassin # Посмотреть заголовки письма (X-Spam-Status, X-Spam-Level) # — они покажут, за что письмо получило баллы
Вывод
Не пытайтесь «забанить весь спам» — это невозможно. Но с помощью чёрного списка в Postfix и белого списка в SpamAssassin вы сможете:
- Блокировать явных спамеров на входе.
- Сохранять важные письма от ложных срабатываний.
- Снизить нагрузку на фильтры (если исключать доверенные письма).
Начните с белого списка в /etc/spamassassin/local.cf — это решит 90% проблем с «неправильным спамом».
Комментарии
Пока нет комментариев. Будьте первым!