#2197: Автоответы и заголовки Auto-Submitted и X-Auto-Response-Suppress

Отредактирована: сегодня

Основные сведения

Когда два почтовых робота отвечают друг другу, возникает петля, которую называют «битвой роботов». Например, Swarmica отправляет сотруднику уведомление о новом комментарии, почтовый сервер сотрудника отвечает автоответом «Нет на месте», автоответ попадает в email-канал и становится комментарием, а комментарий порождает новое уведомление. Без защиты такая переписка не заканчивается и засоряет заявки и почтовые ящики.

Чтобы этого не происходило, отправитель помечает автоматические письма служебными заголовками: «письмо отправил робот, отвечать на него автоматически не нужно». Начиная с версии 6.2.0 Swarmica по умолчанию добавляет такие заголовки в свои уведомления. Как посмотреть и изменить заголовки уведомления, рассказано в статье Почтовые заголовки в уведомлениях Swarmica.

Какие бывают автоматические письма

ТипПримерСтандарт
Автоматически сформированное письмоуведомление о новой заявке, отчёт, напоминаниеRFC 3834
Автоответ«Нет на месте», «Ваше письмо получено», ответ по правилу почтового клиентаRFC 3834
Отчёт о доставке или недоставке (DSN, bounce)«Письмо не доставлено: адрес не существует»RFC 3461, RFC 3464
Уведомление о прочтении (MDN)«Ваше письмо прочитано»RFC 8098

Отчёты о недоставке почтовые серверы отправляют с пустым адресом отправителя в конверте (MAIL FROM:<>, RFC 5321, раздел 4.5.5), поэтому у таких писем заголовок Return-Path: <>. Ответить на пустой адрес нельзя, и петля обрывается. RFC 3834 рекомендует отправлять так же и автоответы.

Заголовок Auto-Submitted

Auto-Submitted описан в RFC 3834, раздел 5. Это стандартный заголовок, его понимает большинство почтовых серверов и систем поддержки.

ЗначениеСмысл
noписьмо написал человек. То же самое, что отсутствие заголовка
auto-generatedписьмо сформировано автоматически, но не в ответ на другое письмо: уведомления, отчёты, рассылки по расписанию
auto-repliedавтоматический ответ на конкретное входящее письмо: автоответ «Нет на месте», сообщение «Заявка не создана»
auto-notifiedуведомление фильтра Sieve о пришедшем письме (RFC 5436)

Главное правило RFC 3834: на письмо, у которого Auto-Submitted имеет любое значение, кроме no, автоматически не отвечают. Автоответчик «Нет на месте» такое письмо пропустит, а система поддержки, которая соблюдает стандарт, не создаст из него заявку.

Заголовок X-Auto-Response-Suppress

X-Auto-Response-Suppress — заголовок Microsoft, в RFC его нет. Его учитывают Microsoft Exchange и Outlook, описание — в спецификации [MS-OXCMAIL] (свойство PidTagAutoResponseSuppress).

В отличие от Auto-Submitted, этот заголовок не говорит, кто написал письмо. Он просит получателя не присылать определённые виды автоматических ответов. Значения перечисляются через запятую:

ЗначениеЧто подавляет
DRотчёты об успешной доставке (delivery receipt)
NDRотчёты о недоставке (non-delivery report)
RNуведомления о прочтении (read notification)
NRNуведомления об удалении письма без прочтения (non-read notification)
OOFавтоответ «Нет на месте» (out of office)
AutoReplyпрочие автоответы, например ответ по правилу Outlook
Allвсё перечисленное

Разные почтовые системы смотрят на разные заголовки, поэтому Swarmica ставит оба: Auto-Submitted для серверов, которые следуют RFC 3834, и X-Auto-Response-Suppress для Exchange и Outlook.

Заголовки в уведомлениях Swarmica по умолчанию

УведомленияAuto-SubmittedX-Auto-Response-Suppress
Ответы в заявке, запрос оценки CSAT, письма об учётной записи, изменения в статье——
Моя заявка созданаauto-generated—
Копии собственных сообщений, упоминания, любая новая заявкаauto-generatedOOF, AutoReply, DR, RN, NRN
Заявка не созданаauto-repliedAll
Все остальные уведомленияauto-generatedAll
Полный список уведомлений

Без служебных заголовков

Эти письма уходят как обычная почта. В основном это письма с текстом, который написал человек, или письма, которые ждут от получателя действия: ответа, перехода по ссылке, ввода кода.

  • ticket_comment_public_external — Любой ответ добавлен в мою заявку
  • ticket_comment_public_internal — Публичный ответ добавлен
  • ticket_requester_csat — Запрос оценки CSAT
  • user_account_invited — Пользователь приглашен
  • user_account_created — Учетная запись создана
  • user_registration — Запрошена регистрация
  • user_password_change — Запрошен сброс пароля
  • user_identity_email_verification — Код подтверждения доступа к почте
  • user_identity_bot_verification — Код подтверждения доступа к почте при регистрации через мессенджер
  • user_2fa_email_verification — Код подтверждения для 2FA
  • user_2fa_disable_verification — Код для отключения 2FA
  • user_article_changed — Изменения в статье

Auto-Submitted: auto-generated

  • ticket_created_external — Моя заявка создана

Письмо о регистрации обращения уходит клиенту автоматически, поэтому помечено auto-generated, и автоответчик клиента не должен на него отвечать. Подавление автоответов для Exchange в этом письме не включено.

Auto-Submitted: auto-generated и X-Auto-Response-Suppress: OOF, AutoReply, DR, RN, NRN

  • ticket_created_internal_all — Любая новая заявка создана
  • ticket_comment_public_internal_own — Добавлен мой публичный комментарий
  • ticket_comment_public_external_own — Мой ответ добавлен
  • ticket_chatmessage_public_my — Мое сообщение в чате
  • ticket_user_mention — Меня упомянули в заявке
  • ticket_group_mention — Мою группу упомянули в заявке

Подавляются автоответы, отчёты о доставке и уведомления о прочтении. Отчёты о недоставке (NDR) не подавляются: если письмо не дошло, отправитель об этом узнает.

Auto-Submitted: auto-replied и X-Auto-Response-Suppress: All

  • ticket_email_error — Заявка не создана

Это ответ на конкретное входящее письмо, которое Swarmica не смогла принять, поэтому значение auto-replied, а не auto-generated.

Auto-Submitted: auto-generated и X-Auto-Response-Suppress: All

Все остальные уведомления: о назначении заявок, внутренних комментариях, смене статусов, KCS и оценках качества, CSAT для сотрудников, выгрузках и массовых действиях.

Список уведомлений
  • employee_agent_ticket_assigned, ticket_created_internal, ticket_comment_internal, ticket_comment_internal_own
  • ticket_issue_status_changed, employee_agent_ticket_reopened, employee_agent_ticket_resolved
  • ticket_chatmessage_public_others, ticket_chatmessage_public_transcript
  • employee_agent_csat, employee_manager_csat
  • employee_evaluator_assigned, employee_evaluator_unassigned, employee_agent_unapproved_articles, employee_agent_approved_articles
  • employee_agent_aqi, employee_agent_aqi_evaluator_comment, employee_evaluator_aqi_agent_comment, employee_agent_open_aqi
  • employee_agent_lai, employee_agent_lai_evaluator_comment, employee_evaluator_lai_agent_comment, employee_agent_open_lai
  • employee_agent_qa, employee_agent_qa_evaluator_comment, employee_evaluator_qa_agent_comment, employee_agent_open_qa
  • employee_agent_achievement, employee_agent_article_flagged, employee_agent_article_unflagged
  • employee_agent_links_required, employee_manager_links_required, admin_treenode_completed
  • filter_export_completed, report_export_completed, ticket_export_completed, metric_aggregate_completed
  • ticket_bulk_update, article_bulk_update, ticket_bulk_merge

Как Swarmica обрабатывает входящие автоматические письма

Защита работает и в обратную сторону. В настройках email-канала есть два переключателя, оба включены по умолчанию:

  • Игнорировать автоответы. Письма, у которых Auto-Submitted имеет любое значение, кроме no, и письма с X-Spam-Flag: YES не создают заявок и комментариев. X-Auto-Response-Suppress во входящих письмах не учитывается: это просьба к получателю, а не признак автоответа, и она встречается в обычных письмах.
  • Игнорировать возвраты писем. Отчёты о недоставке отбрасываются. Отчётом Swarmica считает письмо типа multipart/report с report-type=delivery-status (RFC 3464, RFC 6522) или письмо с пустым Return-Path либо от MAILER-DAEMON.

Если выключить Игнорировать возвраты писем, отчёт о недоставке уведомления о создании заявки или о комментарии добавится в эту заявку внутренним комментарием, а заявку в статусе «Ожидает ответа клиента», «Ожидание» или «Решение предоставлено» переоткроет. Swarmica находит заявку по номеру, который записан в Message-ID вернувшегося письма. Номер заявки есть в Message-ID только у уведомлений ticket_created_* и ticket_comment_*, поэтому отчёты о недоставке остальных уведомлений, например CSAT-уведомлений менеджерам, в заявки не попадают.

Кроме того, Swarmica не принимает письма, отправленные с адресов её собственных email-каналов.

Интеграция с другой системой по почте

Если другая система поддержки или другой экземпляр Swarmica должны создавать заявки из уведомлений вашей Swarmica, учтите: система, которая соблюдает RFC 3834, отбросит письмо с Auto-Submitted: auto-generated. Swarmica с включённым переключателем Игнорировать автоответы поступит так же.

Варианты:

  • убрать Auto-Submitted из заголовков нужного уведомления на отправляющей стороне;
  • выключить Игнорировать автоответы в email-канале принимающей стороны.

Оба варианта ослабляют защиту от петли между двумя системами, поэтому меняйте настройку только у тех уведомлений и каналов, которые участвуют в интеграции. Чтобы отличать письма партнёра от остальной почты, добавьте в уведомление собственный заголовок, например X-Partner: acme, и настройте по нему правила почтового сервера.

Ссылки

  • RFC 3834 — Recommendations for Automatic Responses to Electronic Mail: заголовок Auto-Submitted и правила для автоответчиков
  • RFC 5436 — Sieve Notification Mechanism: mailto: значение auto-notified
  • RFC 5321 — Simple Mail Transfer Protocol: пустой адрес отправителя, раздел 4.5.5
  • RFC 3461 — SMTP Service Extension for Delivery Status Notifications
  • RFC 3464 — An Extensible Message Format for Delivery Status Notifications
  • RFC 6522 — The Multipart/Report Media Type for the Reporting of Mail System Administrative Messages
  • RFC 8098 — Message Disposition Notification: уведомления о прочтении
  • [MS-OXCMAIL] — спецификация Microsoft, где описан X-Auto-Response-Suppress