[pkg/t-prot.git] / t-prot.1
1 .\" $Id: t-prot.1,v 1.192 2015/03/26 08:59:50 jochen Exp $
2 .\"
3 .TH T-PROT "1" "March 2015" "T-PROT"
5 t-prot \- TOFU Protection - Display Filter for RFC 5322 messages
7 .BI "t\-prot [" OPTIONS "]..."
9 .PP
10 This program is a filter to improve the readability of internet
11 messages (emails and usenet posts) by *hiding* some annoying parts,
12 e.g. mailing list footers, signatures, and TOFU (see definition below),
13 as well as squeezing sequences of blank lines or punctuation.
14 The program also detects TOFU or a high quoting ratio in a message (so
15 you may take appropriate action, e.g. when submitting messages to a mailing
16 list or a news server).
17 .br
18 The filter is written in Perl and relies on input to be a single
19 message conforming to RFC 822 or its successors, RFC 2822 and RFC 5322.
20 In messages conforming to MIME (RFCs 2045-2049) t\-prot handles text/plain
21 parts, others are not touched.
22 .PP
23 Already reformatted messages are handled well: the script was
24 initially designed to cope with the output of the MUA mutt (which
25 is the reason for not using standard CPAN modules for handling
26 messages).
27 .PP
28 T\-prot offers example configuration files for mutt and its fork mutt\-kz,
29 Heirloom mailx and metamail. Also coming with the t-prot package is the
30 example S-Lang macro t\ for using t-prot from within slrn. There
31 is a proof\-of\-concept filter for INN2, which you will have to adapt
32 to the needs of the news site you host. For use with sendmail's
33 alias(5) file, please see below (the option
34 .BR "\-p" " provides an example line)."
36 .PP
37 If you do not specify any options, t\-prot does ... nothing. Every
38 feature you want must be turned on explicitly.
39 Admittedly, we have quite a number of options for t\-prot. To limit
40 confusion they are grouped into five sections: Input/Output Options,
41 Advertisement And Mailing List Footers, Filtering Options, Detection
42 Options, and Other Options. While the others should be quite clear,
43 filtering and detection might deserve a word (or two).
44 .PP
45 If you want to tune the appearance of your mail from within your MUA
46 (or news messages from within your NUA), then go for the Filtering
47 Options section.
48 .PP
49 If you want to use t\-prot to check on mails before they are submitted
50 to mailing lists, fed to your news server, or delivered by your MDA,
51 then have a peek at the Detection Options section. You may accept or
52 reject/bounce messages depending on t\-prot's result.
54 .TP
55 .BR "\-i" " FILE"
56 Defines an input file; default is '\-' i.e. STDIN.
57 .TP
58 .BR "\-o" " FILE"
59 Defines the output file; default is STDOUT.
60 .TP
61 .B "\-\-body"
62 Input consists just of the message's body. There are no RFC 5322 header
63 lines.
64 .IP
65 .IR NOTE :
66 This does not work with \-\-pgp\-short, and multipart messages will not
67 be detected due to missing headers.
68 .TP
69 .B "\-\-lax\-security"
70 Allow insecure writing method. DO NOT USE UNLESS YOU REALLY KNOW WHAT
71 YOU ARE DOING. (This ugly workaround is needed for some early mutt versions
72 and should NEVER be used as a default, otherwise it will probably turn into
73 a security issue.)
74 .sp
75 You can use this option safely to enable
76 .B "\-o"
77 /dev/null (or other files which cannot be changed with the user's
78 privileges).
79 .TP
80 .BR "\-\-max\-lines" =x
81 Maximum number of lines a message may count (with headers). If the message
82 is longer than x lines, the message will not be processed but printed
83 unmodified. Exit status will be EX_DATAERR except when called with \-Mmutt
84 or \-Mmutt\-kz.
86 .TP
87 .B "\-a"
88 "commercial signature":
89 Hides "footers" (signatures) from commercial email providers.
90 .br
91 This option compares the last lines of the message body with any
92 footer file found in the directory specified with
93 .BR "\-A" " DIRECTORY"
94 (which is mandatory for this option). The comparison is done by perl's
95 .B index()
96 function (please try
97 .I perldoc \-f index
98 for details).
99 .sp
100 .IR NOTE :
101 This option is not needed if
102 .B \-\-ftr\-ad
103 is specified.
104 .TP
105 .B "\-\-ftr\-ad"
106 "enable aggressive ad footer matching":
107 With this option enabled, t-prot makes footer detection really greedy: We
108 assume that commercial email providers aren't even frightened to append
109 changing texts *under* their ads which are appended to the message body.
110 Because these texts even have changing lengths we simply detect the
111 lines of the footer *anywhere* in the body of the message and assume that
112 everything below belongs to the footer. (Man, if life where always that
113 easy! ;)
114 .br
115 With this option even GMX ads should be easy to hide -- you buy this with
116 a slight performance hit (which is the reason this option is disabled by
117 default), and with the possibility that sometimes the algorithm is just a
118 little *too* greedy.
119 .sp
120 .IR NOTE :
121 This requires a directory with footer files to be given with option
122 .BR "\-A" " DIRECTORY".
123 .TP
124 .BR "\-A" " DIRECTORY"
125 "ad footer directory":
126 Defines the directory which contains the advertisement list footers (one
127 footer per file) which are to be tested when removing them with options
128 .B \-a
129 or
130 .BR \-\-ftr\-ad .
131 .br
132 This option is also needed if you do not want signature lengths to be
133 counted wrong or fullquotes get undetected when an ad footer is
134 appended at the bottom of the message (especially when using 
135 .B "\-S"
136 or
137 .BR "\-t" ).
138 .TP
139 .B "\-l"
140 "list signature":
141 Hides "footers" (signatures) from mailing lists. Footer detection works like the 
142 .B "\-a"
143 option.
144 .sp
145 .IR NOTE :
146 This requires a directory with footer files to be given with option
147 .BR "\-L" " DIRECTORY".
148 .B \-l
149 is not needed if
150 .B \-\-ftr\-ml
151 is specified.
152 .TP
153 .B "\-\-ftr\-ml"
154 "enable aggressive mailing list footer matching":
155 With this option enabled t-prot makes footer detection really greedy: Should
156 be helpful with broken list servers, or even if your email provider munges
157 the bodies of your messages.
158 .br
159 Works similar to \-\-ftr\-ad, just that it is intended for mailing list footers.
160 .sp
161 .IR NOTE :
162 This requires a directory with footer files to be given with option
163 .BR "\-L" " DIRECTORY".
164 .TP
165 .BR "\-L" " DIRECTORY"
166 "list footer directory":
167 Defines the directory which contains the mailing list footers (one footer
168 per file) which are to be tested when removing them with the options
169 .B \-l
170 or
171 .BR \-\-ftr\-ml .
172 .br
173 This option is also needed if you do not want signature lengths to be
174 counted wrong or fullquotes get undetected when a mailing list footer is
175 appended at the bottom of the message (especially when using 
176 .B "\-S"
177 or
178 .BR "\-t" ).
180 .TP
181 .BR "\-\-bigq" [=n[,x]]
182 "shrink big quotes":
183 Blocks of quotes with more than n lines will be shrunk to x lines.
184 Defaults are 30 for n and 10 for x.
185 .TP
186 .BR "\-c" "[n]"
187 "compress":
188 Squeezes a sequence of blank lines to just n blank lines. n defaults to 2.
189 .TP
190 .B "\-\-diff"
191 Tolerate unified diff (see 
192 .BR diff (1)
193 and
194 .BR patch (1))
195 appended after the signature (which usually makes the signature too long
196 to be valid).
197 .sp
198 Also, protect diff standard output from hiding (which would otherwise be easy
199 prey for
200 .BR "\-t" ).
201 .TP
202 .B "\-e"
203 "ellipsis":
204 Squeezes a sequence of four or more dots, exclamation marks, or question marks
205 to only three dots or marks, respectively.
206 .TP
207 .BR "\-\-fixind"
208 Fix broken quotes to adhere to RFC 3676 by removing spaces between quote
209 characters and adding a space after them.
210 .br
211 .IR NOTE :
212 This may produce false positives if spaces in between quote characters
213 are intended (thus changing the quoting level, see RFC 3676 for details).
214 .TP
215 .B "\-\-groupwise"
216 Hides TOFU as produced by Novell Groupwise.
217 .TP
218 .B "\-k"
219 "anti Kammquote":
220 Tries (not too aggressively) to fix those broken zig-zag-shaped lines
221 wrapped around by some MUAs which are known as "Kammquoting" in German.
222 .IP
223 .IR NOTE :
224 This option is considered stable by now. However, sometimes Kammquotes
225 should have been removed but weren't. Please send a bug report if this
226 happens to you (after carefully reading the BUGS and REPORTING BUGS
227 section of this man page, that is).
228 .IP
229 Please also note that enabling this option is quite a performance hit.
230 .TP
231 .BR "\-\-kdiff" =n
232 Minimum length difference between two lines for wrapped line detection on
233 Kammquotes. For details, please see the source code.
234 .br
235 Anyway, lower values make the algorithm more aggressive, higher values
236 make Kammquotes harder to detect. Default is 20.
237 .sp
238 Requires
239 .BR "\-k" .
240 .TP
241 .BR "\-\-kmaxl" =n
242 Maximum line length for wrapped line detection on Kammquotes. For
243 details, please see the source code.
244 .br
245 Anyway, higher values make the algorithm more aggressive, lower values
246 make Kammquotes harder to detect. Default is 80.
247 .sp
248 Requires
249 .BR "\-k" .
250 .TP
251 .BR "\-\-kminl" =n
252 Minimum line length for wrapped line detection on Kammquotes. For
253 details, please see the source code.
254 .br
255 Anyway, lower values make the algorithm more aggressive, higher values
256 make Kammquotes harder to detect. Default is 65.
257 .sp
258 Requires
259 .BR "\-k" .
260 .TP
261 .BR "\-\-locale" =LOCALE
262 Specify which locale to use for correct parsing of your MUA's formatting
263 of the displayed message (usually it is the locale your MUA uses). Right
264 now this option is only used when
265 .IR "\-Mmutt" " or"
266 .I "\-Mmutt\-kz"
267 is specified, but this may change in future. You need the Perl module
268 .I "Locale::gettext"
269 for this feature.
270 .sp
271 .IR NOTE :
272 If you use
273 .BR mutt ,
274 .B mutt-kz
275 or
276 .B gnupg
277 with locales, t-prot will only work correctly if you specify the corresponding
278 locale string. Alternatively, you can use the environment variables
279 .IR LC_ALL ,
281 or
282 .I LANG
283 to specify the locale string.
284 .sp
285 .IR "NOTE also" :
286 You also have to make sure you are running t-prot
287 with matching
288 .B gnupg
289 and 
290 .BR mutt " /"
291 .B "mutt\-kz"
292 versions. T-prot detects
293 .B gnupg
294 and
295 .BR mutt " /"
296 .B "mutt\-kz"
297 locales of the recent stable versions of those programs, earlier versions
298 might not work well with a recent version of t-prot.
299 .TP
300 .BR "\-M, \-\-mua" MUA
301 "mail user agent":
302 Turn on special treatment for some mail user agents. (Right now only 
303 .BR mutt (1)
304 and
305 .BR "mutt\-kz" (1)
306 are supported, but more might be added in future.)
307 .IR Caveat :
308 If your MUA is supported by this feature you must ensure t-prot makes
309 use of it when called from within your MUA to work as desired.
310 .TP
311 .B "\-m"
312 "Microsoft TOFU":
313 Hides TOFU as given by some Microsoft mailers. (You all surely know these
314 fullquotes beginning with
315 .br
316 "\-\-\-\-\- Original Message \-\-\-\-\-"
317 .br
318 and some header lines...)
319 .TP
320 .B "\-\-ms\-smart"
321 Burn CPU cycles trying to be smart with MS style TOFU: If there are PGP
322 signed parts inside the TOFU, the text still might conceal other message
323 parts and therefore should not be deleted.
324 .sp
325 Please note that this is probably just a waste of time because most
326 MS Outlook users who do produce this kind of TOFU won't care about
327 making their messages the least bit readable or even predictable. So
328 this option will probably just be interesting for mutt message hooks
329 (to activate it on demand when you
330 .BR know " the sender tries to write legible messages)."
331 .sp
332 Requires
333 .BR "\-Mmutt" " /"
334 .BR "\-Mmutt\-kz" " and"
335 .BR "\-m" .
336 .TP
337 .B \-\-pgp\-move
338 Move PGP and SSL verification output to bottom; requires
339 .BR "\-Mmutt" " /"
340 .BR "\-Mmutt\-kz" .
341 .TP
342 .B \-\-pgp\-move\-vrf
343 Move PGP and SSL verification output to bottom only if verification shows a
344 good signature and the signature could be verified as authentic (using a
345 trust path). If there is any problem with the signature, the PGP output
346 should not be moved so the user is more likely to notice. Requires
347 .BR "\-Mmutt" " /"
348 .BR "\-Mmutt\-kz" .
349 .sp
350 .IR NOTE :
351 If gpg is terminated before finished (e.g. hitting Ctrl-C, or using
352 .IR kill (1)),
353 we cannot always detect if the check was interrupted. Though t-prot tries
354 to be smart, there will be false positives.
355 .TP
356 .B \-\-pgp\-short
357 Hide non-relevant PGP key uids; requires
358 .BR "\-Mmutt" " /"
359 .BR "\-Mmutt\-kz" .
360 .TP
361 .B "\-r"
362 "rip header off":
363 Hides all mail header lines.
364 .TP
365 .B "\-\-reply"
366 Subject lines with multiple reply prefixes (Re: and translations into other
367 languages) get squeezed to only one prefix.
368 .TP
369 .BR "\-S" "[n]"
370 "suppression of overlong signatures":
371 Signatures are to be n lines (not including the one containing dash-dash-space)
372 or less. If there are more, it is probably not that spirited after all.
373 So with this option you trade it for a
374 .B truely
375 nice line.
376 .br
377 If no n is given, default is 4. (We do not recommend using a value other
378 than 4. Consider this old-fashioned, but we actually do *like* RFC
379 conformance.)
380 .sp
381 .IR NOTE :
382 The line containing "\-\- " ist not counted when testing for an overlong
383 signature, but it is included when displaying how many lines were deleted.
384 .TP
385 .B "\-s"
386 "signature deletion":
387 Hides signatures, i.e. all lines after a "signature dashes" line,
388 i.e. a line with three characters: dash-dash-space (no more, no less).
389 .TP
390 .B "\-\-sani"
391 Sanitize headers "To:", "From:" and "Subject:": Quoted-printable gets
392 fixed to the corresponding chars. German Umlauts are translated to their
393 "ae", "oe", "ue" pendants.
394 .br
395 Useful e.g. for searching by subject within MUAs like Berkeley mailx.
396 .TP
397 .BR "\-\-sigsmax" [=n]
398 "maximum number of tolerated signatures":
399 Here you can define how many signatures you accept to be treated as such.
400 (Most significant behaviour is when microsoft style quotes are removed.
401 Experts please see the code for the more subtle implications of this
402 option.)
403 .br
404 Leave empty or specify zero to have an unlimited number of sigs. 
405 Default is 1.
406 .TP
407 .B "\-\-spass"
408 "SpamAssassin workaround":
409 SpamAssassin (available at
410 .IR ") often is configured that it adds some"
411 lines to the message body containing information about the spam criteria
412 which were found matching for the message. This option enables an extra
413 test to avoid false positives for Microsoft style TOFU on such messages.
414 .TP
415 .B "\-t"
416 "TOFU deletion":
417 Hides "traditional style" TOFU, where each line begins with the
418 indent string ">".
419 .TP
420 .B "\-w"
421 "whitespace deletion":
422 Hides trailing whitespace (sequences of space and tab).
423 CAVEAT: This may lead to interesting effects with crossposts
424 between mailing lists or with undetected signature attempts.
426 .TP
427 .BR "\-P" " MESSAGE"
428 "user defined bounce message for picky delivery": 
429 You may specify your own bounce message to be returned when we try to deliver
430 an email and bounce it because there is TOFU inside. See
431 .BR "\-p" .
432 .TP
433 .BR "\-p" " [ADDRESS]"
434 "picky delivery":
435 If we really find some TOFU, abort with exit code 
437 Otherwise redirect the message to ADDRESS if given.
438 .sp
439 Intended for use from within mail delivery agents (MDAs) or mail transport 
440 agents (MTAs), or even from within INN, so the message bounces if TOFU is
441 detected, and does not get on *your* nerves. :) 
442 .sp
443 As an example for usage with
444 .BR sendmail ,
445 put this line into your alias file and invoke
446 .BR newaliases :
447 .sp
448 notofu: |"/usr/local/bin/t\-prot \-mt \-p=user@mydomain"
449 .sp
450 This will bounce messages for <notofu@domainname> if any TOFU is detected
451 inside the message, and deliver it to <user@mydomain> otherwise.
452 .I Note
453 that TOFU is only detected if you specify
454 .B "\-t"
455 respectively
456 .BR "\-m" .
457 .sp
458 .B PLEASE be careful not to bounce messages to mailing lists!
459 .TP
460 .BR "\-\-check" [=FLAGS]
461 Run checks. If successful, print an error message and quit with
462 an appropriate exit code. Useful e.g. for rejecting messages from
463 within INN2.
464 .IP
465 Flags are separated by commas (no whitespaces), and can be the
466 following (right now just one flag):
467 .IP
468 .IR ratio [=n]
469 .br
470 If the quoting ratio is n or more, the message is rejected. Must be
471 between 0 and 1, or else it is entirely disabled. Default is 0.75
472 (i.e., 75% of the message lines are quotes).
473 .TP
474 .B "\-d, \-\-debug"
475 Print envelope info to syslog when bouncing TOFU contaminated email.
476 Default syslog facility is mail.debug. Requires
477 .BR \-p .
479 .TP
480 .B "\-h, \-\-help"
481 Displays a short help text with a summary on all options, and exits.
482 .TP
483 .B "\-v, \-\-version"
484 Prints the current version number and exits.
486 The environment variables
487 .IR LC_ALL ,
489 and
490 .I LANG
491 are read and respected when interpreting output by mutt / mutt\-kz or gnupg
492 (unless they are overruled by the \-\-locale option). T-prot's own
493 output is English regardless of any locale setting.
495 On program exit, t-prot uses exit codes from
496 .I /usr/include/sysexits.h
497 and thus behaves in a manner that sendmail and others understand when
498 calling t-prot.
499 .sp
500 Currently, the codes used are
501 .RS 20
502 .PD 0
503 .TP
504 EX_OK
505 .TP
507 .TP
509 .TP
511 .TP
513 .TP
515 .PD
516 .RE
517 .sp
518 If, however, perl fails to compile and execute t-prot, perl's normal
519 exit codes will be returned.
520 .SH TOFU?
521 TOFU is an abbreviation which mixes German and English words;
522 it expands to "text oben, full-quote unten" which means
523 "text above - full quote below" and describes the style of so
524 many users who let their mailer or newsreader quote everything
525 of the previous message and just add some text at the top;
526 obviously they think that quoted text must not be changed at all.
527 This is quite annoying as it needlessly sends a lot of data
528 even when it is not required. Some editing of messages is desired.
529 Please point these people to the page 
530 .I
531 - thank you!
533 There are several ways to fine-tune t-prot's performance:
534 .PP
535 Some command line options are quite grave a performance hit -- do not
536 use \-k and especially \-\-ms\-smart if you are content without them.
537 .PP
538 Checking for special footers is very costly as well. Put as few footer
539 files as absolutely needed in any footer directory.
540 .PP
541 All PGP related options are eating up lots of CPU time. Try to avoid them
542 on unsigned and unencrypted messages.
543 .PP
544 When calling t-prot from within mutt (or mutt\-kz), you might use mutt's
545 folder-hook and message-hook facilities to turn options on only when
546 needed, e.g. to set up a different footer directory for each mailing list
547 folder.
549 .TP
550 .IR Q :
551 I want to make my mailing list footer files match more different mailing
552 list footers. Can I use regular expressions, or how can I accomplish
553 that?
554 .TP
555 .IR A :
556 Nope, regexp's do not work here. The comparison is made by the perl
557 builtin
558 .IR index ()
559 function (see 
560 .B perldoc
561 for more detailed info), so you must exactly match the beginning of the
562 line. The longer the line you specify, the more precise the match; if
563 your line is empty you match unconditionally.
564 .PP
565 .TP
566 .IR Q :
567 I use the options \-l and \-L to suppress mailing list footers when
568 displaying messages in
569 .BR mutt (1).
570 This does work sometimes, but sometimes it does not: the footer is not
571 detected, and therefore full quotes are not deleted and signatures are
572 detected as too long (which they aren't).
573 .TP
574 .IR A :
575 This might occur if the message is badly encoded, so mutt cannot resolve
576 all encoded characters, e.g. if you have an encoded message on a mailing
577 list, and majordomo appends a mailing list footer in a different encoding
578 (or even plain us-ascii). "\-\- " simply does not match "\-\-=20".
579 .br
580 Another problem are non-us-ascii characters. Just avoid them, and 
581 everything should work fine.
582 .br
583 See the preceding Q+A for a solution.
584 .PP
585 .TP
586 .IR Q :
587 I want to write a message which contains parts that should *not* be 
588 deleted even when filtered with t-prot. Is this possible?
589 .TP
590 .IR A :
591 Yes, but please do not spread word of it. Make unobstrusive use of the
592 .I
593 verbatim
594 instruction:
595 .sp
596 #v+
597 .br
598 This line is protected from being filtered by t\-prot !!!!!!!
599 .br
600 #v\-
601 .br
602 Text coming now is not.
604 Written by Jochen Striepe <t\>.
606 All of the documentation and software included in the t-prot releases
607 is copyrighted by Jochen Striepe (except when explicitly stated otherwise).
608 .PP
609 Copyright \(co 2001-2015 Jochen Striepe. All rights reserved.                     
610 .PP
611 Redistribution and use, with or without modification, are permitted
612 provided that the following conditions are met:
613 .PP
614 1. Redistributions of source code must retain the above copyright notice,
615 this list of conditions and the following disclaimer.
616 .PP
617 2. All advertising materials mentioning features or use of this software
618 must display the following acknowledgement:
619 .PP
620   This product includes software developed by Jochen Striepe and others.
621 .PP
622 3. Neither the name of the author nor the names of any contributors may
623 be used to endorse or promote products derived from this software without
624 specific prior written permission.
625 .PP
637 Many good ideas, bug reports and support from (in alphabetical order) Bjoern
638 Buerger, Bjoern Laessig, Christian Borss, Gerfried Fuchs, Martin Neitzel, Martin
639 Dietze, Matthias Kilian, Ralf Doeblitz, Sven Guckes and many more (see the
640 ChangeLog for active contributors). Many thanks to all of them!
641 .sp
642 Many thanks to Gerhard H. Wrodnigg who uses a TOFU protection script
643 in order to keep the responses to his cancel bot reasonably short.  The
644 entire inspiration for this hack came from the "TOFU protection" line of
645 his script on many usenet postings.
647 You can get the latest version from
648 .IR .
649 .SH BUGS
650 There is a problem when mutt gives a PGP verified or even a multipart
651 message to t-prot: The information where the PGP encrypted/signed data
652 or even attachments begin and end is plainly embedded in the text, not
653 really cleanly recognizable for t-prot. The problem should be worked
654 around by now, please send a bug report if it does not work for you.
656 Please note that t-prot development happens on
657 .BR "current stable perl versions only" . 
658 If you do run t-prot on earlier (or unstable) perl versions, you might
659 encounter perl compiler bugs (or funny t-prot behaviour). One solution
660 is to upgrade your perl, another is simply to write a bug report. If
661 you do not run a current perl version, please include this information
662 in your bug report.
663 .PP
664 Please do
665 .I not
666 report a bug if
667 .br
668  * you found it in the TODO file coming with the distribution. We do
669 know those and try to fix them as soon as possible.
670 .br
671  * you have an old t-prot version. If you encounter a problem, first
672 see if there is a new t-prot version which fixes the issue. If you
673 upgraded to the latest version and it still occurs, a bug report is
674 just great.
675 .PP
676 If you noticed a bug when processing a message and want to provide the
677 t-prot team with some useful info, please:
678 .br
679  * if invoking t-prot by mutt's
680 .I display_filter
681 facility, just set display_filter to something like
682 .IP
683 "tee ~/foobar | t\-prot <your options>"
684 .PP
685 and include ~/foobar in the bug report -- this way we might reproduce
686 the bug much easier if you are using a different environment than we do.
687 .br
688  * provide information on what command line options you use t-prot
689 with, what perl version t-prot runs on your system, and what else might
690 be important to enable us reproducing the bug.
691 .PP
692 Send your bug report to 
693 .IR <t\-prot\> .
694 Thank you.
695 .SH TODO
696 Fix bugs (see the 
697 .I BUGS
698 section). Beside that, all main features should be implemented by now.
699 See the TODO file for more information.
700 .SH "SEE ALSO"
701 .BR mutt (1),
702 .BR mutt\-kz (1),
703 .BR muttrc (5)
704 and the part about "display_filter", 
705 .BR perl (1),
706 .BR aliases (5),
707 .sp
708 RFCs 2045-2049, 3676 and 5322,
709 .sp
710 .I\-prot/
711 (a nice, solid introduction),
712 .br
713 .I
714 (German language),
715 .br
716 .I
717 (the Learn To Edit Messages HowTo has found a new home).