Go to the first, previous, next, last section, table of contents.


Testing for personal mail

A common requirement is to distinguish between incoming personal mail and mail from a mailing list. In particular, this test is normally required for so-called `vacation messages'. The condition

     personal

is a shorthand for

     $header_to: contains $local_part@$domain and
     $header_from: does not contain $local_part@$domain and
     $header_from: does not contain server@ and
     $header_from: does not contain daemon@ and
     $header_from: does not contain root@ and
     $header_subject: does not contain "circular" and

     $header_precedence: does not contain "bulk" and
     $header_precedence: does not contain "list" and
     $header_precedence: does not contain "junk"

The variable "$local_part" contains the local part of the mail address of the user whose filter file is being run -- it is normally your login id. The "$domain" variable contains the mail domain. This condition tests for the appearance of the current user in the "To:" header, checks that the sender is not the current user or one of a number of common daemons, and checks the content of the "Subject:" and "Precedence:" headers.

If prefixes or suffixes are in use for local parts -- something which depends on the configuration of Exim (see section "Multiple personal mailboxes" below) -- then the first two tests above are also done with

${local_part_prefix}${local_part}${local_part_suffix}

instead of just `$local_part'. If the system is configured to rewrite local parts of mail addresses, for example, to rewrite `dag46' as `Dirk.Gently', then the rewritten form of the address is also used in the tests.

This example shows the use of `personal' in a filter file that is sending out vacation messages:

if personal then
  mail
   to $reply_address
   subject "Re: $h_subject:"
   file $home/vacation/message
   once $home/vacation/once
   once_repeat 10d
endif

It is quite common for people who have mail accounts on a number of different systems to forward all their mail to one system, and in this case a check for personal mail should test all their various mail addresses. To allow for this, the `personal' condition keyword can be followed by

alias <address>

any number of times, for example

personal alias smith@else.where alias jones@other.place

This causes messages containing the alias addresses to be treated as personal.


Go to the first, previous, next, last section, table of contents.