Установка почтового сервера на Ubuntu/Debian 2024 | Postfix + Dovecot | AdminWiki

Установка почтового сервера на Ubuntu: Полное руководство для DevOps

18 декабря 2025 7 мин. чтения #debian #devops #dovecot #linux #postfix #ubuntu #почтовый сервер
Содержание статьи

Введение: Почему свой почтовый сервер?

Представь, что тебе нужно развернуть корпоративную почту для проекта или обеспечить независимость от сторонних сервисов. Установка почтового сервера на Ubuntu или Debian — это фундаментальный навык для любого DevOps-инженера. Давай разберем этот процесс от А до Я, как если бы я был твоим ментором на проекте.

Важно: Эта инструкция одинаково работает для Ubuntu 20.04/22.04 и Debian 11/12. Различия минимальны и будут указаны.

Архитектура нашего решения

Мы построим классический стек:

  • Postfix — MTA (агент пересылки почты)
  • Dovecot — IMAP/POP3 сервер
  • MySQL/MariaDB — хранение учетных записей
  • SpamAssassin — фильтрация спама (опционально)
  • OpenDKIM — подпись писем

Подготовка системы

1. Обновление и установка базовых пакетов

bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl nano htop net-tools

2. Настройка hostname и DNS

Почтовый сервер требует правильного FQDN:

bash
# Устанавливаем hostname
sudo hostnamectl set-hostname mail.yourdomain.com

# Проверяем
hostname -f
# Должно вернуть: mail.yourdomain.com
Внимание: Обязательно настройте DNS записи до начала установки:
  • A запись: mail.yourdomain.com → IP сервера
  • MX запись: yourdomain.com → mail.yourdomain.com
  • PTR запись (обратный DNS) у хостинг-провайдера

Установка и настройка Postfix

3. Установка Postfix с MySQL поддержкой

bash
sudo apt install -y postfix postfix-mysql

Во время установки выбери "Internet Site" и укажи доменное имя.

4. Основная конфигурация Postfix

bash
sudo nano /etc/postfix/main.cf

Добавь или измени следующие параметры:

config
# Основные настройки
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain

# Сетевые настройки
inet_interfaces = all
inet_protocols = ipv4

# Ограничения
mydestination = localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

# Размеры и лимиты
message_size_limit = 10485760
mailbox_size_limit = 1073741824

# TLS настройки
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Установка MariaDB и создание структуры БД

5. Установка MariaDB

bash
sudo apt install -y mariadb-server mariadb-client
sudo mysql_secure_installation

6. Создание базы данных для почты

sql
CREATE DATABASE mailserver;
USE mailserver;

CREATE TABLE virtual_domains (
  id int(11) NOT NULL auto_increment,
  name varchar(50) NOT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE virtual_users (
  id int(11) NOT NULL auto_increment,
  domain_id int(11) NOT NULL,
  email varchar(100) NOT NULL,
  password varchar(150) NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY email (email),
  FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
);

CREATE TABLE virtual_aliases (
  id int(11) NOT NULL auto_increment,
  domain_id int(11) NOT NULL,
  source varchar(100) NOT NULL,
  destination varchar(100) NOT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
);

Настройка Dovecot для IMAP/POP3

7. Установка Dovecot

bash
sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d \
  dovecot-mysql dovecot-lmtpd

8. Конфигурация аутентификации

config
# /etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain login
auth_username_format = %n

!include auth-sql.conf.ext

Настройка SSL/TLS сертификатов

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

bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot certonly --standalone -d mail.yourdomain.com \
  --agree-tos --email admin@yourdomain.com

10. Обновление конфигов для использования SSL

config
# В /etc/postfix/main.cf
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem

# В /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = 

Настройка SPF, DKIM и DMARC

11. Установка OpenDKIM

bash
sudo apt install -y opendkim opendkim-tools
sudo mkdir -p /etc/opendkim/keys/yourdomain.com
sudo chown -R opendkim:opendkim /etc/opendkim/keys

12. Генерация DKIM ключа

bash
cd /etc/opendkim/keys/yourdomain.com
sudo opendkim-genkey -s mail -d yourdomain.com
sudo chown opendkim:opendkim mail.private
sudo cat mail.txt

Финальная настройка и тестирование

13. Перезапуск сервисов

bash
sudo systemctl restart postfix dovecot opendkim
sudo systemctl enable postfix dovecot opendkim

14. Тестирование работы

bash
# Проверка портов
sudo netstat -tlnp | grep -E '(25|110|143|465|587|993)'

# Тест SMTP
telnet localhost 25
EHLO yourdomain.com
QUIT

# Тест отправки письма
sudo apt install -y swaks
swaks --to test@yourdomain.com --from admin@yourdomain.com \
  --server localhost --port 587 --tls

Таблица портов и протоколов

Порт Протокол Назначение Шифрование
25 SMTP Пересылка между серверами STARTTLS
587 SMTP Отправка от клиентов STARTTLS
465 SMTPS Отправка (устаревший) SSL/TLS
143 IMAP Получение почты STARTTLS
993 IMAPS Получение почты SSL/TLS

Часто задаваемые вопросы (FAQ)

Почта уходит в спам. Что делать?

Проверь настройки SPF, DKIM и DMARC. Используй онлайн-инструменты для проверки:

  • mxtoolbox.com — комплексная проверка
  • dkimvalidator.com — проверка DKIM подписи
  • mail-tester.com — тест спам-фильтров

Как добавить нового пользователя?

sql
USE mailserver;
INSERT INTO virtual_users (domain_id, email, password) 
VALUES (1, 'newuser@yourdomain.com', ENCRYPT('StrongPassword123'));

Как настроить резервное копирование?

Создай простой скрипт для бэкапа:

bash
#!/bin/bash
BACKUP_DIR="/backup/mail"
DATE=$(date +%Y%m%d)

# Бэкап базы данных
mysqldump mailserver > "$BACKUP_DIR/mailserver_$DATE.sql"

# Бэкап конфигов
tar -czf "$BACKUP_DIR/configs_$DATE.tar.gz" /etc/postfix /etc/dovecot

# Очистка старых бэкапов
find "$BACKUP_DIR" -type f -mtime +30 -delete

Почта не отправляется на Gmail/Yandex?

Основные причины:

  1. Отсутствует PTR запись (обратный DNS)
  2. IP адрес в черных списках (проверь на spamhaus.org)
  3. Неправильно настроены SPF/DKIM записи
  4. Порт 25 заблокирован хостинг-провайдером

Мониторинг и логи

Для отслеживания работы почтового сервера используй:

bash
# Логи Postfix
sudo tail -f /var/log/mail.log

# Статистика очереди
sudo mailq

# Мониторинг в реальном времени
sudo watch -n 5 'postqueue -p | wc -l'

Заключение

Установка почтового сервера на Ubuntu или Debian — это комплексная задача, требующая внимания к деталям. Мы прошли весь путь от подготовки системы до настройки продвинутых механизмов аутентификации и безопасности.

Ключевые моменты для успеха:

  • Правильная настройка DNS записей перед началом
  • Использование SSL/TLS сертификатов
  • Настройка SPF, DKIM и DMARC
  • Регулярное обновление и мониторинг
Совет ментора: Начни с тестового домена и виртуальной машины. Только после успешного тестирования всех функций переноси конфигурацию на production-сервер.

Теперь у тебя есть полноценный почтовый сервер, готовый к работе. Помни, что поддержка почтовой инфраструктуры — это ongoing процесс: следи за обновлениями, мониторь логи и регулярно проверяй безопасность.

Поделиться:
Сохранить гайд? В закладки браузера