#!/usr/bin/perl -w
-# $Id: t-prot,v 1.261 2009/08/24 20:32:11 jochen Exp $
+# $Id: t-prot,v 1.267 2009/12/30 21:34:16 jochen Exp $
require 5.006;
use strict;
use Fcntl qw(O_EXCL O_WRONLY O_CREAT);
use Getopt::Mixed qw(nextOption);
-use constant VER => '2.7';
+use constant VER => '2.10';
use constant REV => '';
-use constant REL => q$Revision: 1.261 $=~m/(\d+(?:\.\d+)+)/;
+use constant REL => q$Revision: 1.267 $=~m/(\d+(?:\.\d+)+)/;
# MTA expecting mail on STDIN
# (you might have to adjust this if using a different MTA)
use constant SENDMAIL => '/usr/sbin/sendmail -oi';
my (@ads, @hdr, @bo1, @bo2, @ftr, @sig, @vrb, @att) =
((), (), (), (), (), (), (), (), ());
- # First, remove and store lines we might need later...
+ # Remove and store lines we might need later...
# Remove headers:
if (!$nohdr) {
for ($x=0; $x<$#$lines; $x++) { if (@$lines[$x] =~ /^$/) { last; }; }
-
- # check body length and stop processing silently if msg is too long:
- if ((defined $maxlines) && (@$lines-$x > $maxlines)) {
- return;
- }
-
@hdr = @$lines[0..$x];
splice(@$lines, 0, $x+1);
}
- elsif ((defined $maxlines) && (@$lines > $maxlines)) {
- # check body length and stop processing silently if msg is too long:
- return;
- }
# remember the original body lines count
my $linecount = scalar(@$lines);
my @message = <IN>;
close IN;
+# First, check msg length and stop processing if msg is too long:
+if ((defined $maxlines) && (@message > $maxlines)) {
+ if ($ofile ne 'NONE') {
+ write_msg(($mda?'|'.SENDMAIL." $mda":">$ofile"), \@message);
+ }
+ exit(EX_DATAERR);
+}
+
# this should be self-explanatory:
process_msg(\@message);