Ihre IT                         
in guten Händen

 

Collection of scripts in various languages

 

Mail-address verification against mailserver

Perl


#!/usr/bin/perl

use strict;
use IO::Socket::INET;

sub TRUE { 1; }
sub FALSE { 0; }

if ( ($#ARGV + 1) < 3 ) {
	print "Usage: $0 < mailserver-to-check-for> < port-on-server-25-or-587> < email-adress-to-check>\n";
	exit;
}
my $server = shift;
my $port = shift;
my $address_to_check = shift;
my $answer = "";
my $SOCKET = IO::Socket::INET->new(
        PeerAddr => "$server",
        PeerPort => "$port",
        Proto   => 'tcp') || die "Error in create socket!: $!";
        
<$SOCKET>;
print $SOCKET "HELO xy\n";
<$SOCKET>;
print $SOCKET "RSET\n";
<$SOCKET>;
print $SOCKET "MAIL FROM: addrecheck\@example.org\n";
<$SOCKET>;
$answer = "";
print $SOCKET "RCPT TO: $address_to_check\n";
$answer = <$SOCKET>;
#print "Answer: $answer\n";

close $SOCKET;

exit FALSE if $answer !~ m/\s+ok/i;
exit TRUE;
	


Python


from socket import *
import sys
import string

if len(sys.argv) < 4:
	print 'usage: ', sys.argv[0], ' < mailserver-to-check-for > < port-on-server-25-or-587 > < email-adress-to-check >'
	sys.exit(False)

server = sys.argv[1]
port = int(sys.argv[2])
mail_to_check = sys.argv[3]

sSocket = socket(AF_INET, SOCK_STREAM)
sSocket.connect((server, port))
recv = sSocket.recv(1024)
#print recv

sSocket.send('HELO xy\r\n')
recv2 = sSocket.recv(1024)
#print recv2

sSocket.send('RSET\r\n')
recv1 = sSocket.recv(1024)
#print recv1

sSocket.send('MAIL FROM: addrecheck@example.org\r\n')
recv3 = sSocket.recv(1024)
#print recv3

sSocket.send('RCPT TO: ' + mail_to_check + '\r\n')
recv4 = sSocket.recv(1024)
#print recv4

recv5 = recv4.replace("\n", "").replace("\r", "")
if recv5[-2:].lower() == 'ok':
	sys.exit(True)
sys.exit(False)
	


 


Siegrist SystemLösungen
Zweierstrasse 25
8004 Zürich
  +41 44 500 7559
  PSS@ZweierNet.ch

IPv6 Certification Badge for psiegrist