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