- Что такое Postfix
- Что такое Dovecot
- Для чего нужны Postfix и Dovecot
- Подготовка к установке
- Как установить и настроить Postfix
- Как установить Dovecot
- Как настроить связку Postfix с Dovecot
- Протестируем
- Настройка брандмауэра
- Заключение
В этой инструкции мы рассмотрим, как самостоятельно установить и настроить связку Postfix и Dovecot на сервере с Linux.
Что такое Postfix
Postfix — это агент передачи почты (Mail Transfer Agent, MTA). Его задача — принимать и отправлять электронные письма через протокол SMTP (Simple Mail Transfer Protocol). Он отвечает за маршрутизацию сообщений, проверку доменов, работу с очередями доставки и передачу писем другим серверам.
Что такое Dovecot
Dovecot — это агент доставки электронной почты (Mail Delivery Agent, MDA) и IMAP/POP3-сервер получения почты. Он обеспечивает хранение писем на сервере, управление почтовыми ящиками и аутентификацию пользователей.
Dovecot позволяет клиентам — таким как Outlook, Thunderbird или мобильные приложения — подключаться к серверу и читать сообщения. Кроме того, он поддерживает шифрование, различные схемы авторизации и интеграцию с базами данных.
Для чего нужны Postfix и Dovecot
Postfix и Dovecot часто используются вместе, потому что они решают разные, но взаимосвязанные задачи в работе почтового сервера. По отдельности каждый из них выполняет лишь часть функций, а в связке формируют полноценную систему для приема, отправки и хранения писем.
Postfix — это компонент, который отвечает за отправку и прием писем по протоколу SMTP. Он принимает сообщения от пользователей и других серверов, проверяет адреса, применяет правила фильтрации и передает письма адресатам. Также Postfix обрабатывает исходящую почту и управляет очередями доставки. Без него сервер не сможет обмениваться сообщениями с внешними почтовыми системами.
Dovecot — это сервер для хранения и выдачи писем. Он работает с протоколами IMAP и POP3, обеспечивая пользователям доступ к почтовым ящикам, проверку логинов и паролей, а также безопасное соединение при чтении и получении почты.
Настройка Postfix и Dovecot вместе необходима для согласованной работы почтовой системы. Postfix принимает и отправляет письма, а Dovecot отвечает за их хранение и выдачу пользователям. Между ними настраивается передача сообщений через внутренний канал (LMTP), что позволяет автоматизировать доставку писем в пользовательские каталоги.
Подготовка к установке
Шаг 1. Подготовьте сервер
Чтобы развернуть почтовый сервер, потребуется сервер с готовой конфигурацией. Его можно арендовать, например, у нас в SpaceWeb:

Кроме того, убедитесь, что у вас есть учетная запись с правами sudo, чтобы выполнять административные команды.
У нас сервер на Ubuntu 22.04. Для хранения данных почтового сервера будет использоваться база данных MySQL.
Шаг 2. Создайте пользователей
Чтобы обеспечить безопасность и изоляцию сервисов, перед установкой почтового сервера необходимо создать отдельных пользователей — одного для управления сервером и одного для хранения почты.
Сначала добавим основного пользователя, от имени которого будем выполнять настройку сервера.
- Откройте терминал.
- Введите команду:
Установите пароль и при желании заполните дополнительные поля (можно просто нажать Enter, чтобы пропустить).
- Затем дайте новому пользователю права администратора:
Теперь у вас есть пользователь postfix с правами sudo. Он пригодится для всех последующих действий — установки и настройки почтового сервера.
- Далее создайте пользователя, который будет отвечать исключительно за хранение и обработку писем. Например, назовите его mailstore, а все письма будут храниться в каталоге /var/maildata.
Создайте группу для хранения почтовых данных:
- Добавьте пользователя с домашним каталогом /var/maildata:
- Создайте каталог, если он еще не существует:
- Назначьте владельца каталога:
Теперь у вас будет два пользователя:
- postfix будет отвечать за установку, настройку и техническое обслуживание почтового сервера;
- mailstore займется хранением и обработкой почтовых данных в каталоге /var/maildata.
Шаг 3. Установите и настройте базу данных MySQL
Теперь, когда пользователи созданы, можно перейти к настройке базы данных.
MySQL понадобится для хранения данных пользователей почтового сервера и конфигурации веб-интерфейса Roundcube.
Чтобы сервер мог работать с базой данных и веб-интерфейсом, установите MySQL, Apache и PHP с нужными модулями.
Выполните команду:
После установки запустите службы и включите их автозапуск:
sudo systemctl enable apache2
sudo systemctl start mysql
sudo systemctl enable mysql
Теперь Apache и MySQL будут автоматически запускаться при старте системы.
Откройте консоль MySQL от имени администратора:
Задайте пароль для пользователя root и создайте две базы данных — одну для почтового сервера, другую для Roundcube:
USE mailserver;
CREATE USER mailuser@localhost IDENTIFIED BY 'MailUserPass123!';
GRANT ALL PRIVILEGES ON mailserver.* TO mailuser@localhost;
USE roundcube;
CREATE USER roundcube@localhost IDENTIFIED BY 'RoundcubePass123!';
GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost;
EXIT;
Шаг 4. Установите и настройте PostfixAdmin
Когда база данных готова, можно переходить к настройке PostfixAdmin — это удобный веб-интерфейс, который позволит управлять пользователями, доменами и почтовыми ящиками прямо из браузера без необходимости редактировать файлы вручную.
Перейдите в домашний каталог:
Скачайте последнюю версию PostfixAdmin с официального сайта:
Распакуйте архив:
Переместите распакованную папку в системный каталог:
Удалите архив, чтобы освободить место:
Чтобы веб-сервер Apache мог корректно работать с PostfixAdmin, нужно выдать права пользователю www-data:
Добавьте символическую ссылку на каталог public, чтобы интерфейс открывался через браузер:
Теперь панель будет доступна по адресу:
Откройте файл config.local.php:
Вставьте в него следующее содержимое:
$CONF['configured'] = true; // включаем конфигурирование
$CONF['setup_password'] = 'хэш пароля'; // появится позже
$CONF['default_language'] = 'ru'; // язык интерфейса
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'mailuser';
$CONF['database_password'] = 'MailUserPass123!';
$CONF['database_name'] = 'postfix';
$CONF['admin_email'] = 'admin@mail.example.ru';
$CONF['encrypt'] = 'md5crypt';
$CONF['default_aliases'] = array(
'abuse' => 'admin',
'hostmaster' => 'admin',
'postmaster' => 'admin',
'webmaster' => 'admin'
);
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'YES';
?>
Сохраните файл (Ctrl + O, затем Enter) и закройте (Ctrl + X).
Откройте браузер и перейдите по адресу:
В поле Setup password введите пароль и нажмите кнопку Generate password hash.
На экране появится хэш пароля. Скопируйте его.
Вернитесь в файл config.local.php и замените строку:
на:
Сохраните изменения и снова откройте страницу setup.php.
Появится форма для создания администратора. Заполните ее.
Теперь интерфейс PostfixAdmin доступен по адресу:
http://mail.example.ru/postfixadmin
Введите логин и пароль администратора. После входа вы сможете добавлять и удалять домены, создавать почтовые ящики, а также управлять алиасами и квотами пользователей.
Как установить и настроить Postfix
Можно переходить к установке почтового сервера Postfix. Он будет принимать, отправлять и маршрутизировать электронные письма, взаимодействуя с базой данных MySQL, где хранятся пользователи, домены и алиасы.
Для начала установите сам Postfix и модуль для работы с MySQL:
Во время установки появится окно с параметрами настройки. В разделе General type of mail configuration выберите пункт Internet Site, а в поле System mail name укажите полное доменное имя сервера (FQDN), например:
Если позже понадобится изменить эти параметры, вы можете вызвать диалог повторной настройки с помощью команды:
Далее откройте основной конфигурационный файл Postfix:
sudo nano /etc/postfix/main.cf
Найдите и закомментируйте несколько строк, добавив символ # в начале каждой:
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_tls_security_level=may
#smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
Затем в конец файла добавьте следующие параметры — они определяют подключение Postfix к базе данных MySQL, использование TLS, а также включают авторизацию пользователей:
relay_domains = mysql:/etc/postfix/mysql/relay_domains.cf
virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf, mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf
virtual_mailbox_base = /var/mail/vmail/
local_recipient_maps = $virtual_mailbox_maps
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_tls_cert_file = /etc/postfix/certs/cert.pem
smtpd_tls_key_file = /etc/postfix/certs/key.pem
smtpd_sasl_tls_security_options = noanonymous
smtpd_tls_auth_only = yes
smtpd_banner = $myhostname ESMTP
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
smtpd_helo_required = yes
Сохраните изменения (Ctrl + O → Enter) и закройте файл (Ctrl + X).
Теперь откройте файл /etc/postfix/master.cf, чтобы настроить дополнительные службы и шифрованные соединения:
В конец файла вставьте следующие строки:
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o syslog_name=postfix/submission
-o smtpd_tls_wrappermode=no
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
-o milter_macro_daemon_name=ORIGINATING
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
-o milter_macro_daemon_name=ORIGINATING
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
Эти настройки добавляют поддержку зашифрованных подключений (порт 465 — SMTPS, порт 587 — Submission) и связывают Postfix с Dovecot для аутентификации пользователей.
Далее создайте каталог /etc/postfix/mysql, в котором будут храниться файлы для подключения к базе данных:
Теперь создайте пять файлов, каждый из которых отвечает за определенный тип запроса к базе данных.
sudo nano /etc/postfix/mysql/relay_domains.cf
Содержимое:
user = mailuser
password = MailUserPass123!
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '1'
Содержимое:
user = mailuser
password = MailUserPass123!
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' AND alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1
Содержимое:
user = mailuser
password = MailUserPass123!
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Содержимое:
user = mailuser
password = MailUserPass123!
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
Содержимое:
user = mailuser
password = MailUserPass123!
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
Эти конфигурационные файлы позволят Postfix обращаться к базе данных MySQL и проверять, какие домены и почтовые ящики активны.
Чтобы включить поддержку шифрования TLS, создайте каталог для сертификатов:
Затем сгенерируйте самоподписной сертификат и ключ:
Во время генерации программа задаст несколько вопросов о названии страны, организации, подразделении и домене — можно вводить любые данные.
Когда сертификат будет создан, проверьте корректность конфигурации:
Если ошибок не обнаружено, перезапустите Postfix, чтобы применить настройки:
После перезапуска сервер будет готов принимать и отправлять почту, работать с базой MySQL и использовать авторизацию через Dovecot. Управлять пользователями и доменами можно через веб-интерфейс PostfixAdmin, который вы установили ранее.
Как установить Dovecot
Как мы уже сказали ранее, Dovecot — это IMAP/POP3-сервер, который отвечает за получение писем и аутентификацию пользователей. В связке с Postfix он используется для проверки логинов и паролей, а также для доставки сообщений в пользовательские почтовые ящики.
Начнем с установки необходимых пакетов. Установите Dovecot и модуль для работы с MySQL:
Перейдите к настройке хранения почты. Dovecot должен знать, где сохранять входящие письма каждого пользователя. Откройте файл конфигурации:
Добавьте строку:
Она указывает на то, что почта будет храниться в формате Maildir, а структура каталогов будет разделена по доменам (%d) и именам пользователей (%u).
Теперь необходимо настроить аутентификацию, чтобы Postfix и Dovecot могли обмениваться данными. Откройте файл:
Добавьте в него следующий блок:
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = mailstore
group = mailstore
}
}
Первый слушатель (/var/spool/postfix/private/auth) нужен, чтобы Postfix мог авторизовать пользователей через Dovecot. Второй (auth-userdb) используется для внутренней авторизации при доставке писем.
Сразу после этого добавьте блок статистики:
unix_listener stats-reader {
user = mailstore
group = mailstore
mode = 0660
}
unix_listener stats-writer {
user = mailstore
group = mailstore
mode = 0660
}
}
Затем нужно указать, каким способом Dovecot будет проверять учетные данные пользователей.
Откройте файл:
Замените строки:
!include auth-sql.conf.ext
Это отключит стандартную системную аутентификацию и включит авторизацию через базу данных MySQL.
Затем включите шифрование соединений. Откройте файл:
Укажите пути к сертификатам и настройку обязательного SSL:
ssl_cert = </etc/postfix/certs/cert.pem
ssl_key = </etc/postfix/certs/key.pem
Если вы использовали собственный путь к сертификатам при настройке Postfix, укажите те же файлы.
Теперь разрешим Dovecot автоматически создавать каталоги для почты, если их еще нет.
Откройте файл:
Добавьте строку:
Следующий шаг — подключение к базе данных. Откройте файл:
Добавьте в него строки, которые указывают Dovecot путь к файлу с настройками SQL-запросов:
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
Теперь создайте файл, описывающий подключение к MySQL и SQL-запросы. Откройте:
Добавьте в него следующее содержимое:
connect = host=localhost dbname=postfix user=mailuser password=MailUserPass123!
default_pass_scheme = MD5-CRYPT
user_query = SELECT CONCAT('/var/maildata/', LCASE(`domain`), '/', LCASE(`maildir`)) AS home, 1050 AS uid, 1050 AS gid FROM mailbox WHERE username = '%u'
Эти запросы позволяют Dovecot получать пароли и пути к почтовым каталогам из базы данных Postfix, которую вы создали ранее.
Чтобы Dovecot слушал все сетевые интерфейсы и принимал подключения, откройте файл:
Добавьте строку:
Теперь осталось включить автозапуск службы и перезапустить Dovecot, чтобы применить все настройки:
sudo systemctl restart dovecot
Как настроить связку Postfix с Dovecot
Когда оба компонента — и Postfix, и Dovecot — установлены и настроены, нужно объединить их в единую систему, чтобы они могли обмениваться данными: Postfix будет передавать письма Dovecot для доставки, а Dovecot — выполнять аутентификацию пользователей при отправке сообщений.
Сначала откройте основной файл конфигурации Postfix:
В этом файле нужно включить поддержку шифрования и указать, что Postfix будет использовать Dovecot для проверки логинов и паролей.
Добавьте или измените строки:
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
Эти параметры позволяют Postfix использовать аутентификацию через сокет Dovecot и шифровать SMTP-соединения.
Далее закомментируйте строки, которые больше не нужны. Это старые параметры для локальных почтовых ящиков — они не используются при работе через базу данных MySQL:
#virtual_mailbox_maps = hash:/etc/postfix/vmaps
#virtual_minimum_uid = 1000
#virtual_uid_maps = static:5000
#virtual_gid_maps = static:5000
Вместо них добавьте строку, которая определяет передачу почты в Dovecot по протоколу LMTP (Local Mail Transfer Protocol):
Сохраните изменения (Ctrl + O → Enter) и закройте файл (Ctrl + X).
Теперь нужно внести небольшие правки в файл master.cf, который управляет службами и портами Postfix. Откройте его:
Найдите строку:
и раскомментируйте ее, удалив символ # в начале.
Она активирует порт 587, который используется для отправки почты клиентами.
Если хотите, можете убедиться, что рядом с этой строкой присутствуют дополнительные параметры шифрования — например, такие, как:
-o smtpd_sasl_auth_enable=yes
Они обеспечивают защиту и авторизацию при отправке сообщений.
После изменения конфигурации необходимо перезапустить службы, чтобы применить все настройки:
sudo systemctl restart dovecot
Протестируем
Для начала отправим тестовое письмо на один из созданных почтовых ящиков. Выполните команду:
Где:
- "Test mail" — это текст письма;
- -s "Test mail" — тема письма;
- admin@site.ru — почтовый адрес, созданный вами через PostfixAdmin.
Если почтовый сервер настроен корректно, сообщение появится в папке:
/var/maildata/site.ru/admin/new/. Если вы используете другой путь хранения почты — например /home/mail — проверьте соответствующий каталог.
Если письмо не пришло, посмотрите журнал работы Postfix, чтобы понять, на каком этапе возникла ошибка:
В этом файле отображаются все события — прием писем, попытки доставки, ошибки авторизации и сетевые сбои.
Обратите внимание на строки, содержащие слова status=sent, deferred или bounced: они помогут определить, дошло ли сообщение или было отклонено.
Настройка брандмауэра
Чтобы почтовый сервер был доступен из интернета и клиенты могли подключаться по IMAP, POP3 и SMTP, необходимо открыть соответствующие порты в UFW (Uncomplicated Firewall).
Разрешите входящие соединения для протоколов POP3 и POP3S:
sudo ufw allow 995
Откройте порты для IMAP и IMAPS:
sudo ufw allow 993
И наконец, разрешите доступ к SMTP-сервисам:
sudo ufw allow 465
sudo ufw allow 587
В конце перезапустите UFW, чтобы изменения вступили в силу:
Ваш почтовый сервер полностью готов к работе.
Можно подключаться к нему из почтовых клиентов по протоколам IMAP (порт 993) или SMTP (порт 587), используя логин и пароль пользователя, созданного в PostfixAdmin.
Заключение
Теперь у вас полностью настроен почтовый сервер с Postfix для отправки писем, Dovecot для их приема и аутентификации, а также PostfixAdmin для удобного управления пользователями и доменами через веб-интерфейс.
Если вы хотите, чтобы установка и настройка почтового сервера были выполнены нашими специалистами, обратите внимание на услугу «Администрирование серверов Linux» от SpaceWeb.