Изпратете запитване

Ще се радваме да обсъдим Вашия проект.

Диагностика · Имейли

Формата за контакт праща в спам: SPF, DKIM и DMARC

от Владо ≈ 13 мин четене

Това е най-скъпият тих дефект в един сайт. Формата за контакт показва зелено „Съобщението беше изпратено“, клиентът си тръгва доволен, а писмото никога не пристига. Никой не разбира, защото и двете страни мислят, че всичко е минало добре.

За разлика от бавен сайт или счупен дизайн, тук няма симптом. Единственият признак е тишина — и тя се обяснява с „май няма запитвания в момента“.

формата за контакт праща в спам - spf dkim dmarc

Накратко

  • „Съобщението беше изпратено“ не значи нищо. Показва се, преди писмото да е доставено.
  • Причината е сървърната функция mail(), която не се удостоверява.
  • SPF казва кой може да изпраща, DKIM подписва съдържанието, DMARC казва какво да става при провал.
  • Правилното решение е удостоверен SMTP — петнадесет минути работа.
  • Втора застраховка: всяка заявка да се записва и в базата данни, не само по имейл.

01Имате ли проблем изобщо

Първо изключете най-простото. Тестът отнема две минути и трябва да се направи от външен адрес, а не от вашия имейл на същия домейн — писмо от вас до вас често минава по вътрешен път и не доказва нищо.

  1. Изпратете от чужд адрес

    От Gmail, от телефона си на мобилни данни, от адрес на приятел. Попълнете формата като истински клиент.

  2. Проверете и трите места

    Входящата кутия, папката за спам, и — ако ползвате Gmail — разделите „Промоции“ и „Известия“. Писмо в спам е също провалена проверка, дори да е пристигнало.

  3. Проверете колко бързо пристига

    Ако писмото идва след двадесет минути, имате друг проблем — фоновите задачи на WordPress се изпълняват при посещения на сайта, а при малък трафик това означава закъснение.

  4. Погледнете заглавната част на писмото

    В Gmail: отваряте писмото, менюто с три точки, „Показване на оригинала“. Търсите редовете SPF, DKIM и DMARC. Ако до тях пише fail или softfail, намерили сте причината. Ако пише none — записите просто липсват.

Най-подвеждащото: ако сте изпращали и получавали писма на този домейн от години, лесно приемате, че всичко е наред. Но служебната ви поща минава през пощенския сървър на домейна, а формата за контакт изпраща от уеб сървъра. Това са два различни изпращача и вторият почти никога не е конфигуриран.

02Защо се случва

WordPress по подразбиране изпраща писма чрез сървърната функция mail(). Тя е стара, проста и няма никакво удостоверяване. Писмото просто се предава на пощенската програма на сървъра и излиза оттам.

Резултатът е съобщение, което твърди „аз съм от info@vashiat-domein.bg„, изпратено от сървър, който не е свързан с този домейн по никакъв начин. От гледна точка на получателя това изглежда точно като опит за подправяне на подател — защото технически е неразличимо от него.

Получателят не наказва вашия сайт. Той просто няма никакво доказателство, че писмото е от вас — и постъпва предпазливо.

През последните години големите пощенски доставчици затегнаха значително правилата. Това, което е минавало преди пет години, вече попада в спам или се отхвърля напълно. Затова сайтове, при които формата „винаги е работила“, изведнъж спират да доставят без нищо да е било променяно.

03Трите записа и какво прави всеки

И трите са текстови записи в DNS зоната на домейна. Не са в сайта, не са в WordPress — променят се там, където се управлява домейнът.

ЗаписНа какъв въпрос отговаряКакво не прави
SPF „Кои сървъри имат право да изпращат поща от този домейн?“ Не проверява съдържанието; чупи се при препращане на писма
DKIM „Наистина ли това писмо е от този домейн и непроменено ли е?“ Не казва какво да се прави, ако подписът не съвпада
DMARC „Какво да правя, когато проверките се провалят?“ Не помага само по себе си — изисква SPF и DKIM да съществуват

