---
title: "Почтовый сервер на Debian 12: полное руководство от установки до production. Часть 3 - Защита от спама и вирусов"
date: 2026-03-16
draft: false
description: "Настройка Amavis, ClamAV, SpamAssassin и Postgrey для защиты от вирусов и спама. Fail2ban для защиты от брутфорса SMTP/IMAP. Обучение антиспама, белые списки, мониторинг."
summary: "Настройка Amavis, ClamAV, SpamAssassin и Postgrey для защиты от вирусов и спама. Fail2ban для защиты от брутфорса SMTP/IMAP. Обучение антиспама, белые списки, мониторинг."
tags: ["amavis", "clamav", "spamassassin", "postgrey", "fail2ban"]
categories: ["Почтовые системы"]
series: ["Почтовый сервер на Debian 12"]
series_order: 3
---

# Защита от спама и вирусов

Почтовый сервер без защиты - это открытые ворота для спама и вирусов. Сейчас настроим многоуровневую оборону, которая отсечет 90%+ мусора еще до попадания в ящики.

Четыре уровня защиты:
1. **Postgrey** - отбрасывает спам-ботов на входе (greylisting)
2. **ClamAV** - проверяет вложения на вирусы
3. **SpamAssassin** - анализирует содержимое писем
4. **Fail2ban** - блокирует IP при брутфорсе паролей

## Перед началом

У тебя должно быть:
- Рабочий Postfix + Dovecot из предыдущей части

{{< article link="/posts/mailserver-part-2-postfix-dovecot/">}}

- Минимум **2GB RAM** (ClamAV прожорлив)
- Дисковое пространство для базы вирусов (~500MB)

Проверь что Postfix работает:

```bash
sudo systemctl status postfix
```

## Установка компонентов

### Ставим все сразу

```bash
sudo apt install -y \
  amavisd-new \
  clamav \
  clamav-daemon \
  clamav-freshclam \
  spamassassin \
  postgrey
```

**Что установили:**
- `amavisd-new` - прослойка между Postfix и антивирусом/антиспамом
- `clamav` - антивирусный движок
- `clamav-daemon` - демон ClamAV для фоновой работы
- `clamav-freshclam` - автообновление вирусных баз
- `spamassassin` - антиспам фильтр
- `postgrey` - greylisting демон

### Создание необходимых файлов и директорий

Создаем mailname (используется Amavis)

```bash
echo "mail.example.com" | sudo tee /etc/mailname
```
Создаем директорию для PID файла Amavis

```bash
sudo mkdir -p /var/run/amavis
sudo chown amavis:amavis /var/run/amavis
sudo chmod 755 /var/run/amavis
```

Создаем tmpfiles конфиг для автоматического создания директории
```bash
sudo nano /etc/tmpfiles.d/amavis.conf
```

Добавь:

```
d /run/amavis 0755 amavis amavis -
```

Примени конфиг:

```bash
sudo systemd-tmpfiles --create
```

**Замени** `mail.example.com` на свое полное имя хоста.


### Обновляем базу вирусов

ClamAV нужна актуальная база вирусов:

```bash
sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam
```

Это займет 2-5 минут. Freshclam скачает ~200-300MB данных.

Проверь статус:

```bash
sudo systemctl status clamav-freshclam
```

Должен быть `active (running)`.

## Настройка ClamAV

### Проверяем что демон запущен

```bash
sudo systemctl status clamav-daemon
```

Если не запущен(что скорее всего):

```bash
sudo systemctl enable clamav-daemon
sudo systemctl start clamav-daemon
```

### Настройка сокета

ClamAV слушает через UNIX-сокет. Проверь:

```bash
ls -la /var/run/clamav/clamd.ctl
```

Должен быть сокет с правами для группы `clamav`.

Добавь пользователя `amavis` в группу `clamav`:

```bash
sudo adduser clamav amavis
sudo adduser amavis clamav
```

Перезапусти ClamAV:

```bash
sudo systemctl restart clamav-daemon
```

## Настройка Amavis

Amavis - это диспетчер, который принимает письма от Postfix, прогоняет через ClamAV и SpamAssassin, и возвращает обратно.

### Основной конфиг

Открой:

```bash
sudo nano /etc/amavis/conf.d/15-content_filter_mode
```

Раскомментируй:

```perl
@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
```

**Что сделали:** Включили проверку на вирусы и спам.

