Даниил Франкс

Даниил Франкс

г.Казань

ИТ-парк

Даниил Франкс Даниил Франкс
+7 (843) 503-16-37 Даниил Франкс Ежедневно с 11:00 до 19:00
EN
Блог

Как установить собственный почтовый сервер

02.06.2025
Даниил Франкс
🎯 Разработка сайтов, мобильных приложений, CRM 💻 Ruby on Rails, React, React native

🎯 Зачем нужен свой почтовый сервер

Собственный почтовый сервер даёт полный контроль над данными, независимость от сторонних провайдеров и возможность гибкой настройки под задачи бизнеса. Это решение подходит для компаний, которые ценят конфиденциальность, хотят кастомизировать почтовую инфраструктуру или снизить операционные расходы.


🔧 Подготовка сервера и базовая настройка

Требования к окружению

Создание выделенного пользователя

Для безопасности рекомендуется не работать под root. Создайте отдельного пользователя с правами администратора:

sudo adduser info
sudo usermod -aG sudo info

Настройка безопасного SSH-доступа

Пример конфигурации /etc/ssh/sshd_config:

Port 7080
PermitRootLogin no
AllowUsers info myname

После изменений перезагрузите службу:

sudo systemctl restart sshd

📬 Установка и базовая конфигурация Postfix

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

sudo apt update
sudo apt -y install postfix sasl2-bin mailutils

При настройке Postfix выберите режим «No Configuration» — конфигурацию выполним вручную.

Основные параметры в /etc/postfix/main.cf

myhostname = test.ru
mydomain = test.ru
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
message_size_limit = 10485760
mailbox_size_limit = 1073741824

Настройка SMTP-аутентификации через Dovecot

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject

Примените изменения:

sudo newaliases
sudo systemctl restart postfix

🗂️ Настройка Dovecot для доступа к почте

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

sudo apt -y install dovecot-core dovecot-pop3d dovecot-imapd

Ключевые настройки

/etc/dovecot/dovecot.conf

listen = *, ::

/etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = no
auth_mechanisms = plain login

/etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/info/Maildir

/etc/dovecot/conf.d/10-master.conf — интеграция с Postfix:

unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
}

Перезапустите службу:

sudo systemctl restart dovecot

🔐 Настройка TLS/SSL шифрования

Получение сертификата Let's Encrypt

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d test.ru

Настройка Postfix для работы с TLS

В main.cf добавьте:

smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/test.ru/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/test.ru/privkey.pem
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3

Настройка Dovecot для TLS

В /etc/dovecot/conf.d/10-ssl.conf:

ssl = yes
ssl_cert = /etc/letsencrypt/live/test.ru/fullchain.pem
ssl_key = /etc/letsencrypt/live/test.ru/privkey.pem

Примените изменения:

sudo systemctl restart postfix dovecot

🌐 Настройка виртуальных доменов и почтовых ящиков

Конфигурация Postfix для виртуальных ящиков

В main.cf:

virtual_mailbox_domains = test.ru
virtual_mailbox_base = /home/info
virtual_mailbox_maps = hash:/etc/postfix/virtual-mailbox
virtual_uid_maps = static:20000
virtual_gid_maps = static:20000

Файл маппинга /etc/postfix/virtual-mailbox

info@test.ru    test.ru/info/Maildir/

Примените маппинг:

sudo postmap /etc/postfix/virtual-mailbox
sudo systemctl restart postfix

Настройка аутентификации в Dovecot

Создайте файл /etc/dovecot/users с хэшированным паролем:

sudo doveadm pw -s CRAM-MD5

Добавьте строку в формате:

info@test.ru:{CRAM-MD5}хэш_пароля

В auth-passwdfile.conf.ext укажите путь к файлу пользователей и метод аутентификации.


🛡️ Настройка записей DNS для улучшения доставляемости

SPF-запись

Разрешает отправку почты только с вашего сервера:

test.ru. IN TXT "v=spf1 ip4:100.90.88.77 a mx ~all"

DMARC-политика

Указывает, как обрабатывать письма, не прошедшие проверки:

_dmarc.test.ru. IN TXT "v=DMARC1; p=none; aspf=r; sp=none"

Рекомендуется начать с политики p=none для мониторинга, затем перейти к p=quarantine или p=reject.

DKIM (опционально, но рекомендуется)

Подпись исходящих писем криптографическим ключом.

Настройка требует установки opendkim и публикации публичного ключа в DNS.


📱 Подключение почтового клиента

Параметры для настройки

Рекомендуемые клиенты


🔍 Тестирование и диагностика

Проверка отправки и получения

echo "Тестовое сообщение" | mail -s "Проверка" info@test.ru

Просмотр логов

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

Анализ статистики

Установите pflogsumm для формирования отчётов:

sudo apt install pflogsumm
sudo pflogsumm -d today /var/log/mail.log

Онлайн-проверки

Тест портов

telnet test.ru 25
 telnet test.ru 587
 telnet test.ru 143

⚙️ Автоматизация и мониторинг

Настройка лог-ротации и уведомлений

Добавьте в crontab ежедневный отчёт:

00 01 * * * sudo pflogsumm -e -d yesterday /var/log/mail.log | mail -s 'Postfix Daily Report' admin@test.ru

Резервное копирование

Регулярно архивируйте:

Подписывайтесь на мой канал и будьте в курсе всех событий в мире it! @daniilfranxx Подписаться

ОГРНИП 323169000103441

Даниил Франкс Даниил Франкс Даниил Франкс Даниил Франкс Даниил Франкс Даниил Франкс

* Деятельность компании Meta, которая является владельцем соцсетей Facebook и Instagram, запрещена в России.