-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
					
				
					 1 changed files with 18 additions and 11 deletions
				
			
		
							
								
								
									
										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…
	
	Add table
		Add a link
		
	
		Reference in a new issue