Skip to content

Instantly share code, notes, and snippets.

@msimerson
Created June 23, 2023 20:27
Show Gist options
  • Save msimerson/e0b5f92582c1a9046ef5fdf27ff200c8 to your computer and use it in GitHub Desktop.
Save msimerson/e0b5f92582c1a9046ef5fdf27ff200c8 to your computer and use it in GitHub Desktop.
dovecot local.conf
# 2.2.25: dovecot-local.conf
# OS: FreeBSD 10.3-RELEASE-p12 amd64
listen = *, ::
#mail_debug = yes
#auth_debug=yes
#auth_debug_passwords=yes
auth_verbose=yes
default_process_limit = 400
default_client_limit = 2400
auth_mechanisms = plain login digest-md5 cram-md5
auth_username_format = %Lu
disable_plaintext_auth = no
first_valid_gid = 89
first_valid_uid = 89
last_valid_gid = 89
last_valid_uid = 89
login_greeting = Mail Toaster (Dovecot) ready.
mail_privileged_group = 89
mail_plugins = $mail_plugins quota old_stats
mail_fsync=never
protocols = imap pop3 lmtp sieve submission
service auth {
unix_listener auth-client {
mode = 0660
}
unix_listener auth-master {
mode = 0600
}
# SASL for Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
}
passdb {
driver = sql
args = /data/etc/dovecot-sql.conf.ext
#driver = vpopmail
#args = webmail=172.16.15.10
}
userdb {
driver = prefetch
}
userdb {
driver = sql
args = /data/etc/dovecot-sql.conf.ext
#driver = vpopmail
# [quota_template=<template>] - %q expands to Maildir++ quota
#args = quota_template=quota_rule=*:backend=%q
}
shutdown_clients = no
ssl_prefer_server_ciphers = yes
ssl_dh = </etc/ssl/dhparam.pem
#ssl_cipher_list = AES128+EECDH:AES128+EDH
# SSLv3, TLSv1, TLSv1.1, TLSv1.2 and TLSv1.3
ssl_min_protocol = TLSv1
### Caution 2021: this should be at least v1.2, but legacy iPads don't support it yet
ssl_cert = </data/etc/ssl/certs/mail.theartfarm.com.pem
ssl_key = </data/etc/ssl/private/mail.theartfarm.com.pem
local_name mail..*******..com {
ssl_cert = </data/etc/ssl/certs/mail..*******..com.pem
ssl_key = </data/etc/ssl/private/mail..*******..com.pem
}
local_name mail..*******..com {
ssl_cert = </data/etc/ssl/certs/mail..*******..com.pem
ssl_key = </data/etc/ssl/private/mail..*******..com.pem
}
local_name mail..*******..org {
ssl_cert = </data/etc/ssl/certs/mail..*******..org.pem
ssl_key = </data/etc/ssl/private/mail..*******..org.pem
}
local_name mail.*******.net {
ssl_cert = </data/etc/ssl/certs/mail..*******..net.pem
ssl_key = </data/etc/ssl/private/mail..*******..net.pem
}
verbose_proctitle = yes
protocol imap {
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
mail_max_userip_connections = 45
mail_plugins = $mail_plugins imap_quota trash imap_sieve
}
protocol pop3 {
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
mail_fsync = optimized
postmaster_address = postmaster@theartfarm.com
sendmail_path = /var/qmail/bin/sendmail
mail_plugins = $mail_plugins sieve
}
protocol lmtp {
mail_fsync = optimized
mail_plugins = $mail_plugins sieve
}
plugin {
# 2.2 stats
#old_stats_refresh
#old_stats_notify_path
#old_stats_track_cmds
quota_max_mail_size = 100M
quota = maildir:User quota
quota_rule = *:storage=5G
quota_rule2 = Trash:storage=+10%%
quota_rule3 = Spam:storage=+20%%
sieve_plugins = sieve_imapsieve sieve_extprograms
# From elsewhere to Junk, train as Spam
imapsieve_mailbox1_name = Junk
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_after = file:/usr/local/lib/dovecot/sieve/report-spam.sieve
# From elsewhere to Spam, train as Spam
imapsieve_mailbox2_name = Spam
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_after = file:/usr/local/lib/dovecot/sieve/report-spam.sieve
# From Junk to elsewhere, train as Ham
imapsieve_mailbox3_name = *
imapsieve_mailbox3_from = Junk
imapsieve_mailbox3_causes = COPY
imapsieve_mailbox3_after = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
# From Spam to elsewhere, train as Ham
imapsieve_mailbox4_name = *
imapsieve_mailbox4_from = Spam
imapsieve_mailbox4_causes = COPY
imapsieve_mailbox4_after = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
# From elsewhere to Archive, train as Ham
imapsieve_mailbox5_name = Archive
imapsieve_mailbox5_causes = COPY
imapsieve_mailbox5_after = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
sieve_global_extensions = +vnd.dovecot.pipe
# trash = /usr/local/etc/dovecot/dovecot-trash.conf
# antispam_backend = mailtrain
# antispam_signature = X-Spam-Status
# antispam_spam_pattern_ignorecase = spam;junk
# antispam_trash_pattern_ignorecase = trash;deleted*
# antispam_unsure = read
# antispam_mail_tmpdir = /tmp
# antispam_mail_sendmail = /usr/local/bin/sa-learn
# antispam_mail_sendmail_args = --username=;%u;--debug;all
# antispam_mail_spam = --spam
# antispam_mail_notspam = --ham
}
namespace inbox {
separator = /
prefix =
inbox = yes
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
autoexpunge=30d
}
mailbox Spam {
auto = no
special_use = \Junk
}
mailbox Trash {
special_use = \Trash
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
auto = no
special_use = \Sent
}
mailbox Archive {
special_use = \Archive
}
}
namespace courier {
separator = .
prefix = INBOX.
inbox = no
hidden = yes
list = no
alias_for =
mailbox Spam {
auto = no
special_use = \Junk
}
mailbox Sent {
auto = no
special_use = \Sent
}
mailbox "Sent Messages" {
auto = no
special_use = \Sent
}
}
service imap {
# Most of the memory goes to mmap()ing files. You may need to increase this
# limit if you have huge mailboxes.
vsz_limit = 384M
process_limit = 512
}
login_access_sockets = tcpwrap
service tcpwrap {
unix_listener login/tcpwrap {
mode = 0600
user = $default_login_user
group = $default_login_user
}
user = root
}
service lmtp {
user = vpopmail
inet_listener lmtp {
port = 24
}
unix_listener lmtp {
#mode = 0666
}
}
lmtp_rcpt_check_quota = yes
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
service submission {
}
hostname = dovecot
submission_relay_host = haraka
submission_relay_ssl = no
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment