Man Linux: Main Page and Category List


       filter - filter incoming messages before adding to mailbox


       filter [-q] [-v] [-l] [-o output] [-f rules-file] [-m mailbox]
       filter [-n] [-f rules-file]
       filter [-r] [-o output] [-f rules-file]
       filter [-c] [-s] [-o output] [-f rules-file]
       filter [-c] [-S] [-o output] [-f rules-file]


       In  brief,  filter  is  designed  to  sort  incoming mail based on user
       preferences for various recognized  headers.   It  logs  a  summary  of
       messages  filtered  to  a  logfile.   See  the  USAGE  section for full


       The flags the filter program understands are;

       -c        Clear logs.  If this flag is used,  the  log  files  will  be
                 removed  after  being  summarized by either "-s" or "-S" (see

       -f rules-file
                 Get  rules   from   specified   file   instead   of   default

       -l        Log  actions  only.   Do  not  log  information  about mailed

       -n        Not really.  Output what would happen if given  message  from
                 standard input, but don’t actually do anything with it.

       -o file   Redirect  stdout  messages  to  the specified file or device.
                 Logging of filter actions is not affected.  (This is added to
                 more  gracefully  deal with changes in the file system (since
                 sendmail is quite picky about modes of files being redirected

       -m mailbox
                 Override   the   compiled   in  definition  of  your  primary
                 ’mailbox’.  This is disabled if filter is setgid.

       -q        Quiet.  Do not log filtering actions.

       -r        Rules.  List the rules currently being used.

       -s        Summarize.  List a summary of the message filtering log.

       -S        This is the same  as  ‘-s’  but  includes  message-by-message
                 information additionally.

       -v        Verbose.   Give  output  on  standard  out  for  each message
                 filtered.  May be useful to set output to ‘‘/dev/console’’ or
                 other logging device.  (see -o).


       Filter uses a set of selection rules to process incoming mail messages.
       These rules are normally read in  from  $HOME/.filter/filter-rules.  As
       soon  as a rule matches something about the message, that rule is used,
       and no further action is taken.  The general format for a rule is;

               if  (expression)  then  action

       where expression is:

               expression  ::=  { not }  condition  { and expression }

               condition  ::=  field  =  stringvalue
                          ::=  field  != stringvalue
                          ::=  lines  relop  numvalue
       or                 ::=  always

       These further break down as:

               field  ::=  from  |  subject  |  alphasubject  |  to  |  lines | sender

               relop  ::=  =  |  !=  |  <  |  >  |  <=  |  >=

               stringvalue  ::=  any  quoted  string

               numvalue  ::=  any  integer  value

       Note: alphasubject is a transformed version of the subject line,  where
       only  alpha  chars are preserved, and they are forced to lower case. It
       is then simpler to use a regular expression match across a wide variety
       of similar subjects.

       from matches any and all of the following headers:
         "From " From: Reply-To: Sender:

       Action can be any of:

           delete              (ignore this message; throw it away)
           save  foldername    (put in ’foldername’ for later)
           savecopy foldername (save a copy AND put in my inbox)
           execute  command    (pipe message to ’command’)
           executec command    (copy to inbox, AND pipe to ’command’)
           forward  address    (forward this message)
           forwardc address    (forward this message, AND copy to inbox)
           resend   address    (resend to new addr without change)
           leave               (just put it in my inbox)
           bounce              (say there’s no such user)

       An example of a rules file would be:

           # I’ll read this stuff later when I feel like it
           if (from = "") then save "~/Mail/mailinglist"
           # This mailing list actually has an x-mailing-list header
           if (mailinglist = "") then save "~/Mail/otherlist"
           # auto-archive this project’s email, AND put in my current mailbox
           if (subject = "strange project") then savecopy "~/Mail/proj-archive"
           # If "make money" appears ANYWHERE in subject, upper/lowercase,
           # delete the lousy spam
           if ( subject = "make money" ) then delete
           # This person no longer shares this virtual mailbox with me.
           # Resend visibly as a "forwarded" message.
           if (to = "partner") then forward ""
           # If email for an old address comes to me, resend to new one.
           # Note that the "envelope" will show my address, but the
           # normal headers will not
           if ( to = "old_address" ) then resend"
           # Special virtual headerline derived from normal subject line
           # catches "multiple!!!wor+ds**here"
           if ( alphasubject = "multiplewordshere" ) then delete
           # If email for a special address comes to me, resend through
           # a non-standard "special" mailer
           if ( to = "special_address" ) then exec "/usr/lib/mailer special@addr"
           # The rules file doesnt really need parentheses. Or even the ’if’.
           # They are just traditional.
           subject = "silly" then bounce

       Note that all filenames must be double-quoted

       For  further  information  about the rules language, please see The Elm
       Filter Guide.


       Philip Brown


       $HOME/.filter/filter-rules Default rules file
       $HOME/.filter/filterlog    A log of what has been done
       $HOME/.filter/filtersum    A summary of what has been done
       $MAIL                   IF you set this var, defines your
                               default mailbox
       /etc/passwd             Used to get users home directory


       The Elm Filter Guide (distributed with the source code)
       mail(1), mailx(1), sendmail(1,8)


       Could be smarter about pattern matching. Message body checks  might  be
       nice too.

       Please  note  that  this  was  historically  bundled  with the elm mail
       reader, but now can be found at



       Copyright 1988-1992 by The USENET Community Trust
       Derived from Elm 2.0,  Copyright 1986, 1987 by Dave Taylor