26.11.2020 0 min to read

Отправка почты из Oracle Apex через OFFICE365 (SMTP TLS) и решение ошибки ORA-24263: remote server certificate doesn’t match the target address.

Category : Статьи

Дано: Oracle Linux 7.9, Oracle Database EE 19c, APEX 20.2. Требуется отправка почты приложением. Отправка почты через почтовый релей без авторизации не подходит, поскольку часто определяется почтовыми фильтрами как спам. Мы некоторое время работали над повышением репутации почтового релея, поскольку множество информационных систем уже настроены и безопасно отправляют письма через него. Но в итоге пришли к выводу, что использование почтовых шлюзов в организации одновременно с почтовыми сервисами в том же домене впредь будет осложняться и создавать вполне ощутимые проблемы с доставкой писем из информационных систем. Решено отказаться и переводить все сервисы на использование отправки почты через SMTP серверы сервисов с авторизацией.

Что не работает

Почтовый сервис организации – Office 365. Для отправки почты из Apex создана учётная запись. Параметры настройки: https://docs.microsoft.com/ru-ru/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-microsoft-365-or-office-365

Настройка отправки почты в APEX в Workstation INTERNAL очень проста, но не работает из коробки с TLS шифрованием SMTP сервера Office365. Общий алгоритм настройки – скачать сертификаты smtp сервера, создать в операционной системе хранилище “wallet” с сертификатами, указать путь к “wallet” и пароль в интерфейсе настройки отправки почты в APEX, указать SMTP сервер, логин, пароль, адрес отправителя. Но не работает потому что “ORA-24263: remote server certificate doesn’t match the target address” – а конкретно сложности со SNI (несколько имен серверов в одном сертификате).

И даже если эта связка заработает, то процесс актуализации сертификатов SMTP серверов OFFICE365 в wallet становится маловероятной, но ненужной точкой отказа.

С такой же сложностью столкнулись при перенастройке отправки почты из 1С:Предприятие 8.2 – эта версия вовсе не поддерживает SMTPS и TLS.

Решение

Решение – шифрование подключений к SMTP серверу Office 365 с использованием stunnel. Приложение есть для Windows и Linux.

Конфигурация stunnel для Oracle Linux

# cat /etc/stunnel/stunnel.conf 
pid = /var/run/stunnel.pid
debug = 0
output = /var/log/stunnel.log
client = yes 
[OFFICE365]
accept = 127.0.0.1:25
connect = smtp.office365.com:587
protocol = smtp

Настройка отправки APEX будет включать логин, пароль, адрес отправителя, smtp server 127.0.0.1, порт 25 без шифрования.