CeníkAPI & SMTPŘešeníSrovnáníNástrojeBlogFAQKontakt
PřihlásitRegistrovat
Tmavý režim
← Zpět na blog
28. října 2026·5 min čtení·Tým TopEmail

Migrace z vlastního Postfixu: proč e-maily z VPS padají do spamu a jak Postfix přesměrovat přes smtp.topemail.cz

Vlastní VPS s Postfixem posílá e-maily, které končí ve spamu nebo se vracejí: reputace IP, chybějící PTR, blokovaný port 25, žádný DKIM. Návod, jak nechat Postfix na místě a všechnu odchozí poštu poslat přes relay smtp.topemail.cz: relayhost, SASL, TLS, přepis odesílatele, test a ladění z logu.

Aplikace na VPS posílá e-maily přes lokální Postfix. Fungovalo to roky, až jednou Gmail začne vracet 550-5.7.1 … likely unsolicited mail a Seznam odkládá doručení o hodiny. Provozovat vlastní odchozí poštovní server v roce 2026 znamená hlídat reputaci IP, DNS, DKIM a změny pravidel velkých příjemců; práce, kterou chcete dělat jen tehdy, když je pošta váš byznys. Dobrá zpráva: Postfix nemusíte rušit. Stačí mu říct, aby všechnu odchozí poštu předával relay serveru, a aplikace o změně ani nevědí.

Proč e-mail z vlastního VPS končí ve spamu

  1. Reputace IP adresy. IP od poskytovatele VPS měla před vámi někoho jiného, a často někoho, kdo spamoval. Rozsahy cloudových poskytovatelů jsou navíc na blokovaných seznamech plošně, protože z nich spam chodí nejčastěji. Postavit reputaci nové IP trvá týdny stabilního, čistého objemu, který malá aplikace nemá.
  2. Chybějící nebo nesedící PTR záznam. Příjemci kontrolují, že reverzní záznam IP (1.2.3.4 → mail.firma.cz) odpovídá jménu, kterým se server hlásí v HELO, a že to jméno míří zpět na tutéž IP. U VPS bývá PTR vps-1234.provider.net nebo žádný. Gmail e-maily bez PTR rovnou odmítá.
  3. Blokovaný port 25. Řada poskytovatelů (a prakticky všechny domácí přípojky) odchozí port 25 blokuje nebo povoluje na žádost. Postfix se pak marně pokouší doručit a zpráva po pěti dnech vyprší s hláškou connection timed out.
  4. Žádný DKIM. Postfix sám nepodepisuje; potřebujete OpenDKIM nebo Rspamd, správu klíčů a jejich rotaci. Bez DKIM nemá DMARC o co se opřít a od roku 2024 Gmail i Yahoo autentizaci vyžadují.
  5. Žádná zpětná vazba. Když Seznam zprávu přijme a potichu zahodí do spamu, Postfix o tom neví. Bounce vidíte jen v mail.log, stížnosti vůbec.

Relay to řeší za vás: odesílá z IP adres s hlídanou reputací, podepisuje DKIM vaší doménou, používá port 587 místo 25, a u každé zprávy ukazuje stav včetně důvodu odmítnutí. Co od vás příjemci chtějí, shrnuje článek o požadavcích Gmailu, Yahoo a Seznamu.

Co potřebujete

  • Ověřenou doménu v TopEmail: TXT topemail._domainkey, include:spf.topemail.cz v SPF, _dmarc. Postup v návodu k SPF, DKIM a DMARC.
  • API klíč: clientId a secret.
  • Na serveru Postfix a SASL knihovny. Na Debianu/Ubuntu: apt install libsasl2-modules; na RHEL/Rocky: dnf install cyrus-sasl-plain.

Konfigurace Postfixu

Přihlašovací údaje do samostatného souboru /etc/postfix/sasl_passwd:

[smtp.topemail.cz]:587    CLIENT_ID:SECRET

Formát je cíl uživatel:heslo; první dvojtečka odděluje uživatele od hesla. Soubor převeďte na databázi a zabezpečte:

postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Do /etc/postfix/main.cf přidejte (nebo přepište stávající hodnoty):

# Veškerá odchozí pošta přes relay
relayhost = [smtp.topemail.cz]:587

# SASL autentizace
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

# TLS povinné (STARTTLS na 587)
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_loglevel = 1

Hranaté závorky kolem hostname vypínají vyhledávání MX záznamů, takže Postfix se připojí přímo na smtp.topemail.cz. smtp_tls_security_level = encrypt zajistí, že bez TLS se přihlašovací údaje nikdy neodešlou. Na RHEL je cesta k certifikátům /etc/pki/tls/certs/ca-bundle.crt.

Pokud váš poskytovatel blokuje i port 587, použijte implicitní TLS na 465:

relayhost = [smtp.topemail.cz]:465
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt

a stejný port uveďte i v sasl_passwd. Pak:

postfix check && systemctl reload postfix

Přepis odesílatele: nejčastější důvod odmítnutí

