#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-Submitted | X-Auto-Response-Suppress |
|---|---|---|
| Ответы в заявке, запрос оценки CSAT, письма об учётной записи, изменения в статье | — | — |
| Моя заявка создана | auto-generated | — |
| Копии собственных сообщений, упоминания, любая новая заявка | auto-generated | OOF, AutoReply, DR, RN, NRN |
| Заявка не создана | auto-replied | All |
| Все остальные уведомления | auto-generated | All |
Полный список уведомлений
Без служебных заголовков
Эти письма уходят как обычная почта. В основном это письма с текстом, который написал человек, или письма, которые ждут от получателя действия: ответа, перехода по ссылке, ввода кода.
ticket_comment_public_external— Любой ответ добавлен в мою заявкуticket_comment_public_internal— Публичный ответ добавленticket_requester_csat— Запрос оценки CSATuser_account_invited— Пользователь приглашенuser_account_created— Учетная запись созданаuser_registration— Запрошена регистрацияuser_password_change— Запрошен сброс пароляuser_identity_email_verification— Код подтверждения доступа к почтеuser_identity_bot_verification— Код подтверждения доступа к почте при регистрации через мессенджерuser_2fa_email_verification— Код подтверждения для 2FAuser_2fa_disable_verification— Код для отключения 2FAuser_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_ownticket_issue_status_changed,employee_agent_ticket_reopened,employee_agent_ticket_resolvedticket_chatmessage_public_others,ticket_chatmessage_public_transcriptemployee_agent_csat,employee_manager_csatemployee_evaluator_assigned,employee_evaluator_unassigned,employee_agent_unapproved_articles,employee_agent_approved_articlesemployee_agent_aqi,employee_agent_aqi_evaluator_comment,employee_evaluator_aqi_agent_comment,employee_agent_open_aqiemployee_agent_lai,employee_agent_lai_evaluator_comment,employee_evaluator_lai_agent_comment,employee_agent_open_laiemployee_agent_qa,employee_agent_qa_evaluator_comment,employee_evaluator_qa_agent_comment,employee_agent_open_qaemployee_agent_achievement,employee_agent_article_flagged,employee_agent_article_unflaggedemployee_agent_links_required,employee_manager_links_required,admin_treenode_completedfilter_export_completed,report_export_completed,ticket_export_completed,metric_aggregate_completedticket_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