#!/usr/bin/perl

$log = "/var/log/apache2/phpmail/mail.log";

my $timestamp = localtime ;

if ( @ARGV < 1 ) {
    print "No parameters!\n";
    exit 43;
}

$domain = @ARGV[0];

@userinput =  <STDIN>;

$fromline = "From: noreply\@$domain\n";

foreach $line (@userinput) {

    if ($line =~ m/^To\:/) {
	$toline=$line;
    } 

    if ($line =~ m/^From\:/) {
	$fromline=$line;
	last;
    } 

}


if (($fromline =~ m/.*$domain.*/) || ($toline =~ m/.*$domain.*/)) {
    open SEND, "| /usr/bin/msmtp -t -i -fnoreply\@$domain "  or die "MSMTP failed: $!\n";
    foreach $uiline (@userinput) {
	print SEND "$uiline";
    }
    close SEND;

    $ERR=$?;

    chomp($fromline);
    chomp($toline);
    open LOG, ">>$log"  or die "LOG failed: $!\n";

    if ($ERR == 0) {
	print LOG "$timestamp Message queued ($fromline $toline) $domain\n";
	close LOG;
    } else {
	print LOG "$timestamp ERROR: Blocked by SMTP ($fromline $toline) $domain\n";
	close LOG;
	die "MSMTP failed: $?\n";
    }

    exit 0;

}
else {

    chomp($fromline);
    chomp($toline);

    open LOG, ">>$log"  or die "LOG failed: $!\n";
    print LOG "$timestamp ERROR: Message blocked ($fromline $toline) $domain\n";
    close LOG;

    print "From: and To: domain incorrect!\n";
    exit 47;
}
