Lista Negra por enviar emails desconocidos

Iniciado por dapiep, 6 Marzo 2013, 21:00 PM

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

dapiep

Tengo un website que acepta registrarse. Mando una email al nuevo usuario con un codigo de activacion con php y pear. Todo trabaja bien si el email es valido y existe pero si el email es no valido tengo problemas porque al intentar enviar el codigo de activacion a un email inexistente repetidamente mi cuenta es considerado como un spammer. he tratado de uzar pearl para verificar si el email existe antes de enviarlo para no ser considerado un spammer pero no trabaja al 100 por ciento y ultimamente hay un cracker que se registra repetidamente con emails inexistentes.

Ori-chan



dapiep

Cita de: Ori-chan en  7 Marzo 2013, 07:31 AM
Y tu petición es...?
Como puedo verificar si el email del nuevo usuario existe antes de enviar el codigo de activacion para no ser considerado un spammer. Tambien aqui va la segunda pregunta relacionada a esta. Una vez que registras usuarios despues de un tiempo algunos emails ya no existen entonces trato de averiguar mandandoles un email a cada uno de ellos y algunos rebotan porque ya no existen y otra vez eres considerado un spammer por tratar de enviar emails a cuentas que ya no existen.

Ori-chan

A la primera pregunta: Haz una lista en un array y cuando se registre un usuario añades su mail a la lista.


A lo otro: Tu manda el mail, si existe solo tiene que ir a la dirección que contiene el mail que tu mandas y que confirmara el registro. Si no responde en dos días, borras los datos y te olvidas.

Tambien puedes confirmar si el mail es verdadero verificando:
Que la dirección por lo menos contenga 5 caracteres (Suma de u@d.c),
Que los caracteres antes y después de la arroba (@), sean letras, números y caracteres permitidos (".""_""-", etc).
Que incluya la arroba @
Que incluya por lo menos 1 punto (usuario@dominio"."com





También te dejo este código para confirmar (No he tenido tiempo de mirarmelo, asi que no se si funciona):

Código (lenguaje) [Seleccionar]
<?php 

if (!$HTTP_POST_VARS){ 
echo 
"<html><body> 
<form action=p2.php method=POST> 
 <input type=text name=mail> 
 <input type=submit name=boton value=Aceptar> 
 </form> 
</html>"



else { 
ValidateMail($mail); 

// Step 1 -- Initialize the script 
// The first step in any script, of course, is to initialize any variables you'll be using. In this case, declare any global variables you'll be using: 

        
function ValidateMail($Email) { 
            global 
$HTTP_HOST
    
$result = array(); 

// Step 2 -- Check the e-mail address format 

// Next, you'll use our regular expression to determine if the e-mail address is properly formatted. If the e-mail address is not valid, return in error: 
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"$Email)) { 

  
$result[0]=false
        
$result[1]="$Email is not properly formatted"
        return 
$result
    } 

// Step 3 -- Find the address of the mail server 

// Now, split apart the e-mail address and use the domain name to search for a mail server you can use to further check the e-mail address. If no mail server is found, you'll just use the domain address as a mail server address: 

// Note: In the event that the optional step 4 is not followed, the else portion of this step must return in error in order for the script to function properly. 

   
list ( $Username$Domain ) = split ("@",$Email); 

   if (
getmxrr($Domain$MXHost))  { 

        
$ConnectAddress $MXHost[0]; 
    } else { 

        
$ConnectAddress $Domain

    } 

// Step 4 -- Connect to mail server and check e-mail address (OPTIONAL) 

// Finally, once you have the best guess at a mail server, it's time to open a connection and talk to the server. As I stated earlier, this step is optional. After every command you send, you'll need to read a kilobyte (1024 bytes) of data from the server. It should be more than enough to receive the complete response from the server for that command. 

// Note that you'll store the output from the server in three separate variables: $To, $From and $Out. This is done so you can check the responses after you close the connection, to see if you actually have a real e-mail address or not. 

// If the script cannot connect at all, or the e-mail address wasn't valid, set the $result array to the proper values: 

        
$Connect fsockopen $ConnectAddress25 ); 

    if (
$Connect) { 

        if (
ereg("^220"$Out fgets($Connect1024))) { 

           
fputs ($Connect"HELO $HTTP_HOST\r\n"); 
           
$Out fgets $Connect1024 ); 
           
fputs ($Connect"MAIL FROM: <{$Email}>\r\n"); 
           
$From fgets $Connect1024 ); 
           
fputs ($Connect"RCPT TO: <{$Email}>\r\n"); 
           
$To fgets ($Connect1024); 
           
fputs ($Connect"QUIT\r\n"); 
           
fclose($Connect); 
            if (!
ereg ("^250"$From) || 
!
ereg "^250"$To )) { 
               
$result[0]=false
               
$result[1]="Server rejected address"
               return 
$result

            } 
        } else { 

            
$result[0] = false
            
$result[1] = "No response from server"
            return 
$result
          } 

    }  else { 

        
$result[0]=false
        
$result[1]="Can not connect E-Mail server."
        return 
$result
    } 

// Step 5 -- Return the results 

// Finally, our last and easiest step is to return the results and finish: 
    
$result[0]=true
    
$result[1]="$Email appears to be valid."
    return 
$result
// end of function 

?>





Un saludo!!   ;D