### Настройка интеграции

Открой:

```bash
sudo nano /etc/amavis/conf.d/50-user
```

Добавь в конец:

```perl
# Домен
$mydomain = 'example.com';
$myhostname = 'mail.example.com';

# Интерфейс
$inet_socket_bind = '127.0.0.1';

# Порты
$inet_socket_port = 10024;

# Политика для локальных доменов
$policy_bank{'MYNETS'} = {
  originating => 1,
  os_fingerprint_method => undef,
};

# Антиспам
$sa_tag_level_deflt  = -999;  # Всегда добавлять заголовки
$sa_tag2_level_deflt = 5.0;   # Помечать как спам при 5+ баллах
$sa_kill_level_deflt = 10.0;  # Отклонять при 10+ баллах

# Антивирус
$virus_admin = "postmaster\@$mydomain";

# Уведомления
$virus_quarantine_to = "virus-quarantine\@$mydomain";
$spam_quarantine_to = "spam-quarantine\@$mydomain";

# Обязательно в конце (по умолчанию уже присутствует)
1;
```

**Замени:**
- `example.com` на свой домен
- `mail.example.com` на свое имя хоста

**Что настроили:**

**Основные параметры:**
- Слушаем на localhost:10024
- Домен и hostname для заголовков

**Антиспам:**
- `-999` - всегда добавлять X-Spam заголовки
- `5.0` - при 5+ баллах помечать как спам (X-Spam-Flag: YES)
- `10.0` - при 10+ баллах отклонять письмо

**Антивирус:**
- Всегда проверять через ClamAV
- Карантин для вирусов и спама

### Права на директории

```bash
sudo chown -R amavis:amavis /var/lib/amavis
sudo chmod 750 /var/lib/amavis
```

### Запуск Amavis

```bash
sudo systemctl enable amavis
sudo systemctl start amavis
sudo systemctl status amavis
```

Должен быть `active (running)`.

Проверь порт:

```bash
sudo ss -tulnp | grep 10024
```

Должно быть:

```bash
tcp   LISTEN 0      4096       127.0.0.1:10024      0.0.0.0:*    users:(("/usr/sbin/amavi",pid=43480,fd=5),("/usr/sbin/amavi",pid=43479,fd=5),("/usr/sbin/amavi",pid=43456,fd=5))
```

## Настройка SpamAssassin

SpamAssassin работает через Amavis, но нужно настроить его правила.

### Основной конфиг

Открой:

```bash
sudo nano /etc/spamassassin/local.cf
```

Добавь в самый конец:

```
# Требуемый балл для спама
required_score 5.0

# Использовать Bayesian фильтр
use_bayes 1
bayes_auto_learn 1

# DNSBL проверки
use_razor2 0
use_pyzor 0

# Сетевые проверки (SPF, DKIM)
use_dcc 0

# Автообучение
bayes_auto_learn_threshold_nonspam -0.1
bayes_auto_learn_threshold_spam 6.0

# Путь к базе Bayes
bayes_path /var/lib/amavis/.spamassassin/bayes

# Язык
ok_languages en ru
ok_locales en ru

# Размер письма для проверки (500KB)
report_safe 0
```

**Что настроили:**

**required_score 5.0:**
- Порог для пометки спама

**Bayesian фильтр:**
- Обучаемая модель на основе примеров
- Автообучение включено

**DNSBL:**
- Razor/Pyzor/DCC отключены (используем встроенные DNSBL)

**Автообучение:**
- Письма с баллами < -0.1 учатся как не-спам
- Письма с баллами > 6.0 учатся как спам

### Создаем директорию для Bayes

```bash
sudo mkdir -p /var/lib/amavis/.spamassassin
sudo chown -R amavis:amavis /var/lib/amavis/.spamassassin
sudo chmod 700 /var/lib/amavis/.spamassassin
```

### Запуск SpamAssassin

```bash
sudo systemctl enable spamassassin
sudo systemctl start spamassassin
sudo systemctl status spamassassin
```

Должен быть `active (running)`.

### Перезапуск Amavis

```bash
sudo systemctl restart amavis
```

## Настройка Postgrey

Postgrey - это greylisting("временная задержка"). Принцип: первое письмо от нового отправителя откладывается на 5 минут. Легальные серверы повторят попытку, спам-боты - нет.

### Конфигурация

Открой:

```bash
sudo nano /etc/default/postgrey
```

