Как настроить почту в 1С:УПП 1.3 при ошибках TLS/SSL и работе с сервером Exchange?

Программист 1С v8.3 (Обычные формы) Промышленность, строительство и АПК
← На главную

Настройка электронной почты в устаревших конфигурациях на базе обычных форм, таких как Управление производственным предприятием (УПП) редакции 1.3, часто превращается в серьезную техническую проблему. Основная сложность заключается в том, что даже при использовании современной платформы 1С:Предприятие 8.3, конфигурация продолжает работать в режиме совместимости с версией 8.2.13. Это накладывает жесткие ограничения на использование современных протоколов безопасности TLS 1.2 и TLS 1.3, которые требуются почтовыми серверами вроде Microsoft Exchange, Gmail или Яндекс.Почта.

В данной статье мы подробно разберем, почему возникают ошибки типа Invalid token, probably not an SSL server, и проанализируем пошаговые алгоритмы обхода этих ограничений.

Выясняем причину: почему платформа 8.3 выдает ошибку TLS/SSL?

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

{ОбщийМодуль.ЭлектроннаяПочта.Модуль(374)}: Ошибка при вызове метода контекста (Подключиться): TLS/SSL failure: Invalid token, probably not an SSL server

Проанализируем причину. Объект 1С ИнтернетПочта в режиме совместимости 8.2.13 использует старые системные библиотеки для работы с защищенным соединением. Современные почтовые сервера при попытке установить соединение ожидают приветствие (handshake) по протоколу TLS 1.2. Старый «движок» 1С пытается использовать SSL 3.0 или TLS 1.0. Сервер видит некорректный токен и обрывает соединение, считая, что к нему обращаются не по SSL-протоколу. Это и порождает ошибку Invalid token.

Решение №1: Использование Stunnel как промежуточного звена

Поскольку мы не можем заставить старый код 1С работать с новым TLS напрямую, мы можем использовать «прослойку» — утилиту Stunnel. Рассмотрим этот процесс подробнее. Stunnel — это небольшая программа, которая создает зашифрованный туннель. Для 1С это будет выглядеть как обычное соединение без шифрования с локальным сервером (localhost), а Stunnel сам возьмет на себя задачу шифрования трафика перед его отправкой на реальный сервер Exchange или Gmail.

Разберем этапы настройки Stunnel:

  1. Установите Stunnel на сервер, где работает служба 1С:Предприятия (или на локальный компьютер, если работа ведется в файловом варианте).
  2. Откройте файл конфигурации stunnel.conf и добавьте в него настройки для SMTP и POP3. Проанализируем пример корректного конфига:

[gmail-pop3]
client = yes
accept = 127.0.0.1:110
connect = pop.gmail.com:995
verifyChain = yes
CAfile = ca-certs.pem

[gmail-smtp]
client = yes
accept = 127.0.0.1:25
connect = smtp.gmail.com:465
verifyChain = yes
CAfile = ca-certs.pem

В этом примере мы указываем Stunnel слушать локальный порт 25 (для отправки) и перенаправлять его на порт 465 защищенного сервера. Теперь самое важное — как настроить саму 1С. Рассмотрим настройки учетной записи в интерфейсе УПП:

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

Решение №2: Настройка «Анонимного релея» на стороне Exchange

Если ваша компания использует внутренний сервер Microsoft Exchange, мы можем пойти другим путем, который не требует установки дополнительного ПО на компьютеры пользователей. Выясним у системного администратора возможность настройки специального коннектора получения.

Суть метода заключается в следующем: на сервере Exchange создается отдельный Receive Connector, который разрешает прием почты без TLS и без авторизации, но строго с IP-адреса сервера 1С. Рассмотрим плюсы этого подхода:

  1. В 1С в настройках учетной записи указывается реальный IP сервера Exchange.
  2. Порт устанавливается стандартный — 25.
  3. Все галочки SSL и аутентификации снимаются.
  4. Безопасность обеспечивается тем, что сервер Exchange игнорирует попытки подключения с любых других адресов, кроме доверенного IP 1С.

Этот способ является наиболее стабильным для промышленной эксплуатации УПП 1.3, так как исключает проблемы с сертификатами и сторонними утилитами на рабочих местах.

Решение №3: Использование объектов Windows (CDO.Message)

Если встроенный объект ИнтернетПочта категорически отказывается работать, мы можем использовать альтернативный способ отправки через COM-объекты операционной системы. Рассмотрим программный подход с использованием библиотеки CDO (Collaboration Data Objects). Эта библиотека является частью Windows и умеет корректно работать с системными протоколами шифрования.

Пример кода для отправки через CDO в 1С:


ПутьККонфигурации = "http://schemas.microsoft.com/cdo/configuration/";
Письмо = Новый COMОбъект("CDO.Message");
Конфиг = Письмо.Configuration;

Конфиг.Fields.Item(ПутьККонфигурации + "sendusing").Value = 2; // cdoSendUsingPort
Конфиг.Fields.Item(ПутьККонфигурации + "smtpserver").Value = "smtp.yourserver.ru";
Конфиг.Fields.Item(ПутьККонфигурации + "smtpserverport").Value = 465;
Конфиг.Fields.Item(ПутьККонфигурации + "smtpusessl").Value = Истина;
Конфиг.Fields.Item(ПутьККонфигурации + "smtpauthenticate").Value = 1; // cdoBasic
Конфиг.Fields.Item(ПутьККонфигурации + "sendusername").Value = "user@domain.ru";
Конфиг.Fields.Item(ПутьККонфигурации + "sendpassword").Value = "password";
Конфиг.Fields.Update();

Письмо.Subject = "Тема сообщения из 1С";
Письмо.From = "user@domain.ru";
Письмо.To = "client@mail.ru";
Письмо.TextBody = "Текст письма";
Письмо.Send();

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

Анализ ошибки 421 и влияние антивирусов

Иногда после настройки Stunnel или прямого подключения возникает ошибка 421 Service not available. Проанализируем ситуацию: сервер доступен, порт открыт, но соединение сбрасывается. В 90% случаев это связано с работой антивирусных систем на сервере (например, ESET File Security или Kaspersky Endpoint Security).

Многие антивирусы имеют функцию «Защита почтового трафика». Они перехватывают обращения к 25 порту, пытаются подменить SSL-сертификат своим собственным для проверки письма на вирусы, что мгновенно разрушает соединение для 1С, так как платформа не доверяет подменному сертификату. Разберем шаги для диагностики:

Настройка системного шифрования через реестр

В некоторых случаях для работы платформы 8.3 в режиме совместимости помогает принудительное включение сильных алгоритмов шифрования в Windows. Рассмотрим настройку реестра:

Необходимо создать (или изменить) параметры типа DWORD со значением 1 в следующих ветках реестра:

  1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SchUseStrongCrypto
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\SchUseStrongCrypto

Это заставляет системные компоненты использовать TLS 1.2 вместо устаревших протоколов. После внесения изменений обязательно перезагрузите сервер.

Подведем итоги

Проблема почты в УПП 1.3 — это классический конфликт старого прикладного кода и новых требований безопасности. Выясним кратко: если вам нужно быстрое решение без правки конфигурации — используйте Stunnel. Если вы хотите надежное системное решение — просите администраторов настроить анонимный релей на Exchange. Если же вы готовы к доработке конфигурации — внедряйте отправку через CDO или современные библиотеки .NET, которые игнорируют ограничения режима совместимости 8.2.13.

← На главную