This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.
Differences between revisions 14 and 15
Revision 14 as of 2013-08-22 15:14:26
Size: 3689
Editor: proxy1
Comment: corrected directory typos ("/sendmail-cf/" instaed of "/sendmail/cf/")
Revision 15 as of 2022-03-07 15:20:25
Size: 3690
Editor: 128
Comment: "S" mailer flag is needed for sendmail to run dovecot-lda as the user specified via U= when the sender is a local user.
Deletions are marked like this. Additions are marked like this.
Line 72: Line 72:
               F=l59DFMPhnu,                F=l59DFMPhnuS,

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 achieved with 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=l59DFMPhnuS,
               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 can be a bit more complex.

None: LDA/Sendmail (last edited 2022-03-07 15:20:25 by 128)