Relay přijme jen zprávy s odesílatelem na ověřené doméně. Cron, logrotate, fail2ban nebo aplikace spuštěná pod systémovým uživatelem posílají z root@vps-1234.provider.net nebo www-data@localhost, a relay odpoví 550 5.7.1. Řešení je smtp_generic_maps, který přepíše adresy odesílatele těsně před předáním relay:

# /etc/postfix/generic
root@vps-1234.provider.net        server@firma.cz
www-data@vps-1234.provider.net    app@firma.cz
@vps-1234.provider.net            server@firma.cz
@localhost                        server@firma.cz
# main.cf
smtp_generic_maps = hash:/etc/postfix/generic
postmap /etc/postfix/generic && systemctl reload postfix

Řádek začínající @doména je záchytný: cokoli z té domény se přepíše na jednu adresu. Přepis se týká obálky i hlavičky From, přesně to, co relay kontroluje. Pokud chcete, aby chybové zprávy z cronu chodily vám, nastavte navíc v /etc/aliases root: admin@firma.cz a spusťte newaliases.

Test a kontrola

echo "Test relay $(date)" | mail -s "Postfix přes TopEmail" -r server@firma.cz vas@gmail.com

(mail je z balíku bsd-mailx nebo mailutils; bez něj použijte sendmail -f server@firma.cz vas@gmail.com < zprava.txt.) Sledujte log:

journalctl -u postfix -f        # nebo tail -f /var/log/mail.log

Úspěch vypadá takto:

postfix/smtp[1234]: 7A2B3C: to=<vas@gmail.com>, relay=smtp.topemail.cz[…]:587,
  delay=0.6, status=sent (250 2.0.0 Queued as cm3x1…)

Queued as <id> je ID e-mailu v TopEmail: stav dohledáte v dashboardu nebo přes GET /api/email/{id}. Pak zprávu otevřete v Gmailu, Zobrazit originál, a zkontrolujte SPF, DKIM a DMARC PASS s podpisem d=firma.cz.

Časté hlášky v logu a co znamenají:

HláškaPříčina
535 5.7.8 Authentication credentials invalidpřeklep v sasl_passwd, zapomenutý postmap, nebo klíč zneplatněný
550 5.7.1 … not on a verified domainodesílatel mimo ověřenou doménu; doplňte generic mapu
SASL authentication failure: No worthy mechs foundchybí libsasl2-modules / cyrus-sasl-plain
TLS is required, but was not offeredpřipojujete se na špatný port, nebo mezi vámi a relay je proxy
connect to smtp.topemail.cz[…]:587: Connection timed outfirewall poskytovatele; zkuste 465 s smtp_tls_wrappermode
452 4.3.1 Insufficient creditdobijte kredit; Postfix zprávu zopakuje sám

Postfix dočasné chyby (4xx) sám opakuje podle maximal_queue_lifetime (výchozí 5 dní), takže krátký výpadek sítě nic neztratí. Frontu zkontrolujete příkazem mailq, po opravě chyby ji protlačíte postqueue -f.

Co s původním nastavením

  • Port 25 a MX záznam. Pokud server zároveň přijímá poštu (má MX), relay se týká jen odesílání; příjem (smtpd) nechte beze změny. Pokud nepřijímá, zavřete port 25 ve firewallu.
  • OpenDKIM odinstalujte nebo vypněte; podepisuje relay a dvojí podpis jen mate.
  • SPF: odeberte z něj IP adresu VPS (ip4:1.2.3.4), jakmile přes ni nic neodchází, a ponechte include:spf.topemail.cz. Méně mechanismů, menší riziko překročení limitu deseti dotazů.
  • Limity: relay přijme až 50 příjemců na zprávu a odesílání ve velkém objemu brzdí hlavičkou 421 4.7.0 Too many messages, slow down, kterou Postfix ctí a zopakuje. Pro hromadné odesílání z fronty použijte radši REST API.

Postup je stejný i pro Exim nebo sendmail, jen s jinou syntaxí; princip „smarthost na portu 587 s SASL a TLS" mají všechny. Pokud migrujete z jiné e-mailové služby místo z vlastního serveru, projděte checklist migrace.

Shrnutí

Vlastní Postfix na VPS prohrává na reputaci IP, PTR, portu 25 a DKIM, a nikdy se nedozví, co se s poštou stalo. Pět řádků v main.cf (relayhost, SASL, smtp_tls_security_level = encrypt), sasl_passwd s CLIENT_ID:SECRET a generic mapa pro systémové odesílatele pošlou všechno přes smtp.topemail.cz, bez změny v aplikacích. V logu uvidíte 250 2.0.0 Queued as <id> a v dashboardu stav každé zprávy. Cena je 0,06 Kč za e-mail, prvních 1 000 měsíčně zdarma, bez paušálu; co relay umí a jaké stavy vrací, najdete v přehledu API a SMTP.

PostfixSMTPmigracedoručitelnostnávodintegrace
Transakční e-maily z vaší domény

Transakční e-maily z vaší domény přes API nebo SMTP, od 0,025 do 0,06 Kč za e-mail podle objemu, prvních 1 000 e-mailů měsíčně zdarma. Registrace zdarma, bez platební karty.

Registrovat zdarma →