X-Git-Url: https://code.th-h.de/?p=mail%2Fcheckmail.git;a=blobdiff_plain;f=checkmail.pl;h=9bf82b8c303e539780fc4cdf385f3ba72cff1a03;hp=c8f9e911c484f410978af9a56e9290e55f61d752;hb=240c1264843ff6061f723369d95d4d605903ccdd;hpb=ea5d225aa40f7a9017e459c08a99ac6a17261ac4 diff --git a/checkmail.pl b/checkmail.pl index c8f9e91..9bf82b8 100644 --- a/checkmail.pl +++ b/checkmail.pl @@ -1,15 +1,15 @@ -#! /usr/bin/perl -W +#! /usr/bin/perl -w # -# checkmail Version 0.5 by Thomas Hochstein +# checkmail Version 0.6.1 by Thomas Hochstein # # This script tries to verify the deliverability of (a) mail address(es). # -# Copyright (c) 2002-2010 Thomas Hochstein +# Copyright (c) 2002-2011 Thomas Hochstein # # It can be redistributed and/or modified under the same terms under # which Perl itself is published. -our $VERSION = "0.5"; +our $VERSION = "0.6.2"; ################################# Configuration ################################ # Please fill in a working configuration! @@ -39,7 +39,7 @@ getopts('Vhqlrf:m:s:e:', \%options); # -V: display version if ($options{'V'}) { - print "$myself v $VERSION\nCopyright (c) 2010 Thomas Hochstein \n"; + print "$myself v $VERSION\nCopyright (c) 2010-2016 Thomas Hochstein \n"; print "This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself.\n"; exit(100); }; @@ -67,7 +67,7 @@ if (!$options{'f'} and !$ARGV[0]) { }; # -s / -e: override configuration -$config{'from'} = $options{'s'} if $options{'s'}; +$config{'from'} = $options{'s'} if defined($options{'s'}); $config{'helo'} = $options{'e'} if $options{'e'}; # -f: open file and read addresses to @adresses @@ -93,8 +93,9 @@ my (%targets,$curstat,$status,$log,$message); foreach (@addresses) { my $address = $_; # regexp taken from http://www.regular-expressions.info/email.html - # and escaping of "/" added two times - if ($address !~ /^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i) { + # with escaping of "/" added two times and "*" changed to "+" + # in localpart, second alternative + if ($address !~ /^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f]+)")@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i) { printf(" > Address <%s> is syntactically INVALID.\n",$address) if !($options{'q'}); $curstat = 2; } else { @@ -223,10 +224,13 @@ sub checksmtp { # connection failure? if ($success < 0) { $status = connection_failed(@message); + # reset status - the address has been checked and _is_ valid! + $status = 3; + print " > Address verification currently impossible. You'll have to try again or send a test mail ...\n" if !($options{'q'}); # verification impossible? } elsif ($success) { $status = 3; - print " > Address verificaton impossible. You'll have to send a test mail ...\n" if !($options{'q'}); + print " > Address verification impossible. You'll have to send a test mail ...\n" if !($options{'q'}); } } # if -r is not set or status was not set to 3: valid address @@ -436,6 +440,7 @@ The hostname to be used for I or I in the SMTP dialog. =item B<$config{'from'}> The sender address to be used for I while testing. +May be empty ('') to set '<>' as MAIL FROM. =back