-r: Create a really random localpart.

Add create_rand_addr().

Signed-off-by: Thomas Hochstein <thh@inter.net>
This commit is contained in:
Thomas Hochstein 2010-06-16 21:51:50 +02:00
parent f18dc26f65
commit 9fc0e92776

View file

@ -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)