This HowTo is from an e-mail exchange on the Sork mailing list.
The server setup is:
MTA: postfix
vacation program: gnarwl
Horde: 3.1.3
Vacation: 3.0
openldap: 2.2.13-4
First, define a postfix transport map for your specific internal autoreply domain.
For example /etc/postfix/transport:
autoreply.example.com gnarwl:
create the database:
postmap hash:transport # this should create the transport.db file
Add the transport to the postfix main.cf:
<snip> # TRANSPORT MAPS # transport_maps = hash:/etc/postfix/transport </snip>
Add a new service to /etc/postfix/master.cf:
</snip> # gnarwl autoresponder gnarwl unix - n n - - pipe flags=F user=gnarwl argv=/usr/bin/gnarwl -a $user </snip>
Add a vacation alias map (ldap-virtual_alias_maps-vacation.cf):
<snip> server_host = ldap://ldap.example.com version = 3 server_port = 389 search_base = ou=mail,... query_filter = (&(objectClass=MailAccount)(objectClass=Vacation)(mail=%s)(accountActive=TRUE)(vacationActive=TRUE)) result_attribute = mail result_filter = %s,%s@autoreply.example.com bind = no </snip>
Of course, the above needs to reflect your ldap environment...
Append the alias map to main.cf (make sure it's the first map):
<snip> virtual_alias_maps = ldap:/etc/postfix/ldap-virtual_alias_maps-vacation.cf, ldap:/etc/postfix/ldap-virtual_alias_maps.cf </snip>
after those changes, reload postfix:
postfix reload
Extend your ldap with the vacation schema and setup a test account,
example ldif:
<snip> dn:mail=vacationtest@example.com,... objectClass: top objectClass: Vacation mail: vacationtest@example.com accountActive: TRUE [... other mail specific attributes ...] vacationActive: TRUE vacationInfo:: [vacation message has to be utf-8 encoded and also base64 if necessary] </snip>
After loading the above ldif, test your postfix alias vacation lookup map:
postmap -v -q vacationtest@example.com ldap:/etc/postfix/ldap-virtual_alias_maps-vacation.cf
This should return the following if the vacation has been enabled, otherwise nothing.
<snip> vacationtest@example.com,vacationtest@example.com@autoreply.example.com </snip>
If this works so far, configure gnawrl to suit your needs (only the ldap part and the header config is included):
edit gnarwl.cfg and change the following lines:
<snip> server ldap.example.com protocol 3 base ou=mail... queryfilter (&(objectClass=MailAccount)(objectClass=Vacation)(mail=$recepient)(accountActive=TRUE)(vacationActive=TRUE)) mta /usr/sbin/sendmail $sender charset forceheader /var/lib/gnarwl/header-utf8.txt loglevel 3 </snip>
Create the file /var/lib/gnarwl/header-utf8.txt and add the content shown below:
<code>
<snip>
From: $fullname <$recepient>
To: $sender
X-mailer: GNARWL
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Subject: Re: $subject
</snip>
<code>
Finally you will have to configure the sork vacation app with the ldap driver. This should be an easy task now ;)
Remember, that you have to configure/specify the vacation related attributes.