Eliminar el remitente "Nobody" de los formularios

Los mensajes generados desde formularios PHP usando la función mail(), por defecto, tienen como FROM real del mensaje (Envelope Sender) la dirección nobody@servidor o anonymous@servidor.

El
Envelope Sender es la dirección a donde se enviarán los mensajes de error en caso de haber algún problema con la entrega del mensaje al destinatario, por lo que si tiene el valor por defecto, dichas notificaciones no llegan nunca.

Además, muchos
spammers que usan formularios web para el envío de mensajes no solicitados, usan dicha dirección por defecto para el envío, por lo que hemos procedido a evitar la salida desde nuestros servidores mensajes con dicho FROM y entre otras cosas, evitar así caer en listas negras.

Para cambiar dicha dirección FROM, lo que se debe hacer es añadir un parámetro
adicional a la llamada a la función mail() en el que se indica la dirección de correo deseada para que se establezca como Envelope Sender, por ejemplo, la llamada habitual:

mail ("usuario@destino.com", "Asunto del mensaje", "Cuerpo del mensaje", $cabeceras)


debe cambiarse por algo como:


mail ("usuario@destino.com", "Asunto del mensaje", "Cuerpo del mensaje", $cabeceras, '-fusuario@origen.com');

Como se ve, el último parámetro es
'-fusuario@origen.com' en el que se indica, seguido de "-f", la dirección que se quiera poner como FROM para el retorno de errores de mensajes y evitar que salgan como nobody o anonymous.

La dirección de correo
usuario@origen.com, obviamente, debe ser de tu dominio y debe existir.

Además, para que funcione correctamente, la variable
safe_mode de PHP debe estar a Off.

Oscommerce
En portales como OsCommerce, deberemos buscar el archivo desde el cual se envía el correo, llamado email.php, y alrededor de la línea 520, donde se llama a la función mail():

      if (EMAIL_TRANSPORT == 'smtp') {
        return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers));
      } else {
        return mail($to, $subject, $this->output, 'From: '.$from.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers));
      }

Debemos cambiarlo por:

      if (EMAIL_TRANSPORT == 'smtp') {
        return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers),'-fusuario@dominio.com');
      } else {
        return mail($to, $subject, $this->output, 'From: '.$from.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers),'-fusuario@dominio.com');
      }

Es decir, añadir un último parámetro con la dirección correcta. Esto se debe hacer en dos archivos que se suelen encontrar en las rutas:

/includes/classes/email.php
/admin/includes/classes/email.ph
p

Con esto, los emails desde
OsCommerce saldrán correctamente.

Joomla
En otros portales como Joomla, cuando se usa la clase PHPMailer, basta modificar el archivo:

libraries/phpmailer/phpmailer.php


para configurar el valor la variable que aparecerá en el FROM, en la línea 88:


  var $Sender            = 'usuario@dominio.com';

y posteriormente, modificar la línea 489 para que quede como:


$rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);


es decir, añadir el
$params al final de la función mail, como comentábamos.

Más información se puede encontrar en la página de la función mail de PHP:  http://es.php.net/function.mail

¿Fue útil la respuesta?

 Imprimir éste Artículo

Leer también

Passwords débiles

El uso de passwords débiles y sin fortaleza alguna como lo son “pepe”,...

¿Qué es ClamAV?

ClamAV es un Antivirus de código abierto (GPL) diseñado para las plataformas Windows, Linux y...

¿Cuáles son los permisos CHMOD adecuados para archivos y carpetas?

Para garantizar la seguridad se recomienda que las carpetas deban tener permisos 755 y los...

Safe-mode OFF/ON

El Safe-mode es un modo de alta seguridad en PHP que es incompatible con moodle.Tener safe_mode...

Infecciones de malware/spyware y keyloggers en la PC cliente

Muchos malware y keyloggers son instalados remotamente por una mala politica de seguridad al...

Powered by WHMCompleteSolution