Ukončení podpory odesílání e-mailů bez autentizace (SMTP)
Od 1. listopadu 2025 začíná postupné vypínání odesílání přes lokální SMTP server bez přihlášení. K definitivnímu ukončení dojde 1. prosince 2025.
Koho se změna týká
- aplikací používajících
mail()
v PHP, pokud posílá přes lokální SMTP bez přihlášení, - skriptů a aplikací na Windows serverech využívajících odesílání přes lokální SMTP Server bez autentizace jménem a heslem (.NET, PowerShell, naplánované úlohy apod.)
Proč se to děje
Odesílání bez autentizace neodpovídá zásadám bezpečné komunikace: chybí ověření odesílatele a ochranné prvky jako SPF, DKIM a DMARC. Důsledkem bývá zařazení serveru na blacklisty a doručování do spamu.
Harmonogram
- 1. 11. 2025 – start postupného vypínání (nejdříve webhostingy),
- do 30. 11. 2025 – přejděte na autentizované SMTP,
- 1. 12. 2025 – úplné ukončení (včetně managed serverů).
Co udělat teď
- Zmapujte místa, kde aplikace posílají e-maily bez přihlášení (PHP, .NET, PowerShell, plánovač).
- Přejděte na odesílání přes autentizovaný SMTP server (uživatelské jméno + heslo, TLS/SSL).
- Nastavte DNS záznamy pro doručitelnost: SPF, DKIM, DMARC.
- Otestujte odeslání (test na vlastní schránky i k externím poskytovatelům).
- Předejte informaci webmasterovi nebo správci IT, pokud web nespravujete sami.
Ukázky nastavení
PHP – PHPMailer
// Instalace přes Composer:
// composer require phpmailer/phpmailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
require __DIR__ . '/vendor/autoload.php';
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.vasedomena.cz';
$mail->Port = 587; // 587 = STARTTLS, 465 = SMTPS/SSL
$mail->SMTPAuth = true;
$mail->Username = 'uzivatel@vasedomena.cz';
$mail->Password = '***silne-heslo***';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // nebo PHPMailer::ENCRYPTION_SMTPS
$mail->setFrom('uzivatel@vasedomena.cz', 'Jméno odesílatele');
$mail->addAddress('prijemce@domena.cz');
$mail->Subject = 'Testovací e-mail';
$mail->Body = 'Toto je testovací zpráva.';
$mail->send();
.NET (C#) – System.Net.Mail
using System.Net; using System.Net.Mail; var smtp = new SmtpClient("smtp.vasedomena.cz") { Port = 587, EnableSsl = true, Credentials = new NetworkCredential("uzivatel@vasedomena.cz", "***silne-heslo***") }; var mail = new MailMessage { From = new MailAddress("uzivatel@vasedomena.cz", "Jméno odesílatele"), Subject = "Testovací e-mail", Body = "Toto je testovací zpráva." }; mail.To.Add("prijemce@domena.cz"); smtp.Send(mail);
Nejčastější chyby a řešení
Projev / chyba | Pravděpodobná příčina | Řešení |
---|---|---|
5.7.57 Client not authenticated / „Relaying denied“ |
Odesílání bez přihlášení nebo špatné údaje | Povolte SMTPAuth, ověřte uživatelské jméno/heslo, použijte TLS/SSL. |
Zprávy padají do spamu | Chybí SPF/DKIM/DMARC, reputace IP | Nastavte SPF, DKIM, DMARC; slaďte adresu From s doménou odesílatele. |
Nelze se připojit k SMTP (timeout) | Špatný host/port, firewall | Ověřte host, port 587/465 a povolení odchozí komunikace. |
Chyba certifikátu | SSL kontrola selhala | Použijte platný certifikát serveru nebo STARTTLS (587). |
FAQ
Musím přestat používat mail()
v PHP?
Nemusíte nutně, ale doporučujeme přejít na knihovnu s přímou podporou SMTP (např. PHPMailer). Odesílání přes lokální server bez přihlášení přestane fungovat.
Jaké údaje k SMTP potřebuji?
Server (host), port (587 nebo 465), uživatelské jméno (plná e-mailová adresa), heslo a způsob šifrování (STARTTLS/SSL). Tyto údaje poskytne správce pošty.
Co když web spravuje externí dodavatel?
Předejte mu prosím tuto informaci a požádejte o úpravu konfigurace. Bez přechodu na autentizované SMTP hrozí nedoručování e-mailů.