Spambot.pl: Difference between revisions
Jump to navigation
Jump to search
(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...") |
No edit summary |
||
Line 1: | Line 1: | ||
<nowiki> |
|||
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
||
Line 85: | Line 86: | ||
syslog('mail|info', "Sent reply to $sender"); |
syslog('mail|info', "Sent reply to $sender"); |
||
exit($EX_OK); |
exit($EX_OK); |
||
</nowiki> |
Latest revision as of 23:09, 4 January 2019
#!/usr/bin/perl -w use strict; use Sys::Syslog qw(:DEFAULT setlogsock); sub PipeHandler { syslog('mail|err',"Error: Mailer Pipe interrupted"); } # 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'); # 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); } # 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); # 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);