Если по каким-то причинам не хотите или не можете использовать бесплатные или условно бесплатные почтовые сервисы от известных провайдеров, то это статья о том как настроить собственный почтовый сервер.
Вначале несколько слов о том как работает почта.
Все входящие письма, предназначенные для вашего сервера, должны приниматься MTA у нас это Postfix (SMTP), а затем передаваться MDA, у нас это Dovecot (LMTP) для хранения в папке «Входящие». Схематически можно представить так:
Incoming mail (Входящая почта откуда-либо) -> MTA: Postfix (SMTP) -> MDA: Dovecot (LMTP) -> MailBox/Inbox (локальное хранение)
В общем виде пересылка почтовых сообщений происходит по следующей схеме:
Отправитель использует Mail User Agent (MUA) или почтовый клиент, для отправки сообщения через один или несколько Mail Transfer Agents (MTA). Последний из которых, передает его Mail Delivery Agent (MDA) для доставки в почтовый ящик получателя, откуда оно будет получено почтовым клиентом получателя, обычно через сервер 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 установка проста:
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 запись для всех исходящих писем. Вот краткая инструкция. И, избавиться от некоторых заголовков — вот инструкция