Задача: Хочу приспособить свой почтовый сервер на базе связки Ubuntu 22.04 + iRedMail 1.6.2 чтобы можно было с определенного хоста(ов) отправлять уведомления о происшествиях где хост с которого будет производиться отправка не поддерживает безопасное подключение (т.е. нет возможности применить аутентификацию через 465 или 993 порты). В этом случаем я службе smtp присвою еще один порт, к примеру 2525 и обозначу, что подключаться по этому порту можно будет только с явно указанных систем. К примеру, в SQL Server 2016 (Version 13.0.5026.0) нет возможности настроить отправку уведомлений аутентифицируясь через 465 порт (мне по крайней мере это не удалось сделать), но я вспомнил что если используется Exchange сервер, то можно выйти из этой ситуации. Поэтому решил заморочиться и проработать данный функционал на iRedMail 1.6.2

Данная заметка опирается на ранее опубликованную на блоге https://lin.ekzorchik.ru

Виртуальная машина с установленной Ubuntu 22.04 Server + iRedMail 1.6.2 (почтовый сервер) + установленный wireguard клиент который связывается в доменным именем mail.ekzorchik.com, а уже на той системе которая во вне поднят wireguard сервер и через проброс порта идет переброска портов: 25, 443, 465, 993. О том, как это сделано у меня Вы можете посмотреть в заметке: "iRedmail 1.6.2 на Ubuntu 22.04 через Wireguard туннель"

Приступаю к реализации задуманного.

Шаг №1: На сервере mail.ekzorchik.com на котором работает wireguardсервер добавляю правило проброс порта для порта 2525/tcp с указанием с какого узла есть возможность подключаться к порту 2525 и последующий проброс порта до почтового сервера:

root@ekzorchik:~# sudo firewall-cmd --zone=external --add-rich-rule='rule family=ipv4 source address=175.183.212.25/32 forward-port port=2525 protocol=tcp to-port=2525 to-addr=172.33.2.15' --permanent
success
root@ekzorchik:~# sudo firewall-cmd --reload
success
root@ekzorchik:~#

где адрес 175.183.212.25 — это WAN-IP адрес системы за которой работает домашняя сеть с кучей сервисов которые очень хотят делиться своим статусом работы и отправлять его на определенный почтовый адрес.

где адрес 172.33.2.15 — это адрес из VLAN 2 моего домашнего почтового сервера.

Шаг №2: С хоста mail.ekzorchik.com при работающем VPNтуннеле подключаюсь по SSH к своему почтовому серверу:

root@ekzorchik:~# ssh -l ekzorchik 172.33.2.15
ekzorchik@172.33.2.15's password:
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-70-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Jun 13 02:00:56 PM MSK 2023

  System load:  0.13232421875      Processes:              166
  Usage of /:   11.5% of 96.27GB   Users logged in:        0
  Memory usage: 66%                IPv4 address for ens18: 172.33.2.15
  Swap usage:   27%                IPv4 address for wg0:   10.0.0.3

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

91 updates can be applied immediately.
To see these additional updates run: apt list --upgradable


*** System restart required ***
Last login: Tue Jun 13 13:50:07 2023 from 10.0.0.1

Шаг №3: Разрешаю внутренним сетевым устройствам отправлять электронную почту с небезопасным подключением (добавляю в файл master.cf):

ekzorchik@mail:~$ sudo cp /etc/postfix/master.cf /etc/postfix/master.cf.backup
ekzorchik@mail:~$ sudo nano /etc/postfix/master.cf
ekzorchik@mail:~$
#2525
2525      inet  n       -       -       -       -       smtpd
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_security_options=noanonymous
# allows both secure (TLS) and insecure connections.
  -o smtpd_tls_security_level=may
  -o smtpd_sender_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

После не забываем сохранить внесенные изменения.

Шаг №4: Для применения изменений перезапускаю сервис postfix:

ekzorchik@mail:~$ sudo systemctl restart postfix
ekzorchik@mail:~$

Шаг №5: На почтовом сервере открываю на доступ порт 2525, почему у меня сделано что используется два брандмауэера, а все потому что первый осуществляет проброс порта, а второй уже разрешает доступ к портам явно обозначенным на доступ, а также уже тут работает сервис fail2ban. Посмотреть и применить по отношению к себе Вы можете опираясь на заметку "Моя защита домашнего iRedMail 1.6.2 через Fail2ban":

ekzorchik@mail:~$ sudo firewall-cmd --add-port=2525/tcp --permanent
ekzorchik@mail:~$ sudo firewall-cmd --reload
ekzorchik@mail:~$ sudo firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens18
  sources:
  services: dhcpv6-client ssh
  ports: 25/tcp 80/tcp 993/tcp 465/tcp 443/tcp 2525/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
ekzorchik@mail:~$

Шаг №6: Проверяю, что с хоста 175.183.212.25 могу подключиться на порт 2525 и отправить почтовое сообщение:

К примеру, на Windows Server 2016 Standard в каталог C:\Soft копирую утилиту mailsend и отправляю тестовое сообщение на адрес support@ekzorchik.com

c:\Soft>mailsend -to support@ekzorchik.com -from alerter@ekzorchik.com -port 2525 -starttls -auth -smtp mail.ekzorchik.com -sub test1 -user alerter@ekzorchik.com +cc +bc -M "Test1" -pass "password"
Mail sent successfully 

и письмо успешно пришло

Проверяю почтовый ящик support@ekzorchik.com  и вижу отправленное от имени почтового ящика alerter@ekzorchik.com сообщение:

Письмо от имени alerter@ekzorchik.com успешно доставлено ящику support@ekzorchik.com

Отлично, что мне было и нужно. Ну а далее я уже опираясь на данную заметку просто настраиваю отправку уведомлений с использованием подключения на порт 2525 и аутентификацией вида: почтовый ящик, пароль и типа шифрования.

На этом моя задумка завершена, с уважением автор блога Олло Александр aka ekzorchik.