Aktuálna situácia: PHP2Shell. Dve kritické zraniteľnosti PHP (CVSS 9.2) umožňujú spustenie škodlivého kódu bez prihlásenia. Záplaty od 21. 10. 2026.Čo treba urobiť teraz →

Server rozosiela spam: ako nájsť príčiny

Nedoručiteľné e-maily, zoznamy blokovaných adries, sťažnosti: keď váš server rozosiela spam, stojí za tým zvyčajne skript alebo zneužitá schránka. Ako nájsť zdroj.

Stav 5 min čítaniaDetekcia a forenzná analýza

Stručne: Keď server rozosiela spam, je zvyčajne jedna z troch príčin: votrelecký alebo zneužitý skript PHP, schránka s odcudzeným heslom alebo nesprávne nakonfigurovaný poštový server. Zabezpečte niekoľko čakajúcich e-mailov, prečítajte si ich hlavičky a log pošty a vo väčšine prípadov nájdete zdroj. Potom zastavte odosielanie, uzavrite príčinu a až potom požiadajte o odstránenie zo zoznamov blokovaných adries.

Keď zákazníci nachádzajú vaše faktúry v priečinku spamu

Zriedka to začne bezpečnostným hlásením. Zvyčajne sa ozvú zákazníci, ktorí už nedostávajú vaše ponuky, alebo sa schránka plní vrátenými správami k e-mailom, ktoré nikdy nikto nenapísal. Niekedy poskytovateľ hostingu odosielanie zablokuje a ako dôvod uvedie nápadnú poštovú prevádzku.

Pre firmu to rýchlo prináša citeľné následky. Ak je adresa servera v zozname blokovaných adries, iné poštové servery odmietajú aj vaše skutočné e-maily: faktúry, potvrdenia objednávok, odkazy na heslo z obchodu. Povesť domény trpí a škoda rastie s každou hodinou, počas ktorej odosielanie pokračuje.

Rozosielanie spamu patrí medzi známe následky kompromitácie. Po PHP2Shell, zraniteľnostiach CVE-2026-109618 a CVE-2026-109619 s vykonaním kódu bez prihlásenia, je to ďalší dôvod pozrieť sa bližšie. Špecifickým náznakom PHP2Shell však spam nie je; potvrdené indikátory kompromitácie (Indicators of Compromise) neexistujú. Ďalšie všeobecné príznaky opisuje Som už kompromitovaný?.

Tri typické príčiny, keď server rozosiela spam

Príčina Typický obraz Kde sa pozrieť
Votrelecký skript PHP e-maily bez prihlásenia, lokálne doručené cez sendmail hlavičky, mail log PHP, nové súbory PHP
Zneužitý formulár e-maily cez kontaktný alebo odporúčací formulár cudzím príjemcom prístupový log formulára, hlavičky
Zneužitá schránka odosielanie s platným prihlásením na poštový server log pošty s menom prihlásenia, miesta prihlásenia
Otvorený poštový server cudzí odosielatelia využívajú váš server ako presmerovanie konfigurácia poštového servera, externá kontrola

Prvé dve príčiny sa týkajú webu, tretia poštových účtov, štvrtá konfigurácie servera. Rozlíšenie je dôležité, pretože protiopatrenia sú úplne rozdielne.

Čítanie fronty pošty

Na serveroch s Postfixom ukazuje fronta, čo sa práve má odoslať. Nasledujúce príkazy len čítajú:

# Zobraziť obsah fronty (zodpovedá mailq)
postqueue -p | tail -30

# Zobraziť hlavičky jednotlivého e-mailu (dosadiť ID fronty zo zoznamu)
sudo postcat -q -h QUEUE-ID

# Úspešné prihlásenia na poštový server s menom používateľa
sudo grep 'sasl_username=' /var/log/mail.log | awk -F'sasl_username=' '{print $2}' | sort | uniq -c | sort -rn | head

Hlavičky často prezradia zdroj. Ak e-mail pochádza z prihlásenej schránky, objaví sa meno prihlásenia v logu pošty. Ak sa tam hromadí jeden účet s prihláseniami z cudzích krajín, heslo tejto schránky sa veľmi pravdepodobne dostalo na verejnosť. Ak bol e-mail naopak doručený lokálne, pochádza zvyčajne zo skriptu na serveri.

Ak na vašom serveri beží iný poštový server, napríklad Exim, príkazy sa volajú inak, princíp ostáva rovnaký: pozrieť frontu, prečítať hlavičky, spočítať prihlásenia v logu. Pri zdieľanom hostingu bez prístupu k shellu požiadajte poskytovateľa hostingu písomne o výpis z logu pošty a o niekoľko vzorových e-mailov s úplnými hlavičkami. Mnohí poskytovatelia tieto údaje na požiadanie dodajú, pretože majú sami záujem odosielanie ukončiť.

Zabezpečte niekoľko úplných e-mailov skôr, než frontu pozastavíte alebo vyprázdnite. Sú dokladmi pre neskoršiu analýzu a pre rozhovory s poskytovateľom hostingu alebo prevádzkovateľmi zoznamov blokovaných adries.

Nájsť zodpovedný skript PHP

