--- title: "Почтовый сервер на Debian 12: полное руководство от установки до production. Часть 3 - Защита от спама и вирусов" date: 2026-03-16 draft: false description: "Настройка 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: RCPT TO: 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 -> , 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=, 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=, 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 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 -> , 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 -> , 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] -> , 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: RCPT TO: DATA Subject: Greylisting test . QUIT ``` При первой попытке должен получить: ``` 450 4.2.0 : 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/tips-debian-12-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.