#!/usr/bin/perl -w
-# $Id: t-prot,v 1.307 2010/07/01 16:02:56 jochen Exp $
+# $Id: t-prot,v 1.310 2010/07/10 19:14:36 jochen Exp $
require 5.006;
use strict;
use Fcntl qw(O_EXCL O_WRONLY O_CREAT);
use Getopt::Long qw(:config gnu_getopt no_ignore_case);
-use constant VER => '2.99';
+use constant VER => '2.100';
use constant REV => '';
-use constant REL => q$Revision: 1.307 $=~m/(\d+(?:\.\d+)+)/;
+use constant REL => q$Revision: 1.310 $=~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';
# help(): print help text and exit with appropriate exit code
sub help {
print "Usage: $0 [options]
- -A DIRECTORY ad footer directory, treat ad footers as signature
+ -A=DIRECTORY ad footer directory, treat ad footers as signature
-a remove ad footers; requires -A
--bigq[=n[,x]] remove all but x lines of quotes with more than n
lines; default is n=30 and x=10
--body input has no headers; does not work with --pgp-short;
multipart messages will not be detected
- -c[n] merge multiple blank lines to n lines (default is 2)
+ -c[=n] merge multiple blank lines to n lines (default is 2)
--check[=FLAGS] check various criteria, print error message and quit;
see man page for details
-d, --debug print notice to syslog when bouncing; requires -p
--ftr-ml enable aggressive mailing list footer matching; req. -L
--groupwise delete Novell Groupwise style TOFU
-h, --help show this short help and exit
- -i INFILE file to be read; '-' for STDIN (default)
+ -i=INFILE file to be read; '-' for STDIN (default)
-k try to fix \"Kammquotes\"
--kdiff=n max. length difference between wrapped lines; req. -k
--kmaxl=n max. line length for wrapped line; requires -k
--kminl=n min. line length for wrapped line; requires -k
- -L DIRECTORY mailing list footer directory, treat mailing list
+ -L=DIRECTORY mailing list footer directory, treat mailing list
footers as signature
-l delete mailing list footer; requires -L
--lax-security use unsafe writing method; USE ON YOUR OWN RISK!
-m delete MS style TOFU; careful: might be too aggressive
--max-lines=x maximum number of message lines
--ms-smart try to be smart with MS style TOFU; req. -Mmutt and -m
- -o OUTFILE file to be written to; '-' for STDOUT (default)
- -P MESSAGE user defined bounce message; requires -p
- -p[ADDRESS] redirect to ADDRESS if no TOFU was found
+ -o=OUTFILE file to be written to; '-' for STDOUT (default)
+ -P=MESSAGE user defined bounce message; requires -p
+ -p[=ADDRESS] redirect to ADDRESS if no TOFU was found
--pgp-move move pgp verification output to bottom; requires -Mmutt
--pgp-move-vrf move pgp output if verified and good; requires -Mmutt
--pgp-short hide non-relevant pgp key uids; requires -Mmutt
-r delete mail header lines
--reply squeeze multiple reply prefixes in subject line
- -S[n] suppress signatures with more than n lines (default $maxsig)
+ -S[=n] suppress signatures with more than n lines (default $maxsig)
-s delete signature
--sani sanitize some header fields
--sigsmax[=n] max number of sigs tolerated, no value for unlimited
'Oorspronkelijk bericht',
'Message d\'origine',
'Forwarded message',
- 'Weitergeleitete Nachricht / Forwarded Message');
+ 'Weitergeleitete Nachricht / Forwarded Message',
+ '[A-Za-z ]+ <(\w[\w.+-]*@(?:[\w.+-]+\.)+[A-Za-z]{2,})> schrieb:');
my $k = 0; # any text above?
my $tmp = 0; # flagged if inside PGP output
-.\" $Id: t-prot.1,v 1.184 2010/07/01 15:58:23 jochen Exp $
+.\" $Id: t-prot.1,v 1.185 2010/07/02 15:48:33 jochen Exp $
.\"
.TH T-PROT "1" "July 2010" "T-PROT"
.SH NAME
reject/bounce messages depending on t\-prot's result.
.SH INPUT/OUTPUT OPTIONS
.TP
-.BR "\-i" " FILE"
+.BR "\-i" "=FILE"
Defines an input file; default is '\-' i.e. STDIN.
.TP
-.BR "\-o" " FILE"
+.BR "\-o" "=FILE"
Defines the output file; default is STDOUT.
.TP
.B "\-\-body"
.sp
.IR NOTE :
This requires a directory with footer files to be given with option
-.BR "\-A" " DIRECTORY".
+.BR "\-A" "=DIRECTORY".
.TP
-.BR "\-A" " DIRECTORY"
+.BR "\-A" "=DIRECTORY"
"ad footer directory":
Defines the directory which contains the advertisement list footers (one
footer per file) which are to be tested when removing them with options
.sp
.IR NOTE :
This requires a directory with footer files to be given with option
-.BR "\-L" " DIRECTORY".
+.BR "\-L" "=DIRECTORY".
.B \-l
is not needed if
.B \-\-ftr\-ml
.sp
.IR NOTE :
This requires a directory with footer files to be given with option
-.BR "\-L" " DIRECTORY".
+.BR "\-L" "=DIRECTORY".
.TP
-.BR "\-L" " DIRECTORY"
+.BR "\-L" "=DIRECTORY"
"list footer directory":
Defines the directory which contains the mailing list footers (one footer
per file) which are to be tested when removing them with the options
Blocks of quotes with more than n lines will be shrunk to x lines.
Defaults are 30 for n and 10 for x.
.TP
-.BR "\-c" " [n]"
+.BR "\-c" "[=n]"
"compress":
Squeezes a sequence of blank lines to just n blank lines. n defaults to 2.
.TP
Subject lines with multiple reply prefixes (Re: and translations into other
languages) get squeezed to only one prefix.
.TP
-.BR "\-S" " [n]"
+.BR "\-S" "[=n]"
"supression of overlong signatures":
Signatures are to be n lines (not including the one containing dash-dash-space)
or less. If there are more, it is probably not that spirited after all.
between mailing lists or with undetected signature attempts.
.SH DETECTION OPTIONS
.TP
-.BR "\-P" " MESSAGE"
+.BR "\-P" "=MESSAGE"
"user defined bounce message for picky delivery":
You may specify your own bounce message to be returned when we try to deliver
an email and bounce it because there is TOFU inside. See
.BR "\-p" .
.TP
-.BR "\-p" " [ADDRESS]"
+.BR "\-p" "[=ADDRESS]"
"picky delivery":
If we really find some TOFU, abort with exit code
.IR EX_UNAVAILABLE .