Email compliance audit: как проверить рассылки на соответствие закону и стандартам
Compliance audit — это не абстрактная проверка «для галочки». Это способ найти слабые места в рассылке до того, как их найдёт регулятор, почтовый провайдер или раздражённый подписчик. В этом материале — конкретный порядок проверки, список того, что ломается чаще всего, и инструменты, которые ускоряют процесс.
What an email compliance audit actually covers
A compliance audit is a structured review of your email program against applicable laws (CAN-SPAM, GDPR, CCPA, local regulations) and industry standards set by mailbox providers. The goal is straightforward: identify violations before they turn into fines, blacklisting, or reputational damage.
Most teams treat compliance as a one-time setup task. Configure SPF, add an unsubscribe link, move on. The problem is that compliance drifts. New team members import contacts without checking consent records. A developer changes the unsubscribe flow and breaks one-click processing. The ESP migrates to new infrastructure and your DKIM alignment stops passing. These things happen gradually, and without periodic audits they compound until something breaks publicly.
An audit examines five areas: consent and list acquisition, message content and headers, technical authentication, unsubscribe handling, and data management. Each has specific pass/fail criteria. The rest of this article walks through each one.
Consent and list acquisition
Every compliance framework starts here. CAN-SPAM allows implied consent for existing business relationships but requires explicit opt-out in every message. GDPR demands explicit, documented opt-in before the first email. The Russian ФЗ-152 and Federal Law on Advertising require prior consent with proof.
During an audit, pull a random sample of 200-500 addresses from your list. For each one, answer three questions. Where did this address come from? Is there a consent record (timestamp, IP, form URL, text of consent)? Does the consent scope match what you are sending? If you cannot answer all three for most addresses in the sample, you have a consent gap.
Common findings at this stage: addresses imported from trade shows with no digital consent trail, contacts inherited from a merged business unit, subscribers who opted in for one type of content but receive a different one. Each of these is a violation under GDPR and a deliverability risk everywhere else.
List age matters too. An address collected four years ago with no interaction since then is not a subscriber — it is a liability. Validate the list to remove addresses that no longer exist. Addresses that bounce repeatedly, role-based addresses, and disposable domains should all be flagged and removed before the next send.
Message content and headers
CAN-SPAM requires that commercial emails include a valid physical postal address, a clear identification of the message as an advertisement (where applicable), and accurate “From” and “Subject” lines. GDPR adds the requirement to identify the data controller. Russian law mandates that the sender be identifiable and the advertising nature of the message be disclosed.
Open the last ten campaigns you sent. Check: is the physical address present and current? Is the sender name consistent across campaigns? Are subject lines accurate descriptions of the content inside? Is there any content that could be interpreted as deceptive — misleading subject lines, fake “RE:” prefixes, urgency language that does not reflect reality?
Header inspection goes deeper. Look at the raw message source. Verify that the “From” domain matches your authenticated sending domain. Check that the “Reply-To” address is monitored. Confirm that the “List-Unsubscribe” header is present and includes both a mailto and an HTTPS URL. Since June 2024, Gmail and Yahoo require a one-click unsubscribe header for bulk senders — missing it means your messages land in spam.
Technical authentication: SPF, DKIM, DMARC
Authentication is not compliance in the legal sense, but mailbox providers treat it as a prerequisite. Without passing SPF and DKIM checks, your messages are far more likely to be filtered. Without a DMARC policy at p=quarantine or p=reject, Gmail deprioritizes your mail.
An audit should verify: SPF record exists, is syntactically correct, and includes all IPs and third-party services that send on your behalf. DKIM keys are published, aligned with the “From” domain (not just the envelope sender), and use at least 1024-bit keys (2048-bit preferred). DMARC record exists with at least p=none and an rua address for aggregate reports. If DMARC reports show failures, investigate before tightening the policy.
A frequent audit finding: the company uses three ESPs and a transactional email service, but the SPF record only covers two. The third sends unauthenticated mail that fails DMARC alignment. This is invisible until someone checks — which is the point of an audit.
Unsubscribe mechanics
CAN-SPAM gives senders ten business days to process an unsubscribe request. GDPR and Russian law require it to be immediate. In practice, anything slower than real-time is a deliverability problem: if a person clicks unsubscribe and receives another email the next day, they report it as spam.
During an audit, test the unsubscribe flow end to end. Subscribe a test address. Send a campaign. Click unsubscribe. Verify the address is removed from future sends within minutes, not days. Check that the unsubscribe page does not require a login, does not ask for a reason (asking is fine; requiring is not), and does not send a “sorry to see you go” email that itself has no unsubscribe link.
Also verify that the one-click List-Unsubscribe-Post header works correctly. Send a raw POST request to the unsubscribe URL with the body “List-Unsubscribe=One-Click-Unsubscribe”. If the server returns anything other than a 200, the mechanism is broken and Gmail will penalize you for it.
Data management and retention
GDPR requires a documented retention period for personal data. Russian ФЗ-152 requires that data be deleted once the stated processing purpose is fulfilled. Even CAN-SPAM, which is more lenient, assumes you are not holding suppressed addresses indefinitely without reason.
An audit should answer: do you have a written retention policy for subscriber data? Is the policy enforced automatically (sunset automation in the ESP) or does it depend on someone remembering to run a manual cleanup? Are suppression lists maintained separately from marketing lists? Can you fulfill a data deletion request within 30 days, and do you have a documented process for verifying such requests?
A practical benchmark: if a subscriber has not opened or clicked in 12 months, they should enter a re-engagement sequence. If they remain inactive after re-engagement, remove them. This is both a compliance measure and a deliverability optimization — two results from one action.
How to run an audit: step by step
Define scope. Which sending domains, ESPs, and list segments are included? Most teams have more sending infrastructure than they realize.
Pull consent records. For a random sample of addresses, trace each back to its opt-in source. Flag any address without a verifiable consent record.
Review the last 10-20 campaigns. Check for physical address, sender identification, subject line accuracy, and presence of unsubscribe link.
Inspect raw headers. Verify SPF, DKIM, and DMARC alignment. Confirm List-Unsubscribe and List-Unsubscribe-Post headers are present and functional.
Test unsubscribe end to end. Subscribe a test address, receive a campaign, unsubscribe, and verify suppression within minutes.
Validate the list. Run all addresses through a validation service to identify bounces, spam traps, disposable domains, and role-based addresses.
Check data retention. Confirm a written policy exists, sunset automation is active, and suppression lists are maintained.
Document findings. Create a report with pass/fail for each area, specific violations found, and remediation steps with deadlines.
An audit is not a one-time event. Run it quarterly, or at minimum after every change to sending infrastructure, ESP migration, or list import.
Зачем проводить аудит email-рассылок
Аудит рассылок — это проверка того, как ваш email-канал соотносится с требованиями законодательства и стандартами почтовых провайдеров. Не ради формальности, а ради конкретного результата: найти проблемы до того, как они приведут к штрафу, блокировке домена или массовой жалобе подписчиков.
Типичная ситуация: команда настроила SPF и DKIM при запуске, добавила ссылку отписки в шаблон и решила, что вопрос закрыт. Через полгода новый менеджер импортирует базу из старой CRM без проверки согласий. Разработчик обновляет шаблон и убирает физический адрес. Маркетолог подключает новый ESP для триггерных писем, но забывает обновить SPF-запись. По отдельности это мелочи. Вместе — накопленный compliance-долг, который рано или поздно проявляется.
Аудит выявляет такие вещи системно, а не после инцидента. Его стоит проводить раз в квартал или при любом изменении в инфраструктуре отправки.
Согласия и источники адресов
Первый блок аудита — проверка того, откуда пришли адреса и есть ли на каждый из них подтверждённое согласие. CAN-SPAM допускает подразумеваемое согласие в рамках существующих деловых отношений. GDPR и российский ФЗ-152 требуют явного, задокументированного opt-in до первого письма.
Как проверять: возьмите случайную выборку из 200-500 адресов. Для каждого ответьте на три вопроса. Откуда появился адрес? Есть ли запись о согласии (дата, IP, URL формы, текст)? Совпадает ли тип контента, который вы отправляете, с тем, на что человек подписывался? Если хотя бы на часть адресов нет ответа — есть проблема.
Что находят чаще всего: адреса с конференций без цифрового следа согласия, контакты из объединённых баз при слиянии отделов, подписчики, которые регистрировались на один тип рассылки, а получают другой. Каждый из этих случаев — нарушение по GDPR и риск по любому другому стандарту.
Возраст базы тоже важен. Адрес, собранный четыре года назад без единого открытия — не подписчик. Это балласт, который генерирует bounce и потенциально содержит спам-ловушки. Валидация базы перед рассылкой убирает мёртвые адреса, одноразовые домены и role-based контакты.
Содержание и заголовки писем
CAN-SPAM обязывает указывать физический почтовый адрес отправителя, маркировать коммерческие письма как рекламу и не вводить получателя в заблуждение темой письма. GDPR добавляет требование указать контроллера данных. Российский закон о рекламе (ФЗ-38) требует, чтобы отправитель был идентифицируем и рекламный характер сообщения был обозначен.
Откройте последние десять кампаний. Проверьте: указан ли физический адрес? Совпадает ли имя отправителя от кампании к кампании? Тема письма честно описывает содержание? Нет ли элементов, которые можно трактовать как обман — фальшивые «RE:» в теме, искусственная срочность, не соответствующая реальности?
Отдельно проверьте raw-заголовки. Домен в «From» должен совпадать с аутентифицированным доменом отправки. «Reply-To» должен вести на мониторируемый ящик. Заголовок «List-Unsubscribe» должен быть и содержать как mailto, так и HTTPS-ссылку. С июня 2024 года Gmail и Yahoo требуют заголовок List-Unsubscribe-Post для отправителей с объёмами от 5000 писем в день. Без него — спам.
SPF, DKIM, DMARC: техническая проверка
Аутентификация — не юридическое требование в строгом смысле, но почтовые провайдеры трактуют её как обязательное условие. Без прохождения SPF и DKIM письма с высокой вероятностью фильтруются. Без DMARC-политики на уровне quarantine или reject Gmail понижает приоритет вашей почты.
Что проверять в рамках аудита. SPF: запись существует, синтаксически корректна, включает все IP-адреса и сервисы, которые отправляют от вашего имени. DKIM: ключи опубликованы, выровнены с доменом в «From», длина — не менее 1024 бит (лучше 2048). DMARC: запись есть, указан rua-адрес для агрегированных отчётов. Если отчёты показывают сбои — разберитесь в причинах прежде, чем ужесточать политику.
Частая находка при аудите: компания использует три ESP и транзакционный сервис, но SPF-запись покрывает только два. Третий отправляет письма без прохождения DMARC. Это остаётся незамеченным, пока кто-то не проверит — в этом и состоит смысл аудита.
Механизм отписки
CAN-SPAM даёт десять рабочих дней на обработку отписки. GDPR и российское законодательство требуют немедленного прекращения рассылки. На практике всё, что медленнее обработки в реальном времени — проблема с доставляемостью. Человек нажал «Отписаться» и получил ещё одно письмо на следующий день? Он нажмёт «Спам».
Проверьте процесс от начала до конца. Подпишите тестовый адрес. Отправьте кампанию. Нажмите «Отписаться». Убедитесь, что адрес исключён из следующих отправок в течение минут. Страница отписки не должна требовать авторизации, не должна делать указание причины обязательным и не должна отправлять прощальное письмо без собственной ссылки отписки.
Проверьте также one-click List-Unsubscribe-Post. Отправьте POST-запрос на URL отписки с телом «List-Unsubscribe=One-Click-Unsubscribe». Если сервер возвращает не 200, механизм сломан, и Gmail будет понижать ваши письма.
Хранение данных и retention policy
GDPR требует задокументированного срока хранения персональных данных. ФЗ-152 обязывает удалить данные, когда цель обработки достигнута. Даже CAN-SPAM, более мягкий в этом отношении, подразумевает, что suppressed-адреса не хранятся бесконечно без причины.
Аудит должен ответить на вопросы: есть ли письменная политика хранения данных подписчиков? Исполняется ли она автоматически (sunset-автоматизация в ESP) или зависит от того, вспомнит ли кто-то запустить ручную очистку? Ведутся ли suppression-списки отдельно от маркетинговых? Можете ли вы выполнить запрос на удаление данных в течение 30 дней и есть ли задокументированный процесс верификации таких запросов?
Практический ориентир: если подписчик не открывал и не кликал 12 месяцев, он должен попасть в реактивационную цепочку. Если после реактивации остаётся неактивным — удаляйте. Это одновременно compliance-мера и оптимизация доставляемости.
Порядок проведения аудита
Определите scope. Какие домены, ESP, сегменты списков включены? У большинства команд больше отправляющей инфраструктуры, чем они думают.
Проверьте записи о согласиях. Для случайной выборки адресов отследите каждый до источника opt-in. Отметьте адреса без верифицируемой записи.
Просмотрите 10-20 последних кампаний. Физический адрес, идентификация отправителя, точность темы, наличие ссылки отписки.
Проверьте raw-заголовки. SPF, DKIM, DMARC alignment. Наличие и работоспособность List-Unsubscribe и List-Unsubscribe-Post.
Протестируйте отписку. Подпишите тестовый адрес, получите кампанию, отпишитесь, убедитесь в suppression в течение минут.
Валидируйте базу. Прогоните все адреса через сервис проверки: bounce, спам-ловушки, одноразовые домены, role-based адреса.
Проверьте retention. Письменная политика, работающая sunset-автоматизация, актуальные suppression-списки.
Задокументируйте результаты. Отчёт с pass/fail по каждому блоку, конкретные нарушения, шаги по исправлению с дедлайнами.
Типичные нарушения, которые находит аудит
За годы работы с email-маркетологами мы видим одни и те же проблемы снова и снова. Вот десять наиболее частых.
- Отсутствие proof of consent для 10-30% базы. Адреса когда-то импортированы «по памяти», без записи.
- SPF-запись не включает один из используемых ESP. Письма от него проваливают DMARC.
- Физический адрес в шаблоне устарел после переезда офиса.
- Ссылка отписки ведёт на страницу с обязательной авторизацией. Половина людей не может отписаться.
- Нет заголовка List-Unsubscribe-Post. Gmail показывает предупреждение или фильтрует в спам.
- Retention policy не задокументирована. Адреса хранятся без ограничения по сроку.
- Suppression list не синхронизирован между ESP. Человек отписался в одном, получает письма из другого.
- DKIM-ключи длиной 512 бит. Почтовые серверы отклоняют подпись.
- Транзакционные письма содержат рекламные блоки, превращая их в маркетинговые без соответствующих разрешений.
- Нет процесса обработки запросов на удаление данных (right to erasure). При поступлении запроса никто не знает, что делать.
Каждая из этих проблем — конкретное нарушение, за которое можно получить штраф. Но большинство из них устраняется за один-два дня, если знать, что искать. Именно для этого нужен аудит.
Как часто проводить аудит
Минимум — раз в квартал. Помимо регулярного расписания, внеплановый аудит нужен после: смены ESP, подключения нового домена отправки, крупного импорта адресов, изменения шаблона писем или обновления законодательства (как обновление требований Gmail/Yahoo в 2024 году).
Полный аудит занимает от нескольких часов до двух дней в зависимости от сложности инфраструктуры. Исправление найденных проблем — ещё неделя-две. Это небольшая инвестиция по сравнению со штрафом в десятки тысяч евро или полной блокировкой домена.
Аудит — не разовое событие. Это процесс, который повторяется каждый квартал или после любого изменения в инфраструктуре отправки.
Валидация базы как часть аудита
Одна из обязательных проверок при аудите — состояние базы адресов. Невалидные адреса генерируют bounce, bounce портит репутацию домена, плохая репутация ведёт к спаму. Но есть и compliance-аспект: хранение заведомо нерабочих адресов — нарушение принципа точности данных (GDPR, Article 5(1)(d)) и принципа минимизации.
Проверка через uChecker занимает минуты и показывает невалидные адреса, спам-ловушки, одноразовые и role-based контакты. Результат — чистый список, который соответствует и техническим требованиям провайдеров, и нормам закона.
Включите валидацию в стандартный процесс аудита. Перед каждой массовой рассылкой и как минимум раз в квартал — для всей базы. Это не заменяет работу с согласиями, но закрывает техническую сторону и снижает юридический риск.
Начните аудит с проверки базы. Загрузите список в uChecker — уберите невалидные, рискованные и одноразовые адреса до следующей рассылки.
