#!/usr/bin/perl

use strict 'vars';

if ($#ARGV != 0 && $#ARGV != 1) {
	print "Usage: $0 <directory> [go]\n";
	exit 1;
}

# specify dir with emails
chdir($ARGV[0]) || die("Cannot change directory to $ARGV[0]\n");

# path to qmail-inject
my $qmailinject = '/usr/local/qmail/bin/qmail-inject';

my ($debug) = 1;
my ($param, $soubor) = '';
my (@HLAVICKY) = ();

$debug = 0 if ($ARGV[1] eq "go");
$param .= " -n" if ($debug);

# read entire directory
opendir(DIR, ".") || die("Cannot read directory $ARGV[0]\n");

foreach $soubor (readdir(DIR)) {
	# email should be file
	next if (!-f $soubor);

	my ($obsah, $odesilatel, $prijemci) = '';		
	my ($qed) = 0;

	open(SOUBOR, "<$soubor");
	while (<SOUBOR>) {
		if (/^\*\*\* Qmail-Scanner Quarantine Envelope Details Begin \*\*\*/) {
			$qed = 1;
		} elsif ($qed == 1 && /^X-Qmail-Scanner-Mail-From: \"(.*)\" via/) {
			$odesilatel = $1;
		} elsif ($qed == 1 && /^X-Qmail-Scanner-Rcpt-To: \"([^\s]+)\"$/) {
			$prijemci = $1;
		} elsif ($qed == 0) {
			$obsah .= $_;
		}
	}
	close(SOUBOR);

	# send only if we have sender and at least one recipient
	if ($odesilatel ne "" && $prijemci ne "") {
		my ($prijemce) = '';

		# multiple recipients separated by coma
		foreach $prijemce (split(/\,/, $prijemci)) {
			$prijemce =~ s/^\s//g;
			$prijemce =~ s/\s$//g;
			$prijemce =~ s/,$//;

			# print what we are doing and do it
			print "*** Sending file $soubor: $odesilatel -> $prijemce *** ($qmailinject$param -f $odesilatel $prijemce)\n";
			open(QI, "|$qmailinject$param -f $odesilatel $prijemce") || die("Cannot execute qmail-inject\n");
			print QI $obsah;
			close(QI);
		}
	}
}

closedir(DIR);

exit;

