--- title: "Почтовый сервер на Debian 12: полное руководство от установки до production. Часть 1 - Начало" date: 2026-03-05 draft: false description: "Зачем поднимать свой mail-сервер вместо Gmail. Анатомия почтового сервера: Postfix, Dovecot, антиспам, антивирус. Системные требования и чек-лист готовности." tags: ["postfix", "dovecot", "smtp", "imap", "Self-hosting"] categories: ["Системное администрирование", "Электронная почта"] series: ["Почтовый сервер на Debian 12"] series_order: 1 --- Решил поднять свой почтовый сервер? Отлично. Сейчас объясню, почему это одновременно лучшее и худшее решение, которое ты можешь принять для своей инфраструктуры. ## Зачем вообще заморачиваться > Что говорят в интернете: > "Gmail бесплатный и работает отлично, зачем изобретать велосипед?" ### Как есть на самом деле: **Gmail и прочие публичные сервисы - это хорошо до тех пор, пока:** - Тебя не смущает, что твою переписку читают для таргетинга рекламы - Ты не против того, что твой домен висит на чужой инфраструктуре - Тебе не критично, когда Google решит внезапно заблокировать аккаунт без объяснений - Ты готов платить за каждый ящик в корпоративном тарифе - Тебе норм, что лимиты на размер ящика устанавливает кто-то другой **Свой почтовый сервер дает:** - **Полный контроль** - ты сам решаешь кто, что и как - **Безлимитные ящики** - сколько нужно, столько и создашь - **Любой размер** - ограничение только в железе - **Свои правила** - никаких внезапных "обновлений политики" - **Прозрачность** - ты знаешь где лежит твоя почта и кто к ней имеет доступ Но есть нюанс. ## Реальность: во что ты ввязываешься ### Первые 48 часов после запуска: `Час 1:` Сервер работает, письма ходят, ты доволен собой. `Час 3:` Gmail отправляет твои письма в спам. Начинаешь разбираться с SPF. `Час 6:` SPF настроен. Письма все равно в спаме. Погружаешься в DKIM. `Час 12:` DKIM работает. Половина писем доходит. Открываешь документацию DMARC. `Час 24:` Понимаешь, что твой IP попал в какой-то DNSBL. Гуглишь что это вообще такое. `Час 48:` Письма наконец-то доходят до inbox. Пользователь жалуется: "Я не получил письмо от клиента". Начинаешь копаться в логах. `Неделя 1:` Обнаруживаешь, что сервер стал источником спама. Как это получилось - вопрос другой. `Месяц 1:` Осознаешь, что забыл настроить бэкапы. Молишься, чтобы диск не "помер". ### Это нормально Я не пугаю. Я готовлю к реальности. Почтовый сервер - это не "поставил и забыл". Это инфраструктура, которая требует: - Начальной настройки (4-8 часов чистого времени) - Отладки репутации (первые 2-4 недели) - Регулярного мониторинга (15-30 минут в день) - Периодического обслуживания (2-4 часа в месяц) Но когда оно работает - работает **как часы**. ## Что ты получишь в итоге ### Техническая часть: ``` ТВОЙ ПОЧТОВЫЙ СЕРВЕР │ ├─ Прием и отправка почты (Postfix) ├─ Доступ к ящикам через IMAP (Dovecot) ├─ Веб-интерфейс (RoundCube) ├─ Защита от вирусов (ClamAV) ├─ Защита от спама (SpamAssassin) ├─ Защита от взлома (Fail2ban) ├─ Шифрование (Let's Encrypt) ├─ Подписи писем (DKIM) └─ Мониторинг и логи (Pflogsumm) ``` ### Функциональная часть: **Отправка почты:** - С любого почтового клиента (Thunderbird, Outlook, Apple Mail, K-9) - Через веб-интерфейс из любой точки мира - С защищенным соединением (TLS) - С цифровой подписью (твои письма не подделать) **Прием почты:** - От любых отправителей - С проверкой на вирусы - С фильтрацией спама - С пользовательскими правилами (Sieve) **Управление:** - Неограниченное количество доменов - Неограниченное количество ящиков - Псевдонимы (алиасы) - Пересылки - Автоответчики - Квоты на размер (если нужно) **Безопасность:** - Шифрование при передаче (никто не прочитает по пути) - Защита от подбора паролей - Блокировка спамеров - Проверка отправителей ## Из чего это состоит: анатомия почтового сервера Почтовый сервер - это не одна программа. Это экосистема из нескольких компонентов, каждый из которых делает свою работу. ### Postfix - почтальон **Что делает:** Принимает письма от отправителей и доставляет их получателям. **Как работает:** 1. Кто-то отправляет письмо на user@твой-домен.ru 2. Postfix принимает письмо на порт 25 3. Проверяет: "А должен ли я вообще принимать почту для этого домена?" 4. Проверяет отправителя через кучу правил 5. Если все ОК - передает письмо дальше (Dovecot или другому Postfix) 6. Если что-то не так - отклоняет с кодом ошибки **Конфиг:** `/etc/postfix/main.cf` - туда ты будешь лезть чаще всего. ### Dovecot - хранитель ящиков **Что делает:** Дает доступ к почтовым ящикам по протоколам IMAP/POP3. **Как работает:** 1. Почтовый клиент подключается к Dovecot (порт 143/993) 2. Вводит логин и пароль 3. Dovecot проверяет учетные данные 4. Открывает доступ к почтовому ящику 5. Клиент качает письма **Дополнительно:** - Работает как LDA (Local Delivery Agent) - складывает письма в ящики - Поддерживает Sieve - пользовательские фильтры - Управляет квотами **Конфиг:** `/etc/dovecot/dovecot.conf` и куча подфайлов в `/etc/dovecot/conf.d/`. ### Amavis + ClamAV - санитары **Что делает Amavis:** Прослойка между Postfix и антивирусом/антиспамом. **Что делает ClamAV:** Сканирует вложения на вирусы. **Как работает:** 1. Postfix получает письмо 2. Отправляет его в Amavis (порт 10024) 3. Amavis передает в ClamAV 4. ClamAV сканирует 5. Если вирус найден - письмо в карантин 6. Если чисто - Amavis возвращает в Postfix (порт 10025) 7. Postfix доставляет получателю **Конфиг:** `/etc/amavis/conf.d/50-user` ### SpamAssassin - фильтр **Что делает:** Определяет спам по куче признаков. **Как работает:** 1. Анализирует заголовки письма 2. Проверяет тело письма 3. Смотрит IP отправителя в черных списках (DNSBL) 4. Применяет эвристические правила 5. Использует Bayesian фильтр (обучаемый) 6. Выставляет баллы 7. Если баллов больше порога (обычно 5) - помечает как SPAM **Обучение:** - Показываешь примеры спама → он учится - Показываешь примеры нормальной почты → он учится - Со временем точность растет **Конфиг:** `/etc/spamassassin/local.cf` ### Postgrey - вышибала **Что делает:** Временно отклоняет письма от новых отправителей. **Как работает:** 1. Письмо приходит от нового сервера 2. Postgrey: "Приходи через 5 минут" 3. Легальный почтовый сервер вернется через 5 минут 4. Спам-бот не вернется (ему некогда) 5. При повторной попытке - пропускает **Эффективность:** Отсекает ~70% спама вообще без анализа. **Конфиг:** `/etc/default/postgrey` ### Fail2ban - охрана **Что делает:** Блокирует IP-адреса, которые брутфорсят(взламывают методом перебора парольных комбинаций) пароли. **Как работает:** 1. Следит за логами 2. Видит неудачные попытки входа 3. Считает количество попыток 4. Если больше 3-5 за короткое время - бан IP через iptables 5. Через час-два-пять(как настроишь) разбанивает (если не повторится) **Защищает:** - SMTP AUTH (порт 25, 587) - IMAP/POP3 (порт 143, 993, 110, 995) - Веб-интерфейс RoundCube - **Конфиг:** `/etc/fail2ban/jail.local` ### Let's Encrypt - замок **Что делает:** Выдает бесплатные SSL-сертификаты. **Зачем:** Шифрование соединений между клиентом и сервером. **Как работает:** 1. Запускаешь Certbot 2. Он доказывает, что домен принадлежит тебе 3. Let's Encrypt выдает сертификат на 90 дней 4. Certbot автоматически продлевает каждые 60 дней **Без этого:** Все пароли и письма идут открытым текстом по сети. **Конфиг:** Автоматический, сертификаты в `/etc/letsencrypt/live/` ### OpenDKIM - печать **Что делает:** Подписывает исходящие письма цифровой подписью. **Зачем:** Доказывает, что письмо действительно от твоего домена. **Как работает:** 1. Генеришь пару ключей (открытый + закрытый) 2. Открытый публикуешь в DNS 3. OpenDKIM подписывает каждое исходящее письмо закрытым ключом 4. Получатель проверяет подпись открытым ключом из DNS 5. Если подпись валидна - письмо не подделано **Без этого:** Gmail/Outlook 100% отправят твои письма в спам. **Конфиг:** `/etc/opendkim.conf` ### RoundCube - веб-морда **Что делает:** Веб-интерфейс для работы с почтой. **Зачем:** Читать/писать письма через браузер без настройки почтового клиента. **Возможности:** - Чтение/отправка писем - Адресная книга - Настройка фильтров (через плагин Sieve) - Смена паролей - Управление папками - Поиск по почте **Конфиг:** `/etc/roundcube/config.inc.php` ### PostgreSQL - база данных **Что делает:** Хранит данные. **Что хранит:** - Базу RoundCube (сессии, адресная книга, кэш) - Опционально: список пользователей и паролей - Опционально: псевдонимы и пересылки **Почему PostgreSQL, а не MySQL:** - Строже к типам данных → меньше косяков - Лучше работает с UTF-8 - Проще репликация - В Debian 12 отличная интеграция **Конфиг:** `/etc/postgresql/15/main/postgresql.conf` ### Apache + PHP **Что делает:** Крутит RoundCube. **Apache:** Веб-сервер, принимает HTTP-запросы. **PHP:** Интерпретатор, выполняет код RoundCube. **Альтернатива:** Nginx + PHP-FPM (быстрее, но сложнее, может в будущем рассмотрю и такой подход). **Почему Apache:** Работает из коробки, тупо проще с той же эффективностью. **Конфиг:** `/etc/apache2/sites-available/` ### Pflogsumm **Что делает:** Анализирует логи Postfix и делает отчеты. **Показывает:** - Сколько писем отправлено/получено - Сколько отклонено - Топ отправителей/получателей - Ошибки доставки - Статистику по доменам **Использование:** ```bash pflogsumm /var/log/mail.log ``` **Автоматизация:** Настроишь cron - каждый день отчет на почту. ### Netdata - приборная панель **Что делает:** Мониторинг в реальном времени. **Показывает:** - Загрузка CPU, RAM, Disk - Очереди Postfix - Соединения Dovecot - Запросы к PostgreSQL - Запросы к Apache - Температура (если есть датчики) **Интерфейс:** Веб на порту 19999. **Потребление:** ~100MB RAM. ## Как все это работает вместе ### Сценарий 1: Получение письма ``` 1. example.ru отправляет письмо на user@твой-домен.ru ↓ 2. DNS: "MX-запись для твой-домен.ru → mail.твой-домен.ru" ↓ 3. Письмо приходит на твой сервер (Postfix, порт 25) ↓ 4. Postfix: "Проверю отправителя..." - SPF проверка - DNSBL проверка - Greylisting (Postgrey) ↓ 5. Postfix: "Отправлю на проверку в Amavis" ↓ 6. Amavis → ClamAV: "Есть вирусы?" ClamAV: "Чисто" ↓ 7. Amavis → SpamAssassin: "Это спам?" SpamAssassin: "3 балла из 5, норм" ↓ 8. Amavis возвращает в Postfix: "Все ок, доставляй" ↓ 9. Postfix → Dovecot (LMTP): "Положи в ящик user@твой-домен.ru" ↓ 10. Dovecot кладет в /var/spool/mail/твой-домен.ru/user/ ↓ 11. Пользователь открывает RoundCube или Thunderbird ↓ 12. Dovecot (IMAP) отдает письмо клиенту ``` ### Сценарий 2: Отправка письма ``` 1. Пользователь пишет письмо в RoundCube ↓ 2. RoundCube → Postfix (порт 587, SMTP Submission) ↓ 3. Postfix: "Проверю авторизацию..." - SMTP AUTH через Dovecot ↓ 4. Postfix: "Пользователь свой, подпишу письмо" ↓ 5. OpenDKIM добавляет DKIM-подпись ↓ 6. Postfix отправляет письмо на mail.example.ru ↓ 7. example.ru получает и проверяет: - SPF (в DNS твоего домена) - DKIM (подпись валидна?) - DMARC (политика домена) ↓ 8. example.ru: "Все проверки пройдены" → Inbox ``` ## Терминология: что есть что ### MTA (Mail Transfer Agent) **Что:** Программа, которая передает почту между серверами. **Пример:** Postfix, Sendmail, Exim. ### MDA (Mail Delivery Agent) **Что:** Программа, которая кладет письма в почтовые ящики. **Пример:** Dovecot (в режиме LDA/LMTP). ### MUA (Mail User Agent) **Что:** Почтовый клиент. **Пример:** Thunderbird, Outlook, RoundCube, K-9 Mail. ### SMTP (Simple Mail Transfer Protocol) **Что:** Протокол отправки почты. **Порты:** 25 (сервер-сервер), 587 (клиент-сервер с авторизацией). ### IMAP (Internet Message Access Protocol) **Что:** Протокол доступа к почте (с синхронизацией). **Порты:** 143 (открытый), 993 (с TLS). **Особенность:** Письма хранятся на сервере. ### POP3 (Post Office Protocol) **Что:** Протокол доступа к почте (скачивание). **Порты:** 110 (открытый), 995 (с TLS). **Особенность:** Письма скачиваются и удаляются с сервера. **Статус:** Устарел, не будем использовать. ### TLS/SSL **Что:** Шифрование соединения. **Зачем:** Чтобы пароли и письма не перехватили. **Пример:** HTTPS для почты. ### SPF (Sender Policy Framework) **Что:** DNS-запись, которая говорит "с этих IP можно слать почту от моего домена". **Пример:** `v=spf1 ip4:1.2.3.4 ~all` **Зачем:** Защита от подделки отправителя. ### DKIM (DomainKeys Identified Mail) **Что:** Цифровая подпись письма. **Как:** Закрытый ключ на сервере, открытый в DNS. **Зачем:** Доказать, что письмо не подделано. ### DMARC (Domain-based Message Authentication) **Что:** Политика домена: что делать, если SPF или DKIM не прошли. **Варианты:** none (ничего), quarantine (в спам), reject (не принимать). **Пример:** `v=DMARC1; p=quarantine; rua=mailto:dmarc@домен.ru` ### DNSBL (DNS-based Blackhole List) **Что:** Черные списки IP-адресов спамеров. **Примеры:** zen.spamhaus.org, bl.spamcop.net. **Как работает:** Postfix спрашивает DNSBL: "Этот IP спамер?" → DNSBL отвечает. ### Greylisting **Что:** Временная задержка писем от новых отправителей. **Логика:** Спам-боты не повторяют попытки, легальные серверы - повторяют. **Задержка:** 5 минут (обычно). ### Relay **Что:** Пересылка почты через промежуточный сервер. **Пример:** Твой сервер → SMTP провайдера → получатель. **Зачем:** Если твой IP в блэклистах или нет белого IP. ### Open Relay **Что:** Сервер, который пересылает почту от кого угодно. **Статус:** **ЗЛО**. Мгновенно попадешь в блэклисты. **Защита:** SMTP AUTH + правильные restrictions. ### Maildir vs Mbox **Mbox:** Все письма в одном файле. **Maildir:** Каждое письмо - отдельный файл. **Используем:** Maildir (надежнее, быстрее). ### Sieve **Что:** Язык для создания почтовых фильтров. **Пример:** "Если тема содержит 'счет', переложить в папку 'Финансы'". **Управление:** Через плагин managesieve в RoundCube. ### Quota **Что:** Ограничение на размер почтового ящика. **Пример:** 5GB на пользователя. **Наш случай:** Без ограничений (или устанавливаешь сам). ## Системные требования ### Минимальная конфигурация (1-50 пользователей): ``` CPU: 2 ядра (любой современный процессор) RAM: 2 GB Disk: 20 GB (система) + объем почты SSD рекомендуется Net: Стабильное подключение Белый IP (желательно) Открытые порты: 25, 587, 143, 993, 80, 443 ``` ### Рекомендуемая конфигурация (50-200 пользователей): ``` CPU: 4 ядра RAM: 4 GB Disk: 50 GB (система) + объем почты SSD обязательно Net: 100 Мбит/с Белый статический IP ``` ### Оптимальная конфигурация (200-500 пользователей): ``` CPU: 8 ядер RAM: 8 GB Disk: 100 GB (система) + объем почты NVMe SSD Net: 1 Гбит/с Резервный канал ``` ### Расчет дискового пространства: ``` Средний пользователь: 1-5 GB в год Активный пользователь: 10-20 GB в год Очень активный: 50+ GB в год Пример на 100 пользователей: 100 × 5 GB = 500 GB + запас 20% = 600 GB + система 50 GB = 650 GB Итого: диск на 1 TB с запасом ``` ## Что нужно ДО начала установки ### 1. Домен Зарегистрированный домен с доступом к управлению DNS. **Пример:** `example.ru` ### 2. Сервер VPS/Dedicated с Debian 12 и белым IP. **Требования:** - Root-доступ - Чистая установка Debian 12 - Статический IP - Обратная DNS (PTR) настроена на твое имя хоста **Проверка PTR:** ```bash host твой-IP # Должно вернуть: mail.example.ru ``` ### 3. DNS-записи (настроишь в процессе) **A-запись:** ``` mail.example.ru. IN A твой-IP ``` **MX-запись:** ``` example.ru. IN MX 10 mail.example.ru. ``` **SPF-запись:** ``` example.ru. IN TXT "v=spf1 mx ~all" ``` **DKIM и DMARC** - настроим позже. ### 4. Открытые порты **Обязательно:** - `25 (SMTP)` - прием почты от других серверов - `587 (Submission)` - отправка от клиентов - `143 (IMAP)` - доступ к ящикам - `993 (IMAPS)` - IMAP с TLS - `80 (HTTP)` - для Let's Encrypt - `443 (HTTPS)` - для RoundCube **Опционально:** - `22 (SSH)` - для администрирования - `19999 (Netdata)` - для мониторинга ### 5. Время **Реально необходимое:** - Установка и базовая настройка: 4-6 часов - Отладка доставки в Gmail/Outlook: 2-4 часа - Настройка веб-интерфейса: 1-2 часа - Тестирование и доработка: 2-4 часа **Итого:** Закладывай полноценные выходные. ## Проверка готовности Прежде чем начинать, убедись: ``` ☐ Есть зарегистрированный домен ☐ Есть доступ к управлению DNS ☐ Есть VPS/Dedicated с Debian 12 ☐ Есть root-доступ к серверу ☐ Настроен PTR для твоего IP ☐ Открыты необходимые порты ☐ Есть понимание, сколько времени займет ☐ Есть план резервного копирования ☐ Есть готовность разбираться в проблемах ☐ Прочитал эту статью до конца ``` Если все пункты отмечены - можешь начинать. ## Что дальше В следующей части разберем установку и базовую настройку Postfix + Dovecot - сердца почтового сервера. Ты получишь работающую систему приема и отправки почты. Без защиты, без веб-интерфейса, без красивостей - но работающую. А потом будем навешивать остальное: антивирус, антиспам, шифрование, подписи и все остальное, что превращает голый сервер в production-ready решение. Поехали. ---