Как настроить отправку почты из 1С:УПП через MS Exchange и Mail.ru при ошибках SSL и сетевого подключения?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

Настройка отправки электронной почты из конфигурации «Управление производственным предприятием» (УПП, редакция 1.3) часто сопряжена с трудностями, особенно если база работает на платформе 1С:Предприятие 8.3, но использует режим совместимости «Версия 8.2.13». В этой статье мы подробно разберем причины возникновения сетевых ошибок и сбоев шифрования, а также рассмотрим два основных сценария решения задачи: настройку защищенного соединения с внешними сервисами (на примере Mail.ru) через локальный прокси-сервер Stunnel и организацию бесперебойной отправки писем через корпоративный почтовый сервер Microsoft Exchange.

Почему возникают ошибки подключения в режиме совместимости 8.2.13

При использовании публичных почтовых серверов, таких как Mail.ru, Яндекс.Почта или Gmail, обязательным условием является поддержка современных протоколов безопасного соединения SSL/TLS (обычно TLS 1.2 или TLS 1.3). Однако встроенный в платформу 1С механизм ИнтернетПочта в режиме совместимости 8.2.13 не умеет корректно работать с данными протоколами шифрования напрямую.

Попытка указать в коде стандартные порты шифрования (465 или 995) и установить свойство ИспользоватьSSLSMTP = Истина неизбежно приводит к одной из следующих ошибок:

Рассмотрим, как решить эти проблемы последовательно.

---

Решение №1. Настройка работы с внешними сервисами через Stunnel

Если необходимо настроить отправку через внешние защищенные серверы (Mail.ru, Yandex), а переводить конфигурацию на более современный режим совместимости нельзя, единственным надежным выходом является использование утилиты Stunnel. Она берет на себя всю работу по шифрованию трафика.

Проанализируем архитектуру этой схемы. Утилита Stunnel устанавливается непосредственно на сервере 1С:Предприятия. Она создает локальный порт (например, 25), который слушает входящие соединения от 1С. Получив нешифрованный пакет от 1С, Stunnel упаковывает его в защищенный TLS-тоннель и передает на внешний порт Mail.ru (465).

Шаг 1. Конфигурация файла stunnel.conf

Для корректной работы с почтовыми протоколами администратору необходимо прописать в файле конфигурации stunnel.conf следующие параметры:


[SMTP mail]
client = yes
accept = 127.0.0.1:25
connect = smtp.mail.ru:465
protocol = smtp

[POP3 mail]
client = yes
accept = 127.0.0.1:110
connect = pop.mail.ru:995
protocol = pop3

Важный нюанс: Обязательно указывайте параметр protocol = smtp (и protocol = pop3 для получения почты). Без явного указания протокола почтовые серверы будут отвергать попытки авторизации из-за несоответствия команд шифрования.

Шаг 2. Настройка кода в 1С под Stunnel

После запуска службы Stunnel на сервере, в коде 1С необходимо указать параметры локального хоста. Самой частой ошибкой разработчиков является сохранение старых настроек шифрования в коде при включенном Stunnel. Выясним, как правильно инициализировать профиль в 1С:


Функция ПолучитьПрофильДляStunnel() Экспорт
    
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    
    // Перенаправляем трафик на локальный адрес, где запущен Stunnel
    Профиль.АдресСервераSMTP = "127.0.0.1";
    Профиль.ПортSMTP = 25; // Порт accept из конфига Stunnel
    
    Профиль.АдресСервераPOP3 = "127.0.0.1";
    Профиль.ПортPOP3 = 110;
    
    // ВАЖНО: Отключаем шифрование в самой 1С, так как шифрованием занимается Stunnel
    Профиль.ИспользоватьSSLPOP3 = Ложь;
    Профиль.ИспользоватьSSLSMTP = Ложь;
    
    // Указываем учетные данные
    Профиль.Пользователь = "your_login@mail.ru";
    Профиль.ПользовательSMTP = "your_login@mail.ru";
    
    // Внимание! Обычный пароль от ящика больше не принимается публичными сервисами.
    // Сюда необходимо вставлять специально сгенерированный "Пароль для внешних приложений"
    Профиль.Пароль = "abcd-efgh-ijkl-mnop"; 
    Профиль.ПарольSMTP = "abcd-efgh-ijkl-mnop";
    
    Профиль.ВремяОжидания = 60;
    
    Возврат Профиль;
    
КонецФункции

Обратите внимание на авторизацию: Сервисы вроде Mail.ru, Yandex и Gmail заблокировали возможность авторизации в сторонних почтовых клиентах по основному паролю учетной записи. Вам нужно зайти в настройки безопасности личного кабинета почты, найти раздел «Пароли для сторонних приложений» (или «Пароли приложений»), сгенерировать новый уникальный пароль для 1С и прописать его в коде.

---

Решение №2. Диагностика сетевых ошибок (Host not found и Timed out)