Ak odosielanie prebieha cez PHP, pomáha konfigurácia pošty PHP. Podľa príručky PHP zaznamenáva mail.log každé volanie funkcie mail() s úplnou cestou k skriptu, číslom riadka, príjemcom a hlavičkami. mail.add_x_header zapíše navyše do každého e-mailu hlavičku X-PHP-Originating-Script s identifikátorom používateľa a názvom súboru.

; V php.ini alebo v poole FPM, potom reštartovať všetkých workerov
mail.add_x_header = On
mail.log = /var/log/php/mail.log

Súbor logu musí byť pre proces PHP zapisovateľný. Hlavička prezrádza príjemcom názov súboru; po analýze ju opäť vypnite, ak ju nechcete mať trvalo.

Ak sa ako odosielateľ objaví neznámy súbor, napríklad v priečinku na nahrávanie alebo cache, je to náznak webshellu. Ako takéto súbory zaradiť, opisuje Rozpoznanie a odstránenie webshellu. Ak ide naopak o známy kontaktný formulár, bol pravdepodobne zneužitý, napríklad preto, že príjemcovia alebo hlavičky sa preberajú zo vstupov formulára. To je chyba v kóde, nie vlámanie, no treba ju odstrániť rovnako rýchlo.

Nie každý spam používa funkciu mail(). Škodlivý kód môže tiež priamo nadviazať spojenie s cudzími poštovými servermi. Vtedy sa odosielanie neobjaví ani vo fronte, ani v mail logu PHP, no objaví sa ako odchádzajúce spojenia na port 25. Ako ich skontrolovať, je v časti Kontrola odchádzajúcich spojení servera.

Zastaviť odosielanie a čisto znovu rozbehnúť

Ak je zdroj nájdený, nasleduje vyčistenie v tomto poradí:

  1. Pozastaviť odosielanie: Zablokovať dotknutú cestu, teda deaktivovať skript, zablokovať schránku alebo pozastaviť frontu. Čakajúce e-maily zabezpečiť ako doklad.
  2. Uzavrieť príčinu: Pri webshelli priviesť PHP na opravený stav (8.5.12, 8.4.27, 8.3.36, 8.2.35 alebo potvrdený backport), reštartovať všetkých workerov a web vyčistiť. Pri formulári opraviť kód. Pri schránke zmeniť heslo a skontrolovať zariadenie používateľa.
  3. Hľadať ďalšie stopy: Kto rozosiela spam cez webshell, často zriadil ďalšie zadné vrátka.
  4. Obmedziť výstup: Odchádzajúce spojenia na port 25 povoliť len pre poštový server, nie pre používateľa webového servera.
  5. Vyčistiť zoznamy blokovaných adries: Až teraz požiadať prevádzkovateľov zoznamov o odstránenie a stručne opísať, čo sa opravilo.
Tip

Pri tejto príležitosti skontrolujte SPF, DKIM a DMARC svojej domény. Tieto záznamy DNS určujú, ktoré servery smú odosielať v mene vašej domény, a sťažujú cudzím zneužitie vašej adresy odosielateľa.

Ako konkrétne pomáha PHP SOS?

  • Vyhodnotíme frontu, hlavičky a logy pošty a zistíme, či je príčinou skript, formulár, schránka alebo konfigurácia.
  • Odosielanie zastavíme kontrolovane a zabezpečíme doklady pre poskytovateľa hostingu a zoznamy blokovaných adries.
  • Web vyčistíme v rámci odstránenia malvéru a uzavrieme vstupnú bránu.
  • Odchádzajúcu poštovú prevádzku obmedzíme na úrovni servera a sprevádzame odstránenie zo zoznamov blokovaných adries.

Časté otázky

Ako zistím, že môj server rozosiela spam?

Typické sú vrátené správy k e-mailom, ktoré nikto nenapísal, upozornenia od poskytovateľa hostingu, plná fronta pošty a zákazníci, ktorí zrazu nachádzajú vaše e-maily v priečinku spamu. Zreteľným znakom je aj záznam adresy vášho servera vo verejných zoznamoch blokovaných adries.

Ako nájdem skript PHP, ktorý spam odosiela?

PHP môže zaznamenať každé volanie funkcie mail() s cestou k skriptu, ak je nastavené mail.log. S mail.add_x_header zapíše PHP názov skriptu navyše do hlavičky každého e-mailu. V už odoslaných alebo čakajúcich e-mailoch pomôže pohľad do hlavičiek.

Mám frontu pošty okamžite vyprázdniť?

Nie skôr, ako zabezpečíte niekoľko e-mailov ako doklad. Hlavičky často ukazujú, ktorý skript alebo ktorá schránka odosielanie spustili. Pozastaviť je zvyčajne lepšie než zmazať, kým nie je zdroj známy.

Ako sa dostanem zo zoznamov blokovaných adries?

Najprv odstráňte príčinu, potom požiadajte prevádzkovateľov príslušných zoznamov o odstránenie. Väčšina vyžaduje vysvetlenie, čo sa opravilo. Kto požiada príliš skoro a naďalej rozosiela spam, bude zaradený znova.

Zdroje

Okamžitý kontakt

Každá hodina sa počíta. Napíšte nám hneď.

Stručne opíšte systém, verziu PHP a svoje pozorovanie. Ozveme sa, vyjasníme situáciu a budeme pracovať na diaľku, kým nebude incident uzavretý a zdokumentovaný.

Okamžitá pomoc