Rahul Sharma (Editor)

Procmail

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Developer(s)
  
Philip A. Guenther

Development status
  
Finished

Initial release
  
December 7, 1990

Operating system
  
Any Unix-like

Original author(s)
  
Stephen R. van den Berg

Stable release
  
3.22 / September 10, 2001

In email systems, procmail, a mail delivery agent (MDA), can sort incoming mail into various directories and filter out spam messages. Procmail is stable, but no longer maintained. Users who wish to use a maintained program are advised by procmail's author, Philip Guenther, to use an alternative tool.

Contents

Replacements

Procmail was an early example of a mail filtering tool and language. There are unfixed security vulnerabilities, and its last maintainers suggest using alternative tools.

Procmail is no longer maintained.

  • maildrop
  • Sieve
  • Invocation

    The procmail mail delivery agent is generally not started from the command line, but is usually invoked by mail delivery subsystems, such as a mail transport agent (like Sendmail or Postfix), or from a mail retrieval agent (such as fetchmail). This makes the mail processing event-driven. The companion tool formail allows procmail to be used in batch-processing on mail that already is in a user's mailbox.

    Paradigm

    Procmail is a data-driven programming language, similar to earlier line-oriented languages such as sed and AWK: it specifies conditions to match and actions to take on matching, in the form of "recipes". This approach has been followed by later languages such as maildrop and sieve.

    Recipes

    The procmail agent uses recipes, to determine where to deliver the various mail messages.

    Elements of a recipe

    Each recipe that procmail uses consists of:

  • mode
  • conditions
  • action
  • Recipes can be conditional or unconditional

    Recipes used by procmail can be conditional or unconditional. If the conditions are left out, the recipe is unconditional.

    Types of recipes

    Procmail has two kinds of recipes:

  • Delivering recipes
  • Non-delivering recipes
  • Processing of recipes

    Recipes are read from top to bottom. The first delivering recipe terminates the delivery process (unless the mode flag specifies otherwise).

    Conditions

    Conditions are usually extended regular expressions, although there are other forms of condition also.

    Basic operation

    The procmail tool reads mail messages given to it from standard input. The procmail tool will process the recipes before distributing the mail messages into the appropriate mailboxes.

    Other operations

    Other common operations carried out with procmail include filtering and sorting of emails into different folders according to keywords in from, to, subject, text of the mail, or sending autoreplies, but more sophisticated operations are also possible.

    Spam filtering

    A common practice is to let procmail call an external spam filter program, such as SpamAssassin. This method can allow for spam to be filtered or even deleted.

    Managing mailing lists

    The procmail developers have built a mailing list manager called SmartList on top of procmail.

    References

    Procmail Wikipedia