1.0 Document id
1.1 General
1.2 What is Procmail?
1.3 Abbreviations and thanks
1.4 Version information
1.5 Document layout and maintenance
1.6 About presented recipes
1.7 Variables used in recipes
1.8 About "useless use of cat award"
2.0 UBE in Internet
2.1 Terms used and foreword
2.2 UBE strategies
2.3 UBE and bouncing message back
2.4 UBE and "I don't mind" attitude
2.5 We need a law against UBE
3.0 Anti-UBE pointers
3.1 NoCEM, CAUCE and others
3.2 General Filtering pages (more than procmail)
3.3 Junk email and spam
3.4 Comprehensive list of spammers
3.5 Misc pointers
3.6 Questionable UBE stop services
3.7 UBE related newsgroups or mailing lists
3.8 Software: the net abuse page
3.9 Software: adcomplain -- Perl junk email rport
3.10 Software: Ricochet -- Perl junk email rport
3.11 Software: yell -- perl
3.12 Software: ifile - Perl
3.13 Software: RBL lookup tool -- C
3.14 Software: mapSoN
3.15 Software: spamgard
3.16 Software: Spam Be Gone
3.17 Software: ClearMail
3.18 Software: TinyGnus - Emacs Gnus plug-in
4.0 Procmail pointers
4.1 Where to get procmail binary
4.2 Where is procmail developed
4.3 About procmail's Y2K compliance
4.4 Procmail mailing lists
4.5 Procmail recipe modules and faqs
4.6 Procmail mode for Emacs
4.7 Procmail module list
4.8 Where to get Procmail code and modules
4.9 Procmail code to filter UBE
5.0 Dry run testing
5.1 What is dry run testing
5.2 Why the From field is not okay after dry run
5.3 Getting default value of a procmail variable
6.0 Things to remember
6.1 Get the newest procmail
6.2 Csh's tilde is not supported
6.3 Be sure to write the recipe starting right
6.4 Always set SHELL
6.5 Check and set PATH
6.6 Keep the log on all the time
6.7 Never add a trailing slash for directories
6.8 Remember what term DELIVERED means
6.9 Beware putting comment in wrong place
6.10 Brace placement
6.11 Local lockfile usage
6.12 Global lockfile
6.13 Gee, where do I put all those ! * $ ??
6.14 Sending automatic reply, use X-loop header
6.15 Avoid extra shell layer (check command for SHELLMETAS)
6.16 Think what shell commands you use
6.17 Using absolute paths when calling a shell program
6.18 Disabling a recipe temporarily
6.19 Keep message backup, no matter what
6.20 Order of the procmail recipes
7.0 Procmail flags
7.1 The order of the flags
7.2 Flag w and recipe with |
7.3 Flag w, lockfile and recipe with |
7.4 Flag f and w together
7.5 Flags h and b
7.6 Flag h and sinking to /dev/null
7.7 Flag i and pipe flag f
7.8 Flag r
7.9 Flag c's background
7.10 Flag c before nested block forks a child
7.11 Flag c and understanding possible forking penalty
7.12 Flags before nested block
7.13 Flags aAeE tutorial
8.0 Matching and regexps (regular expressions)
8.1 Philosophy of abstraction in regexps
8.2 Matches are not case-sensitive
8.3 Procmail uses multiline matches
8.4 Headers are folded before matching
8.5 Improving Space-Tab syndrome
8.6 Handling exclamation character
8.7 Rules for generating a character class
8.8 Matching space at the end of condition
8.9 Beware leading backslash
8.10 Correct use of TO Macro
8.11 Procmail's regexp engine
8.12 Procmail and egrep differences
8.13 Understanding procmail's minimal matching (stingy vs. greedy)
8.14 Explaining \/ and ()\/
8.15 Explaining ^^ and ^
8.16 ANDing traditionally
8.17 ORing traditionally
8.18 ORing and score recipe
8.19 ORing by using De Morgan rules
9.0 Variables
9.1 Setting and unsetting variables
9.2 Variable initialisation and sh syntax
9.3 Testing variables
9.4 What does $\VAR mean?
9.5 Common pitfalls when using variables
9.6 Quoting: Using single or double quotes
9.7 Quoting: Passing values to an external program
9.8 Passing values from an external program
9.9 Incrementing a variable by a value N
9.10 Comparing values
9.11 Strings: How many characters are there in a given string?
9.12 Strings: How to strip trailing newline.
9.13 Strings: deriving the last N characters of a string.
9.14 Strings: Getting partial matches from a string.
9.15 Strings: Procmail string manipulation example
9.16 How to raise a flag if the message was filed
9.17 Dollar sign in condition lines.
9.18 Finding mysterious foo variable
9.19 Storing code to variable
9.20 Getting headers into a variable.
9.21 Converting value to lowercase
10.0 Suggestions and miscellaneous
10.1 Speeding up procmail
10.2 See the procmail installation's examples
10.3 Printing statistics of your incoming mail
10.4 Storing UBE mailboxes outside of quota
10.5 Using first 5-30 lines from the message
10.6 Using cat or echo in scripts?
10.7 How to run an extra shell command as a side effect?
10.8 Forcing "ok" return status from shell script
10.9 Make your own .procmailrc available to others
10.10 Using dates efficiently
10.11 Keep simple header log
10.12 Gzipping messages
10.13 Emergency stop for your .procmailrc
11.0 Scoring
11.1 Using scores by an example
11.2 Brief Score tutorial
11.3 Score's scope
11.4 Counting length of a string
11.5 Counting lines in a message (Adding Lines: header)
11.6 Determining if body is longer than header
11.7 Matching last Received header
11.8 How to add Content-Length header
11.9 Testing message size or number of lines
11.10 Counting commas with recursive includerc
12.0 Formail usage
12.1 Fetching fields with formail -x
12.2 Always use formail's -rt switch
12.3 Using -rt and rewriting the From address
12.4 Formail -rt and Resent-From header
12.5 Quoting the message
12.6 Without quoting the message
12.7 How to include headers and body to the reply message
12.8 Adding text to the beginning of message
12.9 Adding text to the end of message
12.10 Adding text before quoted message
12.11 Adding extra headers from file
12.12 Splitting digest
12.13 Mailbox: Splitting to individual files
12.14 Mailbox: Extracting all From addresses from mailbox
12.15 Mailbox: Applying procmail recipe on whole mailbox
12.16 Mailbox: run series of commands for each mail (split mailbox)
12.17 Option -D and cache
12.18 Option -D and message-id in the body
12.19 Reducing formail calls (conditionally adding fields)
12.20 Formail -A -a options
12.21 Formail -e -s options
13.0 Saving mailing list messages
13.1 Using subroutine pm-jalist.rc to detect mailing lists
13.2 Using plus addressing foo+bar@address.com
13.3 Using RFC comment trick for additional information
13.4 Simple mailing list handling
13.5 Archiving according to TO
13.6 Using Return-Path to detect mailing lists
14.0 Procmail, MIME and HTML
14.1 Mime Bibliography
14.2 Mime notes
14.3 Software to deal with mime or html
14.4 Mime content type application/ms-tnef
14.5 Trapping html mime messages
14.6 Complaining about html messages
14.7 Converting HTML body to plain text
14.8 Getting rid of unwanted mime attachments (html, vcard)
14.9 Sending contents of a html page in plain text to someone
15.0 Simple recipe examples
15.1 Saving: MH folders -- numbered messages
15.2 Saving: to monthly folders
15.3 Modifying: Filtering basics
15.4 Modifying: Squeezing empty lines around message body
15.5 Modifying: shuffling headers always to same order
15.6 Service: Auto answerer to empty messages
15.7 Service: File server -- send fileas as attachments upon request
15.8 Service: Ping responder
15.9 Service: simple vacation with procmail
15.10 Service: vacation code example
15.11 Service: Auto-forwarding
15.12 Service: forward only specific messages
15.13 Service: Making digests
15.14 Kill: killing advertisement headers and footers
15.15 Kill: simple killfile recipe with procmail
15.16 Kill: duplicate messages
15.17 Kill: spam filter with simple recipes
15.18 Kill: (un)subscribe messages
15.19 Time: Once a day cron-like job
15.20 Time: Running a recipe at a given time
15.21 Time: Triggering email and using cron
15.22 Decoding: Uudecode
15.23 Decoding: MIME
15.24 How to send commands in the message's body
15.25 Matching two words on a line, but not one
15.26 How to define personal XX macros?
15.27 How to change subject by body match
15.28 How to change Subject according to some other header
15.29 How to call program with parameters
16.0 Miscellaneous recipes
16.1 Matching valid Message-Id header
16.2 Sending two files in a message
16.3 Excessive quoting of message
16.4 Sending message to pager in chunks
16.5 Playing particular sound when message arrives
16.6 Combining multiple Original-Cc and Original-To headers
16.7 Forwarding sensitive messages in encrypted format
17.0 Procmail and PGP
17.1 Decrypt pgp messages automatically
17.2 Getkeys from keyserver
17.3 Auto grab incoming pgp keys
18.0 Includerc usage
18.1 Using: multiple rc files
18.2 Using: You can call rc file conditionally
18.3 Autoloading an rc file
18.4 Making: naming of the rc file
18.5 Making: Using namespace when saving procmail variables
18.6 Making: Public and private variables in rc file
18.7 The rules of thumb for constructing general purpose rc file
18.8 An includerc skeleton
19.0 Mailing list server
19.1 Mailing list server pointers
19.2 Simple Mailing list server
20.0 Common troubles
20.1 Procmail modes: normal, delivery, and mailfilter.
20.2 Procmail as sendmail Mlocal mail filtering device
20.3 Procmail doesn't pass 8bit characters
20.4 My ISP isn't very interested in installing procmail
20.5 My ISP has systemwide procmailrc; is this a good idea?
20.6 Procmail changes mailbox and directory permissions
20.7 Changing mbox permission during compilation to 660
20.8 The .forward file must be real file
20.9 Using .forward if procmail already is LDA
20.10 Mail should be put in the mailqueue if write fails
20.11 Qmail: how to make it work with procmail
20.12 Qmail: Procmail looks file from /var/spool/mail only
20.13 Qmail: patch to procmail 3.11pre7 to work with Maildirs
20.14 AFS: How to use Procmail when HOME is in AFS cell
20.15 Help, some idiot sent my address to 30 mailing lists
20.16 Help, Procmail beeps and prints to my console
20.17 Help, procmail dumps mail to console
20.18 Help, corrupted From_ line in mailbox
20.19 Directing user's mail to HOME instead of /var/spool/
20.20 NFS mounting /var/mail is a good way to get bad performance
20.21 I can't see the sendmail's response in LOGFILE
20.22 Compiling procmail and choosing locking scheme
20.23 Forwarding lot of mail causes heavy load
20.24 What happens to mail if MDA Procmail fails
20.25 Procmail reads entire 90Mb message into memory
20.26 Help, procmail uses occasionally huge chunk of memory
20.27 Procmail signalled out of memory in my verbose log
20.28 Variables DEFAULT and ORGMAIL
20.29 When DEFAULT cannot be mailed to
20.30 Variable DROPPRIVS
20.31 Variable HOME
20.32 Variable HOST
20.33 Variable LINEBUF
20.34 Variable LOG and LOGFILE
20.35 Variable TRAP
20.36 Variable UMASK
20.37 UMASK and permissions
20.38 Performance difference between backtick and "|" recipe
20.39 Procmail's temporary file names while writing file out
20.40 Parameter $@
20.41 Procmail variables are null terminated (detecting null string)
20.42 FROM_DAEMON TO and TO_ and case-sensitiveness
20.43 TO_ macro deciphered
20.44 TO_ macro and RFC 822
20.45 FROM_DAEMON deciphered
21.0 Technical matters
21.1 List of exit codes
21.2 List of precedence codes
21.3 Sendmail and -t
21.4 RFC822 Reply-To and formail problem with multiple recipients
21.5 Procmail and IMAP server
21.6 Machine which processes mail
21.7 Compiling procmail and MAILSPOOLHOME
22.0 Smartlist
22.1 MLM RFC
22.2 Other mailing list software
22.3 SmartList code (mailing list implementation with procmail)
22.4 Installation trouble: getparams
22.5 Accepting mail only from users in whitelist(s)
23.0 Additional procmail or MUA software
23.1 Comstat to handle multiple mailboxes
23.2 Elm and pgp support (Mutt is the successor to elm.)
23.3 MH sites
24.0 Additional procmail software for Emacs
24.1 What is Emacs
24.2 Emacs and procmail mode and Lint
24.3 Emacs and lining up backslashes
24.4 Emacs and browsing mailbox files
24.5 Emacs and live-mode.el
24.6 Emacs and font-lock.el
25.0 Procmail, Emacs and Gnus
25.1 Gnus pointers
25.2 Why use procmail with Gnus
25.3 Setting up gnus for procmail - Basics
25.4 Gnus for procmail - More gnus
25.5 Emacs and Gnus -- Fiddling with spool files
25.6 Gnus and article snippets
25.7 Emacs GNUS - POP - Procmail
26.0 RFC, Request for comments
26.1 RFCs and their jurisdiction (munged Addresses)
26.2 Comments about addresses munging
26.3 RFC and valid email address characters
26.4 RFC and login-name@fdqn
26.5 RFCs and messages signature
26.6 RFC and using MIME in usenet newsgroups
26.7 Some RFC Pointers
27.0 Introduction to E-mail Headers
27.1 To find out more about email (Resources)
27.2 Lecture by Alan Stebbens
27.3 Applied to received messages
27.4 Bcc lecture by Alan Stebbens
27.5 Bcc lecture by Philip Guenther
28.0 Message headers
28.1 What is correct From address syntax
28.2 What's that X-UIDL header?
28.3 What is that first From_ header?
28.4 Message-Id header
28.5 Received header
28.6 Return-Path
28.7 Errors-To
28.8 X-Subscription-Info
28.9 Reply-To header
28.10 Mail-Copies-To header
28.11 Mail-Followup-To and Reply-To-Personal headers
28.12 Content-Length header and From_ specification
28.13 Moral about CC copies in usenet
29.0 Other interesting code
29.1 Misc email related pointers
29.2 Expire mail pointers
29.3 Usenet News related pointers
29.4 Code: Perl Extract procmail man pages from 3.11pre7.tar.gz
29.5 Code: Sh remove matching lines from file
End