Как исправить ошибки SMTP 550 и 553 при отправке писем из 1С?

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

При реализации механизмов почтовых оповещений в 1С разработчики часто сталкиваются с ошибками почтовых серверов: «SMTP error code 550 5.7.1 Authentication Required» или «SMTP error code 553 5.1.8 Sender address rejected as spoofed». Разберем детально, почему возникают эти ошибки, как правильно настроить параметры аутентификации в объекте ИнтернетПочтовыйПрофиль и как организовать корректную отправку сообщений от имени различных исполнителей без нарушения политик безопасности почтового сервера.

Причины возникновения ошибок аутентификации и спуфинга

Проанализируем природу каждой из возникающих ошибок:

  1. Ошибка «550 5.7.1 Authentication Required» означает, что почтовый сервер настроен на обязательную авторизацию перед отправкой (Relay Access Denied / Authentication Required), однако в коде 1С либо не задан явный способ аутентификации, либо логин и пароль не были переданы серверу корректно.
  2. Ошибка «553 5.1.8 Sender address rejected as spoofed» возникает, когда аутентификация прошла успешно, но адрес в поле Отправитель почтового сообщения отличается от почтового ящика пользователя, под которым выполнено подключение (ПользовательSMTP). Почтовый сервер расценивает такую попытку как спуфинг (подделку адреса отправителя) и блокирует отправку в целях противодействия спаму.

Разбор типового ошибочного кода

Рассмотрим пример кода, в котором возникает ошибка подделки адреса отправителя:


ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
ПочтовыйПрофиль = Новый ИнтернетПочтовыйПрофиль;

ПочтовыйПрофиль.АдресСервераSMTP = "smtp.company.ru";
ПочтовыйПрофиль.ПортSMTP = 25;
ПочтовыйПрофиль.ПользовательSMTP = "robot@company.ru";
ПочтовыйПрофиль.ПарольSMTP = "RobotPassword";

Почта = Новый ИнтернетПочта;
Попытка
    Почта.Подключиться(ПочтовыйПрофиль);
Исключение
    Сообщить("Ошибка подключения к почтовому серверу: " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

ПочтовоеСообщение.Тема = "Задача № " + Объект.Номер + " выполнена";
ПочтовоеСообщение.Тексты.Добавить(Объект.Описание);
ПочтовоеСообщение.Получатели.Добавить(АдресАвтора);

// Ошибочный момент: подмена адреса отправителя
Если ЗначениеЗаполнено(АдресИсполнителя) Тогда
    ПочтовоеСообщение.Отправитель = СокрЛП(АдресИсполнителя);
КонецЕсли;

Почта.Послать(ПочтовоеСообщение);

В приведенном коде подключение выполняется под учетной записью robot@company.ru, а в качестве Отправитель устанавливается произвольный АдресИсполнителя. Если у системного ящика на сервере нет прав отправки от имени других пользователей («Send As» / «Send on Behalf of»), сервер возвращает ошибку 553.

Решение 1: Корректная настройка аутентификации и использование Reply-To

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

  1. В свойство Отправитель всегда устанавливаем адрес учетной записи, под которой выполняется авторизация на SMTP-сервере.
  2. В свойство ИмяОтправителя записываем понятное текстовое представление (например, ФИО исполнителя или название отдела).
  3. Адрес реального исполнителя добавляем в коллекцию ОбратныйАдрес (заголовок Reply-To). При нажатии кнопки «Ответить» в почтовом клиенте получателя письмо автоматически отправится исполнителю.
  4. Явно указываем способ аутентификации в свойстве АутентификацияSMTP.

Посмотрим на исправленный и дополненный пример кода:


ПочтовыйПрофиль = Новый ИнтернетПочтовыйПрофиль;
ПочтовыйПрофиль.АдресСервераSMTP = "smtp.company.ru";
ПочтовыйПрофиль.ПортSMTP = 587;
ПочтовыйПрофиль.ПользовательSMTP = "robot@company.ru";
ПочтовыйПрофиль.ПарольSMTP = "RobotPassword";
ПочтовыйПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
ПочтовыйПрофиль.Таймаут = 30;

ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
ПочтовоеСообщение.Тема = "Задача № " + Объект.Номер + " выполнена";
ПочтовоеСообщение.Тексты.Добавить("Описание задачи: " + Объект.Описание);
ПочтовоеСообщение.Получатели.Добавить(СокрЛП(АдресАвтора));

// Указываем адрес авторизованной учетной записи
ПочтовоеСообщение.Отправитель = "robot@company.ru";

// Задаем читаемое имя отправителя
ПочтовоеСообщение.ИмяОтправителя = СокрЛП(Объект.Автор);

// Направляем ответы на адрес исполнителя
Если ЗначениеЗаполнено(АдресИсполнителя) Тогда
    ПочтовоеСообщение.ОбратныйАдрес.Добавить(СокрЛП(АдресИсполнителя));
КонецЕсли;

Почта = Новый ИнтернетПочта;
Попытка
    Почта.Подключиться(ПочтовыйПрофиль);
    Почта.Послать(ПочтовоеСообщение);
    Почта.Отключиться();
Исключение
    Почта.Отключиться();
    ВызватьИсключение "Не удалось отправить почтовое сообщение: " + ОписаниеОшибки();
КонецПопытки;

Решение 2: Отправка под персональной учетной записью

Если бизнес-процесс требует, чтобы письмо уходило строго от имени конкретного сотрудника (в поле Отправитель должен стоять его личный ящик), необходимо выполнять аутентификацию под реквизитами именно этого пользователя. Разберем алгоритм реализации:

  1. Хранить в справочнике учетных записей или пользователей параметры подключения к SMTP (логин и пароль приложения).
  2. Перед отправкой инициализировать ПочтовыйПрофиль.ПользовательSMTP и ПочтовыйПрофиль.ПарольSMTP данными текущего исполнителя.
  3. Устанавливать значение ПочтовоеСообщение.Отправитель равным логину подключенной учетной записи.

Дополнительные рекомендации по работе с почтой в 1С

При настройке отправки писем обратите внимание на следующие нюансы:

  1. Использование SSL/TLS: При работе с внешними провайдерами (Яндекс, Mail.ru, Gmail и др.) или защищенными корпоративными серверами необходимо настроить шифрование: для порта 465 включить ПочтовыйПрофиль.ИспользоватьSSLSMTP = Истина, а также использовать пароли внешних приложений вместо основных паролей от учетных записей.
  2. Освобождение соединений: Всегда вызывайте метод Почта.Отключиться() в блоке обработки исключений или после успешной отправки, чтобы не блокировать сеансы на почтовом сервере.
  3. Задержки доставки и спам-фильтры: Если письма доставляются на корпоративные почтовые серверы (например, MS Exchange) с задержкой в 30–60 минут, проверьте наличие и корректность записей SPF, DKIM и DMARC на домене отправки, а также настройки серых списков (Greylisting) на стороне принимающего сервера.
← На главную