Validando lista de e-mail no MX
Publicado por Fábio Berbert de Paula 30/10/2003
[ Hits: 9.714 ]
Homepage: https://fabio.automatizando.dev
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
#!/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";
}
}
Adicionar conta de e-mail - Postfix com domínios virtuais no MySQL
Retorna apenas emails válidos com MX válidos
Retornar somente e-mails válidos
Apagar MAILER-DAEMON da fila de email
Cinnamon seria a aposta acertada frente às outras interfaces gráficas mais populares?
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Vou destruir sua infância:) (8)
Interface gráfica com problema (2)
Instalar Linux em notebook Sony Vaio VPCEG13EB (13)









