Modul 7 · 7.3
Mail z Vašeho webu a formulářů
Modul 7: Newslettery a e-maily z vašeho webu · Doba čtení: 11 minut
Cíl lekce: Po této lekci dokážete nastavit poštu z webu (kontaktní formuláře, potvrzení objednávek, oznámení z WordPressu) tak, aby docházela, nezpůsobovala problémy s DMARC a nedocházelo ke zneužití Vašeho balíčku.
Klíčové pojmy: PHP mail(), SMTP s přihlášením, envelope odesílatel, From vs. Reply-To, adresa návštěvníka nikdy jako From, SMTP plugin, transakční e-mail, spam přes formulář, captcha, honeypot, limit odesílání, lokální doručení, pokud MX ukazuje jinam
Váš web je také e-mailový program
Váš web odesílá více pošty, než si myslíte. Kontaktní formulář Vám e-mailem posílá každou zprávu. E-shop odesílá potvrzení objednávek, faktury a zprávy o odeslání. WordPress posílá e-mail při nové reakci, aktualizaci nebo obnovení hesla. Pro příjemce je to prostě pošta z Vaší domény a je kontrolována stejně přísně jako pošta z Vaší schránky: SPF, DKIM, DMARC, reputace.
Přesto se pošta z webu pokazí častěji než běžná pošta. Je to obvykle způsobeno jednou ze tří věcí: způsobem odesílání, adresou odesílatele nebo zneužitím formuláře.
Způsob 1: PHP mail()
Nejjednodušší způsob, jak může web odesílat poštu, je funkce PHP mail(). Web předá e-mail přímo mailovému programu webového serveru, bez přihlášení. Většinou to funguje, ale má to nevýhody:
- Envelope odesílatel (Return-Path) se často nastaví na systémový účet Vašeho balíčku, například
gebruiker@server.hosting.example, a ne na Vaši adresu. SPF se pak kontroluje pro doménu serveru, a tedy není v souladu s Vaší From doménou (lekce 7.1). - Zda se připojí DKIM podpis Vaší domény, závisí na serveru. Na některých serverech ano, na jiných ne.
- Nic nevidíte zpětně. Pokud e-mail nedojde nebo dostanete bounce zprávu, jde na systémový účet, kam se nikdo nedívá.
- Žádný limit na formulář. Pokud je formulář zneužit, server bude odesílat poštu Vaším jménem, dokud nedosáhne limitu Vašeho balíčku.
Způsob 2: SMTP s přihlášením (lepší)
Nechte Váš web odesílat poštu stejně jako to dělá Váš e-mailový program: přihlášením k odchozímu serveru se skutečnou schránkou, přes port 587 (STARTTLS) nebo 465 (SSL/TLS), s celou e-mailovou adresou jako uživatelským jménem (lekce 1.4 a 2.1). Pak:
- je envelope odesílatel Vaše adresa a pošta je podepsána stejně jako běžná pošta z Vaší domény;
- bounce zprávy přijdou do schránky, kterou si můžete přečíst;
- odeslaná pošta se, pokud chcete, zobrazí ve složce Odesláno;
- můžete nastavit vlastní limit odesílání pro každou schránku.
Ve WordPressu to uděláte pomocí SMTP pluginu. Ten nahradí výchozí odesílací funkci WordPressu odesíláním přes SMTP. Vyplníte stejné údaje jako v e-mailovém programu: server, port, zabezpečení, uživatelské jméno a heslo. Pro tento účel si raději vytvořte samostatnou schránku, například website@example.com. Pokud by heslo bylo někdy ukradeno, Vaše vlastní schránka zůstane v bezpečí a na první pohled uvidíte, která pošta pochází z webu.
Pro vlastní PHP web existují knihovny, které odesílají přes SMTP, například PHPMailer. Heslo uložte do konfiguračního souboru mimo webovou složku, ne do kódu stránky.
U WebOké najdete údaje pro SMTP v návodu DirectAdmin 8.1, spolu s názvem serveru Vašeho balíčku; u jiných poskytovatelů je najdete v návodu nebo uvítacím e-mailu a funguje to stejným způsobem.
Hodně transakčních e-mailů? Použijte službu
Pokud odesíláte stovky potvrzení objednávek denně, vyplatí se transakční služba: odesílací služba pro automatickou poštu. Má dobrou reputaci a ukazuje, co se s každým e-mailem stalo. Doménu propojíte stejně jako u newsletterové služby (DKIM přes CNAME, lekce 7.1). Oddělte transakční poštu a newslettery: neúspěšná kampaň by neměla ovlivnit potvrzovací e-maily Vašich objednávek.
Zlaté pravidlo: adresa návštěvníka nikdy není odesílatel
U kontaktního formuláře je lákavé nechat poštu odeslat "od" návštěvníka. Pak můžete ve svém e-mailovém programu rovnou kliknout na Odpovědět. To vypadá takto:
From: Pieter <pieter@example.net>
To: info@example.com
Subject: Vraag via het contactformulierAle Váš server vůbec nesmí odesílat poštu jménem example.net. Představte si, že example.net má zásadu DMARC p=reject. Přijímací server (Váš vlastní, nebo server Gmail, pokud přeposíláte poštu) uvidí e-mail s From example.net, který neprošel přes SPF nebo DKIM domény example.net, a odmítne ho. Mnoho velkých mailových domén má přísnou zásadu: při kontrole 8. listopadu 2026 měly mimo jiné yahoo.com, aol.com, ziggo.nl a kpnmail.nl zásadu DMARC p=reject, a icloud.com, gmx.de a web.de p=quarantine. Návštěvník s takovou adresou vyplní Váš formulář a Vy zprávu buď nikdy nedostanete, nebo skončí ve spamu. Domény s p=none (jako v té době gmail.com a hotmail.com) mohou svou zásadu kdykoli zpřísnit a Google ve svých pokynech výslovně uvádí, že nesmíte napodobovat adresy Gmail jako From. Nikdy se tedy nespoléhejte na to, že to dopadne dobře.
Správný způsob:
From: Website example.com <website@example.com>
Reply-To: Pieter <pieter@example.net>
To: info@example.com
Subject: Vraag via het contactformulierOdesílatelem je Vaše vlastní adresa, takže SPF, DKIM a DMARC souhlasí. Adresa návštěvníka je uvedena v Reply-To. Když kliknete na Odpovědět, Vaše odpověď půjde Pieterovi. Ve většině pluginů pro formuláře to najdete v nastavení e-mailu: u pole Odesílatel (From) nastavte pevnou adresu Vaší vlastní domény a u Reply-To pole, do kterého návštěvník vyplní svou adresu.
Ochrana formulářů proti zneužití
Formulář bez ochrany dříve či později objeví boti. V nejlepším případě dostanete spam Vy. V nejhorším případě ho zneužijí k odesílání spamu jiným lidem: pokud Váš formulář posílá potvrzení na "adresu, kterou návštěvník vyplní", může bot vyplnit jakoukoli adresu na světě, s vlastním textem ve zprávě. Pak Vaše doména odesílá spam, se všemi důsledky pro Vaši reputaci (lekce 5.2).
Ochrana ve vrstvách:
- Captcha nebo neviditelná kontrola (jako reCAPTCHA nebo Turnstile) zastaví většinu botů.
- Honeypot: skryté pole, které lidé nevidí a boti ho vyplní. Je vyplněno? Pak se zpráva neodešle.
- Žádný volný text v potvrzení pro návštěvníka, nebo žádné potvrzení na zadanou adresu vůbec. Jednoduché oznámení "Děkujeme, Vaši zprávu jsme obdrželi" na stránce stačí.
- Limit odesílání na schránku pro schránku webu, nižší než limit Vašeho balíčku.
- Aktualizace softwaru. Staré pluginy jsou známým vstupním bodem pro zneužití.
Všimnete si, že Váš balíček náhle odesílá hodně pošty, nebo dostanete oznámení, že byl dosažen denní limit, zatímco sami odesíláte málo pošty? Okamžitě změňte hesla a zjistěte, který formulář nebo skript poštu odesílá (lekce 3.4).
Pošta je jinde, web je zde
Častá past: Váš web je u jednoho poskytovatele, Vaše pošta u jiného (například Microsoft 365 nebo Google Workspace). Váš MX ukazuje na toho druhého poskytovatele. Ale webový server si stále myslí, že sám zpracovává poštu pro Vaši doménu, protože doména je také v jeho vlastním balíčku. Poštu z formuláře na info@example.com pak doručí lokálně, do schránky na webovém serveru, kam se nikdo nedívá, nebo vrátí chybu jako 550 ... mailbox unavailable.
Řešením je v panelu webového serveru nastavit, že pošta se zpracovává jinde. V DirectAdmin u WebOké je to zaškrtávací políčko "Použít tento server pro zpracování mé e-mailové pošty" u MX Records (vypnout). Jiné panely mají podobná nastavení, jako "e-mail routing: externí" v cPanel. Ještě lepší je nechat web odesílat poštu přes SMTP se schránkou u poskytovatele, kde Vaše pošta skutečně je.
Shrnutí
- Pošta z webu je kontrolována stejně přísně jako běžná pošta. Nechte web odesílat přes SMTP s přihlášením, ne přes
mail(). - Použijte samostatnou schránku pro web, s vlastním limitem odesílání.
- Adresa návštěvníka patří do Reply-To, nikdy do From. Jinak selže DMARC, a u domén s
p=reject(jako yahoo.com, ziggo.nl, kpnmail.nl) bude pošta odmítnuta. - Chraňte formuláře pomocí captcha, honeypotu a bez volných potvrzení na zadané adresy.
- Pokud je Vaše pošta u jiného poskytovatele, vypněte lokální doručení na webovém serveru nebo odesílejte přes SMTP u toho poskytovatele.
Kvíz
Úkol
Úkol O7.3: Projděte si poštu z webových stránek. Vyplňte formulář na Vašem vlastním webu s adresou Gmail nebo Outlook.com jako odesílatelem a podívejte se na hlavičky zprávy, která Vám dojde. Odpovězte na kontrolní seznam: jaká adresa je uvedena ve From, je adresa návštěvníka v Reply-To, co říkají spf=, dkim= a dmarc= u Authentication-Results, odesílá Váš web poštu přes SMTP nebo přes mail(), a má formulář captcha nebo honeypot? Pokud nemáte vlastní web, odpovězte na otázky pro příklad v této lekci. Poté dostanete vzorovou odpověď.
Úkol O7.3: Projděte si poštu z webových stránek
Tento úkol provádíte sami; nikdo ho nekontroluje. Odškrtněte, co jste udělali, a označte úkol jako splněný.
From = pevná vlastní adresa, Reply-To = návštěvník, odesílání přes SMTP s přihlášením, captcha nebo honeypot a žádné potvrzení s volným textem (to zneužívají spammeři). Pokud je v poli From adresa návštěvníka, DMARC selže, jakmile doména návštěvníka má nastavené pravidlo (lekce 7.3).
Vaše zaškrtnutí a poznámky zůstávají pouze v tomto prohlížeči; nikam je neposíláme. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol splnili.
Další čtení
Kroky v těchto článcích platí pro panely WebOké; u jiných poskytovatelů to funguje podobně.
- Kontaktní formulář na Vašem webu: jak nechat odesílat údaje z polí e-mailem a předcházet spamu
- Jak v PHP pomocí mail() nastavit správného odesílatele? SMTP
- Odesílání pošty přes PHP nefunguje, MX záznamy směřují jinam
- Limit pro odesílání e-mailů
- Dosažen denní limit e-mailů
- Příručka k DirectAdmin 8.1: Všechna nastavení přehledně: servery, porty a zabezpečení
- Příručka k DirectAdmin 5.10: E-mail u Microsoft 365 nebo Google Workspace, web u WebOké
