Sito PrestaShop hackerato: il falso «verifica di essere umano» è ClickFix
Se il tuo negozio mostra un falso «verifica di essere umano», qualcuno ci ha infilato del codice. Dove si nasconde in…
Lunedì mattina. Un cliente ti scrive per chiederti se il suo ordine di sabato è arrivato, perché non ha ricevuto niente. Apri il back office ed è lì, pagato. Anche quello di domenica, e tutti quelli della settimana. Il tuo negozio vende, ma da quando sei passato a PrestaShop 9 non è arrivata una sola email a nessuno.
Se invii con il tuo server di posta —quello di Aruba, OVH, Microsoft 365, Gmail o del tuo hosting— sulla porta 587, non hai configurato niente di sbagliato. È un bug di PrestaShop 9 presente in tutte le versioni dalla 9.0.0 alla 9.1.5, e corretto solo nella 9.2, pubblicata il 30 settembre 2026.
Vai su Parametri Avanzati → Logs. Se ogni ordine ha lasciato una riga simile a questa, è il tuo caso:
Mailer Error: Connection could not be
established with host
"ssl://smtps.aruba.it:587":
stream_socket_client(): SSL operation
failed with code 1. OpenSSL Error
messages: error:0A00010B:SSL
routines::wrong version number
Il nome del server sarà il tuo. Quello che tradisce il bug è il ssl:// davanti e il :587 in fondo. Lo stesso messaggio compare subito se premi «Invia un'email di prova» in Parametri Avanzati → Email.
La parte subdola è tutto quello che non succede. Il cliente non vede nessun errore, l'ordine viene salvato e il pagamento va a buon fine. Per questo ci vogliono giorni per accorgersene, e quasi sempre è un cliente ad avvisarti, chiedendo la fattura o il numero di tracking.
Ci sono due modi di cifrare la conversazione con un server di posta. In uno si cifra fin dal primo secondo, ed è quello che si aspetta la porta 465. Nell'altro ci si saluta prima in chiaro e subito dopo si chiede di passare a una conversazione cifrata: è la porta 587. Sono due porte diverse e ognuna si aspetta che bussi a modo suo.
Fino a PrestaShop 8, l'opzione «TLS» del back office bussava alla porta 587 come quella porta si aspetta. PrestaShop 9 ha cambiato il componente con cui invia la posta (da SwiftMailer a Symfony Mailer) e, già che c'era, quello che fa quell'opzione: ora «TLS» cifra fin dal primo secondo. Bussa alla 587 come se fosse la 465, il server risponde con un saluto normale e PrestaShop, che si aspettava una risposta cifrata, non capisce niente. Ecco il «wrong version number».
Per questo si rompe proprio quando aggiorni dalla 8 alla 9: gli stessi dati che funzionavano smettono di funzionare senza che tu abbia toccato niente. E per questo è sparita l'opzione «SSL» di prima: in PrestaShop 9 il menu del criptaggio offre solo «Nessuno» e «TLS».
Si cambia in Parametri Avanzati → Email, con «Imposta parametri SMTP personali» selezionato. Cosa mettere dipende dalle porte che accetta il tuo provider, e l'abbiamo verificato uno per uno sui server di undici provider:
smtps.aruba.it), Gmail, IONOS, Brevo o la posta inclusa negli hosting OVH (MX Plan, ssl0.ovh.net)—: criptaggio TLS e porta 465. È così che è configurato il nostro negozio, che gira su PrestaShop 9.smtp.office365.com), Email Pro di OVH (pro1, pro2 o pro3.mail.ovh.net) ed Exchange di OVH—: criptaggio Nessuno e porta 587. Con questi, in 9.0 e 9.1, «TLS» non funziona su nessuna porta.Sappiamo che la seconda fa un po' paura, perché dice «Nessuno». Ma non vuol dire che la tua password viaggi in chiaro. Con quell'opzione PrestaShop 9 saluta in chiaro e, appena il server propone di cifrare —tutti questi lo fanno—, cifra la conversazione prima di inviare utente e password. L'abbiamo verificato sui server di Microsoft 365 e di OVH: la connessione risulta cifrata (TLS 1.3 su Microsoft, TLS 1.2 su OVH) prima che parta qualsiasi dato.
Salva, invia l'email di prova e, se arriva, hai finito: gli ordini che entrano da adesso inviano le loro email. Quelli rimasti per strada non ripartono da soli. Nella scheda di ogni ordine, nello storico degli stati, il pulsante «Rimanda email» invia di nuovo l'email di quello stato, come quella del pagamento accettato o dell'ordine spedito.
Se in PrestaShop 8 avevi scelto «SSL» con la porta 465, dopo l'aggiornamento continua a inviare: PrestaShop 9 conserva quel valore e lo tratta come il suo «TLS». Il problema arriva il giorno in cui apri quella pagina e salvi, anche solo per cambiare altro. Siccome «SSL» non è più nel menu, il back office mostra «Nessuno», ed è quello che viene salvato. Con «Nessuno» e la 465 il negozio resta ad aspettare una risposta che non arriva, e il log dice Connection to "…:465" timed out.
L'abbiamo riprodotto sul nostro negozio di prova. Prima di salvare qualsiasi cosa in quella pagina, controlla che il criptaggio dica quello che vuoi tu.
La 9.2 lo corregge alla radice: «TLS» torna a funzionare sulla 587, come in PrestaShop 8. È la modifica 42197 del progetto, che chiude una segnalazione aperta ad agosto 2024. Non è arrivata in tempo per la 9.1.5, l'ultima della serie 9.1: se sei su una qualsiasi 9.0 o 9.1, hai il bug.
Quello che imposti oggi seguendo questo articolo continua a valere dopo l'aggiornamento —«TLS» con la 465 e «Nessuno» con la 587 inviano allo stesso modo nella 9.2—, quindi non c'è niente da disfare. Sistema la posta adesso e aggiorna quando ti conviene, senza fretta: la 9.2 porta cambiamenti grossi, come il nuovo checkout in una sola pagina, e i tuoi moduli di pagamento e di spedizione devono essere pronti. Un aggiornamento così si prova prima su una copia del negozio.
Microsoft ha annunciato che a fine dicembre 2026 disattiverà per impostazione predefinita l'invio dalle applicazioni con utente e password, che è esattamente il modo in cui invia PrestaShop. L'amministratore del tuo account Microsoft potrà riattivarlo, e la data di rimozione definitiva verrà annunciata nella seconda metà del 2027. Se il tuo negozio dipende da Microsoft 365 per inviare le email, è un buon momento per passarlo a un servizio di invio transazionale come Brevo o Mailjet e toglierti questa scadenza dalla testa.
Il log ti dice dove guardare. Se dice Failed to authenticate, è l'utente o la password: l'utente è sempre l'indirizzo completo, e in Microsoft 365 la casella deve avere attivo l'invio SMTP autenticato. Se dice timed out, o quella porta non esiste presso il tuo provider —Microsoft 365 ed Email Pro di OVH non hanno la 465—, o sei caduto nella trappola del menu, o il tuo hosting blocca l'uscita su quella porta.
E se preferisci che lo guardi qualcuno che l'ha già risolto, mandaci il messaggio del log e la tua versione di PrestaShop. Ti diciamo cosa mettere nel tuo caso e, se dietro c'è altro, lo rimettiamo in funzione.
Quando le tue email ripartono, fai in modo che valga la pena aprirle: ne parlavamo in la conferma d’ordine è la pagina peggiore del tuo negozio.
Se il tuo negozio mostra un falso «verifica di essere umano», qualcuno ci ha infilato del codice. Dove si nasconde in…
Dall'estero va benissimo, dalla Spagna va in timeout proprio nei giorni di partita. Non è il tuo server: è un IP…
Un modulo, un’app, un server che dà problemi o solo un parere. La prima consulenza non costa nulla, e da lì esce un preventivo chiuso con prezzo e data.