OpenSMTPD
Содержание
Введение
Эта статья описывает некоторые типовые варианты настройки почтового сервера OpenSMTPD на дистрибутивах ROSA Fresh/Chrome 12 и новее.
OpenSMTPD отличается сочетанием простоты настройки и функционала.
Установка и запуск
Выполните:
sudo dnf install opensmtpd
Ознакомьтесь со списком файлов в пакете (в т.ч. со списков мануалов):
rpm -ql opensmtpd
Запустите службу:
sudo systemctl start opensmtpd
Проверьте, что служба запустилась:
sudo systemctl status opensmtpd
Лог работы можно получить так:
sudo journalctl -u opensmtpd
Проверьте, какие интерфейсы и порты прослушиваются:
sudo ss -ntulp | grep smtpd
По умолчанию opensmtpd слушает порт 25 на локальном сетевом интерфейсе (127.0.0.1).
Если запуск произошел успешно, добавьте службу в автозапуск:
sudo systemctl enable opensmtpd
Настройка
Настройка имени хоста (домена) сервера
Настройте имя хоста у почтового сервера, например:
sudo hostnamectl set-hostname mail.rosa.loc
В этом примере имя хоста mail.rosa.loc
является доменом третьего уровня, а почтовый сервер настраивается для обслуживания почты в домене второго уровня rosa.loc
, т.е. для почтовых адресов вида xxx@rosa.loc
.
Настройка OpenSMTPD
Настройки задаются в файле /etc/opensmtpd/smtpd.conf
:
sudo nano /etc/opensmtpd/smtpd.conf
Какой интерфейс слушать
По умолчанию в конфиге написано:
listen on localhost
Если требуется доступность почтового сервера из вне, то следует заменить эту строку на:
listen on 0.0.0.0
Указание домена
Над строкой "match for local action "local"" добавьте строку:
match from any for domain "rosa.loc" action "local"
Замените "rosa.loc" на свой домен в соответствии с ранее заданным именем хоста.
Перезапуск после правки настроек
Перезапустите сервис после правки конфигурационного файла:
sudo systemctl restart opensmtpd
Удостоверьтесь, что он запустился корректно:
sudo systemctl status opensmtpd
Проверка работы
На конфиге по умолчанию выполняется доставка писем в формате Maildir (отдельный файл на каждое сообщение) в каталог ~/Maildir внутри домашнего каталога пользователя-получателя. Каталог ~/Maildir должен быть создан заранее.
И так, вы выполнили описанные выше шаги: установили opensmtpd, исправили "listen" и "match" в конфиге и перезапустили службу после правки конфига.
Создаем пользователя:
sudo useradd ivanov
Создаем каталог для почты:
sudo -u ivanov mkdir -p /home/ivanov/Maildir
Смотрим IP-адрес машины (или контейнера) с почтовым сервером:
ip a
Будем считать, что IP-адрес 192.168.122.12.
Подключаемся к нему с другой машины:
telnet 192.168.122.12 25
Ждем пару секунд появления текста:
220 mail.rosa.loc ESMTP OpenSMTPD
Отправляем сообщение-приветствие:
helo dom.loc
В ответ получаем:
250 mail.rosa.loc Hello dom.loc [192.168.122.1], pleased to meet yo
Указываем отправителя письма (обратите внимание на необходимость строгого соблюдения RFC 2822 и указания адреса в < >):
mail from:<vasya@domain.loc>
В ответ получаем:
250 2.0.0 Ok
Указываем получателя письма:
rcpt to:<ivanov@rosa.loc>
В ответ получаем:
250 2.1.5 Destination address valid: Recipient ok
Вводим:
data
В ответ получаем приглашение начать ввода письма. Вставляем текст:
Message-ID: <x01@dom.loc> Subject: Test Privet .
В ответ получаем:
250 2.0.0 df9164e0 Message accepted for delivery
Смотрим лог opensmtpd:
sudo journalctl -u opensmtpd
Видим там доставку нашего сообщения.
Оно сохранилось в домашнем каталоге пользователя-получателя:
$ sudo cat /home/ivanov/Maildir/new/1670703224.ded2147b.mail.rosa.loc Return-Path: <vasya@domain.loc> Delivered-To: ivanov@rosa.loc Received: from dom.loc (hp-xfce [192.168.122.1]) by mail.rosa.loc (OpenSMTPD) with SMTP id df9164e0 for <ivanov@rosa.loc>; Sat, 10 Dec 2022 20:13:31 +0000 (UTC) Message-ID: <x01@dom.loc> Subject: Test Privet
Домашний каталог пользователя ivanov был получен через PAM, конфигурационный файл находится по адресу /etc/pam.d/opensmtpd
. Благодаря PAM, пользователь мог бы быть не только локальным, но и доменным (LDAP).
OpenSMTPD + Dovecot
Чтобы по IMAP полученные через SMTP, установите пакет dovecot:
sudo dnf install dovecot
Отредактируйте конфиг:
sudo nano /etc/dovecot/conf.d/10-mail.conf
В нем замените
#mail_location =
на:
mail_location = maildir:~/Maildir
Запустите службу:
sudo systemctl enable --now dovecot.socket
Теперь можно подключаться по IMAP и SMTP, например, через Thunderbird.
OpenSMTPD получает письмо по протоколу SMTP, кладет его в ~/Maildir, а Dovecot отдает его по IMAP.
По умолчанию и opensmtpd, и dovecot настроены использовать системных пользователей Linux и их пароли.