The challenge of customizing Dovecot

Robert Moskowitz rgm at htt-consult.com
Wed Mar 29 07:06:18 EEST 2017



On 03/22/2017 11:15 PM, Rob McAninch wrote:
>
>
> -- Rob McAninch robmcaninch.com (Sent from my iPhone)
>> On Mar 22, 2017, at 23:53, Robert Moskowitz<rgm at htt-consult.com>  wrote:
>>
>>
>>
>> On 03/22/2017 09:16 PM, Rob McAninch wrote:
>>>> On Mar 22, 2017, at 18:25, Robert Moskowitz<rgm at htt-consult.com>  wrote:
>>>>
>>>>
>>>>
>>>>> On 03/22/2017 11:36 AM, chaouche yacine wrote:
>>>>> Robert,
>>>>>
>>>>> What would be the benefit of using sed against making customized files and just copying them ? I'd probably just want to copy a working version of/etc/dovecot/  conf files instead of modifying my existing files with sed scripts (or create new ones with cat).
>>>> new options are left unaltered.  I learned this with postfix, to use postconf instead of trying to replace main.cf.
>>>>
>>>> I thought about mv old confs then cat new confs, but again, there are other things set up, and I worked at changing what needed customization, rather than wholesale replacement.
>>> Did you consider putting your customization in a local.conf which should be tried at the end? Could put whatever explanation in there you want. On a system like Debian this would more easily allow the default files to be upgraded without intervention.
>>>
>> I have not seen any reference to a local.conf.  Can you point this out to me?  I will have to see that it is maintained in Centos.  But some of the mods are additions (like plugins) to existing lines.  I would have to find out how those are processed.
> It is mentioned here
> http://wiki.dovecot.org/ConfigFile
>
> Debian Jessie has the last line of dovecot.conf as:
>
> !include_try local.conf

Finally revamped my approach to a local.conf file. I maintained an 
organization based on which conf file is 'modified' to assist review 
against later versions of Dovecot.  I had observed in developing this, 
using a guide written for Centos6 (and no telling really how old), that 
some things had changed.

Of course, I still have to test this out.  I have quotas actually 
handled in postfix and dovecot.  I can think of reasons why you do 
both.  And if you see anything here obviously wrong, I appreciate any 
review.  Will save me headaches later.  Thanks for the help so far.

Here is what I got:

cat <<EOF>/etc/dovecot/local.conf || exit 1
#     Developed on Dovecot 2.2.10

#    dovecot.conf
protocols = imap pop3 lmtp sieve
dict {
   sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}

#    10-auth.conf
!include conf.d/auth-sql.conf.ext

#    auth-sql.conf.ext
userdb {
   driver = prefetch
}

#    10-mail.conf
mail_location = maildir:/home/vmail/%d/%n
first_valid_uid = 101
first_valid_gid = 12

#    10-master.conf
service auth {
   unix_listener auth-userdb {
     mode = 0666
     user = vmail
     group = mail
   }
   unix_listener /var/spool/postfix/private/auth {
     mode = 0666
     user = postfix
     group = postfix
   }
}
service dict {
   unix_listener dict {
     mode = 0666
     user = vmail
     group = mail
   }
}

#    10-ssl.conf
ssl_cert = </etc/pki/tls/certs/$your_host_tld.crt
ssl_key = </etc/pki/tls/private/$your_host_tld.key

#   15-lda.conf
postmaster_address = postmaster@$your_domain_tld
protocol lda {
   mail_plugins = quota sieve
}
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes

#    20-imap.conf
imap_client_workarounds = delay-newmail
protocol imap {
   mail_plugins = quota imap_quota trash
}

#    20-lmtp.conf
lmtp_save_to_detail_mailbox = yes
protocol lmtp {
   mail_plugins = sieve
}

#    20-managesieve.conf
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
   service_count = 1
   process_min_avail = 0
   vsz_limit = 64M
}

#    20-pop3.conf
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
protocol pop3 {
   mail_plugins = quota
}

#    90-acl.conf
plugin {
   acl = vfile:/etc/dovecot/global-acls:cache_secs=300
}

#    90-quota.conf
plugin {
   quota = dict:user::proxy::sqlquota
   trash = /etc/dovecot/dovecot-trash.conf.ext
}

#    90-sieve.conf
plugin {
   sieve_before = /home/sieve/globalfilter.sieve
}
EOF




More information about the dovecot mailing list