Найди и измени:

```bash
POSTGREY_OPTS="--inet=127.0.0.1:10023 --delay=300"
```

**Что настроили:**
- `--inet=127.0.0.1:10023` - слушать на localhost:10023
- `--delay=300` - задержка 5 минут (300 секунд)

### Белые списки

Postgrey имеет встроенные белые списки для крупных отправителей (Google, Microsoft, и т.д.).

Посмотреть:

```bash
cat /etc/postgrey/whitelist_clients
```

Добавить свои (опционально):

```bash
sudo nano /etc/postgrey/whitelist_clients.local
```

Формат:

```
/^.*\.trusted-domain\.com$/
192.168.1.0/24
specific-server.example.com
```

На примере Yandex:

```
/^.*\.yandex\.ru$/
/^.*\.ya\.ru$/
```

### Запуск

```bash
sudo systemctl enable postgrey
sudo systemctl start postgrey
sudo systemctl status postgrey
```

Должен быть `active (running)`.

Проверь порт:

```bash
sudo ss -tulnp | grep 10023
```

Должно быть:

```
tcp   LISTEN   0   5   127.0.0.1:10023   ...
```

## Интеграция с Postfix

Сейчас настроим Postfix для прогона всех писем через Amavis и Postgrey.

### Настройка content_filter

Открой:

```bash
sudo nano /etc/postfix/main.cf
```

В конце секции `smtpd_recipient_restrictions`, созданную на предыдущих этапах, добавь строку:

```
# Postgrey для greylisting
check_policy_service inet:127.0.0.1:10023
```

И добавь в конец файла:

```
# Content filter через Amavis
content_filter = smtp-amavis:[127.0.0.1]:10024
```

**Что добавили:**

**content_filter:**
- Все письма идут через Amavis на порт 10024
- Amavis проверяет через ClamAV и SpamAssassin
- Возвращает обратно в Postfix на порт 10025

**smtpd_recipient_restrictions:**
- Добавили `check_policy_service inet:127.0.0.1:10023` - проверка через Postgrey

### Настройка master.cf

Открой:

```bash
sudo nano /etc/postfix/master.cf
```

Добавь в конец:

```
# Отправка в Amavis
smtp-amavis unix -      -       n       -       2       smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes
  -o max_use=20

# Прием из Amavis обратно
127.0.0.1:10025 inet n  -       n       -       -       smtpd
  -o content_filter=
  -o smtpd_delay_reject=no
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o smtpd_restriction_classes=
  -o mynetworks=127.0.0.0/8
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
  -o local_header_rewrite_clients=
```

**Что настроили:**

**smtp-amavis:**
- Транспорт для отправки в Amavis
- Таймаут 1200 секунд (для больших писем)
- Максимум 20 использований соединения

**127.0.0.1:10025:**
- Прием обратно из Amavis
- Отключаем повторные проверки (content_filter пустой)
- Пропускаем только с localhost

### Перезапуск Postfix

Проверь конфиг:

```bash
sudo postfix check
```

Если ошибок нет - перезапускай:

```bash
sudo postfix reload
```

Проверь статус:

```bash
sudo systemctl status postfix
```

## Тестирование защиты

### Тест 1: Проверка антивируса

Отправь тестовый вирус EICAR (безопасная тестовая сигнатура):

```bash
telnet localhost 25
```

```
EHLO test.local
MAIL FROM:<test@example.com>
RCPT TO:<admin@example.com>
DATA
Subject: Virus test

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
.
QUIT
```

Проверь логи:

```bash
sudo grep -i "eicar\|infected\|virus" /var/log/mail.log | tail -20
```

Должно быть:

```
... mail amavis[44437]: (44437-01) Blocked INFECTED (Eicar-Signature) {DiscardedOutbound,Quarantined}, MYNETS LOCAL [127.0.0.1]:6674 <test@example.com> -> <admin@example.com>, quarantine: virus-quarantine@example.com, Queue-ID: 6B6C425808, Message-ID: <20260317085556.6B6C425808@mail.example.com>, mail_id: fqAsJO87JdbS, Hits: -, size: 375, 454 ms
... mail postfix/smtp[47529]: 6B6C425808: to=<admin@example.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=24, delays=24/0.02/0.09/0.39, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=44437-01 - INFECTED: Eicar-Signature)
... mail postfix/lmtp[47533]: B34582580B: to=<virus-quarantine@example.com>, relay=mail.example.com[private/dovecot-lmtp], delay=0.12, delays=0.01/0.02/0.04/0.06, dsn=5.1.1, status=bounced (host mail.example.com[private/dovecot-lmtp] said: 550 5.1.1 <virus-quarantine@example.com> User doesn't exist: virus-quarantine@example.com (in reply to RCPT TO command))
```

Письмо **отклонено** - антивирус работает.

### Тест 2: Проверка антиспама

Отправь письмо с внешнего почтового ящика (Gmail, Yandex) на свой сервер с текстом:

```
Subject: BUY CHEAP VIAGRA NOW!!!
Body:
CLICK HERE FOR AMAZING DEALS!!!
FREE MONEY! ACT NOW!
BUY VIAGRA CIALIS CHEAP!
100% GUARANTEED! NO PRESCRIPTION!
MAKE MONEY FAST! LIMITED TIME!
```

**Важно:** Тест через `telnet localhost 25` **не покажет** X-Spam заголовки, т.к. письмо будет считаться исходящим от своих (`MYNETS`).

Проверь логи:

```bash
sudo grep "amavis" /var/log/mail.log | tail -5
```

Должна приблизительно быть строка:

```
... mail amavis[51765]: (51765-01) Passed SPAMMY {RelayedOutbound}, MYNETS LOCAL [127.0.0.1]:45220 <spam@spam.com> -> <admin@example.com>, Queue-ID: 526902584D, Message-ID: <20260317101453.526902584D@mail.example.com>, mail_id: yUPoX6uzzm6f, Hits: 6.549, size: 375, queued_as: 9DA0D2584F, 1259 ms
```

- `Passed CLEAN` — не спам (баллов < 5.0)
- `Passed SPAMMY` — спам (баллов >= 5.0)
- `Hits: X.XX` — количество баллов SpamAssassin

Если баллов >= 5.0, письмо помечено как спам и в заголовках будет:

```
X-Spam-Flag: YES
X-Spam-Score: 15.2
X-Spam-Status: Yes, score=15.2
```

Проверь письмо:

```bash
sudo ls -t /var/mail/example.com/admin/new/ | head -1 | xargs -I {} sudo cat /var/mail/example.com/admin/new/{} | grep X-Spam
```

**Если баллов мало (< 5.0):**

Это нормально — письмо от доверенного провайдера (Yandex, Gmail) с валидной DKIM подписью получает мало баллов. SpamAssassin работает правильно, отличая легитимную почту от спама.

**Уточнение:** В качестве спам рассылки я использовал почту Yandex. 

Логи испытания:
```
... mail amavis[51765]: (51765-01) Passed SPAMMY {RelayedOutbound}, MYNETS LOCAL [127.0.0.1]:45220 <spam@spam.com> -> <admin@example.com>, Queue-ID: 526902584D, Message-ID: <20260317101453.526902584D@mail.example.com>, mail_id: yUPoX6uzzm6f, Hits: 6.549, size: 375, queued_as: 9DA0D2584F, 1259 ms
... mail amavis[51766]: (51766-01) Passed CLEAN {RelayedOpenRelay}, [178.154.239.223]:36200 [2a02:6b8:c42:e720:0:640:3001:0] <oakazanin@ya.ru> -> <admin@example.com>, Queue-ID: AA84721409, Message-ID: <121751773743278@mail.yandex.ru>, mail_id: V5iYivtYPpbe, Hits: 1.567, size: 1912, queued_as: 948F02584F, 853 ms
```

Из логов видно, что в начале письмо получает Passed SPAMMY, а затем Passed CLEAN, Hits: 1.567(колличество баллов, что < 5.0). 
Причины:
- Отправитель - Yandex (доверенный провайдер)
- Валидная DKIM подпись:
```
DKIM-Signature: v=1; a=rsa-sha256; d=ya.ru; s=mail;
```
- IP не в блэклистах

### Тест 3: Проверка Postgrey

Отправь письмо с другого IP (запрос с внешнего сервера):

```bash
telnet mail.example.com 25 
```
где, mail.example.com - полное доменное имя или IP твоего почтового сервера.

```
EHLO mail.google.com
MAIL FROM:<test@newdomain.com>
RCPT TO:<admin@example.com>
DATA
Subject: Greylisting test
.
QUIT
```

При первой попытке должен получить:

