Votre WordPress envoie du spam

Votre domaine envoie des e-mails de spam à votre insu, votre hébergeur vous alerte ou vos mails finissent en blacklist ? Voici la cause et comment y mettre fin.

Par WP-Detox 7 min de lecture

Quand un WordPress envoie du spam, vous ne le voyez presque jamais directement. C’est l’hébergeur qui vous prévient d’un envoi massif, un client qui signale que vos mails atterrissent dans son dossier indésirables, ou votre adresse qui arrête de fonctionner du jour au lendemain. Derrière, un script malveillant tourne sur votre serveur et expédie des milliers de messages en votre nom. Voici comment confirmer le problème et l’arrêter.

les signes qui ne trompent pas

Plusieurs symptômes pointent vers un site qui sert de plateforme d’envoi :

  • Votre hébergeur vous envoie une alerte du type “envoi anormal d’e-mails”, “dépassement de quota SMTP” ou suspend carrément votre compte.
  • Vos mails légitimes (devis, contacts, confirmations) n’arrivent plus chez vos destinataires, ou tombent systématiquement en spam.
  • Vous recevez des centaines de rapports de non-distribution (NDR, “mail delivery failed”) pour des messages que vous n’avez jamais écrits.
  • Un outil de vérification indique que votre domaine ou l’IP du serveur figure sur une liste noire (RBL).

Si vous cochez une ou plusieurs de ces cases, partez du principe que le site est compromis jusqu’à preuve du contraire.

spoofing ou envoi réel : ce n’est pas le même problème

Avant de tout casser, il faut trancher une question. Le spam part-il vraiment de votre serveur, ou un spammeur usurpe-t-il simplement votre adresse depuis ailleurs ?

Le spoofing (usurpation). N’importe qui peut écrire vous@votredomaine.fr dans le champ expéditeur d’un mail envoyé depuis sa propre machine. Votre site n’est pas touché, votre serveur n’envoie rien. Vous recevez des rebonds parce que les destinataires renvoient les erreurs à l’adresse affichée, c’est-à-dire la vôtre. C’est désagréable, mais votre WordPress n’est pas piraté.

L’envoi réel. Là, un script tourne sur votre hébergement et émet du courrier. C’est ce cas qui correspond à un site compromis, et c’est le seul qui demande un nettoyage.

Comment faire la différence ? Regardez les en-têtes complets d’un message suspect (vos destinataires peuvent vous en transférer un, ou cherchez dans les logs). Si le mail part de l’IP de votre hébergeur et passe par votre serveur, c’est un envoi réel. S’il vient d’une IP étrangère sans aucun lien avec votre hébergement, c’est du spoofing. Le volume dans les logs SMTP de l’hébergeur tranche aussi : des milliers d’envois sortants enregistrés sur votre compte, c’est un envoi réel.

d’où vient l’envoi

Sur un site compromis, le spam vient quasi toujours d’un de ces points d’entrée :

  • Un fichier PHP déposé dans wp-content/uploads, un dossier censé ne contenir que des images. Un .php y est anormal par définition.
  • Une extension vulnérable, souvent un plugin de formulaire de contact ou de newsletter mal protégé, détournée pour envoyer en masse.
  • Une backdoor installée ailleurs (thème, wp-content, racine) qui sert de mailer.
  • Des identifiants SMTP volés, si vous utilisez un service d’envoi tiers configuré dans le site.

Le mécanisme est presque toujours le même : le script appelle la fonction mail() de PHP, ou se branche sur un SMTP, pour expédier le courrier sans passer par WordPress.

diagnostiquer

consulter les logs d’envoi

Demandez à votre hébergeur les logs SMTP du compte, ou retrouvez-les dans votre espace d’administration. Vous y verrez le volume sortant, les heures d’envoi et, parfois, le script source. Un pic d’envois la nuit ou des milliers de messages par heure ne laissent aucun doute.

chercher le script malveillant

Le but est de trouver le mailer. En SSH, deux recherches rapides donnent déjà beaucoup :

# Fichiers PHP cachés dans le dossier des médias (toujours suspect)
find wp-content/uploads -name "*.php"

# Fichiers contenant des appels à mail() couplés à de l'obfuscation
grep -rl "base64_decode" wp-content/ | xargs grep -l "mail("

Méfiez-vous des fichiers récemment modifiés, des noms qui imitent le cœur de WordPress (wp-cache.php, class-wp-mailer.php à un endroit incongru), et du code encodé en base64 ou eval(). Un mailer ne se cache pas toujours bien, mais il est rarement seul : trouvez-en un, et il y a souvent une backdoor à côté pour réinjecter le tout après votre nettoyage. Si vous voulez la méthode complète pour la débusquer, voyez comment trouver la backdoor responsable.

vérifier les extensions

Passez en revue vos plugins de formulaire et d’e-mailing. Un plugin obsolète ou abandonné est le suspect numéro un. Notez sa version et confrontez-la aux failles connues.

nettoyer

L’ordre compte. Si vous nettoyez sans couper l’envoi, le site continue à spammer pendant que vous travaillez et l’hébergeur peut suspendre le compte.

  1. Coupez l’envoi. Demandez à l’hébergeur de bloquer temporairement le SMTP sortant, ou désactivez la fonction d’envoi le temps de l’intervention.
  2. Supprimez le script. Effacez tout .php illégitime trouvé dans uploads et toute backdoor identifiée. Ne vous contentez pas de vider le contenu du fichier, supprimez-le.
  3. Traitez l’extension vulnérable. Mettez-la à jour si un correctif existe, sinon retirez-la et remplacez-la par une alternative maintenue.
  4. Changez tous les mots de passe. Admin WordPress, base de données, FTP/SSH, et les identifiants SMTP si vous en utilisez. Un mailer va souvent de pair avec des accès compromis.
  5. Réinstallez le cœur de WordPress à la même version, depuis une source officielle, pour écraser tout fichier système modifié.

Ne rouvrez l’envoi qu’une fois ces étapes terminées. Si vous avez le moindre doute sur l’exhaustivité du nettoyage, suivez le guide complet quand WordPress est piraté : un mailer laissé en place revient toujours.

sortir des listes noires et réparer la délivrabilité

Une fois le site propre, votre domaine et votre IP peuvent rester pénalisés. Deux chantiers.

le retrait des listes noires

Testez votre domaine et l’IP de votre serveur sur un outil comme MXToolbox. Pour chaque liste (RBL) où vous apparaissez, suivez la procédure de retrait indiquée : la plupart proposent un formulaire de délisting. Le retrait n’est accordé que si l’envoi de spam a bien cessé, d’où l’importance d’avoir nettoyé d’abord. Selon la liste, le délistage prend de quelques heures à quelques jours.

SPF, DKIM, DMARC

Ces trois enregistrements DNS authentifient votre courrier et compliquent l’usurpation de votre domaine.

  • SPF — déclare quels serveurs ont le droit d’envoyer pour votre domaine.
  • DKIM — signe cryptographiquement vos messages pour prouver qu’ils n’ont pas été falsifiés.
  • DMARC — dit aux serveurs receveurs quoi faire d’un mail qui échoue aux deux contrôles précédents.

Sans eux, n’importe qui peut usurper votre adresse et votre courrier légitime part plus facilement en spam. Avec eux, vous reconstruisez votre réputation d’envoi et vous fermez la porte au spoofing. La plupart des hébergeurs proposent une configuration assistée de ces enregistrements.

Pour finir, durcissez l’installation pour ne pas rejouer le même scénario : c’est l’objet de durcir le site après le nettoyage.

questions fréquentes

Mon domaine peut-il être blacklisté sans que mon site soit piraté ? Oui, en cas de spoofing : un tiers usurpe votre adresse et la fait blacklister sans jamais toucher à votre serveur. Vérifiez les logs d’envoi de l’hébergeur. Aucun envoi sortant anormal de votre côté ? Le site est probablement sain, le problème est l’usurpation, et SPF/DKIM/DMARC sont votre réponse.

Combien de temps pour ressortir d’une liste noire ? De quelques heures à quelques jours après le délisting, à condition que l’envoi de spam ait réellement cessé. Si vous demandez le retrait avant d’avoir nettoyé, vous serez relisté aussitôt.

Supprimer le plugin coupable suffit-il ? Rarement. Le plugin est le point d’entrée, mais l’attaquant a presque toujours déposé un fichier indépendant qui survit à la désinstallation. Il faut chercher et retirer ce fichier en plus.

Si vous préférez ne pas manipuler le serveur vous-même, WP-Detox s’en charge. On lance un scan gratuit pour confirmer l’origine de l’envoi, on sauvegarde le site avant toute intervention, puis on retire le mailer et la backdoor, on traite l’extension vulnérable et on remet en place une authentification correcte. Comptez environ 30 minutes, 149 € tout compris, remboursé si on n’y arrive pas.

À lire ensuite