Ya no envía mas correos vía mail()

Iniciado por SrTrp, 23 Octubre 2020, 19:25 PM

0 Miembros y 1 Visitante están viendo este tema.

SrTrp

Bueno estaba en mi servidor probando enviar correos, probaba de 1 en 1, si me los enviaba correctamente con el archivo que deseaba, pero después cuando implemente esto en mi sistema cree un bucle donde me envió demasiados correos para ser exactos 500, y me los envió con el archivo y todo, después de esto obviamente me percate que había algo mal, lo solucione para que ya no se ciclara pero ya no envía correos ni manualmente de 1 en 1, después revise desde mi bandeja de entrada de correos del servidor y había un mensaje que decía algo así "llego al limite de 500/500 (100%) de correos por hora" aquí les dejo mi código si tienen alguna idea aun que al parecer mi código esta bien no le moví nada al de envió de correos en si me sigue arrogando true.
Código (php) [Seleccionar]

<?php
$to 
$_POST['email'];

$from 'atencionclientes@dominio.com';
$fromName 'TESTING';

$subject 'ASUNTO'

$file "pdfs_tick/".$_POST['token'].".pdf";

$htmlContent '<h1>Hola '.$_POST['nombre'].'! tu Folio/Referencia es: <strong>'.$_POST['token'].'</strong></h1>';

$headers "De: $fromName"." <".$from.">";

$semi_rand md5(time()); 
$mime_boundary "==Multipart_Boundary_x{$semi_rand}x"

$headers .= "\nMIME-Version: 1.0\n" "Content-Type: multipart/mixed;\n" " boundary=\"{$mime_boundary}\""

$message "--{$mime_boundary}\n" "Content-Type: text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" $htmlContent "\n\n"

//preparación de archivo
if(!empty($file) > 0){
    if(
is_file($file)){
        
$message .= "--{$mime_boundary}\n";
        
$fp =    @fopen($file,"rb");
        
$data =  @fread($fp,filesize($file));

        @
fclose($fp);
        
$data chunk_split(base64_encode($data));
        
$message .= "Content-Type: application/octet-stream; name=\"".basename($file)."\"\n" 
        
"Content-Description: ".basename($files[$i])."\n" .
        
"Content-Disposition: attachment;\n" " filename=\"".basename($file)."\"; size=".filesize($file).";\n" 
        
"Content-Transfer-Encoding: base64\n\n" $data "\n\n";
    }
}
$message .= "--{$mime_boundary}--";
$returnpath "-f" $from;

$mail = @mail($to$subject$message$headers$returnpath); 

echo 
$mail?"<h1>Correo enviado.</h1>":"<h1>El envío de correo falló.</h1>";

#!drvy

#1
- Tienes un LFI (Local File Inclusion) en tu codigo. No compruebas nunca si la ruta es valida, solo si el archivo existe. Si te pasan un $_POST['token'] tipo: ../../../../../../../../home/usuario/extracto-bancario podrian sacar cualquier archivo pdf... luego con nullbyte pueden conseguir saltar el .pdf y pillar otros archivos.

Puedes leer más sobre esto aquí:

https://www.php.net/manual/en/security.filesystem.nullbytes.php

- XSS en la línea 12. No escapas $_POST['nombre'].

https://www.php.net/manual/en/function.htmlentities.php

- La variable "$semi_rand" de "rand" tiene más bien poco xD
- El nombre de la variable "$returnpath" no tiene ningún sentido. Son cabeceras (headers)..


Citaraquí les dejo mi código si tienen alguna idea aun que al parecer mi código esta bien no le moví nada al de envió de correos en si me sigue arrogando true.

No hay mucho que hacer. Has causado SPAM y tu hosting te ha suspendido el servicio temporalmente/permanentemente. La función mail() sigue devolviendo true porque como tal se ejecuta y el correo se envía localmente pero no pasa por los demás nodos.

PD: Linea 33 usas "$files[$i]"... eso imagino es de tu bucle anterior... Pero ya no lo tienes así que eso no se cumple. Te tirará Notice/Warning de index & variable inexistente.

Saludos