SPF е списък. Изглежда приблизително така — един ред, тип TXT, за самия домейн:

SPF
v=spf1 include:_spf.hostingat.bg include:_spf.uslugata.com ~all

Всеки include добавя сървърите на един доставчик. Ако изпращате и през хостинга, и през външна услуга за имейли, и двете трябва да са тук. Завършекът ~all значи „всичко останало е подозрително“; -all е по-строгото „отхвърли всичко останало“.

Класическа грешка: два отделни SPF записа за един домейн. Стандартът допуска само един — при два записа проверката се проваля напълно, което е по-лошо от липсващ SPF. Ако добавяте нов доставчик, добавяте include в съществуващия ред, не нов ред.

DKIM е криптографски подпис. Пощенският сървър подписва изходящите писма с частен ключ, а публичният ключ е в DNS. Получателят проверява подписа. Не се пише на ръка — генерира се от хостинг панела или от услугата за имейли, която после ви дава записа за добавяне.

DMARC е политика. Записва се като TXT за _dmarc.вашиятдомейн.bg:

DMARC — начален
v=DMARC1; p=none; rua=mailto:dmarc@вашиятдомейн.bg; pct=100

Започва се винаги с p=none — режим на наблюдение. Получателите ви изпращат отчети какви писма минават и от кои сървъри. След няколко седмици, когато сте сигурни, че всички легитимни изпращачи са покрити, се минава към p=quarantine и по-късно към p=reject.

Не започвайте с p=reject. Ако има легитимен изпращач, който не сте включили в SPF — фактурираща система, CRM, платформа за бюлетини — писмата му ще започнат да се отхвърлят изцяло, без предупреждение. Наблюдението преди затягането не е формалност.

04Правилното решение

Записите са необходими, но сами по себе си не решават проблема с формата. Ако сайтът продължава да изпраща през неудостоверения mail(), SPF проверката пак ще се проваля — просто вече по-категорично.

Истинското решение е сайтът да изпраща през удостоверен SMTP. Два варианта:

ВариантКога е подходящОграничение
Пощенският сървър на домейна
кутията, която вече ползвате
Малък сайт с няколко запитвания дневно. Няма нови сметки и разходи. Лимити за изпращане; ако кутията се препълни, спира
Специализирана услуга
за транзакционни имейли
Магазин или сайт с много автоматични писма. Дава отчети дали писмата се доставят. Отделна регистрация; при обем — платена

Настройката и в двата случая е: инсталира се плъгин за SMTP, въвеждат се адрес на сървъра, порт, потребител и парола, и се изпраща тестово писмо от самия плъгин. Петнадесет минути.

Важна подробност, която се пропуска: адресът на подателя трябва да е на вашия домейн, а не имейлът на клиента, попълнил формата. Ако формата изпраща „от“ адреса на клиента, никаква конфигурация няма да помогне — вашият сървър няма право да изпраща от чужд домейн. Адресът на клиента отива в полето за отговор, не в полето за подател.

05Втората застраховка

Дори всичко да е настроено правилно, имейлът остава канал, който може да се повреди — сменена парола, изтекъл лиценз, препълнена кутия, промяна при доставчика. Затова второто правило:

Всяка заявка от формата трябва да се записва в базата данни на сайта, а не само да се изпраща по имейл.

Повечето плъгини за форми имат тази възможност — понякога изключена по подразбиране. Ползата е двойна: имате архив на всички запитвания, независим от пощата, и когато следващият проблем се появи, ще го видите като разлика между записаните заявки и получените писма, вместо да не го видите изобщо.

За магазини същото важи и за поръчките — те се записват в базата, така че липсващият имейл не значи изгубена поръчка. За формата за контакт обаче имейлът често е единственият канал.

06Ако домейнът вече е в черни списъци

Ако сайтът е бил компрометиран и е изпращал спам, проблемът е различен и по-сериозен — репутацията на домейна и на IP адреса е пострадала. Тогава дори перфектна конфигурация не помага веднага.

  • Първо спрете източника.Ако причината е компрометиране, конфигурацията е втора стъпка — вижте какво се прави при хакнат сайт.
  • Проверете в кои списъци сте.Има публични инструменти за проверка по домейн и по IP адрес. Всеки списък има собствена процедура за изваждане.
  • Поискайте изваждане с обяснение.Опишете какво е причинило проблема и какво сте направили. Формалните заявки без обяснение често се отхвърлят.
  • Възстановявайте репутацията постепенно.Не изпращайте голям обем веднага след изваждането. Репутацията се натрупва с време и с малък обем нормални писма.
  • Обмислете отделен IP за поща.Ако проблемът е в споделения IP на хостинга, а не във вашия домейн, специализирана услуга за изпращане решава въпроса.

Двете минути, които си струват

Отворете формата си за контакт сега и изпратете тест от външен адрес. После проверете спам папката. Това е всичко, което трябва да направите, за да разберете дали губите запитвания.

Проверката е в списъка ни за приемане на сайт под номер 12 — 32-те проверки преди последната вноска — именно защото е точката, която се проваля най-често и се открива най-късно.

Ако тестът мине успешно, нищо повече не ви трябва от тази статия. Ако не мине, започнете от раздел 04 — SMTP настройката решава повечето случаи, а записите са довършването.

Владо
Senior WordPress Developer & SEO Expert

Помага на бизнеси да изграждат бързи, сигурни и видими в Google сайтове. Над едно десетилетие опит с WordPress, WooCommerce и техническо SEO.

Сподели:

Често задавани въпроси

Защо имейлите от формата отиват в спам?
Защото WordPress по подразбиране изпраща през сървърната функция mail(), която не се удостоверява. Писмото излиза от IP адрес на хостинга, който не е оторизиран да изпраща поща от името на вашия домейн. Получателят вижда съобщение, което твърди, че е от вас, без никакво доказателство.
Какво прави SPF записът?
SPF е списък в DNS зоната, който казва кои сървъри имат право да изпращат поща от ваше име. Когато писмо пристигне, получателят проверява от кой сървър идва и дали той е в списъка. Ако не е — писмото е или подправено, или изпратено от неоторизирана система.
Достатъчен ли е само SPF?
Не. SPF проверява само откъде идва писмото, не гарантира че съдържанието не е променено, и се чупи при препращане. DKIM добавя криптографски подпис, а DMARC казва на получателя какво да прави при провал. Трите работят заедно.
Как да проверя дали формата доставя писма?
Изпратете тест от външен адрес — от Gmail или от телефон на чужда мрежа — и проверете и входящата кутия, и папката за спам. Съобщението за успех във формата не доказва нищо: показва се, когато PHP е приел заявката, а не когато писмото е доставено.
Кое е правилното решение вместо mail()?
Изпращане през удостоверен SMTP — или пощенския сървър на самия домейн, или специализирана услуга за транзакционни имейли. Настройката отнема около петнадесет минути и премахва целия проблем, защото писмото излиза от сървър, който има право да изпраща от името на домейна.
Мога ли да сложа тези записи сам?
SPF и DMARC са текстови записи, които се добавят в DNS панела и са напълно достъпни, ако имате достъп до управлението на домейна. DKIM изисква генериране на ключ от хостинга или от услугата за изпращане. Рискът е в грешка при SPF — два записа вместо един провалят проверката напълно, което е по-лошо от липсващ запис.

Не сте сигурни дали получавате всички запитвания?

Проверяваме доставимостта, настройваме удостоверен SMTP и записваме заявките в базата, за да не зависите само от имейла.

Свържете се с нас