T-PROT -- TOFU protection ========================= 1. What the hell is TOFU? As the man page says: TOFU is an abbreviation which mixes German and English words; it expands to "text oben, full-quote unten" which means "text above - full quote below" and describes the style of so many users who let their mailer or newsreader quote everything of the previous message and just add some text at the top; obviously they think that quoted text must not be changed at all. This is quite annoying as it needlessly sends a lot of data even when it is not required. Some editing of messages is desired. Please point these people to the page http://www.river.com/users/share/etiquette/edit.html Thank you! 2. What does the script do? It detects, and when demanded hides annoying parts in rfc5322 messages: TOFU, huge quoted blocks, signatures (especially when they are too long), excessive punktuation, blocks of empty lines, trailing spaces and tabs. For use inside of MTAs or MDAs it exits with appropriate libc exit codes, so annoying messages may be bounced easily. 3. For what can I use it? There are several possibilities. One is to filter your email or news messages when displaying them in your User Agent. Another is blocking annoying messages entirely from your system - using the script in some sendmail (see the man page for an example) or procmail rule, or even inside innd. 4. Give me some example! What about an example configuration for the MUA mutt(1), or the NUA slrn(1)? An example is included in the distribution. Please see the man page for further details on the activated features. 5. And what about other User Agents? I just use mutt and slrn, so I do not know how to filter messages in other User Agents. If you know how to incorporate t-prot e.g. in Gnus, please just drop me a note. ;) 6. Where did the idea come from? 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 entire inspiration for this hack came from the "TOFU protection" line of his script on many usenet postings. T-PROT AND SUPPORT FOR GETOPT::LONG =================================== Most distributions (it seems to me) are quite eager to abandon Getopt::Mixed, having Getopt::Long in the official Perl package, which does everything the former module did. Getopt::Mixed is unmaintained and marked deprecated by its author, so why keep it? The answer is simple: because it's much faster (GNU time(1) tells me 28% faster for running my complete t-prot release test suite consisting of real-life emails) than anything I could get out of Getopt::Long. Plus, from my point of view, there are no problems having a package installed that is well-tested and just works fine (you don't need updates and more new shiny features if the software just does what you want it to do). So we have the choice between easy maintainance and better performance. For the time being, I made my choice and keep sticking to Getopt::Mixed as long as it works as-is with current stable perl versions. That does not mean I don't see the merits of a well-maintained standard module, which is already available on any perl system out there. Thus, a patch is provided to allow easy migration to Getopt::Long for anyone who likes this better. I hope this solution is fine for everyone.