```
450 4.2.0 <admin@example.com>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/example.com.html
```

Подожди 5 минут и повтори - письмо пройдет.

Проверь статус Postgrey:

```bash
sudo grep "postgrey" /var/log/mail.log | tail -10
```

Должна быть запись о Greylisted.

## Обучение SpamAssassin

Чем больше примеров спама и не-спама покажешь SpamAssassin, тем точнее он работает.

### Ручное обучение

**Пометить письмо как спам:**

```bash
sudo sa-learn --spam /var/mail/example.com/admin/.Spam/cur/*
```

**Пометить как не-спам:**

```bash
sudo sa-learn --ham /var/mail/example.com/admin/cur/*
```

### Проверить статистику обучения

```bash
sudo sa-learn --dump magic
```

Вывод:

```
0.000          0          3          0  non-token data: bayes db version
0.000          0        150          0  non-token data: nspam
0.000          0        450          0  non-token data: nham
```

**nspam** - количество спам-писем в базе  
**nham** - количество не-спам писем в базе

**После обучения перезапусти Amavis:**

```bash
sudo systemctl restart amavis
```

### Автообучение

SpamAssassin автоматически учится на письмах с четкими признаками (настроили в `local.cf`):

- Баллы < -0.1 → автоматически не-спам
- Баллы > 6.0 → автоматически спам

Через неделю-две база накопится, точность вырастет.

## Fail2ban для почтовых сервисов

Защита от брутфорса паролей SMTP/IMAP.

### Проверка установки

Fail2ban должен быть установлен из статьи по базовой настройке сервера:

{{< article link="/posts/debian-12-base-hardening/">}}

Проверь:

```bash
sudo systemctl status fail2ban
```

### Настройка jail для почты

Открой:

```bash
sudo nano /etc/fail2ban/jail.local
```

Добавь в конец:

```ini
[postfix-sasl]
enabled = true
port = smtp,submission,smtps
filter = postfix[mode=auth]
logpath = /var/log/mail.log
maxretry = 3
bantime = 600

[dovecot]
enabled = true
port = imap,imaps,pop3,pop3s
filter = dovecot
logpath = /var/log/mail.log
maxretry = 3
bantime = 600
```

**Что настроили:**

**postfix-sasl:**
- Защита SMTP AUTH (порты 25, 587, 465)
- Максимум 3 неудачных попытки
- Бан на 10 минут

**dovecot:**
- Защита IMAP/POP3 (порты 143, 993, 110, 995)
- Максимум 3 неудачных попытки
- Бан на 10 минут

### Перезапуск Fail2ban

```bash
sudo systemctl reload fail2ban
```

Проверь тюрьмы:

```bash
sudo fail2ban-client status
```

Должно быть:

```
Status
|- Number of jail:      3
`- Jail list:   dovecot, postfix-sasl, sshd
```

### Тест Fail2ban

Попробуй подключиться с неправильным паролем 3 раза:

```bash
telnet localhost 587
```

```
EHLO test.local
AUTH PLAIN dGVzdEBleGFtcGxlLmNvbQB3cm9uZ3Bhc3N3b3Jk
AUTH PLAIN dGVzdEBleGFtcGxlLmNvbQB3cm9uZ3Bhc3N3b3Jk
AUTH PLAIN dGVzdEBleGFtcGxlLmNvbQB3cm9uZ3Bhc3N3b3Jk
```

После 3-й попытки твой IP должен быть забанен.

Проверь:

```bash
sudo fail2ban-client status postfix-sasl
```

Должен появиться IP в `Banned IP list`.

## Мониторинг защиты

### Статистика Amavis

```bash
sudo amavisd-nanny
```
Команда выводит состояние worker-процессов в реальном времени. 
Точки (.) — процесс idle, звездочки (*) — обрабатывает письмо.

### Статистика ClamAV

```bash
sudo clamdscan --version
sudo freshclam --version
```

Проверь обновление баз:

```bash
sudo cat /var/log/clamav/freshclam.log | tail -20
```

### Статистика SpamAssassin

```bash
sudo sa-learn --dump magic
```

**Вывод:**

```
0.000          0          3          0  non-token data: bayes db version
0.000          0        234          0  non-token data: nspam
0.000          0        789          0  non-token data: nham
0.000          0      45123          0  non-token data: ntokens
0.000          0 1773745892          0  non-token data: oldest atime
0.000          0 1773831245          0  non-token data: newest atime
0.000          0          0          0  non-token data: last journal sync atime
0.000          0          0          0  non-token data: last expiry atime
0.000          0          0          0  non-token data: last expire atime delta
0.000          0          0          0  non-token data: last expire reduction count
```
**Где:**

nspam: 234 — количество спам-писем в обучающей базе
nham: 789 — количество не-спам писем в обучающей базе
ntokens: 45123 — количество токенов (слов) в базе


### Логи

Все логи почты в одном месте:

```bash
sudo tail -f /var/log/mail.log
```

Фильтруй по ключевым словам:

```bash
# Вирусы
sudo grep "Blocked INFECTED" /var/log/mail.log

