Article ID: 114845, created on Mar 18, 2014, last review on Jun 4, 2015

  • Applies to:
  • Plesk for Linux/Unix

Symptômes

De nombreux messages sont envoyés par les scripts PHP sur le serveur. Comment puis-je trouver les domaines sur lesquels ces scripts fonctionnent si j'utilise Postfix ?

Résolution

Remarque : cet article concerne Postfix. Si vous utilisez le serveur de messagerie Qmail, consultez l'article
n° 1711 : De nombreux mails sont envoyés à partir de scripts PHP sur le serveur. Comment puis-je trouver les domaines sur lesquels ces scripts fonctionnent ?

Vous pouvez déterminer à partir de quel dossier est exécuté le script PHP qui envoie des messages.

Remarque : selon votre OS et votre version de Plesk, les chemins d'accès peuvent légèrement différer de ceux mentionnés ci-dessous.

  1. Créez un script /usr/sbin/sendmail.postfix-wrapper avec le contenu ci-après :

    Créez un fichier et ouvrez-le pour le modifier :

    #touch /usr/sbin/sendmail.postfix-wrapper
    #vi /usr/sbin/sendmail.postfix-wrapper
    

    Ajoutez le contenu suivant :

    #!/bin/sh
    (echo X-Additional-Header: $PWD ;cat) | tee -a /var/tmp/mail.send|/usr/sbin/sendmail.postfix-bin "$@"
    

    Remarque : il doit y avoir deux lignes, dont #!/bin/sh.

  2. Créez un fichier log, /var/tmp/mail.send et accordez-lui les droits a+rw. Rendez le wrapper exécutable, renommez l'ancien sendmail et associez-le au nouveau wrapper. Puis, exécutez simplement ces commandes :

    ~# touch /var/tmp/mail.send
    ~# chmod a+rw /var/tmp/mail.send
    ~# chmod a+x /usr/sbin/sendmail.postfix-wrapper
    ~# mv /usr/sbin/sendmail.postfix /usr/sbin/sendmail.postfix-bin
    ~# ln -s /usr/sbin/sendmail.postfix-wrapper /usr/sbin/sendmail.postfix
    
  3. Patientez une heure environ, puis revenez au sendmail initial :

    ~# rm -f /usr/sbin/sendmail.postfix
    ~# mv /usr/sbin/sendmail.postfix-bin /usr/sbin/sendmail.postfix
    

Examinez le fichier /var/tmp/mail.send. Il doit y avoir les lignes commençant par X-Additional-Header pointant vers les dossiers des domaines sur lequel les scripts qui ont envoyé les mails sont situés.

Vous pouvez voir tous les dossiers à partir desquels les scripts de messagerie PHP ont été exécutés avec la commande suivante :

    ~# grep X-Additional /var/tmp/mail.send | grep `cat /etc/psa/psa.conf | grep HTTPD_VHOSTS_D | sed -e 's/HTTPD_VHOSTS_D//' `

REMARQUE : si la commande ci-dessus ne donne aucun résultat, cela signifie qu'aucun mail n'a été envoyé à l'aide de la fonction PHP mail() depuis le répertoire d'hôtes virtuels de Plesk.

En général, cela signifie que l'un des comptes mails a été compromis. Vérifiez les tentatives de connexion :

# zgrep -c 'sasl_method=LOGIN' /usr/local/psa/var/log/maillog*
/usr/local/psa/var/log/maillog:221000
/usr/local/psa/var/log/maillog.processed:362327
/usr/local/psa/var/log/maillog.processed.1.gz:308956

Si vous voyez un nombre inhabituellement élevé de tentatives de connexion, il est fort probable que des comptes soient compromis. Pour identifier ces comptes, essayez cette méthode :

# zgrep 'sasl_method=LOGIN' /usr/local/psa/var/log/maillog* | awk '{print $9}' | sort | uniq -c | sort -nr | head
891574 sasl_username=admin@example.com

Pour cesser l'envoi de spam, modifiez les mots de passe des comptes compromis et redémarrez le service Postfix.

Pour Plesk 12, consultez également le Guide de l'administrateur.

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c e0aff7830fa22f92062ee4db78133079 29d1e90fd304f01e6420fbe60f66f838 caea8340e2d186a540518d08602aa065

Email subscription for changes to this article
Save as PDF