- Что такое почтовый сервер
- Кому и зачем нужен собственный почтовый сервер
- Как работает передача и прием электронной почты
- SMTP: отправка и передача письма между серверами
- POP3: загрузка писем на устройство
- IMAP: работа с почтой напрямую на сервере
- Подготовка к созданию почтового сервера
- Как установить и настроить почтовый сервер
- Заключение
В этой статье мы разберем, как развернуть полноценный почтовый сервер на Ubuntu 24.04 в облачной инфраструктуре SpaceWeb
Что такое почтовый сервер
Почтовый сервер – это серверное программное обеспечение, которое обрабатывает электронные письма: принимает их, хранит, отправляет и доставляет получателям. Его задача – обеспечить надежный обмен сообщениями между пользователями внутри организации и за ее пределами. Почтовый сервер принимает письмо от отправителя, определяет маршрут доставки и передает его на сервер получателя.
Например, когда вы отправляете письмо с адреса на @yandex.ru, обработка и доставка проходят через почтовый сервер Яндекса – он решает, куда передать ваше сообщение и как быстро оно дойдет.
Почтовые серверы могут работать локально в инфраструктуре компании или в облаке. Локальные решения предлагают полный контроль над хранением данных и возможностями настройки, тогда как облачные сервисы удобнее в обслуживании и масштабировании. В обоих случаях сервер позволяет централизовать почтовую систему, управлять доменными адресами, задавать ограничения, фильтровать спам и обеспечивать безопасность переписки с помощью шифрования и аутентификации.
Кому и зачем нужен собственный почтовый сервер
- Собственный почтовый сервер нужен прежде всего тем, кто хочет полностью контролировать корпоративную переписку. Когда письма проходят через вашу инфраструктуру, а не через внешние сервисы, вы сами определяете правила хранения, безопасности и доступа. Можно задать любые ограничения, управлять объемами ящиков, создавать доменные адреса, подключать дополнительные уровни защиты и контролировать, кто и как использует корпоративную почту.
- Полный контроль важен и с точки зрения безопасности: сообщения не хранятся у сторонних провайдеров, а остаются в вашей системе. Это снижает риски утечки данных, упрощает выполнение внутренних регламентов и позволяет самостоятельно выбирать методы шифрования и аутентификации.
Как работает передача и прием электронной почты
Электронное письмо проходит несколько этапов, прежде чем попасть к адресату. За каждый шаг отвечает свой протокол, а почтовый сервер выступает в роли координатора, который принимает сообщение, определяет маршрут и доставляет его нужному получателю.
Используются три основных протокола: SMTP, POP3 и IMAP.
SMTP: отправка и передача письма между серверами
Когда пользователь нажимает кнопку «Отправить», почтовый клиент устанавливает соединение с SMTP-сервером. Через этот протокол сообщение передается на сервер отправителя, проходит проверку прав доступа и корректности настройки, а затем пересылается дальше по цепочке. SMTP обменивается служебными командами и кодами ответа, чтобы серверы могли подтвердить успешную доставку или указать на ошибку.
Для работы используются порты 25 для обычного соединения и 465 для шифрованного канала SSL/TLS.
POP3: загрузка писем на устройство
POP3 применяется для получения входящих сообщений. Клиент подключается к серверу и запрашивает список писем в почтовом ящике. После загрузки сообщения сохраняются на устройстве, а на сервере обычно удаляются.
POP3 использует порты 110 (нешифрованное соединение) и 995 (SSL/TLS).
IMAP: работа с почтой напрямую на сервере
IMAP позволяет взаимодействовать с письмами без их полного скачивания. Клиент отображает содержимое ящика, но сами данные продолжают храниться на сервере. Все действия – чтение, перемещение по папкам, пометки – синхронизируются на всех устройствах.
Для IMAP используются порты 143 (обычное подключение) и 993 (защищенное SSL/TLS).
Подготовка к созданию почтового сервера
Начните с получения прав суперпользователя – так вы сможете выполнять системные команды без ограничений:
Затем обновите пакеты, чтобы избежать проблем с зависимостями и получить актуальные версии системных компонентов:
Проверьте, совпадает ли имя хоста с тем доменным именем, которое вы планируете использовать для почтового сервера:
Если вывод не соответствует нужному имени, задайте правильное:
Теперь настройте время. Почтовые серверы чувствительны к расхождениям времени: они влияют на SSL-сертификаты, логи, проверки безопасности и порядок обработки писем. Установите chrony для синхронизации:
Выберите подходящую временную зону:
Если вам нужен другой регион, просмотрите доступные варианты:
И включите автоматический запуск chrony:
Далее откройте порты, которые используются почтовыми сервисами.
Вам понадобятся:
- 25, 465, 587 – SMTP для отправки писем;
- 110, 995 – POP3 для получения почты;
- 143, 993 – IMAP для работы с письмами на сервере;
- 80, 443 – HTTP/HTTPS для веб-интерфейсов и проверки сертификатов.
Разрешите входящие подключения:
Так как правила iptables не сохраняются после перезагрузки, выполните:
Как установить и настроить почтовый сервер
Для развертывания собственного почтового сервера на Ubuntu чаще всего используют комбинацию Postfix и Dovecot.
Postfix отвечает за отправку и прием писем между серверами, работает быстро, стабильно и хорошо масштабируется. Он выдерживает большую нагрузку, легко настраивается под любые требования и позволяет гибко управлять доменами, ящиками и маршрутизацией писем.
Dovecot дополняет Postfix и берет на себя работу с почтовыми ящиками. Через него пользователи подключаются к серверу по IMAP или POP3, получают письма и работают с папками. Он надежен, поддерживает современные методы шифрования, безопасную аутентификацию и эффективно обрабатывает почтовые хранилища.
Шаг 1. Установите Postfix
Начните с установки Postfix – это компонент, который будет принимать и отправлять письма. Выполните команду:
Во время установки появится мастер настроек. Выберите вариант Internet Site – он подходит для сервера, который будет работать с доменными ящиками и принимать почту из интернета.
В поле с доменным именем укажите ваш будущий почтовый адрес сервера, например:
Это имя сервер будет использовать в заголовках писем, при взаимодействии с другими почтовыми системами и при проверке DNS-записей.
Шаг 2. Создайте пользователя для почтового хранилища
Чтобы разделить системные данные и почтовые файлы, создайте отдельную группу и пользователя, под которыми будет работать почтовое хранилище.
Сначала создайте группу:
Затем создайте пользователя, указав его домашний каталог – в нем будут храниться почтовые данные:
Проверьте, что каталог создан и принадлежит нужному пользователю:
Теперь у вас есть отдельный пользователь, под которым будут создаваться почтовые ящики и храниться письма.
Шаг 3. Настройте Postfix
Откройте основной конфигурационный файл:
Сначала убедитесь, что сервер использует правильное доменное имя и работает только по IPv4:
inet_protocols = ipv4
Далее укажите пути к SSL-сертификатам, которые будут использоваться для защищенного соединения:
smtpd_tls_key_file = /etc/ssl/mailserver/key.pem
Теперь добавьте параметры, которые определяют, где хранится почта и откуда Postfix будет брать информацию о доменах, псевдонимах и почтовых ящиках:
virtual_alias_maps = proxy:mysql:/etc/postfix/sql_aliases.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql_mailboxes.cf
virtual_minimum_uid = 2001
virtual_uid_maps = static:2001
virtual_gid_maps = static:2001
virtual_transport = dovecot
И включите аутентификацию через Dovecot, чтобы пользователи могли входить в свои почтовые ящики:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
Шаг 4. Создайте SQL-файлы для Postfix
Postfix должен знать, где хранится информация о доменах, псевдонимах и почтовых ящиках. Для этого важно создать отдельные файлы с параметрами подключения к базе MySQL и SQL-запросами.
Создайте каждый файл по очереди и заполните его нужными данными.
1. Файл с правилами для псевдонимов
Откройте файл:
И вставьте:
password = StrongPass123
hosts = localhost
dbname = maildb
query = SELECT target FROM aliases WHERE source='%s' AND enabled=1
Здесь будут храниться правила для перенаправления писем.
2. Файл для списка доменов
Откройте:
Добавьте:
password = StrongPass123
hosts = localhost
dbname = maildb
query = SELECT domain FROM domains WHERE domain='%u'
Postfix будет сверяться с этим запросом, чтобы понять, обслуживает ли он указанный домен.
3. Файл для почтовых ящиков
Откройте:
Заполните:
password = StrongPass123
hosts = localhost
dbname = maildb
query = SELECT CONCAT(domain,'/',mailpath) FROM mailboxes WHERE username='%s' AND active=1
Этот файл сообщает Postfix, где физически хранится почтовый ящик конкретного пользователя.
Шаг 5. Настройте master.cf
Файл master.cf определяет, какие службы Postfix запускает и как они работают. В нем нужно активировать дополнительные почтовые порты и указать, что доставка писем выполняется через Dovecot.
Откройте файл:
Добавьте настройки для порта 587 (submission). Он используется почтовыми клиентами для отправки писем с обязательной аутентификацией:
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=/var/spool/postfix/private/auth
-o smtpd_sasl_security_options=noanonymous
Теперь включите поддержку защищенного порта 465 (smtps). Он необходим для отправки писем через шифрованное соединение:
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
Далее укажите транспорт доставки сообщений через Dovecot. Это нужно, чтобы Postfix передавал входящую почту для конкретного пользователя:
flags=DRhu user=mailuser:mailusers argv=/usr/lib/dovecot/deliver -d ${recipient}
Сохраните изменения.
Шаг 6. Сгенерируйте SSL-сертификаты
Чтобы почтовый сервер мог работать по защищенным протоколам, ему нужны SSL-сертификаты. Они обеспечивают шифрование соединения и позволяют клиентам (Thunderbird, Outlook, смартфоны) доверять вашему серверу.
Создайте каталог, где будут храниться ключи и сертификат:
С помощью openssl сгенерируйте приватный ключ и самоподписанный сертификат. Его можно заменить на сертификат от Let’s Encrypt, но для базовой настройки достаточно и этого:
-out /etc/ssl/mailserver/cert.pem \
-keyout /etc/ssl/mailserver/key.pem \
-subj "/C=RU/ST=Moscow/L=Moscow/O=MailServices/OU=IT/CN=mail.serverdemo.net"
Перезапустите Postfix, чтобы он начал их использовать:
Шаг 7. Установите Dovecot
Dovecot нужен для того, чтобы пользователи могли подключаться к своим почтовым ящикам через IMAP или POP3. Он отвечает за доступ к письмам, структуру папок и аутентификацию.
Установите необходимые пакеты:
Шаг 8. Настройте хранение почты
Теперь нужно указать Dovecot, где хранить письма пользователей. Ранее мы создали отдельный каталог /srv/maildata и пользователя mailuser, поэтому укажем Dovecot путь к этим данным.
Откройте файл конфигурации:
Найдите строку с mail_location (или добавьте новую) и пропишите:
Dovecot автоматически создаст нужные папки, когда пользователь впервые подключится к своему ящику.
Шаг 9. Настройте аутентификацию
По умолчанию сервер использует системные учетные записи, но в нашей конфигурации данные хранятся в MySQL, поэтому нужно переключить Dovecot на работу через SQL.
Откройте файл настроек аутентификации:
Найдите строку:
И замените ее на:
Так сервер будет искать логин и пароль в таблицах MySQL, а не среди учетных записей Linux.
Шаг 10. Укажите SSL-параметры
Чтобы пользователи могли подключаться к почтовому серверу по защищенным протоколам IMAP(S) и POP3(S), необходимо указать Dovecot, какие сертификаты он должен использовать. Без этого почтовые клиенты будут показывать предупреждения о небезопасном соединении.
Откройте файл конфигурации SSL:
Найдите строки, которые отвечают за использование сертификатов, и укажите пути к тем, что вы создали на шаге 6:
ssl_cert = </etc/ssl/mailserver/cert.pem
ssl_key = </etc/ssl/mailserver/key.pem
Параметр ssl = required означает, что сервер принимает только зашифрованные соединения.
Шаг 11. Настройте подключение к базе данных
На этом этапе нужно сообщить Dovecot, где искать информацию о пользователях: их пароли, пути к почтовым ящикам и идентификаторы. Для этого используется отдельный файл конфигурации SQL.
Откройте его:
Добавьте настройки подключения:
connect = host=localhost dbname=maildb user=mailadmin password=StrongPass123
default_pass_scheme = SHA512-CRYPT
Опишите SQL-запросы, которые Dovecot будет выполнять при проверке логина и определении почтового каталога:
user_query = SELECT mailpath AS home, 2001 AS uid, 2001 AS gid FROM mailboxes WHERE username='%u'
После сохранения файла Dovecot сможет проверять пользователей через базу данных и корректно направлять их к своим почтовым каталогам.
Шаг 12. Разрешите Dovecot слушать все интерфейсы
По умолчанию Dovecot может слушать только локальные подключения. Чтобы почтовый сервер был доступен извне, нужно разрешить ему принимать соединения на всех сетевых интерфейсах.
Откройте основной файл конфигурации Dovecot:
Добавьте или измените строку:
Сохраните файл.
Шаг 13. Запустите сервисы
На последнем этапе нужно убедиться, что все выполненные настройки вступили в силу и сервер работает корректно. Для этого включите автозапуск Dovecot и перезапустите его:
То же самое можно выполнить с Postfix, если вы не сделали этого ранее:
Обе службы загрузят обновленные конфигурации и начнут работать с учетом всех внесенных изменений.
Заключение
Готово! Теперь ваш почтовый сервер работает и справляется с основными задачами: принимает письма, отправляет их, хранит ящики и обеспечивает безопасное подключение пользователей.
Дальше вы можете расширять его возможности – подключить веб-почту, добавить новые домены, настроить SPF, DKIM и DMARC, чтобы письма не попадали в спам.