############### # General ############### log_path = /dev/stderr protocols = imap pop3 lmtp sieve postmaster_address = {{ POSTMASTER }}@{{ DOMAIN }} hostname = {{ HOSTNAMES.split(",")[0] }} submission_host = {{ FRONT_ADDRESS }} service dict { unix_listener dict { group = mail mode = 0660 } } dict { sieve = sqlite:/etc/dovecot/pigeonhole-sieve.dict } ############### # Full-text search ############### mail_plugins = $mail_plugins fts fts_lucene plugin { fts = lucene fts_autoindex = yes fts_autoindex_exclude = \Junk fts_lucene = whitespace_chars=@. } ############### # Mailboxes ############### first_valid_gid = 8 first_valid_uid = 8 mail_location = maildir:/mail/%u mail_home = /mail/%u mail_uid = mail mail_gid = mail mail_privileged_group = mail mail_access_groups = mail maildir_stat_dirs = yes mailbox_list_index = yes mail_vsize_bg_after_count = 100 mail_plugins = $mail_plugins quota quota_clone namespace inbox { inbox = yes mailbox Trash { auto = subscribe special_use = \Trash } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Sent { auto = subscribe special_use = \Sent } mailbox Junk { auto = subscribe special_use = \Junk } } plugin { quota = count:User quota quota_vsizes = yes quota_clone_dict = redis:host={{ REDIS_ADDRESS }}:port=6379:db=1 } ############### # Authentication ############### auth_mechanisms = plain login disable_plaintext_auth = no ssl_protocols = !SSLv3 passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } service auth { user = dovecot unix_listener auth-userdb { } } service auth-worker { unix_listener auth-worker { user = dovecot group = mail mode = 0660 } user = mail } ############### # IMAP & POP ############### protocol imap { mail_plugins = $mail_plugins imap_quota imap_sieve } protocol pop3 { } service imap-login { inet_listener imap { port = 143 } } ############### # Delivery ############### protocol lmtp { mail_plugins = $mail_plugins sieve recipient_delimiter = {{ RECIPIENT_DELIMITER }} } service lmtp { inet_listener lmtp { port = 2525 } } ############### # Filtering ############### service managesieve-login { inet_listener sieve { port = 4190 } } service managesieve { } plugin { sieve = file:~/sieve;active=~/.dovecot.sieve sieve_plugins = sieve_extdata sieve_imapsieve sieve_extprograms sieve_global_extensions = +vnd.dovecot.extdata +spamtest +spamtestplus +vnd.dovecot.execute +editheader sieve_before = /var/lib/dovecot/before.sieve sieve_default = /var/lib/dovecot/default.sieve sieve_after = /var/lib/dovecot/after.sieve sieve_extdata_dict_uri = proxy::sieve # Sieve execute sieve_execute_bin_dir = /var/lib/dovecot/bin # Send vacation replies even for aliases # See the Pigeonhole documentation about warnings: http://wiki2.dovecot.org/Pigeonhole/Sieve/Extensions/Vacation # It appears that our implemntation of mail delivery meets criteria of section 4.5 # from RFC 5230 and that disabling the recipient checks is not an issue here. sieve_vacation_dont_check_recipient = yes # Include the recipient in vacation replies so that DKIM applies sieve_vacation_send_from_recipient = yes # extract spam score from headers sieve_spamtest_status_type = strlen sieve_spamtest_status_header = X-Spam-Level sieve_spamtest_max_value = 15 # Learn from spam imapsieve_mailbox1_name = Junk imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_before = file:/var/lib/dovecot/report-spam.sieve imapsieve_mailbox2_name = * imapsieve_mailbox2_from = Junk imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_before = file:/var/lib/dovecot/report-ham.sieve } ############### # Extensions ############### !include_try /overrides/dovecot.conf