Moodul 7 · 7.3
Meil sinu veebisaidilt ja vormidest
Moodul 7: Uudiskirjad ja kirjad sinu veebisaidilt · Lugemisaeg: 11 minutit
Õpieesmärk: Pärast seda tundi oskad seadistada veebisaidi meili (kontaktvormid, tellimuskinnitused, WordPressi teavitused) nii, et see jõuab kohale, ei tekita DMARC-probleeme ega võimalda sinu paketti kuritarvitada.
Põhimõisted: PHP mail(), SMTP sisselogimisega, envelope sender, From vs. Reply-To, külastaja aadress ei tohi kunagi olla From, SMTP-plugin, tehingumeil, vormispämm, captcha, honeypot, saatmislimiit, kohalik kohaletoimetamine, kui MX asub mujal
Sinu veebisait on ka meiliprogramm
Sinu veebisait saadab rohkem meili kui arvad. Kontaktvorm saadab sulle igast sõnumist meili. Veebipood saadab tellimuskinnitusi, arveid ja saatmisteateid. WordPress saadab meili uue kommentaari, uuenduse või parooli lähtestamise korral. Vastuvõtja jaoks on see lihtsalt sinu domeenilt tulev meil ning seda kontrollitakse sama rangelt kui su mailboksist saadetud kirju: SPF, DKIM, DMARC, maine.
Siiski läheb veebisaidi meil tavalisest kirjast sagedamini valesti. Tavaliselt on põhjus üks kolmest: saatmisviis, saatja aadress või vormi kuritarvitamine.
Viis 1: PHP mail()
Lihtsaim viis veebisaidil meili saata on PHP funktsioon mail(). Veebisait annab meili siis otse veebiserveri meiliprogrammile edasi, ilma sisse logimata. See toimib enamasti, kuid sellel on puudusi:
- Envelope sender (Return-Path) muutub sageli sinu paketi süsteemikontoks, näiteks
gebruiker@server.hosting.example, mitte sinu enda aadressiks. SPF-i kontrollitakse siis serveri domeeni järgi, mistõttu see ei ühti sinu From-domeeniga (tund 7.1). - Kas sellele lisandub ka sinu domeeni DKIM-allkiri, sõltub serverist. Mõnel serveril jah, mõnel mitte.
- Sa ei näe midagi tagasi. Kui meil ei jõua kohale või tuleb tagastuskiri, läheb see süsteemikontole, kuhu keegi ei vaata.
- Vormipõhist limiiti pole. Kui vormi kuritarvitatakse, saadab server sinu nimel kirju kuni su paketi limiit on täis.
Viis 2: SMTP sisselogimisega (parem)
Lase oma veebisaidil saata kirju samamoodi nagu su meiliprogramm teeb: logi väljuvasse meiliserverisse sisse päris mailboksiga, kasutades porti 587 (STARTTLS) või 465 (SSL/TLS) ning täielikku e-posti aadressi kasutajanimena (tunnid 1.4 ja 2.1). Siis:
- on envelope sender sinu enda aadress ning kirja allkirjastatakse samamoodi nagu tavalist sinu domeeni meili;
- jõuavad tagastuskirjad mailboksi, mida sa saad lugeda;
- jääb saadetud meil soovi korral kausta Sent;
- saad iga mailboksi jaoks eraldi saatmislimiidi seada.
WordPressis teed seda SMTP-pluginaga. See asendab WordPressi vaikimisi meilifunktsiooni SMTP kaudu saatmisega. Täidad samad andmed, mis meiliprogrammis: server, port, turvalisus, kasutajanimi ja parool. Loo selleks eelistatavalt eraldi mailboks, näiteks website@example.com. Kui parool kunagi varastatakse, jääb sinu enda mailboks turvaliseks ja sa näed kiirelt, milline meil tuleb veebisaidilt.
Oma PHP-saidi jaoks on olemas teegid, mis saadavad kirju SMTP kaudu, näiteks PHPMailer. Pane parool konfiguratsioonifaili, mis asub väljaspool veebikausta, mitte lehe koodi sisse.
WebOké puhul leiad SMTP andmed DirectAdmini juhendist 8.1, koos sinu paketi serverinimega; teiste pakkujate juures leiad need juhendist või tervituskirjast ning põhimõte on sama.
Palju tehingumeile? Kasuta teenust
Kui saadad sadu tellimuskinnitusi päevas, tasub kasutada tehingumeiliteenust: automaatsete kirjade saatmisteenust. Sellel on hea maine ja see näitab, mis iga kirjaga juhtus. Ühendad domeeni samamoodi nagu uudiskirjateenuse puhul (DKIM CNAME kaudu, tund 7.1). Hoia tehingumeilid ja uudiskirjad lahus: ebaõnnestunud kampaania ei tohi mõjutada sinu tellimuste kinnituskirju.
Kuldreegel: külastaja aadress ei ole kunagi saatja
Kontaktvormi puhul on kiusatus saata meil justkui külastajalt. Siis saad oma meiliprogrammis kohe vajutada Vasta. See näeb välja nii:
From: Pieter <pieter@example.net>
To: info@example.com
Subject: Vraag via het contactformulierKuid sinu server ei tohi üldse saata kirju domeeni example.net nimel. Oletame, et domeenil example.net on DMARC poliitika p=reject. Vastuvõttev server (olgu see sinu enda või Gmaili oma, kui suunad meili edasi) näeb kirja, mille From on example.net, kuid mis ei läbi domeeni example.net SPF-i ega DKIM-i kontrolli, ja lükkab selle tagasi. Paljudel suurtel meilidomeenidel on range poliitika: 8. novembri 2026 kontrolli käigus olid muu hulgas yahoo.com, aol.com, ziggo.nl ja kpnmail.nl poliitikaga p=reject ning icloud.com, gmx.de ja web.de poliitikaga p=quarantine. Sellise aadressiga külastaja täidab sinu vormi ning sina ei saa sõnumit kunagi kätte või see läheb rämpspostikausta. Domeenid, millel on p=none (nagu toona gmail.com ja hotmail.com), võivad oma poliitikat igal hetkel karmistada ning Google kirjutab oma juhistes selgesõnaliselt, et Gmaili aadresse ei tohi From-väljas jäljendada. Ära seega kunagi looda, et see hästi läheb.
Õige viis:
From: Website example.com <website@example.com>
Reply-To: Pieter <pieter@example.net>
To: info@example.com
Subject: Vraag via het contactformulierSaatja on sinu enda aadress, nii et SPF, DKIM ja DMARC on korras. Külastaja aadress on väljal Reply-To. Kui vajutad Vasta, läheb su vastus Pieterile. Enamikes vormipluginates leiad selle meili seadistuste alt: pane väljale Sender (From) oma domeeni kindel aadress ning väljale Reply-To see, kuhu külastaja oma aadressi sisestab.
Vormide kaitsmine kuritarvituse eest
Varem või hiljem leiavad botid kaitsmata vormi üles. Parimal juhul saad sina spämmi. Halvimal juhul kuritarvitatakse vormi, et saata spämmi teistele: kui su vorm saadab kinnituse aadressile, mille külastaja ise sisestab, saab bot sinna sisestada mistahes maailma aadressi, koos vabalt valitud tekstiga. Siis saadab sinu domeen spämmi, mis mõjutab otseselt su mainet (tund 5.2).
Kaitse kihtidena:
- Captcha või nähtamatu kontroll (nagu reCAPTCHA või Turnstile) peatab enamiku botte.
- Honeypot: peidetud väli, mida inimesed ei näe, kuid botid täidavad. Kui see on täidetud, ei saadeta sõnumit.
- Ära pane vaba teksti külastajale saadetavasse kinnitusse, või ära saada üldse kinnitust sisestatud aadressile. Lihtne teade lehel, näiteks "Täname, oleme sinu sõnumi kätte saanud", on piisav.
- Saatmislimiit mailboksi kohta veebisaidi mailboksile, madalam kui su paketi oma.
- Tarkvara uuendamine. Vanad pluginad on tuntud kuritarvituse sissepääs.
Kui märkad, et su pakett saadab äkki palju meili või saad teate, et päevalimiit on täis, kuigi ise saadad vähe meili, muuda kohe paroolid ning uuri, milline vorm või skript meili saadab (tund 3.4).
Meil asub mujal, veebisait siin
Levinud lõks: su veebisait asub ühe pakkuja juures, meil teise juures (näiteks Microsoft 365 või Google Workspace). Sinu MX osutab sellele teisele pakkujale. Kuid veebiserver arvab ikka, et tegeleb ise sinu domeeni meiliga, kuna domeen on registreeritud ka tema enda paketil. Vormilt aadressile info@example.com saadetud meili toimetab ta siis kohapeal kohale, mailboksi veebiserveris, kuhu keegi ei vaata, või annab vea, näiteks 550 ... mailbox unavailable.
Lahendus on veebiserveri paneelis märkida, et meili käsitletakse mujal. WebOké DirectAdminis on see märkeruut "Kasuta seda serverit minu e-kirjade käsitlemiseks" MX Records all (lülita välja). Teistel paneelidel on sarnased seaded, näiteks "e-mailrouting: extern" cPanelis. Veelgi parem: lase veebisaidil saata kirju SMTP kaudu, kasutades mailboksi pakkuja juures, kus su meil tegelikult asub.
Kokkuvõte
- Veebisaidi meili kontrollitakse sama rangelt kui tavalist meili. Lase sait saata kirju SMTP kaudu, sisselogimisega, mitte
mail()abil. - Kasuta veebisaidi jaoks eraldi mailboksi, omaette saatmislimiidiga.
- Külastaja aadress kuulub väljale Reply-To, mitte kunagi From-i. Vastasel juhul ebaõnnestub DMARC ja domeenide puhul, kus on
p=reject(nagu yahoo.com, ziggo.nl, kpnmail.nl), lükatakse meil tagasi. - Kaitse vorme captcha ja honeypotiga ning ära saada vaba tekstiga kinnitusi sisestatud aadressidele.
- Kui su meil asub teise pakkuja juures, lülita veebiserveris kohalik kohaletoimetamine välja või saada kirju SMTP kaudu selle pakkuja juures.
Test
Ülesanne
Ülesanne O7.3: Veebisaidi meili ülevaatamine. Täida oma veebisaidi vorm Gmaili või Outlook.com aadressiga saatjana ning vaata üle sinuni jõudva sõnumi päised. Vasta kontrollnimekirjale: milline aadress on väljal From, kas külastaja aadress on väljal Reply-To, mida ütlevad spf=, dkim= ja dmarc= väärtused Authentication-Results juures, kas su sait saadab kirju SMTP või mail() kaudu ning kas vormil on captcha või honeypot? Kui sul pole oma veebisaiti, vasta küsimustele selle tunni näite põhjal. Pärast saad näidisvastuse.
Ülesanne O7.3: Veebilehe kirjade ülevaatamine
Selle ülesande teed ise, keegi ei kontrolli seda. Märgi ära, mida tegid, ja märgi ülesanne tehtuks.
From = fikseeritud oma aadress, Reply-To = külastaja, saatmine sisselogimisega SMTP kaudu, captcha või honeypot ning ei mingit vabatekstilist kinnitust (seda kasutavad spämmijad ära). Kui From-väljal on külastaja aadress, siis DMARC ebaõnnestub niipea, kui külastaja domeenil on reegel (tund 7.3).
Su linnukesed ja märkmed jäävad ainult sellesse brauserisse, me ei saada neid kuhugi. Kui oled sisse loginud, salvestame Minu kursustes ainult info, et tegid ülesande ära.
Lisalugemine
Nende artiklite sammud kehtivad WebOké paneelidele; teiste pakkujate juures toimib see sarnaselt.
- Kontaktivorm sinu veebisaidil: väljade saatmine e-posti teel ja rämpsposti vältimine
- Kuidas saada PHP funktsiooniga mail() õige saatja? SMTP
- E-posti saatmine PHP kaudu ei õnnestu, MX-kirjed suunavad mujale
- Meilide saatmise limiit
- Päevane e-posti limiit on täis
- DirectAdmin juhend 8.1: Kõik seadistused ühes kohas: serverid, pordid ja turvalisus
- DirectAdmin juhend 5.10: E-post Microsoft 365 või Google Workspace'is, veebileht WebOké juures
