Введение: Почему свой почтовый сервер?
Представь, что тебе нужно развернуть корпоративную почту для проекта или обеспечить независимость от сторонних сервисов. Установка почтового сервера на Ubuntu или Debian — это фундаментальный навык для любого DevOps-инженера. Давай разберем этот процесс от А до Я, как если бы я был твоим ментором на проекте.
Архитектура нашего решения
Мы построим классический стек:
- Postfix — MTA (агент пересылки почты)
- Dovecot — IMAP/POP3 сервер
- MySQL/MariaDB — хранение учетных записей
- SpamAssassin — фильтрация спама (опционально)
- OpenDKIM — подпись писем
Подготовка системы
1. Обновление и установка базовых пакетов
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl nano htop net-tools
2. Настройка hostname и DNS
Почтовый сервер требует правильного FQDN:
# Устанавливаем hostname
sudo hostnamectl set-hostname mail.yourdomain.com
# Проверяем
hostname -f
# Должно вернуть: mail.yourdomain.com
- A запись: mail.yourdomain.com → IP сервера
- MX запись: yourdomain.com → mail.yourdomain.com
- PTR запись (обратный DNS) у хостинг-провайдера
Установка и настройка Postfix
3. Установка Postfix с MySQL поддержкой
sudo apt install -y postfix postfix-mysql
Во время установки выбери "Internet Site" и укажи доменное имя.
4. Основная конфигурация Postfix
sudo nano /etc/postfix/main.cf
Добавь или измени следующие параметры:
# Основные настройки
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
sudo apt install -y mariadb-server mariadb-client
sudo mysql_secure_installation
6. Создание базы данных для почты
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
sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d \
dovecot-mysql dovecot-lmtpd
8. Конфигурация аутентификации
# /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
sudo apt install -y certbot python3-certbot-nginx
sudo certbot certonly --standalone -d mail.yourdomain.com \
--agree-tos --email admin@yourdomain.com
10. Обновление конфигов для использования SSL
# В /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
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 ключа
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. Перезапуск сервисов
sudo systemctl restart postfix dovecot opendkim
sudo systemctl enable postfix dovecot opendkim
14. Тестирование работы
# Проверка портов
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 — тест спам-фильтров
Как добавить нового пользователя?
USE mailserver;
INSERT INTO virtual_users (domain_id, email, password)
VALUES (1, 'newuser@yourdomain.com', ENCRYPT('StrongPassword123'));
Как настроить резервное копирование?
Создай простой скрипт для бэкапа:
#!/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?
Основные причины:
- Отсутствует PTR запись (обратный DNS)
- IP адрес в черных списках (проверь на spamhaus.org)
- Неправильно настроены SPF/DKIM записи
- Порт 25 заблокирован хостинг-провайдером
Мониторинг и логи
Для отслеживания работы почтового сервера используй:
# Логи 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
- Регулярное обновление и мониторинг
Теперь у тебя есть полноценный почтовый сервер, готовый к работе. Помни, что поддержка почтовой инфраструктуры — это ongoing процесс: следи за обновлениями, мониторь логи и регулярно проверяй безопасность.