Настройка электронной почты в устаревших конфигурациях на базе обычных форм, таких как Управление производственным предприятием (УПП) редакции 1.3, часто превращается в серьезную техническую проблему. Основная сложность заключается в том, что даже при использовании современной платформы 1С:Предприятие 8.3, конфигурация продолжает работать в режиме совместимости с версией 8.2.13. Это накладывает жесткие ограничения на использование современных протоколов безопасности TLS 1.2 и TLS 1.3, которые требуются почтовыми серверами вроде Microsoft Exchange, Gmail или Яндекс.Почта.
В данной статье мы подробно разберем, почему возникают ошибки типа Invalid token, probably not an SSL server, и проанализируем пошаговые алгоритмы обхода этих ограничений.
Разберем ситуацию: проверка настроек учетной записи может проходить успешно, но при попытке реальной отправки письма система выдает критическую ошибку. Рассмотрим типичное сообщение об ошибке:
{ОбщийМодуль.ЭлектроннаяПочта.Модуль(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С работать с новым TLS напрямую, мы можем использовать «прослойку» — утилиту Stunnel. Рассмотрим этот процесс подробнее. Stunnel — это небольшая программа, которая создает зашифрованный туннель. Для 1С это будет выглядеть как обычное соединение без шифрования с локальным сервером (localhost), а Stunnel сам возьмет на себя задачу шифрования трафика перед его отправкой на реальный сервер Exchange или Gmail.
Разберем этапы настройки Stunnel:
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С. Рассмотрим настройки учетной записи в интерфейсе УПП:
127.0.0.125 (тот, который указан в поле accept конфига Stunnel).Важный момент: Если вы оставите галочку SSL в 1С, возникнет конфликт. 1С попытается зашифровать данные и отправить их в Stunnel, а Stunnel ожидает «чистый» текст, чтобы зашифровать его самостоятельно. В итоге соединение не установится. При использовании Stunnel для программы 1С соединение всегда должно выглядеть как обычное, незащищенное.
Если ваша компания использует внутренний сервер Microsoft Exchange, мы можем пойти другим путем, который не требует установки дополнительного ПО на компьютеры пользователей. Выясним у системного администратора возможность настройки специального коннектора получения.
Суть метода заключается в следующем: на сервере Exchange создается отдельный Receive Connector, который разрешает прием почты без TLS и без авторизации, но строго с IP-адреса сервера 1С. Рассмотрим плюсы этого подхода:
Этот способ является наиболее стабильным для промышленной эксплуатации УПП 1.3, так как исключает проблемы с сертификатами и сторонними утилитами на рабочих местах.
Если встроенный объект ИнтернетПочта категорически отказывается работать, мы можем использовать альтернативный способ отправки через 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С, так как отправкой занимается непосредственно операционная система. Однако помните, что для работы этого кода на сервере должны быть открыты соответствующие порты в брандмауэре.
Иногда после настройки Stunnel или прямого подключения возникает ошибка 421 Service not available. Проанализируем ситуацию: сервер доступен, порт открыт, но соединение сбрасывается. В 90% случаев это связано с работой антивирусных систем на сервере (например, ESET File Security или Kaspersky Endpoint Security).
Многие антивирусы имеют функцию «Защита почтового трафика». Они перехватывают обращения к 25 порту, пытаются подменить SSL-сертификат своим собственным для проверки письма на вирусы, что мгновенно разрушает соединение для 1С, так как платформа не доверяет подменному сертификату. Разберем шаги для диагностики:
1cv8.exe и rphost.exe в исключения сканирования протоколов.В некоторых случаях для работы платформы 8.3 в режиме совместимости помогает принудительное включение сильных алгоритмов шифрования в Windows. Рассмотрим настройку реестра:
Необходимо создать (или изменить) параметры типа DWORD со значением 1 в следующих ветках реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SchUseStrongCryptoHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\SchUseStrongCryptoЭто заставляет системные компоненты использовать TLS 1.2 вместо устаревших протоколов. После внесения изменений обязательно перезагрузите сервер.
Проблема почты в УПП 1.3 — это классический конфликт старого прикладного кода и новых требований безопасности. Выясним кратко: если вам нужно быстрое решение без правки конфигурации — используйте Stunnel. Если вы хотите надежное системное решение — просите администраторов настроить анонимный релей на Exchange. Если же вы готовы к доработке конфигурации — внедряйте отправку через CDO или современные библиотеки .NET, которые игнорируют ограничения режима совместимости 8.2.13.