Trenutno stanje: PHP2Shell. Dvije kritične PHP ranjivosti (CVSS 9.2) omogućuju zlonamjerni kod bez prijave. Zakrpe od 21. 10. 2026.Što sada učiniti →

Poslužitelj šalje spam: pronaći uzroke

Nedostavljive poruke, crne liste, pritužbe: kad vlastiti poslužitelj šalje spam, iza toga uglavnom stoji skripta ili preuzet sandučić. Kako pronaći izvor.

Stanje 5 min čitanjaOtkrivanje i forenzika

Ukratko: Kad poslužitelj šalje spam, uglavnom postoji jedan od tri uzroka: ubačena ili zlouporabljena PHP skripta, sandučić s ukradenom lozinkom ili pogrešno konfiguriran poslužitelj e-pošte. Osigurajte nekoliko poruka koje čekaju, pročitajte njihova zaglavlja i zapisnik pošte i u većini slučajeva pronaći ćete izvor. Zatim zaustavite slanje, zatvorite uzrok i tek tada zatražite uklanjanje s crnih lista.

Kad klijenti Vaše račune nalaze u mapi spama

Rijetko počinje sigurnosnom obavijesti. Uglavnom se jave klijenti koji više ne primaju Vaše ponude ili se sandučić puni povratnim porukama o porukama koje nikad nitko nije napisao. Ponekad hoster blokira slanje i kao razlog navodi upadljiv promet pošte.

Za tvrtku to brzo ima osjetne posljedice. Ako je adresa poslužitelja na crnoj listi, drugi poslužitelji e-pošte odbijaju i Vaše prave poruke: račune, potvrde narudžbi, poveznice za lozinke iz shopa. Ugled domene trpi, a šteta raste sa svakim satom u kojem slanje traje.

Slanje spama spada u poznate posljedice kompromitacije. Nakon PHP2Shella, ranjivosti CVE-2026-109618 i CVE-2026-109619 s izvršavanjem koda bez prijave, to je još jedan razlog da pogledate pomnije. Spam ipak nije specifična naznaka PHP2Shella; potvrđenih Indicators of Compromise nema. Daljnje opće znakove opisuje članak Jesam li već kompromitiran?.

Tri tipična uzroka kad poslužitelj šalje spam

Uzrok Tipična slika Gdje pogledati
Ubačena PHP skripta poruke bez prijave, lokalno predane putem sendmail zaglavlja, PHP zapisnik pošte, nove PHP datoteke
Zlouporabljen obrazac poruke putem kontaktnog obrasca ili obrasca za preporuke prema stranim primateljima pristupni zapisnik obrasca, zaglavlja
Preuzet sandučić slanje uz valjanu prijavu na poslužitelj e-pošte zapisnik pošte s korisničkim imenom, mjesta prijave
Otvoreni poslužitelj e-pošte strani pošiljatelji koriste Vaš poslužitelj kao prosljeđivanje konfiguracija poslužitelja e-pošte, vanjska provjera

Prva dva uzroka tiču se web-stranice, treći sandučića, četvrti konfiguracije poslužitelja. Razlika je važna jer su protumjere posve različite.

Čitati red čekanja pošte

Na poslužiteljima s Postfixom red čekanja pokazuje što se upravo treba poslati. Sljedeće naredbe samo čitaju:

# Prikazati sadržaj reda čekanja (odgovara naredbi mailq)
postqueue -p | tail -30

# Prikazati zaglavlja pojedine poruke (umetnuti ID reda iz popisa)
sudo postcat -q -h QUEUE-ID

# Uspješne prijave na poslužitelj e-pošte s korisničkim imenom
sudo grep 'sasl_username=' /var/log/mail.log | awk -F'sasl_username=' '{print $2}' | sort | uniq -c | sort -rn | head

Zaglavlja često već odaju izvor. Ako poruka potječe iz prijavljenog sandučića, korisničko ime pojavljuje se u zapisniku pošte. Ako se tamo nakuplja jedan račun s prijavama iz stranih zemalja, lozinka tog sandučića vrlo je vjerojatno postala poznata. Ako je poruka pak predana lokalno, uglavnom dolazi iz skripte na poslužitelju.

Ako na Vašem poslužitelju radi drugi poslužitelj e-pošte, primjerice Exim, naredbe se zovu drukčije, a načelo ostaje isto: pogledati red čekanja, čitati zaglavlja, brojiti prijave u zapisniku. Kod zajedničkog hostinga bez pristupa ljusci zatražite od hostera pisanim putem izvadak iz zapisnika pošte i nekoliko primjera poruka s potpunim zaglavljima. Mnogi hosteri te podatke daju na upit jer i sami imaju interes zaustaviti slanje.

Osigurajte nekoliko potpunih poruka prije nego red čekanja zaustavite ili ispraznite. One su dokaz za kasniju analizu i za razgovore s hosterom ili operaterima crnih lista.

Pronaći odgovornu PHP skriptu

