Задать вопрос
Все статьи / Полезная информация / Как создать почтовый сервер
Найти результаты:
Период:
с:
 
по:
Помощь в поиске

Помощь в поиске

apple banana
Найти записи, которые содержат хотя бы одно из двух слов.

+apple +juice
Найти записи, которые содержат оба слова.

+apple macintosh
Найти записи, которые содержат слово 'apple', но положение записей выше, если они также содержат 'macintosh'.

+apple -macintosh
Найти записи, которые содержат слово 'apple', но не 'macintosh'.

+apple ~macintosh
Найти записи, которые содержат слово 'apple', но если запись также содержит слово 'macintosh', rate it lower than if row does not. Это более "мягкий" чем поиск '+apple -macintosh', для которого наличие 'macintosh' вызывает что записи не будут возвращены вовсе.

+apple +(>turnover <strudel)
Найти записи, которые содержат слова 'apple' и 'turnover', или 'apple' и 'strudel' (в любом порядке), но ранг 'apple turnover' выше чем 'apple strudel'.

apple*
Найти записи, которые содержат такие слова как 'apple', 'apples', 'applesauce', или 'applet'.

"some words"
Найти записи, которые содержат точную фразу 'some words' (например записи содержащие 'some words of wisdom', но не "some noise words").

Как создать почтовый сервер

В этой статье мы разберем, как развернуть полноценный почтовый сервер на 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).

Подготовка к созданию почтового сервера

Начните с получения прав суперпользователя – так вы сможете выполнять системные команды без ограничений:

sudo su

Затем обновите пакеты, чтобы избежать проблем с зависимостями и получить актуальные версии системных компонентов:

apt update && apt upgrade

Проверьте, совпадает ли имя хоста с тем доменным именем, которое вы планируете использовать для почтового сервера:

hostname

Если вывод не соответствует нужному имени, задайте правильное:

hostnamectl set-hostname mail.hostname.ru

Теперь настройте время. Почтовые серверы чувствительны к расхождениям времени: они влияют на SSL-сертификаты, логи, проверки безопасности и порядок обработки писем. Установите chrony для синхронизации:

apt install chrony

Выберите подходящую временную зону:

timedatectl set-timezone Europe/Moscow

Если вам нужен другой регион, просмотрите доступные варианты:

timedatectl list-timezones

И включите автоматический запуск chrony:

systemctl enable chrony

Далее откройте порты, которые используются почтовыми сервисами. 
Вам понадобятся:

  • 25, 465, 587 – SMTP для отправки писем;
  • 110, 995 – POP3 для получения почты;
  • 143, 993 – IMAP для работы с письмами на сервере;
  • 80, 443 – HTTP/HTTPS для веб-интерфейсов и проверки сертификатов.

Разрешите входящие подключения:

iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995,80,443 -j ACCEPT

Так как правила iptables не сохраняются после перезагрузки, выполните:

netfilter-persistent save

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

Для развертывания собственного почтового сервера на Ubuntu чаще всего используют комбинацию Postfix и Dovecot. 

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

Dovecot дополняет Postfix и берет на себя работу с почтовыми ящиками. Через него пользователи подключаются к серверу по IMAP или POP3, получают письма и работают с папками. Он надежен, поддерживает современные методы шифрования, безопасную аутентификацию и эффективно обрабатывает почтовые хранилища. 

Шаг 1. Установите Postfix

Начните с установки Postfix – это компонент, который будет принимать и отправлять письма. Выполните команду:

apt install postfix postfix-mysql

Во время установки появится мастер настроек. Выберите вариант Internet Site – он подходит для сервера, который будет работать с доменными ящиками и принимать почту из интернета. 

В поле с доменным именем укажите ваш будущий почтовый адрес сервера, например:

mail.serverdemo.net

Это имя сервер будет использовать в заголовках писем, при взаимодействии с другими почтовыми системами и при проверке DNS-записей.

Шаг 2. Создайте пользователя для почтового хранилища

Чтобы разделить системные данные и почтовые файлы, создайте отдельную группу и пользователя, под которыми будет работать почтовое хранилище. 

Сначала создайте группу:

addgroup -gid 2001 mailusers

Затем создайте пользователя, указав его домашний каталог – в нем будут храниться почтовые данные:

adduser --home /srv/maildata -gid 2001 -uid 2001 mailuser

Проверьте, что каталог создан и принадлежит нужному пользователю:

ll /srv

Теперь у вас есть отдельный пользователь, под которым будут создаваться почтовые ящики и храниться письма.

Шаг 3. Настройте Postfix

Откройте основной конфигурационный файл:

nano /etc/postfix/main.cf

Сначала убедитесь, что сервер использует правильное доменное имя и работает только по IPv4:

myhostname = mail.serverdemo.net
inet_protocols = ipv4

Далее укажите пути к SSL-сертификатам, которые будут использоваться для защищенного соединения:

smtpd_tls_cert_file = /etc/ssl/mailserver/cert.pem
smtpd_tls_key_file = /etc/ssl/mailserver/key.pem

Теперь добавьте параметры, которые определяют, где хранится почта и откуда Postfix будет брать информацию о доменах, псевдонимах и почтовых ящиках:

virtual_mailbox_base = /srv/maildata
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_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Шаг 4. Создайте SQL-файлы для Postfix

Postfix должен знать, где хранится информация о доменах, псевдонимах и почтовых ящиках. Для этого важно создать отдельные файлы с параметрами подключения к базе MySQL и SQL-запросами.

Создайте каждый файл по очереди и заполните его нужными данными.

1. Файл с правилами для псевдонимов

Откройте файл:

nano /etc/postfix/sql_aliases.cf

И вставьте:

user = mailadmin
password = StrongPass123
hosts = localhost
dbname = maildb
query = SELECT target FROM aliases WHERE source='%s' AND enabled=1

Здесь будут храниться правила для перенаправления писем.

2. Файл для списка доменов

Откройте:

nano /etc/postfix/sql_domains.cf

Добавьте:

user = mailadmin
password = StrongPass123
hosts = localhost
dbname = maildb
query = SELECT domain FROM domains WHERE domain='%u'

Postfix будет сверяться с этим запросом, чтобы понять, обслуживает ли он указанный домен.

3. Файл для почтовых ящиков

Откройте:

nano /etc/postfix/sql_mailboxes.cf

Заполните:

user = mailadmin
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.

Откройте файл:

nano /etc/postfix/master.cf

Добавьте настройки для порта 587 (submission). Он используется почтовыми клиентами для отправки писем с обязательной аутентификацией:

submission inet n  -  n  -  -  smtpd
  -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). Он необходим для отправки писем через шифрованное соединение:

smtps inet n  -  n  -  -  smtpd
  -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 передавал входящую почту для конкретного пользователя:

dovecot unix  -  n  n  -  -  pipe
  flags=DRhu user=mailuser:mailusers argv=/usr/lib/dovecot/deliver -d ${recipient}

Сохраните изменения. 

Шаг 6. Сгенерируйте SSL-сертификаты

Чтобы почтовый сервер мог работать по защищенным протоколам, ему нужны SSL-сертификаты. Они обеспечивают шифрование соединения и позволяют клиентам (Thunderbird, Outlook, смартфоны) доверять вашему серверу.

Создайте каталог, где будут храниться ключи и сертификат:

mkdir -p /etc/ssl/mailserver

С помощью openssl сгенерируйте приватный ключ и самоподписанный сертификат. Его можно заменить на сертификат от Let’s Encrypt, но для базовой настройки достаточно и этого:

openssl req -new -x509 -days 900 -nodes \
-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, чтобы он начал их использовать:

systemctl enable postfix && systemctl restart postfix

Шаг 7. Установите Dovecot

Dovecot нужен для того, чтобы пользователи могли подключаться к своим почтовым ящикам через IMAP или POP3. Он отвечает за доступ к письмам, структуру папок и аутентификацию.

Установите необходимые пакеты:

apt install dovecot-imapd dovecot-pop3d dovecot-mysql

Шаг 8. Настройте хранение почты

Теперь нужно указать Dovecot, где хранить письма пользователей. Ранее мы создали отдельный каталог /srv/maildata и пользователя mailuser, поэтому укажем Dovecot путь к этим данным.

Откройте файл конфигурации:

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

Найдите строку с mail_location (или добавьте новую) и пропишите:

mail_location = maildir:/srv/maildata/%d/%n/

Dovecot автоматически создаст нужные папки, когда пользователь впервые подключится к своему ящику.

Шаг 9. Настройте аутентификацию

По умолчанию сервер использует системные учетные записи, но в нашей конфигурации данные хранятся в MySQL, поэтому нужно переключить Dovecot на работу через SQL.

Откройте файл настроек аутентификации:

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

Найдите строку:

!include auth-system.conf.ext

И замените ее на:

!include auth-sql.conf.ext

Так сервер будет искать логин и пароль в таблицах MySQL, а не среди учетных записей Linux.

Шаг 10. Укажите SSL-параметры

Чтобы пользователи могли подключаться к почтовому серверу по защищенным протоколам IMAP(S) и POP3(S), необходимо указать Dovecot, какие сертификаты он должен использовать. Без этого почтовые клиенты будут показывать предупреждения о небезопасном соединении.

Откройте файл конфигурации SSL:

nano /etc/dovecot/conf.d/10-ssl.conf

Найдите строки, которые отвечают за использование сертификатов, и укажите пути к тем, что вы создали на шаге 6:

ssl = required
ssl_cert = </etc/ssl/mailserver/cert.pem
ssl_key = </etc/ssl/mailserver/key.pem

Параметр ssl = required означает, что сервер принимает только зашифрованные соединения.

Шаг 11. Настройте подключение к базе данных

На этом этапе нужно сообщить Dovecot, где искать информацию о пользователях: их пароли, пути к почтовым ящикам и идентификаторы. Для этого используется отдельный файл конфигурации SQL.

Откройте его:

nano /etc/dovecot/dovecot-sql.conf.ext

Добавьте настройки подключения:

driver = mysql
connect = host=localhost dbname=maildb user=mailadmin password=StrongPass123
default_pass_scheme = SHA512-CRYPT

Опишите SQL-запросы, которые Dovecot будет выполнять при проверке логина и определении почтового каталога:

password_query = SELECT pass FROM mailboxes WHERE username='%u'
user_query = SELECT mailpath AS home, 2001 AS uid, 2001 AS gid FROM mailboxes WHERE username='%u'

После сохранения файла Dovecot сможет проверять пользователей через базу данных и корректно направлять их к своим почтовым каталогам. 

Шаг 12. Разрешите Dovecot слушать все интерфейсы

По умолчанию Dovecot может слушать только локальные подключения. Чтобы почтовый сервер был доступен извне, нужно разрешить ему принимать соединения на всех сетевых интерфейсах.

Откройте основной файл конфигурации Dovecot:

nano /etc/dovecot/dovecot.conf

Добавьте или измените строку:

listen = *

Сохраните файл. 

Шаг 13. Запустите сервисы

На последнем этапе нужно убедиться, что все выполненные настройки вступили в силу и сервер работает корректно. Для этого включите автозапуск Dovecot и перезапустите его:

systemctl enable dovecot && systemctl restart dovecot

То же самое можно выполнить с Postfix, если вы не сделали этого ранее:

systemctl enable postfix && systemctl restart postfix

Обе службы загрузят обновленные конфигурации и начнут работать с учетом всех внесенных изменений.

Заключение 

Готово! Теперь ваш почтовый сервер работает и справляется с основными задачами: принимает письма, отправляет их, хранит ящики и обеспечивает безопасное подключение пользователей. 

Дальше вы можете расширять его возможности – подключить веб-почту, добавить новые домены, настроить SPF, DKIM и DMARC, чтобы письма не попадали в спам.

Предыдущая статья
Как создать и настроить DNS-сервер без ISPmanager
Следующая статья
Как удалить пользователя в Ubuntu