Тестування розсилки через seed-list: як дізнатися, куди реально падає лист у Gmail, Outlook і Yahoo
250 OK у логах Postfix не означає, що лист у Inbox. Розбираємо, як зібрати власний seed-list замість SaaS за $79/міс, читати заголовки для встановлення причини спаму і відрізняти технічну поломку від репутаційної.
EvilMail Team12 липня 2026 р.13 хв читання
У логах Postfix status=sent (250 2.0.0 OK), а open rate по кампанії — 4%. Сервер провайдера лист прийняв, підтвердив прийом і... поклав його у «Спам». Це і є та прірва, у яку провалюється більшість розсильників: вони плутають delivery (MX прийняв повідомлення, повернув 250) з placement (лист реально опинився у Inbox, а не у Спамі, Промоакціях чи Оновленнях). SMTP-код нічого не каже про папку. Seed-list показує саме праву частину цього шляху. Але це градусник, а не діагноз, і плутати одне з іншим так само небезпечно, як вірити рядку status=sent.
Що таке seed-list і чого він НЕ вимірює
Seed-list — це набір контрольних скриньок у різних провайдерів, на які ви шлете ту саму кампанію, що й на живу базу, і фіксуєте, у яку папку чи вкладку вона потрапила. Прогнали — отримали матрицю: Gmail #1 Inbox, Gmail #2 Promotions, Outlook Junk, Yahoo Inbox, Yandex Спам.
Головне обмеження, про яке SaaS-сервіси мовчать: seed-скриньки не мають engagement-історії. Живий отримувач роками відкриває ваші листи, відповідає, витягує їх зі спаму — Gmail і Microsoft будують під нього персональну reputation-модель. Контрольна скринька мертва: вона нічого не відкриває. Тому placement на seed може системно відрізнятися від placement у реальних людей — це класичний engagement bias. Seed показує
рівень репутації (автентифікація, blocklists, PTR, репутація домену та IP), але не персоналізований бал конкретного отримувача.
Практичний висновок один: seed-list майже гарантовано ловить технічні поломки — зламаний DKIM, відсутній PTR, потрапляння домену в Spamhaus. А контентні та репутаційні проблеми — лише частково. Тому його поєднують із postmaster-даними та A/B на живій базі, а не використовують як єдине джерело правди.
Збираємо власний seed-list замість SaaS за $79/міс
GlockApps і подібні беруть від ~$79/міс за матрицю розкладки. Для більшості інфраструктур свій seed-list дає 80% користі безкоштовно. Мінімальний набір провайдерів для СНД/EU-аудиторії:
Gmail (і free, і Workspace-домен — фільтрація різна)
Outlook / Hotmail / Office 365 (найсуворіші до PTR і нових доменів)
Yahoo / AOL
Proton, Zoho, GMX (EU)
Yandex, Mail.ru (СНД, чутливі до кирилиці в темі)
корпоративний Exchange, якщо аудиторія B2B
Беріть 2–3 скриньки на провайдера: одна в спамі з трьох — це шум, три з трьох — це патерн. Гігієна критична. Seed-скриньки не використовуйте більше ні для чого; розкидайте їх створення в часі (пачка акаунтів, зроблених за годину з одного IP, сама по собі підозріла); час від часу вручну відкривайте та архівуйте пару реальних листів, щоб скриньки не виглядали абсолютно мертвими.
Розкладку збирайте автоматично через IMAP. Приклад на imapflow — читаємо INBOX проти папки спаму за кожним провайдером:
Результат зводьте в простий CSV — provider,mailbox,campaign_id,folder,checked_at — і тримайте історію, бо placement дрейфує тижнями.
Автентифікація — перше, що дивиться seed-тест
Якщо автентифікація зламана, решту можна не читати. Три записи, які seed-тест підсвітить миттєво:
dns
; SPF — під час warm-up ~all, у проді -all
evilmail.pro. TXT "v=spf1 ip4:203.0.113.10 include:_spf.evilmail.pro -all"
; DMARC — relaxed alignment достатньо для 99% випадків
_dmarc.evilmail.pro. TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; adkim=r; aspf=r; pct=100"
; DKIM — 2048-bit, 1024 вважайте застарілим
sel1._domainkey.evilmail.pro. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhki..."
Ключ — alignment. DMARC пройде тільки якщо домен у d= підпису DKIM (або SPF-домен envelope-from) вирівняний із доменом у видимому From:. При relaxed (adkim=r) достатньо збігу організаційного домену — піддомен mail.evilmail.pro вирівняний з evilmail.pro. spf=pass для чужого bounce-домену без alignment DMARC не рятує — саме тут гинуть розсилки через сторонні ESP на власному From.
Окремо — PTR і FCrDNS. Outlook кидає в Junk або зовсім відхиляє, якщо reverse DNS вашого IP не резолвиться назад на той самий IP через forward-запис. Перевірка перед будь-яким сендом:
bash
dig -x 203.0.113.10 +short # PTR → hostname
dig a mail.evilmail.pro +short # hostname → назад той самий IP?
dig txt _dmarc.evilmail.pro +short
opendkim-testkey -d evilmail.pro -s sel1 -vvv
# blocklist: reversed octets проти Spamhaus ZEN
dig 210.69.22.212.zen.spamhaus.org +short # порожньо = чисто
Читаємо заголовки: встановлюємо ПРИЧИНУ, а не факт спаму
Це головна навичка. Факт «лист у спамі» дає seed-матриця. Причину дають заголовки. У Gmail — «Показати оригінал» (Show original), в Outlook — «Переглянути джерело повідомлення» (View message source).
Що читати:
Gmail — Authentication-Results: mx.google.com; spf=pass ... dkim=pass ... dmarc=pass. Якщо тут хоч один fail — причина знайдена, далі не шукайте. ARC-Authentication-Results показує, що бачив попередній хоп (важливо для форвардів).
Microsoft — X-Forefront-Antispam-Report. Поле SCL (Spam Confidence Level, −1..9): SCL 5+ = спам. BCL — bulk-рівень (0–9). CAT: — категорія рішення. X-Microsoft-Antispam містить сирі сигнали.
SpamAssassin / self-hosted — X-Spam-Status: No, score=1.8 required=5.0 tests=DKIM_VALID,SPF_PASS,.... Поріг за замовчуванням 5.0; список tests= прямо каже, які правила спрацювали і скільки додали до балу.
Для контрольованих ручних прогонів із заданими заголовками зручний swaks:
Провайдер-специфіка: чому один лист поводиться по-різному
Gmail. Вкладки Promotions / Updates / Social — не спам. Це ML-класифікатор за контентом: кількість посилань, image-to-text ratio, маркетингова лексика, наявність промо-оферів. Транзакційний лист із одним посиланням піде в Основну; каталог із десятьма банерами — у Промо, і це нормально, «лікувати» його не завжди треба. Реальний сигнал репутації — Gmail Postmaster Tools: domain/IP reputation і spam rate. Тримайте spam rate < 0.10%; на 0.30%+ вмикається активна фільтрація і блокування. Це обов'язкова вимога Google з лютого 2024 для відправників понад 5000 листів на день.
Microsoft (Outlook/O365). Найсуворіші до PTR і нових доменів — свіжий домен місяцями сидить у «сірому» стані з періодичними Junk. Реєструйте відправницькі IP у SNDS і підпишіться на JMRP, щоб отримувати скарги.
Yahoo/AOL. FBL через Complaint Feedback Loop (CFL) на ваш підписаний DKIM-домен.
Yandex / Mail.ru. Власні postmaster-кабінети, підвищена чутливість до кирилиці в темі (легко ловить евристику) і жорсткий контроль наявності коректного List-Unsubscribe.
Методологія прогону, щоб тест був валідним
Однакова кампанія. Той самий HTML, той самий From, той самий шлях відправки, що й на живу базу. Спеціальна «тестова» версія листа з іншого IP — це вимір іншої системи, результат сміттєвий.
Одночасність. Шліть seed у той самий момент, що й реальну розсилку: репутація IP змінюється погодинно, вчорашній прогін сьогодні вже не показовий.
Warm-up окремо. Прогрів нового IP чи домену ведіть окремим треком — не змішуйте його результати з бойовими.
Інтерпретація шуму. 1 спам із 3 скриньок провайдера = шум. Систематичний патерн (Outlook 3/3 у Junk) = адресна проблема, яку видно в заголовках.
List-Unsubscribe. RFC 8058 one-click (пара заголовків List-Unsubscribe + List-Unsubscribe-Post: List-Unsubscribe=One-Click) — це вимога Gmail/Yahoo з 2024 для bulk-відправників, а не опція.
image-to-text баланс розумний (не суцільна картинка)
тема без явних спам-тригерів і без ризикованої кирилиці для Yandex/Mail.ru
Робочий контур один: seed-list для технічної валідації перед кожним великим сендом, Gmail Postmaster і SNDS/JMRP для репутації, A/B на живій базі для контенту. Seed ловить технічні поломки майже зі стовідсотковою надійністю — зламаний DKIM, відсутній PTR, чорний список видно з першого прогону і читається прямо в заголовку. Репутацію та контент він показує лише частково, бо мертві контрольні скриньки не відтворюють поведінку живого отримувача. Тому джерел має бути три, а не одне — і жодне з них не звучить як 250 OK.