Validando lista de e-mail no MX

Publicado por Fábio Berbert de Paula 30/10/2003

[ Hits: 9.370 ]

Homepage: https://fabio.automatizando.dev

Download valida_email.pl




Este script recebe como argumento um arquivo texto contendo uma lista de e-mails, um por linha e retorna a lista de somente os e-mails válidos. Ele verifica se a sintaxe do e-mail está correta e se o usuário existe no servidor de e-mail do domínio. Forma de uso:

./valida_email.pl arquivo_lista > nova_lista.txt

  



Esconder código-fonte

#!/usr/bin/perl
# valida_email.pl
# Este script recebe como argumento um arquivo texto contendo
# uma lista de e-mails, um por linha e retorna a lista de 
# somente os e-mails válidos. Ele verifica se a sintaxe do 
# e-mail está correta e se o usuário existe no servidor de
# e-mail do domínio.
# 
# Por: Fábio Berbert de Paula <fabio@vivaolinux.com.br>
# Rio de Janeiro, 30 de Outubro de 2003.

use strict;
use Mail::Address;
use MIME::Entity;
use Tie::DNS;

my $lista = shift;
if (! -f $lista) {
   print "Use: $0 <arquivo_lista>\n";
   exit;
}

my %dns = ();
tie(%dns, 'Tie::DNS', { 'type' => 'MX' } );
my $res = Net::DNS::Resolver->new;

# converter a lista de e-mail para um hash e remover os 
# e-mails duplicados
my %lista_email = ();
open(READ, $lista);
while (<READ>) {
   chomp;
   if (!defined($lista_email{$_})) {
      $lista_email{$_} = 1;
   }
}
close(READ);

foreach my $email (keys %lista_email) {
   my @addrs = Mail::Address->parse($email);
   foreach my $addr (@addrs) {
      my $user = $addr->user;
      my $domain = $addr->host;
      if(!$user) { next;}
      if(!$domain) { next;}
      if ($user =~ m/\^/) { next;}
      if ($user =~ m/\@/) { next;}
      if ($domain =~ m/\@/) { next;}
      if ($domain =~ m/\.$/) { next;}
      if ($domain =~ m/^\./) { next;}
      if ($domain =~ m/_/) { next;}
      my $mx = $dns{$domain};
      if (!$mx) { next; };
      print $addr->format,"\n";
   }

}

Scripts recomendados

Envia e-mail com anexo

Retornar somente e-mails válidos

Remover caixas postais do Cyrus IMAP

Apagar MAILER-DAEMON da fila de email

Adicionar conta de e-mail - Postfix com domínios virtuais no MySQL


  

Comentários
[1] Comentário enviado por kidoidera em 10/12/2007 - 16:56h

vou fazer um teste ... logo postarei os resultados ...
é muito interessante no meu caso que tenho muitos e-mails para newslestter, pois assim consome menos banda no envio das mesmas.
vlw


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts