-r: Create a really random localpart.
Add create_rand_addr(). Signed-off-by: Thomas Hochstein <thh@inter.net>
This commit is contained in:
parent
f18dc26f65
commit
9fc0e92776
29
checkmail.pl
29
checkmail.pl
|
@ -17,9 +17,7 @@ my %config=(
|
||||||
# value used for HELO/EHLO - a valid hostname you own
|
# value used for HELO/EHLO - a valid hostname you own
|
||||||
helo => 'testhost.domain.example',
|
helo => 'testhost.domain.example',
|
||||||
# value used for MAIL FROM: - a valid address under your control
|
# value used for MAIL FROM: - a valid address under your control
|
||||||
from => 'mailtest@testhost.domain.example',
|
from => 'mailtest@testhost.domain.example'
|
||||||
# a syntactically valid "random" - reliably not existing - localpart
|
|
||||||
rand => 'ZOq62fow1i'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
################################### Modules ####################################
|
################################### Modules ####################################
|
||||||
|
@ -208,7 +206,7 @@ sub checksmtp {
|
||||||
# -r: try random address (which should be guaranteed to be invalid)
|
# -r: try random address (which should be guaranteed to be invalid)
|
||||||
if ($options{'r'}) {
|
if ($options{'r'}) {
|
||||||
(undef,my $domain) = splitaddress($address);
|
(undef,my $domain) = splitaddress($address);
|
||||||
my ($success,$code,@message) = try_rcpt_to(\$smtp,$config{'rand'}.'@'.$domain,$logr);
|
my ($success,$code,@message) = try_rcpt_to(\$smtp,create_rand_addr($domain),$logr);
|
||||||
# connection failure?
|
# connection failure?
|
||||||
if ($success < 0) {
|
if ($success < 0) {
|
||||||
$status = connection_failed(@message);
|
$status = connection_failed(@message);
|
||||||
|
@ -253,6 +251,20 @@ sub splitaddress {
|
||||||
return ($lp,$domain);
|
return ($lp,$domain);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
############################### create_rand_addr ###############################
|
||||||
|
# create a random mail address
|
||||||
|
# IN : $domain: the domain part
|
||||||
|
# OUT: $address: the address
|
||||||
|
sub create_rand_addr {
|
||||||
|
my($domain)=@_;
|
||||||
|
my $allowed = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789-+_=';
|
||||||
|
my $address = '';
|
||||||
|
while (length($address) < 15) {
|
||||||
|
$address .= substr($allowed, (int(rand(length($allowed)))),1);
|
||||||
|
};
|
||||||
|
return ($address.'@'.$domain);
|
||||||
|
};
|
||||||
|
|
||||||
################################ parse_dns_reply ###############################
|
################################ parse_dns_reply ###############################
|
||||||
# parse DNS response codes and return code and description
|
# parse DNS response codes and return code and description
|
||||||
# IN : $response: a DNS response code
|
# IN : $response: a DNS response code
|
||||||
|
@ -420,11 +432,6 @@ The hostname to be used for I<HELO> or I<EHLO> in the SMTP dialog.
|
||||||
|
|
||||||
The sender address to be used for I<MAIL FROM> while testing.
|
The sender address to be used for I<MAIL FROM> while testing.
|
||||||
|
|
||||||
=item B<$config{'rand'}>
|
|
||||||
|
|
||||||
A "random" local part to construct a reliably invalid address for use
|
|
||||||
with the B<-r> option.
|
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Usage
|
=head2 Usage
|
||||||
|
@ -528,8 +535,8 @@ Log and print out the whole SMTP dialog.
|
||||||
|
|
||||||
=item B<-r> (random address)
|
=item B<-r> (random address)
|
||||||
|
|
||||||
Also try a reliably invalid address - defined in B<$config{'rand'}> -
|
Also try a reliably invalid address to catch hosts that try undermine
|
||||||
to catch hosts that try undermine address verification.
|
address verification.
|
||||||
|
|
||||||
=item B<-m> I<host> (MX to use)
|
=item B<-m> I<host> (MX to use)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue