From: John Horne <J.Horne@plymouth.ac.uk>
Date: 20 May 1999

The following configuration file entries can be used to provide a 'vacation'-
style function for a mailhub which has no local users. (In our case the mail is
sent from the mailhub to users on file servers.)

The procedure is that the user's local part is added to a lookup file. A
directory is then created for the user to store a log file and a list of
sites which have received a reply already (this avoids a sender receiving
numerous vacation messages).

When a message for a vacation user is received a director lookups up the
users local part address. If found then a transport is invoked which sends
either a user supplied message or a default message back to the sender.
The default message is held in '/usr/local/exim/messages/vacation'; it simply
states that the user is away (word this to your own needs!).

When the user returns to your site simply remove them from the lookup file,
and delete the directory created for them. 

Note: The following changes were provided by Richard Gilbert of the
      University of Sheffield (R.Gilbert@sheffield.ac.uk) -
  The file lookup could be a simple text file:
     local_parts = lsearch;/usr/local/exim/vacation-users

  The lookup file may not be necessary since the 'require_files' option
  is present.

  The condition statement could be further extended:
    condition = "${if \
      and{{or{{match{$header_to:}{(?i)${local_part}@shef(field)?\\.ac\\.uk}} \
            {match{$header_cc:}{(?i)${local_part}@shef(field)?\\.ac\\.uk}}}} \
                        {!eq{$sender_address}{}} \
      {!match{$message_precedence}{(?i)bulk|junk|list}}}{yes}{no}}"

  The following exceptions could be included:
    except_senders = "^.*-request@:^owner-:^postmaster@:^.*daemon@:\
                      ^.*server@:^root@:^${local_part}@shef(field)?\\.ac\\.uk"

---------------------------------------------------------------------
The director and transport entries to use are:

Add to the transport section:

vacation_user:
  driver = autoreply;
  subject = "${if def:h_Subject: {Re: $h_Subject:} {I am on vacation}}"
  file = "${if exists {/usr/local/exim/vacation/$local_part/msg} \
                 {/usr/local/exim/vacation/$local_part/msg} \
		 {/usr/local/exim/messages/vacation}}"
  log = /usr/local/exim/vacation/${local_part}/log
  once = /usr/local/exim/vacation/${local_part}/once
  to = $reply_address
  from = $local_part
  user = exim


Add to the top of the director section:

vacation:
  unseen
  no_expn
  no_verify
  condition = "${if or {{match {$h_precedence:} {(?i)junk|bulk|list}} \
                        {eq {$sender_address} {}}} {no} {yes}}"
  local_parts = cdb;/usr/local/exim/tables/vacation-users.cdb
  require_files = /usr/local/exim/tables/vacation/$local_part/
  transport = vacation_user
  driver = smartuser;
  errors_to = postmaster@plymouth.ac.uk
 
