

Dovecot LDA with Sendmail
=========================


The following describes how to configure Sendmail to use 'deliver' where 'root' permission is not granted and Dovecot runs under a single user ID.  It may need some adjustment for more typical setups.  Other assumptions are that Sendmail is configured for virtual hosting and that local-system mail delivery is not handled by 'deliver'. 
Allowing that 'sendmail.mc' has 'MAILER(procmail)dnl' included, edit 'sendmail.cf' adding these lines after the 'Mprocmail' definition: 

---%<-------------------------------------------------------------------------
######################*****##############
###   DOVECOT Mailer specification                              ###
##################*****##################
Mdovecot,   P=/usr/local/libexec/dovecot/deliver, F=DFMPhnu9,
                 S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrFromSMTP,
                 T=DNS/RFC822/X-Unix,
                 A=deliver -d $u---%<-------------------------------------------------------------------------

If you're using 'sendmail.mc' then put the lines above into a new file '/usr/share/sendmail/cf/mailer/dovecot.m4' and put 'MAILER(dovecot)' into your 'sendmail.mc' 
For non-'root' setups apply SUID and SGID permissions to 'deliver': 

---%<-------------------------------------------------------------------------
chown dovecot:dovecot /usr/local/libexec/dovecot/deliver
chmod ug+s /usr/local/libexec/dovecot/deliver---%<-------------------------------------------------------------------------

If 'sendmail' runs under a different non-'root' UID via 

 * 'define(`confRUN_AS_USER', `sendmail')dnl' 
in 'sendmail.mc', then the /env_put(t_strconcat("RESTRICT_/ lines in 'deliver.c' must be commented-out. 
Now add a 

---%<-------------------------------------------------------------------------
virtualdomain.example.com dovecot:dovecot---%<-------------------------------------------------------------------------

line for each virtual domain to 'mailertable.cf' and run 'makemap hash mailertable.db < mailertable.cf'.  The 'dovecot' (or some other random text) after the colon character is required, else 'sendmail' will fail to pass command arguments to 'deliver' correctly.  Make sure all the virtual domains are in the 'virtuserdomains' file. 
Be aware that 'sendmail' logs /stat=unknown mailer error 89/ if 'deliver' returns any unusual error.  This message is misleading and looks as though 'sendmail' were failing to find the 'deliver' executable.  It actually means that the error is unknown. As of v1.0.rc27 this should never happen. 
(This file was created from the wiki on 2007-12-11 04:42)
