При выполнении массовых операций, таких как рассылка расчетных листков в программе 1С:Зарплата и Управление Персоналом, пользователи часто сталкиваются с ситуацией, когда небольшие порции писем уходят без проблем, но при попытке отправить отчеты всему штату (например, 1800 сотрудникам) процесс прерывается ошибкой. Типичный текст ошибки выглядит так: Message submission rate for this client has exceeded the configured limit (код SMTP 421 4.4.2).
В этой статье мы подробно разберем, почему возникает эта проблема, и рассмотрим несколько способов ее решения — от настройки почтового сервера до изменения логики работы в самой 1С.
Для начала проанализируем ситуацию. Ошибка 421 4.4.2 не связана с нехваткой оперативной памяти (RAM) или мощностью сервера 1С. Это защитный механизм почтового сервера, называемый throttling (дросселирование). Он предназначен для предотвращения спам-рассылок и защиты сервера от чрезмерной нагрузки.
Когда 1С начинает лавинообразно отправлять сотни писем в секунду, почтовый сервер (чаще всего Microsoft Exchange) видит, что лимит отправки для данного клиента превышен, и принудительно разрывает соединение. Ограничения могут накладываться на:
Если в вашей организации используется локальный сервер Microsoft Exchange, проблему эффективнее всего решить на стороне системного администрирования. Мы можем увеличить лимит приема сообщений для коннектора, через который работает 1С.
Рассмотрим порядок действий для администратора:
Exchange Management Shell.
set-receiveconnector -identity "Default Search" -MessageRateLimit 200
Если вы не знаете точное имя коннектора, можно применить настройку ко всем подходящим коннекторам, используя маску:
set-receiveconnector -identity Default* -MessageRateLimit 200
Важный момент: если рассылка очень масштабная, проверьте также параметр MaxConcurrentConnections (максимальное количество одновременных соединений). Если 1С открывает много потоков для отправки, этот лимит также может быть достигнут.
Если у вас нет доступа к настройкам почтового сервера (например, вы используете облачную почту или публичные сервисы типа Mail.ru, Gmail, Yandex), нам придется адаптировать код 1С под требования сервера. Выясним, как это сделать.
Основная идея заключается в том, чтобы не отправлять все 1800 писем одним циклом, а делать небольшие паузы. Разберем пример кода, который можно внедрить в процедуру рассылки:
// Пример модификации цикла рассылки
СчетчикПисем = 0;
Для Каждого Сотрудник Из СписокСотрудников Цикл
// Формирование и отправка отчета
ОтправитьОтчетНаПочту(Сотрудник);
СчетчикПисем = СчетчикПисем + 1;
// После каждых 20 писем делаем паузу на 2 секунды
Если СчетчикПисем % 20 = 0 Тогда
// Используем команду задержки (в зависимости от версии платформы)
// Для серверного кода можно использовать длительную операцию или пинг
Сигнал(); // Пример индикации
ПриостановитьПоток(2); // Псевдокод, реализуемый через задержку
КонецЕсли;
КонецЦикла;
Для реализации реальной паузы на стороне сервера в 1С часто используют вызов команды ping или специализированные методы фоновых заданий, так как прямой команды "заснуть" в языке 1С для серверного контекста не предусмотрено (кроме использования внешних компонент).
Более продвинутый метод — использование РегламентныеЗадания. Вместо того чтобы запускать рассылку вручную и ждать окончания, мы можем записывать задания на отправку в специальный справочник или регистр сведений ("Очередь сообщений").
Проанализируем преимущества этого подхода:
Если ваша 1С работает интенсивно, рассмотрим установку промежуточного звена — SMTP-релея (например, встроенный компонент IIS в Windows Server или Postfix на Linux). В этом случае схема работы меняется следующим образом:
1С мгновенно "сбрасывает" все 1800 писем на локальный SMTP-сервер, который находится в той же локальной сети. Поскольку соединение локальное, лимиты на нем либо отсутствуют, либо очень высокие. Далее уже сам SMTP-релей берет на себя задачу постепенной пересылки этих писем на основной почтовый сервер организации или во внешний мир, соблюдая все необходимые задержки и правила протокола SMTP. Это самый профессиональный архитектурный подход для решения проблем Message submission rate.
Если вы используете бесплатную почту, помните о жестких ограничениях, которые невозможно изменить:
Для рассылок масштаба 1800+ сотрудников настоятельно рекомендуем использовать либо корпоративный почтовый сервер, либо специализированные сервисы рассылок через их API.
Подведем итог: Ошибка 421 4.4.2 — это типичный "сигнал торможения" от сервера. Решите её либо через команду set-receiveconnector в Exchange, либо путем внедрения очереди и пауз в коде 1С. Это обеспечит стабильную доставку расчетных листков всем сотрудникам без исключения.