Категории

Как банить спам в Postfix: чёрный и белый списки

2025-10-13 11:18:52 | Статья из категории: Linux

Если у вас на сервере стоит Postfix + SpamAssassin + ClamAV («полный комплект»), вы уже на хорошем пути. Но иногда SpamAssassin ошибается: важные письма от Nextcloud, Mangotalker или рассылок попадают под метку ***SPAM***, а настоящий спам проходит. Чтобы этого избежать — используйте чёрные и белые списки.

1. Чёрный список (blacklist)

Чёрный список — это список отправителей, доменов или IP-адресов, от которых письма нельзя принимать.

Вариант A: Блокировка по адресу отправителя

  1. Создайте файл: /etc/postfix/sender_blacklist
  2. Добавьте туда:
spammer@evil.com    REJECT
@spam-domain.net    REJECT
  1. Создайте хэш-таблицу:
sudo postmap /etc/postfix/sender_blacklist
  1. Добавьте в /etc/postfix/main.cf:
smtpd_recipient_restrictions = 
    ...все остальные правила...,
    check_sender_access hash:/etc/postfix/sender_blacklist

Вариант B: Блокировка по IP-адресу

  1. Файл: /etc/postfix/client_blacklist
  2. Содержимое:
192.168.99.100    REJECT
203.0.113.0/24    REJECT
  1. Хэш:
sudo postmap /etc/postfix/client_blacklist
  1. В main.cf:
smtpd_client_restrictions = check_client_access hash:/etc/postfix/client_blacklist

2. Белый список (whitelist)

Белый список — это список «доверенных» отправителей, чьи письма никогда не должны помечаться как спам.

Вариант A: Белый список в SpamAssassin

Это самый правильный способ — потому что SpamAssassin уже ставит метку ***SPAM***. Чтобы он игнорировал

  1. Откройте файл: /etc/spamassassin/local.cf
  2. Добавьте:
# Белый список по отправителю
whitelist_from    newsletter@mangotalker.com
whitelist_from    *@nextcloud.example.com

# Или целые домены
whitelist_from    *@trusted-domain.org
  1. Перезапустите SpamAssassin:
sudo systemctl reload spamassassin

Теперь письма от этих адресов не будут получать баллы за спам и не получат метку ***SPAM***.

Вариант B: Белый список на уровне Postfix (обход фильтров)

Если вы хотите, чтобы письма от доверенных отправителей вообще не проходили через SpamAssassin, можно исключить их на уровне Postfix.

  1. Создайте файл: /etc/postfix/sender_whitelist
  2. Содержимое:
good@nextcloud.com    OK
@mangotalker.com      OK
  1. Создайте хэш:
sudo postmap /etc/postfix/sender_whitelist
  1. В 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. Как админы это делают на практике?

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% проблем с «неправильным спамом».

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


Кто я | Контакты и регион

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA