Если по каким-то причинам не хотите или не можете использовать бесплатные или условно бесплатные почтовые сервисы от известных провайдеров, то это статья о том как настроить собственный почтовый сервер.
Вначале несколько слов о том как работает почта.
Входящая почта
Все входящие письма, предназначенные для вашего сервера, принимаются MTA у нас это Postfix (SMTP), а затем MDA, у нас это Dovecot, обеспечивает доступ для MUA (Thunderbird/Outlook) по протоколам IMAP и POP3. Схематически можно представить так:
Incoming mail (Входящая почта откуда-либо) -> MTA: Postfix (SMTP)
-> MDA: Dovecot (LMTP) -> MUA (Thunderbird/Outlook) (локальное хранение)
В общем виде пересылка почтовых сообщений происходит по следующей схеме:
Отправитель использует Mail User Agent (MUA) или почтовый клиент, для отправки сообщения через один или несколько Mail Transfer Agents (MTA). Последний из которых, передает его в почтовый ящик получателя. Далее Mail Delivery Agent (MDA) обеспечивает доступ почтовым клиентам получателя (MUA), обычно через POP3 или IMAP.
Как сказал выше, Dovecot будет через IMAP/POP предоставлять почтовым клиентам доступ к входящий почте.
Исходящая почта
Все исходящие письма должны отправляться с помощью Postfix. Но только с аутентифицированных учетных записей. Схема такая:
Outgoing mail MUA (Thunderbird/Outlook) -> MTA: Postfix (SMTP) -> Destination (SMTP) типа Яндекс/Майл/Gmail
Начнем
Весь план работ выглядит так:
- Установка и настройка MTA (Mail Transfer Agent). В нашем случае это Postfix
- Установка и настройка MDA (Mail Delivery Agent). Это будет Dovecot
Это два обязательных сервиса. Есть ещё дополнительные, но о них позже.
Установка и настройка Postfix
Как уже сказал ранее, роль MTA у нас будет выполнять Postfix. Есть ещё похожие MTA, например exim4, но если вы также используете сервер на базе Ubuntu, то тут Postfix используется по умолчанию. И, соответственно, в Ubuntu 20.04 — 24.04 установка проста:
sudo apt install postfix
Если Postfix установлен ранее, то можно сделать реконфигурацию повторно:
sudo dpkg-reconfigure postfix
Далее, ответьте на вопросы:

Нужно выбрать «Интернет-сайт», затем указать свой домен:

Затем указать имя пользователя, который будет получать системную почту, указать все поддомены для которых вы получаете почту, что-то типа: mail.example.com, localhost.localdomain, localhost и ещё ответить на ряд вопросов. Комментарии там подробные.
Все установки сохраняются в файле:
/etc/postfix/main.cf
Тут надо обратить внимание на две важных установки:
- myorigin
- myhostname
Если на сервере несколько почтовых доменов, то нужно выбрать один из них в качестве myorigin. Именно этот домен будет использован в качестве системных ответов, например, Mail Delivery System<MAILER-DAEMON@myorigin>. Обычно myorigin устанавливается в файле /etc/mailname Можно установить в файле в первой строке или можно напрямую установить
myorigin = example.com
myhostname это имя вашего сервера. Это именно то имя, которое должно быть прописано в поле MX в DNS. Это же имя должно быть указано и в поле SPF. Неплохой вариант это:
myhostname = mail.example.com
Следующий шаг — хранилище писем
Разных вариантов много, например, можно установить параметр home_mailbox = Maildir/ и в этом случае почта будет храниться в домашнем каталоге пользователя. Что-то типа: /home/user/Maildir/ Но в этом случае надо всем пользователям создавать домашние каталоги на сервере, если это ваш случай, то выбирайте этот вариант. Не забудьте в конце Maildir/ поставить слеш, тогда письма будут разбиваться на файлы. Иначе будут храниться в одном.
Либо можно хранить все письма в /var/mail или /var/spool/mail Это определяет параметр mail_spool_directory = /var/mail Тогда вся почта будет храниться в этом каталоге.
Если же у вас довольно много абонентов (100 и более), то вероятно, надо посмотреть в сторону БД.
Все эти установки делаем в файле /etc/postfix/main.cf Можно напрямую править конфиг, либо использовать команду postconf например: sudo postconf -e ‘mail_spool_directory = /var/mail’ (кавычки обязательны).
SMTP Authentication
SMTP аутентификация позволяет клиенту идентифицировать себя через механизм аутентификации SASL, используя Transport Layer Security (TLS) для шифрования процесса аутентификации. После аутентификации SMTP-сервер разрешает клиенту передавать почту.
Если рассматривать в связке с Dovecot-ом, то настройки будут такие:
postconf -e 'smtpd_sasl_type = dovecot'
postconf -e 'smtpd_sasl_path = private/auth'
postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_security_options = noanonymous,noplaintext'
postconf -e 'smtpd_sasl_tls_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'smtpd_relay_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
Здесь мы сделали важные настройки, если их не сделать, спамеры быстро найдут ваш почтовый сервер и будут использовать его для рассылки.
Далее, надо выпустить сертификаты. Можно сделать это от Lets’encript либо самоподписные. После чего настраиваем TLS
postconf -e 'smtp_tls_security_level = may'
postconf -e 'smtpd_tls_security_level = may'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/ssl/private/server.key'
postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/server.crt'
postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
Установка и настройка Dovecot
Чтобы установить базовый сервер Dovecot с общими функциями POP3 и IMAP, выполните следующую команду:
apt install dovecot-imapd dovecot-pop3d
Далее, основной файл конфигурации — /etc/dovecot/dovecot.conf Если в него заглянуть, то можно увидеть два включения: !include conf.d/*.conf и !include_try /usr/share/dovecot/protocols.d/*.protocol
В директории conf.d находятся все файлы настроек. Многое понятно из их названия.
Надо обратить внимание на три файла:
- /etc/dovecot/conf.d/10-master.conf
- /etc/dovecot/conf.d/10-ssl.conf
- /etc/dovecot/conf.d/10-mail.conf
В первом надо установить авторизацию:
service auth {
...
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
...
}
Во втором задать сертификаты, там всё просто, надо подставить ссылки на сертификаты.
ssl_cert = </etc/dovecot/private/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.key
В третьем настроить хранилище писем. Там хорошая аннотация, однако, не всё просто. Для начала сделаем почту для тех пользователей, у которых есть аккаунты на сервере (pam-аутентификация). Лучше избрать вариант хранения писем Maildir. Для этого надо выполнить команду для Postfix’a:
postconf -e 'home_mailbox = Maildir/'
Либо просто добавьте «home_mailbox = Maildir/» в файл /etc/postfix/main.cf
Далее, в файле /etc/dovecot/conf.d/10-mail.conf надо добавить или раскомментировать строку:
mail_location = maildir:~/Maildir:LAYOUT=fs
параметр LAYOUT=fs регламентирует формат почты по директориям.
Aliases (синонимы)
Если публикуете свои адреса где-угодно, то довольно скоро ваш ящик будет заваливать спамом. Неплохая идея — создавать синонимы и их публиковать. Когда спама станет нестерпимо много, синоним можно настроить на более жёсткую обработку спам-фильтром (как настроить автоматическое удаление СПАМа), либо вообще удалить.
За синонимы отвечает файл: /etc/aliases Его формат простой: alias: user Пример:
# See man 5 aliases for format
postmaster: alex_pushkin
После редактирования файла надо выполнить команду: postalias /etc/aliases
Надо перезапустить postfix и dovecot:
systemctl restart postfix.service
systemctl restart dovecot.service
На этом базовая настройка закончена и почтовый сервер должен работать. Не забудьте открыть порты.
Для Dovecot это 110, 143, 993, 995 и для Postfix это 25, 465, 587
Следующим этапом можно настроить DKIM запись для всех исходящих писем. Вот краткая инструкция. И, избавиться от некоторых заголовков — вот инструкция