Bug-ul
Un magazin online își trimite confirmările de comandă de pe serverul de e-mail al firmei de găzduire, de la comenzi@shop.example. Apoi proprietarul mută e-mailul firmei pe Google Workspace și, urmând ghidul de configurare, publică un record SPF care conține doar Google. De acum, serverul de găzduire nu mai are voie să trimită e-mailuri pentru shop.example, iar DKIM n-a avut niciodată. Din februarie 2024, Gmail cere ca fiecare expeditor să treacă de SPF sau de DKIM.
Cum se vede
Începe în ziua unei schimbări care pare să n-aibă nicio legătură cu comenzile. Checkout-ul merge, plățile intră. Confirmările ajung în spam sau se întorc. Clienții scriu ca să întrebe dacă le-a trecut comanda, iar unii comandă a doua oară, ca să fie siguri. Nimeni nu leagă asta de mutarea e-mailului.
Cum îl găsește un test
Plasezi o comandă de test la câteva minute și trimiți confirmarea într-un inbox de Gmail pe care îl controlează testul. Verifici că e-mailul ajunge în inbox, nu în spam, și citești header-ul Authentication-Results. Dacă nu apare nici spf=pass, nici dkim=pass, testul pică la câteva minute după schimbarea din DNS.
Reparația
Recordul SPF se unifică, ca să-i includă pe ambii expeditori, Google și firma de găzduire. Se pornește DKIM pe serverul de găzduire sau se mută e-mailurile de comandă la un furnizor de e-mail tranzacțional cu domeniu verificat. Se adaugă un record DMARC, ca eșecurile să fie raportate.
Testul care îl prinde
O comandă sintetică la câteva minute, trimisă într-un inbox de Gmail pregătit pentru test, verifică faptul că confirmarea ajunge în inbox și că Authentication-Results arată spf=pass sau dkim=pass. Rulează non-stop, așa că o schimbare de DNS e prinsă chiar în ziua în care se face.
import { test, expect } from "@playwright/test";
import { placeTestOrder, seededInbox } from "./flow";
// Runs every few minutes, around the clock.
test("the confirmation reaches the inbox, authenticated", async ({ page }) => {
const order = await placeTestOrder(page, { email: seededInbox.address });
const mail = await seededInbox.waitFor({ subject: order.number });
expect(mail.folder).toBe("INBOX");
const auth = mail.headers["authentication-results"];
expect(auth).toMatch(/spf=pass|dkim=pass/);
});
Ce pune în pericol
Confirmările de comandă, comenzi duble, un inbox de suport plin de „mi-a trecut comanda?” și încrederea clienților într-un magazin care a tăcut după ce au plătit.
