OpenSMTPD — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
Строка 30: Строка 30:
  
 
= Настройка =
 
= Настройка =
Настройка выполняется в файле <code>/etc/opensmtpd/smtpd.conf</code>
+
Настройка выполняется в файле <code>/etc/opensmtpd/smtpd.conf</code>:
 +
sudo nano /etc/opensmtpd/smtpd.conf
 
== Какой интерфейс слушать ==
 
== Какой интерфейс слушать ==
 +
В выводе команды
 +
sudo ss -ntulp | grep smtpd
 +
видно, что по умолчанию прослушивается 25-й порт на локальном сетевом интерфейсе (<code>127.0.0.1:25</code>), то есть почтовый сервер недоступен по сети.
 +
 
По умолчанию в конфиге написано:
 
По умолчанию в конфиге написано:
 
  listen on localhost
 
  listen on localhost
 +
 
Если требуется доступность почтового сервера из вне, то следует заменить эту строку на:
 
Если требуется доступность почтового сервера из вне, то следует заменить эту строку на:
 
  listen on 0.0.0.0
 
  listen on 0.0.0.0

Версия 19:27, 12 мая 2024

Введение

Эта статья описывает некоторые типовые варианты настройки почтового сервера OpenSMTPD на дистрибутивах ROSA Fresh/Chrome 12 и новее.

OpenSMTPD отличается сочетанием простоты настройки и функционала.

Установка и запуск

Выполните:

sudo dnf install opensmtpd

Ознакомьтесь со списком файлов в пакете (в т.ч. со списков мануалов):

rpm -ql opensmtpd

При необходимости поправьте конфиг /etc/opensmtpd/smtpd.conf и запустите службу:

sudo systemctl start opensmtpd

Лог работы можно получить так:

sudo systemctl status opensmtpd
sudo journalctl -u opensmtpd

Проверьте, какие интерфейсы и порты прослушиваются:

sudo ss -ntulp | grep smtpd

Если запуск произошел успешно, то добавьте службу в автозапуск:

sudo systemctl enable opensmtpd

После правки конфига необходимо перезапустить opensmtpd:

sudo systemctl restart opensmtpd

Настройка

Настройка выполняется в файле /etc/opensmtpd/smtpd.conf:

sudo nano /etc/opensmtpd/smtpd.conf

Какой интерфейс слушать

В выводе команды

sudo ss -ntulp | grep smtpd

видно, что по умолчанию прослушивается 25-й порт на локальном сетевом интерфейсе (127.0.0.1:25), то есть почтовый сервер недоступен по сети.

По умолчанию в конфиге написано:

listen on localhost

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

listen on 0.0.0.0

Указание домена

Настройте имя хоста у почтового сервера, например:

sudo hostnamectl set-hostname mail.rosa.loc

В конфигурационном файле /etc/opensmtpd/smtpd.conf над строкой "match for local action "local"" добавьте строку:

match from any for domain "rosa.loc" action "local"

Перезапустите сервис после правки конфигурационного файла:

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).