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
  • Email, SSL
  • 0 Los Usuarios han Encontrado Esto Útil
¿Fue útil la respuesta?

Related Articles

¿Qué es ClamAV?

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

Passwords débiles

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

Aplicaciones web sin actualizar, con bugs y vulnerabilidades

WordPress, phpBB, vBulletin, Moodle, Prestashop, OsCommerce y tantos otros, son piezas de...

¿Cómo prevenir que mi sitio sea hackeado?

Aquí algunas recomendaciones: 1) Bloquear cualquier acceso a archivos por...

¿Cómo prevenir que mi correo sea hackeado?

1) Debe definir contraseñas complejas en todos los sitios (FTP, correo, el gestor de...

Powered by WHMCompleteSolution