#!/usr/local/bin/perl

# dont people who send you read receipts annoy the heck out of you?
# let's annoy them.

use Net::SMTP;

while(<>){
	last if(/^$/); # only want header
	if(/^Disposition-Notification-To\s?:\s?.*[^a-z0-9_\.\+\-\=]+(([a-z0-9_\.\+\-\=])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4}))+/i){
		# regex not quite rfc 822, but, eh.. <shrugging shoulders>
		$email = $1;
	}elsif(/^subject\s?:\s?(.+)/i){
		$subject = $1;
	}elsif(/^List-/i || /^Mailing-List/i){
		$list = 1;
	}elsif((!/^\s/) && ((/^[^:\s]*\s/) || (!/:/))){
		exit; # must be out of header
	}
	last if(defined($email) && defined($subject) && defined($list));
}

if(defined($email) && defined($list)){
	warn "sending annoyance notice to ${email}\n";
	my $times = 11;
	if($email eq 'winan888@cbn.net.id'){
		$times = 31;
	}   #because he just doesnt seem to care about 11 ;)
	for($n ; $n < $times ; $n++){
		my $smtp = Net::SMTP->new('localhost');
		if(defined($smtp)){
			chomp(my $date=`date`);
			$smtp->mail("");
			$smtp->recipient($email);
			$smtp->data();
			$smtp->datasend("Date: ${date}\n");
			$smtp->datasend("Precedence: bulk\n");
			$smtp->datasend("Disposition-Notification-To: ${email}\n");
			$smtp->datasend("From: Annoyed User <${email}>\n");
			$smtp->datasend("To: ${email}\n");
			$smtp->datasend("Subject: Re: ${subject}\n\n");
			$smtp->datasend("You asked for a Read Receipt on a public mailing list.\n");
			$smtp->datasend("This behavior is highly rude; I insist you desist.\n");
			$smtp->datasend("See how annoying that is?\n");
			$smtp->dataend();
		}else{
			die "could not connect to smtp server on localhost\n";
		}
	}
}
