Nota: este artículo es aplicable para el servidor de correo de Postfix. Si está utilizando el servidor de correo QMail, consulte: Muchos mensajes de correo electrónico se envían desde scripts PHP en un servidor. ¿Cómo encontrar los dominios en los que se ejecutan estos scripts si se usa Qmail?
Hay una manera de determinar desde qué directorio se ejecuta el script PHP que envía el correo.
Nota: según el sistema operativo y la versión de Plesk, las rutas pueden diferir ligeramente.
-
Cree un script en:
/usr/sbin/sendmail.postfix-wrapper
con el siguiente contenido: #!/bin/sh
(echo X-Additional-Header: $PWD ;cat) | tee -a /var/tmp/mail.send|/usr/sbin/sendmail.postfix-bin "$@" -
Cree el archivo de registro de logs en
/var/tmp/mail.send
y establezca los permisosa+rw
. Haga que el contenedor sea ejecutable, cambie el nombre del antiguo archivosendmail.postfix
y vincúlelo al nuevo contenedor:# 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 -
Espere un momento y cambie el nombre de
sendmail.postfix-bin
a/usr/sbin/sendmail.postfix
: # rm /usr/sbin/sendmail.postfix
# mv /usr/sbin/sendmail.postfix-bin /usr/sbin/sendmail.postfix
Compruebe el archivo /var/tmp/mail.send
. Debería haber líneas que comiencen por "X-Additional-Header" apuntando a las carpetas de dominio donde se encuentran los scripts que enviaron el correo.
Nota: El archivo /var/tmp/mail.send
no se gira automáticamente y no se recomienda dejarlo durante un período prolongado de tiempo, ya que podría consumir un espacio en el disco del servidor. Elimine y cree un nuevo archivo /var/tmp/mail.send
después de cada control.
Los directorios desde los cuales se ejecutan los scripts de PHP se pueden ver con el siguiente comando:
# grep X-Additional /var/tmp/mail.send | grep `cat /etc/psa/psa.conf | grep HTTPD_VHOSTS_D | sed -e 's/HTTPD_VHOSTS_D//' `
Nota: si no se muestra ninguna salida desde el comando anterior, significa que no se envió ningún correo usando la función de correo PHP desde el directorio del host virtual de Plesk.
Usualmente, eso significa que una de las cuentas de correo ha sido comprometida. Verifique el conteo de intentos de inicio de sesión:
# 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 se muestra una cantidad inusualmente alta de intentos de inicio de sesión, es muy probable que las cuentas se vean comprometidas. Intente identificar estas cuentas de la siguiente manera:
# zgrep 'sasl_method=LOGIN' /usr/local/psa/var/log/maillog* | awk '{print $9}' | sort | uniq -c | sort -nr | head
891574 sasl_username=Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Para evitar que se envíe correo basura, cambie las contraseñas de las cuentas comprometidas y reinicie el servicio Postfix.