-.\" $Id: t-prot.1,v 1.132 2007/09/19 11:32:59 jochen Exp $
+.\" $Id: t-prot.1,v 1.157 2010/02/15 20:08:19 jochen Exp $
.\"
-.TH T-PROT "1" "September 2007" "T-PROT"
+.TH T-PROT "1" "February 2010" "T-PROT"
.SH NAME
-t-prot \- TOFU Protection - Display Filter for RFC 2822 messages
+t-prot \- TOFU Protection - Display Filter for RFC 5322 messages
.SH SYNOPSIS
-.BI "t-prot [" OPTIONS "]..."
+.BI "t\-prot [" OPTIONS "]..."
.SH DESCRIPTION
.PP
-This program is a filter to improve the readability of
+This program is a filter to improve the readability of internet
messages (emails and usenet posts) by *hiding* some annoying parts,
e.g. mailing list footers, signatures, and TOFU (see definition below),
as well as squeezing sequences of blank lines or punctuation.
+The program also detects TOFU or a high quoting ratio in a message (so
+you may take appropriate action, e.g. when submitting messages to a mailing
+list or a news server).
.br
The filter is written in Perl and relies on input to be a single
-message conforming to RFC 822 or its successor, RFC 2822. Messages
-conforming to RFCs 2045-2049 should be treated reasonably correct.
+message conforming to RFC 822 or its successors, RFC 2822 and RFC 5322.
+Messages conforming to RFCs 2045-2049 should be treated reasonably correct.
.PP
Already reformatted messages are handled well: the script was
initially designed to cope with the output of the MUA mutt (which
is the reason for not using standard CPAN modules for handling
messages).
.PP
-For easy usage, you can download a file to be included in your ~/.muttrc:
-.I http://www.escape.de/users/tolot/mutt/t-prot/muttrc.t-prot
-.br
-And here is an example S-Lang macro to use t-prot from within slrn:
-.I http://www.escape.de/users/tolot/mutt/t-prot/t-prot.sl
+For easy usage, you can include the file muttrc.t\-prot in your
+~/.muttrc. Also coming with the t-prot package is the example S-Lang
+macro t\-prot.sl for using t-prot from within slrn. There is a
+proof\-of\-concept filter for INN2, which you will have to adapt to
+the needs of the news site you host (please see the file for details).
.SH OPTIONS
.TP
.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
-.B -a
+.B \-a
or
-.BR --ftr-ad .
+.BR \-\-ftr\-ad .
.br
This option is also needed if you do not want signature lengths to be
counted wrong or fullquotes get undetected when an ad footer is
(which is mandatory for this option). The comparison is done by perl's
.B index()
function (please try
-.I perldoc -f index
+.I perldoc \-f index
for details).
.sp
.IR NOTE :
This option is not needed if
-.B --ftr-ad
+.B \-\-ftr\-ad
is specified.
.TP
.BR "\-\-bigq" [=n[,x]]
Defaults are 30 for n and 10 for x.
.TP
.B "\-\-body"
-Input consists just of the message's body. There are no RFC 2822 header
+Input consists just of the message's body. There are no RFC 5322 header
lines.
.IP
.IR NOTE :
-This does not work with --pgp-short, and multipart messages will not
+This does not work with \-\-pgp\-short, and multipart messages will not
be detected due to missing headers.
.TP
.B "\-c"
"compress":
-Squeezes a sequence of blank lines to two blank lines at maximum.
+Squeezes a sequence of blank lines to just two blank lines.
.TP
.BR "\-\-check" [=FLAGS]
Run checks. If successful, print an error message and quit with
.IR ratio [=n]
.br
If the quoting ratio is n or more, the message is rejected. Must be
-between 0 and 1, or else it is entirely disabled.
+between 0 and 1, or else it is entirely disabled. Default is 0.75
+(i.e., 75% of the message lines are quotes).
.TP
.B "\-d, \-\-debug"
-"debug":
Print envelope info to syslog when bouncing TOFU contaminated email.
Default syslog facility is mail.debug. Requires
.BR \-p .
be helpful with broken list servers, or even if your email provider munges
the bodies of your messages.
.br
-Works similar to --ftr-ad, just that it is intended for mailing list footers.
+Works similar to \-\-ftr\-ad, just that it is intended for mailing list footers.
.sp
.IR NOTE :
This requires a directory with footer files to be given with option
.BR "\-L" =DIRECTORY.
.TP
.B "\-\-groupwise"
-"delete Groupwise style TOFU":
Hides TOFU as produced by Novell Groupwise.
.TP
.B "\-h, \-\-help"
-"help":
Displays a short help text with a summary on all options, and exits.
.TP
.BR "\-i" =FILE
"input file":
-Defines a file for input; the default input is from '-' i.e. STDIN.
+Defines a file for input; the default input is from '\-' i.e. STDIN.
.TP
.B "\-k"
"anti Kammquote":
.IP
Please also note that enabling this option is quite a performance hit.
.TP
-.BR "\-\-kminl" =n
-Minimum line length for wrapped line detection on Kammquotes. For
-details, please see the source code.
+.BR "\-\-kdiff" =n
+Minimum length difference between two lines for wrapped line detection on
+Kammquotes. For details, please see the source code.
.br
Anyway, lower values make the algorithm more aggressive, higher values
-make Kammquotes harder to detect. Default is 65.
+make Kammquotes harder to detect. Default is 20.
.sp
Requires
.BR "\-k" .
Requires
.BR "\-k" .
.TP
-.BR "\-\-kdiff" =n
-Minimum length difference between two lines for wrapped line detection on
-Kammquotes. For details, please see the source code.
+.BR "\-\-kminl" =n
+Minimum line length for wrapped line detection on Kammquotes. For
+details, please see the source code.
.br
Anyway, lower values make the algorithm more aggressive, higher values
-make Kammquotes harder to detect. Default is 20.
+make Kammquotes harder to detect. Default is 65.
.sp
Requires
.BR "\-k" .
Hides TOFU as given by some Microsoft mailers. (You all surely know these
fullquotes beginning with
.br
-"----- Original Message -----"
+"\-\-\-\-\- Original Message \-\-\-\-\-"
.br
and some header lines...)
.TP
+.BR "\-\-max\-lines" =x
+Maximum number of lines a message may count (with headers). If the message
+is longer than x lines, the message will not be processed but printed
+unmodified. Exit status will be EX_DATAERR except when called with \-Mmutt.
+.TP
.B "\-\-ms\-smart"
Burn CPU cycles trying to be smart with MS style TOFU.
.sp
.BR "\-Mmutt" " and"
.BR "\-m" .
.TP
-.BR "\-\-max\-lines" =x
-Maximum number of lines a message body may count. If the body is longer
-than x lines, the message will not be processed but printed unmodified.
-.TP
.BR "\-o" =FILE
"output file":
Define the file to be written *to*; the default output is to STDOUT.
if all you need is t-prot's exit code). Use something like "./NONE" if you
really want to write to a file of this name.
.TP
+.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]
"picky delivery":
If we really find some TOFU, abort with exit code
put this line into your alias file and invoke
.BR newaliases :
.sp
-notofu: |"/usr/local/bin/t-prot -mt -p=user@mydomain"
+notofu: |"/usr/local/bin/t\-prot \-mt \-p=user@mydomain"
.sp
This will bounce messages for <notofu@domainname> if any TOFU is detected
inside the message, and deliver it to <user@mydomain> otherwise.
.sp
.B PLEASE be careful not to bounce messages to mailing lists!
.TP
-.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.
-.TP
.B \-\-pgp\-move
Move PGP verification output to bottom; requires
.BR "\-Mmutt" .
"rip header off":
Hides all mail header lines.
.TP
+.B "\-\-reply"
+Subject lines with multiple reply prefixes (Re: and translations into other
+languages) get squeezed to only one prefix.
+.TP
.BR "\-S" [=n]
"supression of overlong signatures":
Signatures are to be n lines (not including the one containing dash-dash-space)
conformance.)
.sp
.IR NOTE :
-The line containing "-- " ist not counted when testing for an overlong
+The line containing "\-\- " ist not counted when testing for an overlong
signature, but it is included when displaying how many lines were deleted.
.TP
.B "\-s"
Hides signatures, i.e. all lines after a "signature dashes" line,
i.e. a line with three characters: dash-dash-space (no more, no less).
.TP
+.B "\-\-sani"
+Sanitize headers "To:", "From:" and "Subject:": Quoted-printable gets
+fixed to the corresponding chars. German Umlauts are translated to their
+"ae", "oe", "ue" pendants.
+.br
+Useful e.g. for searching by subject within MUAs like Berkeley mailx.
+.TP
.BR "\-\-sigsmax" [=n]
"maximum number of tolerated signatures":
Here you can define how many signatures you accept to be treated as such.
between mailing lists or with undetected signature attempts.
.TP
.B "\-v, \-\-version"
-"version info":
Prints the current version number and release date, and exits.
.SH ENVIRONMENT
The environment variables
and
.I LANG
are read and respected when interpreting output by mutt or gnupg
-(unless they are overruled by the --locale option). T-prot's own
+(unless they are overruled by the \-\-locale option). T-prot's own
output is English regardless of any locale setting.
.SH EXIT STATUS
On program exit, t-prot uses exit codes from
There are several ways to fine-tune t-prot's performance:
.PP
Some command line options are quite grave a performance hit -- do not
-use -k and especially --ms-smart if you are content without them.
+use \-k and especially \-\-ms\-smart if you are content without them.
.PP
Checking for special footers is very costly as well. Put as few footer
files as absolutely needed in any footer directory.
.PP
.TP
.IR Q :
-I use the options -l and -L to supress mailing list footers when
+I use the options \-l and \-L to supress mailing list footers when
displaying messages in
.BR mutt (1).
This does work sometimes, but sometimes it does not: the footer is not
This might occur if the message is badly encoded, so mutt cannot resolve
all encoded characters, e.g. if you have an encoded message on a mailing
list, and majordomo appends a mailing list footer in a different encoding
-(or even plain us-ascii). "-- " simply does not match "--=20".
+(or even plain us-ascii). "\-\- " simply does not match "\-\-=20".
.br
Another problem are non-us-ascii characters. Just avoid them, and
everything should work fine.
.sp
#v+
.br
-This line is protected from being filtered by t-prot !!!!!!!
+This line is protected from being filtered by t\-prot !!!!!!!
.br
-#v-
+#v\-
.br
Text coming now is not.
.SH AUTHOR
-Written by Jochen Striepe <t-prot@tolot.escape.de>.
+Written by Jochen Striepe <t\-prot@tolot.escape.de>.
.SH COPYRIGHT
All of the documentation and software included in the t-prot releases
-is copyrighted by Jochen Striepe (except when explicitely stated otherwise).
+is copyrighted by Jochen Striepe (except when explicitly stated otherwise).
.PP
-Copyright \(co 2001-2007 Jochen Striepe. All rights reserved.
+Copyright \(co 2001-2010 Jochen Striepe. All rights reserved.
.PP
Redistribution and use, with or without modification, are permitted
provided that the following conditions are met:
.SH IDEAS AND INSPIRATION
Many good ideas, bug reports and support from (in alphabetical order) Bjoern
Buerger, Bjoern Laessig, Christian Borss, Gerfried Fuchs, Martin Neitzel, Martin
-Dietze, Ralf Doeblitz, Sven Guckes and many more (see the ChangeLog for active
-contributors). Many thanks to all of them!
+Dietze, Matthias Kilian, Ralf Doeblitz, Sven Guckes and many more (see the
+ChangeLog for active contributors). Many thanks to all of them!
.sp
Many thanks to Gerhard H. Wrodnigg who uses a TOFU protection script
in order to keep the responses to his cancel bot reasonably short. The
There is a problem when mutt gives a PGP verified or even a multipart
message to t-prot: The information where the PGP encrypted/signed data
or even attachments begin and end is plainly embedded in the text, not
-really cleanly recognizeable for t-prot. The problem should be worked
+really cleanly recognizable for t-prot. The problem should be worked
around by now, please send a bug report if it does not work for you.
.SH "REPORTING BUGS"
Please note that t-prot development happens on
.I display_filter
facility, just set display_filter to something like
.IP
-"tee ~/foobar | t-prot <your options>"
+"tee ~/foobar | t\-prot <your options>"
.PP
and include ~/foobar in the bug report -- this way we might reproduce
the bug much easier if you are using a different environment than we do.
be important to enable us reproducing the bug.
.PP
Send your bug report to
-.IR <t-prot-bugs@tolot.escape.de> .
+.IR <t\-prot\-bugs@tolot.escape.de> .
Thank you.
.SH TODO
Fix bugs (see the
.BR perl (1),
.BR aliases (5),
.sp
-RFCs 2045-2049 and 2822,
+RFCs 2045-2049 and 5322,
.sp
+.I http://freshmeat.net/articles/t\-prot/
+(a nice, solid introduction),
+.br
.I http://got.to/quote/
(German language),
.br