Kai kontaktinė forma sako „Ačiū“, bet laiškas neateina
Kontaktinė forma gali sugesti niekam nematant klaidos: lankytojas gauna malonų patvirtinimą, o Jūs – nieko. Kodėl taip nutinka ir kaip tai laiku pastebėti.
Įsivaizduokite nedidelę kineziterapijos kliniką. Jos svetainėje yra kontaktinė forma, ir forma veikia – bent jau taip atrodo. Lankytojai ją užpildo, spusteli „Siųsti“ ir pamato malonų „Ačiū, netrukus su Jumis susisieksime“. Ko niekas nemato: žinutės jau kurį laiką nebepasiekia klinikos pašto dėžutės. Nėra jokios klaidos, jokio grąžinto laiško niekieno pašto dėžutėje, jokios raudonos lemputės. Forma genda tyliai.
Kodėl niekas nepastebi
Formos puslapis „Ačiū“ paprastai reiškia tik vieną dalyką: svetainė perdavė žinutę toliau. Ar pašto serveris ją priima, priskiria šlamštui ar pakeliui atmeta, vyksta vėliau, formai nematant. Pavyzdžiui, PHP funkcija mail() praneša apie sėkmę, kai tik vietinė sistema priima žinutę pristatymui – o ne tada, kai ji ką nors pasiekia. Taigi lankytojas gauna patvirtinimą ir eina toliau. Tuo tarpu savininkas mato tuščią pašto dėžutę ir mano, kad tiesiog ramus mėnuo. Mažesnis užklausų skaičius savaime retai kelia nerimą: atostogos, oras, ekonomika – visada atsiras paaiškinimas, kuris skamba įtikinamiau nei „forma sugedusi“.
- 0 dienaNaktį vykdomas įprastas įskiepio atnaujinimas. Svetainė atrodo lygiai taip pat kaip anksčiau.
- 1 dienaAtkeliauja paskutinė žinutė. Niekas nežino, kad ji paskutinė.
- 2–13 dienosLankytojai ir toliau pateikia formą ir mato „Ačiū“. Į pašto dėžutę nepatenka nieko.
- 14 dienaKažkas paskambina ir kiek susierzinęs klausia, kodėl niekas taip ir neatsakė į jo užklausą.
- 15 dienaPriežastis randama per valandą. Tų dviejų savaičių žinutės dingusios – nebent forma dar ir saugojo kopiją.
Įprastos priežastys
- Pasikeitė SMTP slaptažodis ar pašto paslaugų teikėjas. Forma toliau jungiasi senais prisijungimo duomenimis, o pašto serveris atsisako – lankytojo požiūriu, tyliai.
- PHP mail() be autentifikavimo. Žiniatinklio serveris siunčia laiškus tiesiogiai, neprisijungęs prie tinkamo pašto serverio. Daugelis gaunančiųjų serverių tokius laiškus laiko įtartinais: jie patenka į šlamštą arba iškart atmetami.
- SPF, DKIM ir DMARC nesuderinti. Daugelis formų į From lauką įrašo lankytojo adresą. Tada žinutė teigia, kad ji siunčiama, tarkime, iš gmail.com adreso, bet ją siunčia Jūsų žiniatinklio serveris – būtent tai DMARC ir skirtas sustabdyti.
- Įskiepio atnaujinimas ar temos pakeitimas sugadina formą ar jos CAPTCHA. Pakeistas šablonas praranda lauką, scenarijus nebeįkeliamas arba CAPTCHA valdiklis rodomas be savo scenarijaus – ir kiekvienas pateikimas neįveikia patikros.
- Gaunančioji pašto dėžutė pilna. Pašto serveris atsisako priimti naujas žinutes, o pranešimas apie nepristatymą keliauja adresu, kurio niekas neskaito.
- Slapukų reklamjuostė blokuoja formos scenarijų. Jei sutikimo įrankis CAPTCHA ar formos scenarijų priskiria „rinkodarai“, slapukų atsisakę lankytojai gali gauti formą, kurios neįmanoma pateikti arba kurios pateikimai atmetami dėl trūkstamo žetono.
- Pasibaigęs TLS sertifikato ar domeno galiojimas. Lankytojai mato naršyklės įspėjimą ir išeina, arba pašto serverio nebeįmanoma saugiai pasiekti. Jei baigiasi gaunančiosios pašto dėžutės domeno galiojimas, laiškai jai tiesiog nustoja eiti.
- Podėlio sluoksnis pateikia pasenusius puslapius. Viso puslapio podėlis gali pateikti formą su pasibaigusio galiojimo saugumo žetonu (nonce ar CSRF žetonu). Serveris pateikimą atmeta, o priklausomai nuo konfigūracijos lankytojas nemato aiškios klaidos.
From adreso spąstai
Trečioji priežastis verta atidesnio žvilgsnio, nes daugelis formų konfigūracijų ją turi pagal numatytuosius nustatymus. DMARC tikrina, ar matomame From adrese esantis domenas sutampa su domenu, už kurį laiduoja SPF ar DKIM. Jei forma siunčia žinutę „iš“ lankytojo adreso, Jūsų serveris neturi teisės siųsti to domeno vardu, todėl patikra nepavyksta. Priklausomai nuo lankytojo domeno DMARC politikos ir Jūsų pašto paslaugų teikėjo, žinutė patenka į šlamštą arba atmetama. Sprendimas paprastas: siųskite iš savo domeno adreso, o lankytojo adresą įrašykite į Reply-To. Spustelėjus „Atsakyti“, atsakymas vis tiek pasieks lankytoją.
- From: lankytojo adresas
- Nėra Reply-To
- PHP mail() tiesiai iš žiniatinklio serverio
- Siunčiančiajam domenui nėra SPF, DKIM ar DMARC
- Žinutė egzistuoja tik kaip el. laiškas
- From: Jūsų domeno adresas, pvz., form@yourdomain
- Reply-To: lankytojo adresas
- SMTP su autentifikavimu arba siuntimo paslauga
- SPF, DKIM ir DMARC nustatyti ir suderinti
- Kopija taip pat saugoma duomenų bazėje
Ką daryti
- 1Reguliariai siųskite bandomąją žinutę per savo formą – bent kartą per mėnesį ir visada po atnaujinimų, temos ar pašto nustatymų pakeitimų. Aiškiai pažymėkite ją kaip bandomąją, kad niekas į ją neatsakytų.
- 2Žinokite savo įprastą ritmą. Jei forma paprastai atneša kelias žinutes per savaitę, dvi tylos savaitės yra priežastis patikrinti, o ne ramus mėnuo.
- 3Siųskite per SMTP su autentifikavimu – per savo pašto paslaugų teikėją ar specialią siuntimo paslaugą, – užuot pasikliovę PHP mail().
- 4From lauke naudokite savo domeną, o Reply-To lauke – lankytojo adresą. Tada nustatykite tam domenui SPF, DKIM ir DMARC, kad žinutės įveiktų patikras.
- 5Kiekvieno pateikimo kopiją saugokite duomenų bazėje. Daugelis formų įskiepių tai siūlo, kartais kaip priedą. Jei laiškas nepasiekia adresato, užklausos vis tiek išlieka.
- 6Po kiekvieno įskiepio atnaujinimo patikrinkite formą – įskaitant CAPTCHA, taip pat atsisakius slapukų.
Tokias patikras lengva pamiršti, todėl verta jas automatizuoti. Turėdama paskyrą ir patvirtintą domeną, formexposed gali išsiųsti aiškiai pažymėtą bandomąjį pateikimą ir patikrinti, ar jis iš tikrųjų ateina (pristatymo patikrinimas, tik jį įjungus). Ji taip pat aptinka tylą – kai forma, kuri paprastai gauna žinučių, staiga negauna nė vienos – ir tikrina pranešimų laiškų SPF, DKIM ir DMARC bei TLS sertifikato ir domeno galiojimo pabaigą. Įspėjimą gaunate tik tada, kai kas nors pasikeičia.
Jei norite tik pirmą kartą pažvelgti: nemokamam patikrinimui formexposed.com nereikia paskyros ir jis nieko nepateikia. Be kita ko, jis parodo, ar CAPTCHA yra, bet sugedusi – valdiklis be scenarijaus, viešas bandomasis raktas, klaidos naršyklėje – vienas iš tylesnių būdų, kaip forma nustoja veikti. Ar žinutės tikrai ateina, galima patvirtinti tik tikra bandomąja žinute, tad išsiųskite ją dar šiandien.