Ako se slanje odvija putem PHP-a, pomaže PHP konfiguracija pošte. Prema PHP priručniku mail.log bilježi svaki poziv funkcije mail() s punim putem skripte, brojem retka, primateljem i zaglavljima. mail.add_x_header dodatno u svaku poruku upisuje zaglavlje X-PHP-Originating-Script s identifikatorom korisnika i nazivom datoteke.

; U php.ini ili u FPM poolu, zatim ponovno pokrenuti sve workere
mail.add_x_header = On
mail.log = /var/log/php/mail.log

Datoteka zapisnika mora biti zapisiva za PHP proces. Zaglavlje primateljima odaje naziv datoteke; nakon analize ga ponovno isključite ako ga ne želite trajno.

Ako se kao pošiljatelj pojavi nepoznata datoteka, primjerice u direktoriju za prijenose ili predmemoriju, to je naznaka web shella. Kako takve datoteke razvrstati, opisuje članak Prepoznati i ukloniti web shellove. Ako je pak riječ o poznatom kontaktnom obrascu, vjerojatno je zlouporabljen, primjerice jer se primatelji ili zaglavlja preuzimaju iz unosa obrasca. To je pogreška u kodu, a ne provala, ali je treba jednako brzo otkloniti.

Ne koristi svaki spam funkciju mail(). Zlonamjerni kod može i izravno uspostaviti vezu prema stranim poslužiteljima e-pošte. Tada se slanje ne pojavljuje ni u redu čekanja ni u PHP zapisniku pošte, ali se pojavljuje kao odlazne veze na portu 25. Kako ih provjeriti, piše pod Provjeriti odlazne veze poslužitelja.

Zaustaviti slanje i uredno ponovno pokrenuti

Kad je izvor pronađen, slijedi čišćenje ovim redoslijedom:

  1. Zaustaviti slanje: Blokirati zahvaćeni put, dakle deaktivirati skriptu, blokirati sandučić ili zaustaviti red čekanja. Poruke koje čekaju osigurati kao dokaz.
  2. Zatvoriti uzrok: Kod web shella PHP dovesti na ispravljeno stanje (8.5.12, 8.4.27, 8.3.36, 8.2.35 ili potvrđeni backport), ponovno pokrenuti sve workere i očistiti web-stranicu. Kod obrasca ispraviti kod. Kod sandučića promijeniti lozinku i provjeriti korisnikov uređaj.
  3. Tražiti daljnje tragove: Tko šalje spam putem web shella, često je postavio i daljnja stražnja vrata.
  4. Ograničiti izlaz: Odlazne veze na portu 25 dopustiti samo poslužitelju e-pošte, ne korisniku web-poslužitelja.
  5. Očistiti crne liste: Tek sada kod operatera crnih lista zatražiti uklanjanje i ukratko opisati što je ispravljeno.
Savjet

Tom prilikom provjerite SPF, DKIM i DMARC svoje domene. Ti DNS zapisi određuju koji poslužitelji smiju slati u ime Vaše domene i otežavaju strancima zlouporabu Vaše adrese pošiljatelja.

Kako PHP SOS konkretno pomaže?

  • Analiziramo red čekanja, zaglavlja i zapisnike pošte i utvrđujemo je li uzrok skripta, obrazac, sandučić ili konfiguracija.
  • Kontrolirano zaustavljamo slanje i osiguravamo dokaze za hostera i crne liste.
  • Web-stranicu čistimo u okviru uklanjanja zlonamjernog softvera i zatvaramo ulazna vrata.
  • Ograničavamo odlazni promet pošte na razini poslužitelja i pratimo uklanjanje s crnih lista.

Česta pitanja

Po čemu primjećujem da moj poslužitelj šalje spam?

Tipične su povratne poruke o porukama koje nitko nije napisao, obavijesti hostera, pun red čekanja pošte i klijenti koji Vaše poruke iznenada nalaze u mapi spama. Jasan znak su i unosi adrese Vašeg poslužitelja na javnim crnim listama.

Kako pronaći PHP skriptu koja šalje spam?

PHP može zabilježiti svaki poziv funkcije mail() s putem skripte ako je postavljen mail.log. Uz mail.add_x_header PHP naziv skripte upisuje i u zaglavlje svake poruke. U već poslanim ili čekajućim porukama pomaže pogled u zaglavlja.

Trebam li red čekanja pošte odmah isprazniti?

Ne prije nego što osigurate nekoliko poruka kao dokaz. Zaglavlja često pokazuju koja je skripta ili koji je sandučić pokrenuo slanje. Zaustaviti je uglavnom bolje nego brisati dok izvor nije poznat.

Kako se ponovno maknuti s crnih lista?

Najprije otkloniti uzrok, zatim kod operatera pojedinih crnih lista zatražiti uklanjanje. Većina traži objašnjenje što je ispravljeno. Tko zatraži prerano i nastavi slati spam, ponovno se unosi na popis.

Izvori

Hitni kontakt

Svaki sat se računa. Pišite nam odmah.

Ukratko opišite sustav, verziju PHP-a i opažanje. Javit ćemo Vam se, razjasniti situaciju i raditi na daljinu dok incident nije zaključen i dokumentiran.

Hitna pomoć