Linux

Postfix: Come identificare uno script PHP che invia spam

Il vostro dominio è in hosting su un server Linux che utilizza Postfix per l’invio delle email ed è in blacklist per spam?

Probabilmente avete uno script malevolo che invia un elevato numero di email direttamente dal server… insomma, avete il nemico in casa!

Se il vostro demone di posta in uscita (ossia il software utilizzato per inviare le email) è Postfix, è possibile identificare l’origine dello spam in pochi semplici passi.

La risoluzione del problema può essere altrettanto agevole, anche se nella maggior parte dei casi necessita di ulteriori approfondimenti.

È infatti necessario evitare che la situazione si ripresenti, in quanto se qualcuno è riuscito a caricare uno script sul vostro server, potreste avere qualche falla di sicurezza.

La prima cosa da fare è accedere al vostro mailserver con un utente con diritti amministrativi (sudo) ed essere sicuri che il file php.ini del vostro dominio (e/o quello globale del server) contenga la seguente riga:

mail.add_x_header = On

senza la quale quanto andremo a fare di seguito non produrrà alcun risultato utile.

Verificato ciò, sarà necessario esaminare la coda degli invii delle email con il comando:

mailq

Nella prima colonna verrà mostrato l’ID univoco delle singole email in uscita, ad esempio:

DA5E8647235C 369763 Wed Mar 29 16:30:19 someotheruser@someotherdomain.com
 (connect to somedomain.com[123.123.123.123]:25: Connection refused)
 someuser@somedomain.com

Identificata una di queste email che sia ovviamente di spam, andremo ad esaminarne i dettagli con il comando:

postcat -q <ID>

e cercheremo una riga che inizi con “X-PHP-Originating-Script” (presente in virtù della riga del file php.ini di cui sopra).

Ad esempio, utilizzando grep per evitare di dover scorrere manualmente tutto il contenuto dell’email:

postcat -q DA5E8647235C | grep X-PHP-Originating-Script

potremmo ottenere un output del genere:

X-PHP-Originating-Script: 45:badmailer.php

Il numero 45 è l’UID, ossia l’ID dell’utente Linux che ha eseguito lo script, mentre badmailer.php è lo script che sta inviando le email di spam.

A questo punto non vi resta altro da fare che localizzare il file badmailer.php, cancellarlo o ripulirlo e soprattutto capire come è stato inviato al vostro server e da lì eseguito.

Se la riga X-PHP-Originating-Script non è presente nel vostro header, molto probabilmente un vostro account di posta è stato hackerato, e viene utilizzato per inviare spam in maniera “legittima” dal vostro server. In questo caso, individuata un’email di spam in uscita, sarà opportuno lanciare il seguente comando per capire qual è l’account che è stato utilizzato per autenticarsi:

postcat -q DA5E8647235C | grep sasl_username

Otterrete un output di questo tipo:

named_attribute: sasl_username=info@nullalo.com

Nell’esempio, provvedete immediatamente a cambiare la password dell’account info@nullalo.com con una più robusta (lunga, con caratteri speciali, maiuscole e minuscole).

Un’altra cosa che potete fare per limitare i danni è svuotare la coda di posta in uscita con il seguente comando:

postsuper -d ALL

Se, tuttavia, oltre alle email di spam sono in coda anche email importanti, vi toccherà eliminare le email singolarmente con il comando:

postsuper -d <ID>

Quindi, nell’esempio lanceremo il seguente comando:

postsuper -d DA5E8647235C

Questo è tutto… se avete difficoltà, commentate l’articolo e cercheremo di aiutarvi!

Articolo precedente

Windows Update bloccato durante la ricerca: come risolvere

Articolo successivo

Chrome: Come installare certificati SSL auto-firmati

Fulvio Sicurezza

Fulvio Sicurezza

5 Commenti

  1. Lorenzo
    12 luglio 2017 at 13:25 — Rispondi

    Ciao!
    Il tuo articolo è utilissimo per tutti coloro che hanno questo problema visto che è la risoluzione definitiva.

    Nel mio caso però nelle email di spam che vengono inviate non c’è nessuna riga “X-PHP-Originating-Script”, nonostante l’header appare completo.
    Come si può capire cosa le sta generando? Grazie.

    • Fulvio Sicurezza
      12 luglio 2017 at 18:10 — Rispondi

      Ciao Lorenzo,

      se la riga “X-PHP-Originating-Script” manca, molto probabilmente lo spam ha origine da un account di posta elettronica che è stato “bucato”, e che quindi invia posta dal tuo server in maniera “legittima”.
      In questo caso ti consiglio di esaminare bene l’header per risalire al mittente dell’email e cambiare tempestivamente la password di quell’account, utilizzandone magari una più complessa.
      Ad ogni modo, ho aggiornato l’articolo con quanto sopra accennato, facci sapere!

  2. 8 settembre 2017 at 22:37 — Rispondi

    how to increase security in postfix for spam ?

  3. Rick
    28 luglio 2018 at 16:53 — Rispondi

    Thank you for this great article

  4. Dan
    10 novembre 2018 at 09:50 — Rispondi

    One thing I’ve learned the hard way – if you’re using PHP Mailer, or any other library for sending emails from your server, be sure to change the script’s default path and directory names to a string consisting of random characters.

    For example, if the directory name is phpmailer, rename it, so it’s 7PSBYyAFFD.

    The path to the script becoms:
    public_html/mysite/7PSBYyAFFD/PHPMailerAutoLoad.php

    If you do this, you also need to change your PHP code which calls the mailer, so that it uses the new directory name.

    Of course, this won’t help much, if there are other problems with your site – backdoors, compromised email accounts, or other security holes.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *