-#! /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 <thh@inter.net>
+# Copyright (c) 2002-2011 Thomas Hochstein <thh@inter.net>
#
# 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!
# -V: display version
if ($options{'V'}) {
- print "$myself v $VERSION\nCopyright (c) 2010 Thomas Hochstein <thh\@inter.net>\n";
+ print "$myself v $VERSION\nCopyright (c) 2010-2016 Thomas Hochstein <thh\@inter.net>\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);
};
};
# -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
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 {
# 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
=item B<$config{'from'}>
The sender address to be used for I<MAIL FROM> while testing.
+May be empty ('') to set '<>' as MAIL FROM.
=back