Dovecot LDA with Sendmail ========================= The following describes how to configure Sendmail to use 'dovecot-lda' 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 'dovecot-lda'. 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/dovecot-lda, F=DFMPhnu9, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrFromSMTP, T=DNS/RFC822/X-Unix, A=/usr/local/libexec/dovecot/dovecot-lda -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' =================================== Another method of doing the above is by editing your 'hostname.mc' with the following three lines: ---%<------------------------------------------------------------------------- FEATURE(`local_procmail', `/usr/local/libexec/dovecot/dovecot-lda',`/usr/local/libexec/dovecot/dovecot-lda -d $u') MODIFY_MAILER_FLAGS(`LOCAL', `-f') MAILER(procmail) ---%<------------------------------------------------------------------------- After editing 'hostname.mc' with the above, be sure to remake your 'hostname.cf' file. This is confirmed to work with: * dovecot-1.0.7 * FreeBSD 6.3-RELEASE-p3 i386 * sendmail Version 8.14.2 * Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF STARTTLS TCPWRAPPERS USERDB XDEBUG =================================== 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 vmail:vmail ---%<------------------------------------------------------------------------- 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 'dovecot-lda' correctly. Make sure all the virtual domains are in the 'virtuserdomains' file. =========================================== (Fedora 14: dovecot 2.0.8 & sendmail 8.14.4) Summing up all previous experience, one may keep all virtual user accounts under one system account. The sendmail's "U=" mailer option with changing the owner of lda (to "keeper" here for instance): ---%<------------------------------------------------------------------------- -rwxr-xr-x. 1 keeper mail 14536 Dec 7 16:43 /usr/libexec/dovecot/dovecot-lda ---%<------------------------------------------------------------------------- allows to run virtual users under one system account without applying SUID. Sendmail can pass a user account to LDA with or without the domain. Passing a user name without the domain can be achievedwith S=/R= rewriting rules of the local mailer. Finally, into '/usr/share/sendmail-cf/mailer/dovecot.m4' goes the block of lines: ---%<------------------------------------------------------------------------- Mdovecot, P=/usr/libexec/dovecot/dovecot-lda, F=l59DFMPhnu, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, M=51200000, U=keeper:mail, T=DNS/RFC822/X-Unix, A=/usr/libexec/dovecot/dovecot-lda -d $u ---%<------------------------------------------------------------------------- dovecot.m4 [http://sites.google.com/site/mclroy/dovecot/dovecot-m4] can be a bit more complex. (This file was created from the wiki on 2019-06-19 12:42)