# Спам
sudo grep "Passed SPAM" /var/log/mail.log

# Greylisting
sudo grep "Greylisted" /var/log/mail.log

# Fail2ban баны
sudo grep "Ban" /var/log/fail2ban.log
```

## Тонкая настройка

### Увеличить порог спама

Если много ложных срабатываний, увеличь `required_score`:

```bash
sudo nano /etc/spamassassin/local.cf
```

Измени:

```
required_score 7.0
```

Перезапусти:

```bash
sudo systemctl restart amavis
```

### Добавить домен в белый список Postgrey

```bash
sudo nano /etc/postgrey/whitelist_clients.local
```

Добавь:

```
/^.*\.important-partner\.com$/
```

Перезапусти:

```bash
sudo systemctl restart postgrey
```

### Отключить greylisting для авторизованных

Если не хочешь задержек для своих пользователей, в Postfix измени:

```bash
sudo nano /etc/postfix/main.cf
```

В `smtpd_recipient_restrictions` **перед** `check_policy_service` добавь:

```
permit_sasl_authenticated,
```

Чтобы получилось:

```
smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination,
  check_policy_service inet:127.0.0.1:10023
```

Перезагрузи:

```bash
sudo postfix reload
```

## Типичные проблемы

### ClamAV жрет всю память

ClamAV требует ~500-700MB RAM. Если сервер слабый:

Открой:

```bash
sudo nano /etc/clamav/clamd.conf
```

Уменьши:

```
MaxThreads 10
MaxConnectionQueueLength 15
```

Перезапусти:

```bash
sudo systemctl restart clamav-daemon
```

### Письма застревают в очереди

Проверь очередь:

```bash
sudo postqueue -p
```

Причина может быть в медленной проверке. Увеличь таймаут:

```bash
sudo nano /etc/postfix/master.cf
```

Найди `smtp-amavis` и увеличь:

```
smtp_data_done_timeout=1800
```

Перезагрузи:

```bash
sudo postfix reload
```

### SpamAssassin не учится

Проверь права на базу Bayes:

```bash
ls -la /var/lib/amavis/.spamassassin/
```

Должен быть владелец `amavis:amavis`.

Исправь:

```bash
sudo chown -R amavis:amavis /var/lib/amavis/.spamassassin
sudo chmod 700 /var/lib/amavis/.spamassassin
```

### Postgrey блокирует легальную почту

Добавь отправителя в белый список:

```bash
sudo nano /etc/postgrey/whitelist_clients.local
```

```
sender-domain.com
```

Перезапусти:

```bash
sudo systemctl restart postgrey
```

## Что получилось

Сейчас у тебя:

**Работает:**
- Антивирусная проверка всех входящих писем (ClamAV)
- Антиспам с обучением (SpamAssassin + Bayes)
- Greylisting для новых отправителей (Postgrey)
- Защита от брутфорса SMTP/IMAP (Fail2ban)

**Потребление ресурсов:**
- ClamAV: ~500-700 MB RAM
- SpamAssassin: ~200-300 MB на процесс
- Amavis: ~50-100 MB
- Postgrey: ~10-20 MB
- **Итого:** +800MB-1.2GB RAM

**Проблемы:**
- Пароли все еще передаются открытым текстом (нет TLS)
- Нет DKIM подписей (письма могут улетать в спам)
- Нет веб-интерфейса

Это **защищенный сервер**, но еще не production-ready.

## Следующий шаг

В следующей части настроим шифрование и репутацию:
- TLS через Let's Encrypt (шифрование соединений)
- DKIM подписи (доверие к твоим письмам)
- SPF и DMARC записи (защита от подделки домена)

После этого письма перестанут улетать в спам у Gmail/Outlook.