Задача: Хочу приспособить свой почтовый сервер на базе связки 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
сообщение:
Отлично, что мне было и нужно. Ну а далее я уже опираясь на данную заметку просто настраиваю отправку уведомлений с использованием подключения на порт 2525
и аутентификацией вида: почтовый ящик, пароль и типа шифрования.
На этом моя задумка завершена, с уважением автор блога Олло Александр aka ekzorchik.