I am trying to configure my Dovecot installation to provide Vacation/Out-of-the-office emails using the Sieve plugin. My setup is a little bit peculiar:
Internet Internet
| ^
V |
Provider's POP3 server Provider's SMTP server | ^ V | -------------- getmail | my server | | V | Dovecot LDA ---> Sieve/vacation -----> Exim | V Dovecot my server ---------------
Sorry for the ASCII art above - I thought it would be quicker than trying to explain.
The trouble I'm having is getting the Dovecot LDA to send successfully through the local exim instance out-of-office replies back to the provider's smtp server - when receiving fresh email from the provider (through getmail). Dovecot LDA tries to send the replies - but Exim freezes them because they don't contain the sender data in the format Exim wants it. Exim can either receive sender info:
- On the command line, after the "-f" command line switch (but only when called by root or other users passed under "trusted_users" in exim.conf).
- In the header of the email - in the "From:" field - but only, apparently, if it was called with the "-t" switch. Full exim command line documentation here: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command...
I can't figure out what command line options the Dovecot LDA is using when calling exim. I also couldn't find a way to get Dovecot LDA to pass extra options to exim, when trying to send email. The exim log has the following:
2013-05-20 15:35:15 1UeRBB-0001xc-Ar Frozen (message created with -f <>)
I've inspected the frozen message - and it has the correct sender in the "From:" field - but it seems that exim isn't using that, because it wasn't called with the "-t" option.
In dovecot.conf, I have the following for Dovecot LDA and sieve:
protocols = imap sieve
protocol lda { log_path = /var/log/dovecot/dovecot-deliver.log info_log_path = /var/log/dovecot/dovecot-deliver-info.log postmaster_address = admin@mydomain.co.uk hostname = mydomain.co.uk mail_plugins = sieve mail_plugin_dir = /usr/lib/dovecot sendmail_path = /usr/sbin/exim }
service managesieve-login { inet_listener sieve { port = 4190 } }
plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/sieve }
Dovecot LDA is called by getmail using the vmail user - and using the same user it is trying to call exim to deliver the out-of-office replies.
I'm using Dovecot 2.2.1 with pigeonhole 0.4.0.
I can post the rest of dovecot.conf if it would help. I've read through the stuff at dovecot.org - but all the Dovecot LDA and exim info refers to Exim passing email to Dovecot using Dovecot LDA - not Dovecot LDA sending email out using Exim.