# Server rozosiela spam: ako nájsť príčiny

> Váš server rozosiela spam? Ako nájsť zdroj vo fronte pošty, skriptoch PHP a schránkach, zastaviť odosielanie a dostať sa zo zoznamov blokovaných adries.

Zdroj: https://phpsos.de/sk/blog/server-verschickt-spam/  
Stav: 25.10.2026  
Poskytovateľ: PHP SOS, Núdzová pomoc pri PHP a bezpečnosť serverov. Okamžitá pomoc cez WhatsApp: https://wa.me/491736494914?text=Dobr%C3%BD%20de%C5%88%2C%20PHP%20SOS%2C%20potrebujeme%20pomoc%20s%20na%C5%A1%C3%ADm%20serverom%20s%20PHP.%20Spolo%C4%8Dnos%C5%A5%3A%20%E2%80%A6%20Web%3A%20%E2%80%A6

**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ý?](https://phpsos.de/sk/php2shell/bin-ich-gehackt-anzeichen/).

## 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ú:

```bash
# 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.

```ini
; 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](https://phpsos.de/sk/ratgeber/webshell-erkennen/). 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](https://phpsos.de/sk/blog/ausgehende-verbindungen-pruefen/).

## 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](https://phpsos.de/sk/leistungen/malware-entfernung/) 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

- [Príručka PHP: konfigurácia pošty](https://www.php.net/manual/en/mail.configuration.php)
- [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/)
- [BSI: pokyny k bezpečnostným incidentom IT](https://www.bsi.bund.de/)
