Exim Filter Specification - Testing for personal mail

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 26 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 in any places where the local address is tested to be treated as personal.

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