Если при попытке соединения вы получаете ошибку Host not found (#11001): smtp.mail.ru, это однозначно указывает на сетевые проблемы или неверную маршрутизацию. Разберем по шагам, как локализовать и устранить эту неисправность:

  1. Определите контекст выполнения кода: В клиент-серверной архитектуре 1С отправка почты (общий модуль ЭлектроннаяПочта) выполняется на стороне сервера 1С (под учетной записью службы usr1cv8), а не на вашем локальном компьютере. Соответственно, все тесты доступности нужно проводить непосредственно с физического или виртуального сервера, где развернута служба Агента 1С:Предприятия.
  2. Проверьте разрешение DNS-имен: Зайдите на сервер 1С через RDP, откройте командную строку (cmd) и выполните команду: nslookup smtp.mail.ru Если команда возвращает ошибку или не может разрешить имя в IP-адрес, значит, на сервере некорректно настроены DNS-серверы организации.
  3. Проверьте доступность портов: Очень часто провайдеры интернета или внутренние брандмауэры блокируют исходящий трафик по портам 25, 465, 587 и 995 в целях безопасности. Проверить доступность портов можно с помощью PowerShell-команды: Test-NetConnection smtp.mail.ru -Port 465 Если значение поля TcpTestSucceeded вернет False, необходимо обратиться к системному администратору для открытия исходящего трафика на внешнем шлюзе сети.

---

Решение №3. Интеграция с локальным сервером Microsoft Exchange

Наиболее надежным, масштабируемым и архитектурно правильным решением для крупного предприятия является интеграция 1С с локально развернутым сервером Microsoft Exchange. Это полностью убирает зависимость от интернета, лимитов внешних почтовых провайдеров и проблем с несовместимостью SSL/TLS.

Выясним, как настроить интеграцию по максимально простой и быстрой схеме — через анонимный релей (Relay) без шифрования.

Шаг 1. Настройка Exchange Server администратором

Чтобы сервер 1С мог отправлять письма через Exchange без авторизации и SSL, системному администратору почтовой системы необходимо выполнить следующие действия в Exchange Admin Center (EAC):

  1. Создать новый Соединитель приема (Receive Connector). Назовем его, например, 1C_SMTP_Relay.
  2. Указать тип соединения: Custom (Пользовательский).
  3. В качестве транспортной роли выбрать Frontend Transport (Фронтенд-транспорт), порт привязки оставить стандартным — 25.
  4. В настройках области действия (Scope) в разделе Remote IP address ranges (Удаленные IP-адреса) удалить дефолтный диапазон 0.0.0.0-255.255.255.255 и жестко прописать только IP-адрес сервера 1С. Это защитит систему от несанкционированной отправки спама внутри сети.
  5. В свойствах безопасности (Security) созданного коннектора установить флаг Anonymous Users (Анонимные пользователи).
  6. Чтобы Exchange разрешил 1С отправлять письма не только внутренним адресатам организации, но и внешним контрагентам, администратор должен выполнить команду в консоли Exchange Management Shell (EMS):

Get-ReceiveConnector "1C_SMTP_Relay" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"

Примечание: Если операционная система сервера Exchange имеет русскую локализацию, вместо пользователя NT AUTHORITY\ANONYMOUS LOGON может потребоваться указать локализованное имя группы, например АНОНИМНЫЙ ВХОД.

Шаг 2. Код настройки почтового профиля в 1С

После того как системный администратор настроил выделенный релей для IP-адреса вашего сервера 1С, программный код настройки подключения в 1С:УПП сокращается до минимального набора параметров, не требующего хранения паролей в базе данных:


Функция ПолучитьПрофильExchange() Экспорт
    
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    
    // Указываем DNS-имя или IP-адрес локального сервера Exchange
    Профиль.АдресСервераSMTP = "exchange.corp.local";
    Профиль.ПортSMTP = 25;
    
    // Отключаем аутентификацию, так как авторизация идет по IP-адресу сервера 1С
    Профиль.АутентификацияSMTP = СпособSMTPАутентификации.БезАутентификации;
    
    // Полностью отключаем SSL/TLS механизмы
    Профиль.ИспользоватьSSLSMTP = Ложь;
    
    // Настройки таймаута соединения
    Профиль.ВремяОжидания = 30;
    
    Возврат Профиль;
    
КонецФункции

Этот программный код гарантированно выполнится на любой версии платформы 1С и при любых включенных режимах совместимости, поскольку не использует тяжелые криптографические функции ОС при установлении SMTP-сессии.

Предотвращение ошибок троттлинга на Exchange: При массовой рассылке (например, отправка расчетных листков или счетов клиентам из 1С) сервер Exchange может разорвать сессию с ошибкой 421 4.4.2 Message submission rate for this client has exceeded the configured limit. Чтобы снять данное ограничение, администратору почтового сервера следует выполнить команду:


Set-ReceiveConnector "1C_SMTP_Relay" -MessageRateLimit unlimited -MaxHeaderSizeBytes 10485760

Применение данных методик позволит вам быстро локализовать проблему с отправкой почты из УПП 1.3 и выбрать наиболее стабильный способ интеграции с почтовыми системами.

← На главную