Spambot.pl

From Linuxwiki
Revision as of 23:06, 4 January 2019 by Sunflower (talk | contribs) (Created page with "#!/usr/bin/perl -w use strict; use Sys::Syslog qw(:DEFAULT setlogsock); sub PipeHandler { syslog('mail|err',"Error: Mailer Pipe interrupted"); } # Enter the values...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
  1. !/usr/bin/perl -w

use strict; use Sys::Syslog qw(:DEFAULT setlogsock);

sub PipeHandler {

       syslog('mail|err',"Error: Mailer Pipe interrupted");

}

  1. Enter the values you need

my $UID=4000; my $ENV_FROM=""; my $INFOTEXT='Subject: Your mail limit is exceeded From: Mailer\-Daemon@example.de

Shut up !!

Keep your fucking spam !! I don\'t need it. '; my $MAILBIN = "/usr/sbin/sendmail"; my @MAILOPTS = ("-oi", "-tr", "$ENV_FROM"); my $SELF = "spambot.pl";

my $EX_TEMPFAIL = 75; my $EX_UNAVAILABLE = 69; my $EX_OK = 0; my $sender; my $euid = $>;

my $RAND = int(rand(99));

$SIG{PIPE} = \&PipeHandler,

setlogsock('unix'); openlog($SELF, 'ndelay,pid', 'user');

  1. Umgebung prüfen

if ( $euid != $UID ) {

       syslog('mail|err',"Fehler: ungültige UID: $>");
       exit($EX_TEMPFAIL);

}

if ( @ARGV != 1 ) {

       syslog('mail|err',"Fehler: ungültiger Aufruf (Argument erwartet)");
       exit($EX_TEMPFAIL);

} else {

       $sender = $ARGV[0];
       if ( $sender =~ /([\w\-.%]+\@[\w.-]+)/ ) {
               $sender = $1;
       } else {
               syslog('mail|err', "Fehler: Illegale Senderadresse");
               exit($EX_UNAVAILABLE);
       }

}

if (! -x $MAILBIN ) {

       syslog('mail|err', "Fehler: $MAILBIN nicht gefunden oder nicht ausführbar");
       exit($EX_TEMPFAIL); 

}

if ( $sender eq "" || $sender =~ /add_an_exception.here\@/ ) {

       exit($EX_OK);

}

  1. Precedence Header (?)

while (<STDIN>) {

       last if (/^$/);
       exit ($EX_OK) if (/^precedence:\s+(bulk|list|junk)/i);

}

my $i; for ($i,$i<$RAND,$i++) {

 my $pid = open(MAIL, "|-") || exec("$MAILBIN", @MAILOPTS);
  1. Antwort senden
 print MAIL "To: $sender\n";
 print MAIL "$INFOTEXT";
 if ( ! close(MAIL) ) {
       syslog('mail|err',"Fehler: Konnte $MAILBIN nicht aufrufen: %m");
       exit($EX_UNAVAILABLE);
 }

}

syslog('mail|info', "Sent reply to $sender"); exit($EX_OK);