Validando lista de e-mail no MX
Publicado por Fábio Berbert de Paula 30/10/2003
[ Hits: 9.583 ]
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"; } }
Apagar spam na fila do postfix por palavra
Apagar MAILER-DAEMON da fila de email
Kernel turbinado, compatibilidade em alta e debate sobre sustentabilidade: o dia no mundo Linux
Kernel turbinado e GNOME 49 dominam o giro do dia no mundo Linux
Novidades Linux: Kernel 6.17, distros em ebulição e segurança em foco
Kernel ganha novos linters Rust e distros avançam com recursos de IA
Adicionando o repositório backports no Debian 13 Trixie
Como definir um IP estático no Linux Debian
Orientação para instalar o Warsaw - módulo de proteção do Banco do Bra... (6)
systemd-resol... precisa ser reiniciado periodicamente (5)
Alguém que utilize o Warsaw do BB no Ubuntu 24.04 [RESOLVIDO] (6)
Fedora não reconhece James Donkey 102 Wireless Gaming Mouse (2)