Article ID: 1711, created on Jan 28, 2009, last review on Aug 12, 2014

  • Applies to:
  • Plesk for Linux/Unix

Résolution

Remarque : cet article concerne Qmail. Si vous utilisez le serveur de messagerie Postfix, consultez l'article :

n° 114845 : De nombreux mails sont envoyés à partir de scripts PHP sur le serveur. Comment puis-je trouver les domaines sur lesquels ces scripts fonctionnent si j'utilise Postfix ?

Avertissement : si vous utilisez cette méthode, cela peut augmenter la charge du serveur. En effet, ce processus génère des étapes supplémentaires de traitement pour chaque message envoyé via le serveur de messagerie local. Si vous rencontrez des problèmes liés à une augmentation de charge du serveur une fois que vous avez appliqué les instructions à l'étape 2, suivez l'étape 3 pour résoudre ce problème.

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 Parallels Plesk, les chemins d'accès peuvent légèrement différer de ceux mentionnés ci-dessous.

1) Créez le script /var/qmail/bin/sendmail-wrapper avec ce contenu :

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

Remarque : ce script doit 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 :

~# touch /var/tmp/mail.send
~# chmod a+rw /var/tmp/mail.send
~# chmod a+x /var/qmail/bin/sendmail-wrapper
~# mv /var/qmail/bin/sendmail /var/qmail/bin/sendmail-qmail
~# ln -s /var/qmail/bin/sendmail-wrapper /var/qmail/bin/sendmail

3) Patientez deux heures environ puis revenez au sendmail initial :

~# rm -f /var/qmail/bin/sendmail
~# mv /var/qmail/bin/sendmail-qmail /var/qmail/bin/sendmail

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 dans lequels 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//' `

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.

Si le fichier /var/tmp/mail.send contient uniquement :

X-Additional-Header: /var/www

sans pointer vers un dossier de domaine spécifique, modifiez les droits pour les binaires Perl :

~# chmod 700 /usr/bin/perl

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 29d1e90fd304f01e6420fbe60f66f838

Email subscription for changes to this article
Save as PDF