adding mail server configs
This commit is contained in:
parent
33471972e5
commit
7a34f22188
128
etc/dovecot/conf.d/10-auth.conf
Normal file
128
etc/dovecot/conf.d/10-auth.conf
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
##
|
||||||
|
## Authentication processes
|
||||||
|
##
|
||||||
|
|
||||||
|
# Disable LOGIN command and all other plaintext authentications unless
|
||||||
|
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
|
||||||
|
# matches the local IP (ie. you're connecting from the same computer), the
|
||||||
|
# connection is considered secure and plaintext authentication is allowed.
|
||||||
|
# See also ssl=required setting.
|
||||||
|
disable_plaintext_auth = yes
|
||||||
|
|
||||||
|
# Authentication cache size (e.g. 10M). 0 means it's disabled. Note that
|
||||||
|
# bsdauth, PAM and vpopmail require cache_key to be set for caching to be used.
|
||||||
|
#auth_cache_size = 0
|
||||||
|
# Time to live for cached data. After TTL expires the cached record is no
|
||||||
|
# longer used, *except* if the main database lookup returns internal failure.
|
||||||
|
# We also try to handle password changes automatically: If user's previous
|
||||||
|
# authentication was successful, but this one wasn't, the cache isn't used.
|
||||||
|
# For now this works only with plaintext authentication.
|
||||||
|
#auth_cache_ttl = 1 hour
|
||||||
|
# TTL for negative hits (user not found, password mismatch).
|
||||||
|
# 0 disables caching them completely.
|
||||||
|
#auth_cache_negative_ttl = 1 hour
|
||||||
|
|
||||||
|
# Space separated list of realms for SASL authentication mechanisms that need
|
||||||
|
# them. You can leave it empty if you don't want to support multiple realms.
|
||||||
|
# Many clients simply use the first one listed here, so keep the default realm
|
||||||
|
# first.
|
||||||
|
#auth_realms =
|
||||||
|
|
||||||
|
# Default realm/domain to use if none was specified. This is used for both
|
||||||
|
# SASL realms and appending @domain to username in plaintext logins.
|
||||||
|
#auth_default_realm =
|
||||||
|
|
||||||
|
# List of allowed characters in username. If the user-given username contains
|
||||||
|
# a character not listed in here, the login automatically fails. This is just
|
||||||
|
# an extra check to make sure user can't exploit any potential quote escaping
|
||||||
|
# vulnerabilities with SQL/LDAP databases. If you want to allow all characters,
|
||||||
|
# set this value to empty.
|
||||||
|
#auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
|
||||||
|
|
||||||
|
# Username character translations before it's looked up from databases. The
|
||||||
|
# value contains series of from -> to characters. For example "#@/@" means
|
||||||
|
# that '#' and '/' characters are translated to '@'.
|
||||||
|
#auth_username_translation =
|
||||||
|
|
||||||
|
# Username formatting before it's looked up from databases. You can use
|
||||||
|
# the standard variables here, eg. %Lu would lowercase the username, %n would
|
||||||
|
# drop away the domain if it was given, or "%n-AT-%d" would change the '@' into
|
||||||
|
# "-AT-". This translation is done after auth_username_translation changes.
|
||||||
|
#auth_username_format = %Lu
|
||||||
|
|
||||||
|
# If you want to allow master users to log in by specifying the master
|
||||||
|
# username within the normal username string (ie. not using SASL mechanism's
|
||||||
|
# support for it), you can specify the separator character here. The format
|
||||||
|
# is then <username><separator><master username>. UW-IMAP uses "*" as the
|
||||||
|
# separator, so that could be a good choice.
|
||||||
|
#auth_master_user_separator =
|
||||||
|
|
||||||
|
# Username to use for users logging in with ANONYMOUS SASL mechanism
|
||||||
|
#auth_anonymous_username = anonymous
|
||||||
|
|
||||||
|
# Maximum number of dovecot-auth worker processes. They're used to execute
|
||||||
|
# blocking passdb and userdb queries (eg. MySQL and PAM). They're
|
||||||
|
# automatically created and destroyed as needed.
|
||||||
|
#auth_worker_max_count = 30
|
||||||
|
|
||||||
|
# Host name to use in GSSAPI principal names. The default is to use the
|
||||||
|
# name returned by gethostname(). Use "$ALL" (with quotes) to allow all keytab
|
||||||
|
# entries.
|
||||||
|
#auth_gssapi_hostname =
|
||||||
|
|
||||||
|
# Kerberos keytab to use for the GSSAPI mechanism. Will use the system
|
||||||
|
# default (usually /etc/krb5.keytab) if not specified. You may need to change
|
||||||
|
# the auth service to run as root to be able to read this file.
|
||||||
|
#auth_krb5_keytab =
|
||||||
|
|
||||||
|
# Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and
|
||||||
|
# ntlm_auth helper. <doc/wiki/Authentication/Mechanisms/Winbind.txt>
|
||||||
|
#auth_use_winbind = no
|
||||||
|
|
||||||
|
# Path for Samba's ntlm_auth helper binary.
|
||||||
|
#auth_winbind_helper_path = /usr/bin/ntlm_auth
|
||||||
|
|
||||||
|
# Time to delay before replying to failed authentications.
|
||||||
|
#auth_failure_delay = 2 secs
|
||||||
|
|
||||||
|
# Require a valid SSL client certificate or the authentication fails.
|
||||||
|
#auth_ssl_require_client_cert = no
|
||||||
|
|
||||||
|
# Take the username from client's SSL certificate, using
|
||||||
|
# X509_NAME_get_text_by_NID() which returns the subject's DN's
|
||||||
|
# CommonName.
|
||||||
|
#auth_ssl_username_from_cert = no
|
||||||
|
|
||||||
|
# Space separated list of wanted authentication mechanisms:
|
||||||
|
# plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
|
||||||
|
# gss-spnego
|
||||||
|
# NOTE: See also disable_plaintext_auth setting.
|
||||||
|
auth_mechanisms = plain login
|
||||||
|
|
||||||
|
##
|
||||||
|
## Password and user databases
|
||||||
|
##
|
||||||
|
|
||||||
|
#
|
||||||
|
# Password database is used to verify user's password (and nothing more).
|
||||||
|
# You can have multiple passdbs and userdbs. This is useful if you want to
|
||||||
|
# allow both system users (/etc/passwd) and virtual users to login without
|
||||||
|
# duplicating the system users into virtual database.
|
||||||
|
#
|
||||||
|
# <doc/wiki/PasswordDatabase.txt>
|
||||||
|
#
|
||||||
|
# User database specifies where mails are located and what user/group IDs
|
||||||
|
# own them. For single-UID configuration use "static" userdb.
|
||||||
|
#
|
||||||
|
# <doc/wiki/UserDatabase.txt>
|
||||||
|
|
||||||
|
#!include auth-deny.conf.ext
|
||||||
|
#!include auth-master.conf.ext
|
||||||
|
|
||||||
|
#!include auth-system.conf.ext
|
||||||
|
!include auth-sql.conf.ext
|
||||||
|
#!include auth-ldap.conf.ext
|
||||||
|
#!include auth-passwdfile.conf.ext
|
||||||
|
#!include auth-checkpassword.conf.ext
|
||||||
|
#!include auth-vpopmail.conf.ext
|
||||||
|
#!include auth-static.conf.ext
|
420
etc/dovecot/conf.d/10-mail.conf
Normal file
420
etc/dovecot/conf.d/10-mail.conf
Normal file
|
@ -0,0 +1,420 @@
|
||||||
|
##
|
||||||
|
## Mailbox locations and namespaces
|
||||||
|
##
|
||||||
|
|
||||||
|
# Location for users' mailboxes. The default is empty, which means that Dovecot
|
||||||
|
# tries to find the mailboxes automatically. This won't work if the user
|
||||||
|
# doesn't yet have any mail, so you should explicitly tell Dovecot the full
|
||||||
|
# location.
|
||||||
|
#
|
||||||
|
# If you're using mbox, giving a path to the INBOX file (eg. /var/mail/%u)
|
||||||
|
# isn't enough. You'll also need to tell Dovecot where the other mailboxes are
|
||||||
|
# kept. This is called the "root mail directory", and it must be the first
|
||||||
|
# path given in the mail_location setting.
|
||||||
|
#
|
||||||
|
# There are a few special variables you can use, eg.:
|
||||||
|
#
|
||||||
|
# %u - username
|
||||||
|
# %n - user part in user@domain, same as %u if there's no domain
|
||||||
|
# %d - domain part in user@domain, empty if there's no domain
|
||||||
|
# %h - home directory
|
||||||
|
#
|
||||||
|
# See doc/wiki/Variables.txt for full list. Some examples:
|
||||||
|
#
|
||||||
|
# mail_location = maildir:~/Maildir
|
||||||
|
# mail_location = mbox:~/mail:INBOX=/var/mail/%u
|
||||||
|
# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
|
||||||
|
#
|
||||||
|
# <doc/wiki/MailLocation.txt>
|
||||||
|
#
|
||||||
|
mail_location = maildir:/var/vmail/%d/%n/Maildir
|
||||||
|
|
||||||
|
# If you need to set multiple mailbox locations or want to change default
|
||||||
|
# namespace settings, you can do it by defining namespace sections.
|
||||||
|
#
|
||||||
|
# You can have private, shared and public namespaces. Private namespaces
|
||||||
|
# are for user's personal mails. Shared namespaces are for accessing other
|
||||||
|
# users' mailboxes that have been shared. Public namespaces are for shared
|
||||||
|
# mailboxes that are managed by sysadmin. If you create any shared or public
|
||||||
|
# namespaces you'll typically want to enable ACL plugin also, otherwise all
|
||||||
|
# users can access all the shared mailboxes, assuming they have permissions
|
||||||
|
# on filesystem level to do so.
|
||||||
|
namespace inbox {
|
||||||
|
# Namespace type: private, shared or public
|
||||||
|
type = private
|
||||||
|
|
||||||
|
# Hierarchy separator to use. You should use the same separator for all
|
||||||
|
# namespaces or some clients get confused. '/' is usually a good one.
|
||||||
|
# The default however depends on the underlying mail storage format.
|
||||||
|
separator = /
|
||||||
|
|
||||||
|
# Prefix required to access this namespace. This needs to be different for
|
||||||
|
# all namespaces. For example "Public/".
|
||||||
|
#prefix =
|
||||||
|
|
||||||
|
# Physical location of the mailbox. This is in same format as
|
||||||
|
# mail_location, which is also the default for it.
|
||||||
|
#location =
|
||||||
|
|
||||||
|
# There can be only one INBOX, and this setting defines which namespace
|
||||||
|
# has it.
|
||||||
|
inbox = yes
|
||||||
|
|
||||||
|
# If namespace is hidden, it's not advertised to clients via NAMESPACE
|
||||||
|
# extension. You'll most likely also want to set list=no. This is mostly
|
||||||
|
# useful when converting from another server with different namespaces which
|
||||||
|
# you want to deprecate but still keep working. For example you can create
|
||||||
|
# hidden namespaces with prefixes "~/mail/", "~%u/mail/" and "mail/".
|
||||||
|
#hidden = no
|
||||||
|
|
||||||
|
# Show the mailboxes under this namespace with LIST command. This makes the
|
||||||
|
# namespace visible for clients that don't support NAMESPACE extension.
|
||||||
|
# "children" value lists child mailboxes, but hides the namespace prefix.
|
||||||
|
#list = yes
|
||||||
|
|
||||||
|
# Namespace handles its own subscriptions. If set to "no", the parent
|
||||||
|
# namespace handles them (empty prefix should always have this as "yes")
|
||||||
|
#subscriptions = yes
|
||||||
|
|
||||||
|
# See 15-mailboxes.conf for definitions of special mailboxes.
|
||||||
|
}
|
||||||
|
|
||||||
|
# Example shared namespace configuration
|
||||||
|
#namespace {
|
||||||
|
#type = shared
|
||||||
|
#separator = /
|
||||||
|
|
||||||
|
# Mailboxes are visible under "shared/user@domain/"
|
||||||
|
# %%n, %%d and %%u are expanded to the destination user.
|
||||||
|
#prefix = shared/%%u/
|
||||||
|
|
||||||
|
# Mail location for other users' mailboxes. Note that %variables and ~/
|
||||||
|
# expands to the logged in user's data. %%n, %%d, %%u and %%h expand to the
|
||||||
|
# destination user's data.
|
||||||
|
#location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u
|
||||||
|
|
||||||
|
# Use the default namespace for saving subscriptions.
|
||||||
|
#subscriptions = no
|
||||||
|
|
||||||
|
# List the shared/ namespace only if there are visible shared mailboxes.
|
||||||
|
#list = children
|
||||||
|
#}
|
||||||
|
# Should shared INBOX be visible as "shared/user" or "shared/user/INBOX"?
|
||||||
|
#mail_shared_explicit_inbox = no
|
||||||
|
|
||||||
|
# System user and group used to access mails. If you use multiple, userdb
|
||||||
|
# can override these by returning uid or gid fields. You can use either numbers
|
||||||
|
# or names. <doc/wiki/UserIds.txt>
|
||||||
|
mail_uid = vmail
|
||||||
|
mail_gid = vmail
|
||||||
|
|
||||||
|
# Group to enable temporarily for privileged operations. Currently this is
|
||||||
|
# used only with INBOX when either its initial creation or dotlocking fails.
|
||||||
|
# Typically this is set to "mail" to give access to /var/mail.
|
||||||
|
mail_privileged_group = mail
|
||||||
|
|
||||||
|
# Grant access to these supplementary groups for mail processes. Typically
|
||||||
|
# these are used to set up access to shared mailboxes. Note that it may be
|
||||||
|
# dangerous to set these if users can create symlinks (e.g. if "mail" group is
|
||||||
|
# set here, ln -s /var/mail ~/mail/var could allow a user to delete others'
|
||||||
|
# mailboxes, or ln -s /secret/shared/box ~/mail/mybox would allow reading it).
|
||||||
|
#mail_access_groups =
|
||||||
|
|
||||||
|
# Allow full filesystem access to clients. There's no access checks other than
|
||||||
|
# what the operating system does for the active UID/GID. It works with both
|
||||||
|
# maildir and mboxes, allowing you to prefix mailboxes names with eg. /path/
|
||||||
|
# or ~user/.
|
||||||
|
#mail_full_filesystem_access = no
|
||||||
|
|
||||||
|
# Dictionary for key=value mailbox attributes. This is used for example by
|
||||||
|
# URLAUTH and METADATA extensions.
|
||||||
|
#mail_attribute_dict =
|
||||||
|
|
||||||
|
# A comment or note that is associated with the server. This value is
|
||||||
|
# accessible for authenticated users through the IMAP METADATA server
|
||||||
|
# entry "/shared/comment".
|
||||||
|
#mail_server_comment = ""
|
||||||
|
|
||||||
|
# Indicates a method for contacting the server administrator. According to
|
||||||
|
# RFC 5464, this value MUST be a URI (e.g., a mailto: or tel: URL), but that
|
||||||
|
# is currently not enforced. Use for example mailto:admin@example.com. This
|
||||||
|
# value is accessible for authenticated users through the IMAP METADATA server
|
||||||
|
# entry "/shared/admin".
|
||||||
|
#mail_server_admin =
|
||||||
|
|
||||||
|
##
|
||||||
|
## Mail processes
|
||||||
|
##
|
||||||
|
|
||||||
|
# Don't use mmap() at all. This is required if you store indexes to shared
|
||||||
|
# filesystems (NFS or clustered filesystem).
|
||||||
|
#mmap_disable = no
|
||||||
|
|
||||||
|
# Rely on O_EXCL to work when creating dotlock files. NFS supports O_EXCL
|
||||||
|
# since version 3, so this should be safe to use nowadays by default.
|
||||||
|
#dotlock_use_excl = yes
|
||||||
|
|
||||||
|
# When to use fsync() or fdatasync() calls:
|
||||||
|
# optimized (default): Whenever necessary to avoid losing important data
|
||||||
|
# always: Useful with e.g. NFS when write()s are delayed
|
||||||
|
# never: Never use it (best performance, but crashes can lose data)
|
||||||
|
#mail_fsync = optimized
|
||||||
|
|
||||||
|
# Locking method for index files. Alternatives are fcntl, flock and dotlock.
|
||||||
|
# Dotlocking uses some tricks which may create more disk I/O than other locking
|
||||||
|
# methods. NFS users: flock doesn't work, remember to change mmap_disable.
|
||||||
|
#lock_method = fcntl
|
||||||
|
|
||||||
|
# Directory where mails can be temporarily stored. Usually it's used only for
|
||||||
|
# mails larger than >= 128 kB. It's used by various parts of Dovecot, for
|
||||||
|
# example LDA/LMTP while delivering large mails or zlib plugin for keeping
|
||||||
|
# uncompressed mails.
|
||||||
|
#mail_temp_dir = /tmp
|
||||||
|
|
||||||
|
# Valid UID range for users, defaults to 500 and above. This is mostly
|
||||||
|
# to make sure that users can't log in as daemons or other system users.
|
||||||
|
# Note that denying root logins is hardcoded to dovecot binary and can't
|
||||||
|
# be done even if first_valid_uid is set to 0.
|
||||||
|
#first_valid_uid = 500
|
||||||
|
#last_valid_uid = 0
|
||||||
|
|
||||||
|
# Valid GID range for users, defaults to non-root/wheel. Users having
|
||||||
|
# non-valid GID as primary group ID aren't allowed to log in. If user
|
||||||
|
# belongs to supplementary groups with non-valid GIDs, those groups are
|
||||||
|
# not set.
|
||||||
|
#first_valid_gid = 1
|
||||||
|
#last_valid_gid = 0
|
||||||
|
|
||||||
|
# Maximum allowed length for mail keyword name. It's only forced when trying
|
||||||
|
# to create new keywords.
|
||||||
|
#mail_max_keyword_length = 50
|
||||||
|
|
||||||
|
# ':' separated list of directories under which chrooting is allowed for mail
|
||||||
|
# processes (ie. /var/mail will allow chrooting to /var/mail/foo/bar too).
|
||||||
|
# This setting doesn't affect login_chroot, mail_chroot or auth chroot
|
||||||
|
# settings. If this setting is empty, "/./" in home dirs are ignored.
|
||||||
|
# WARNING: Never add directories here which local users can modify, that
|
||||||
|
# may lead to root exploit. Usually this should be done only if you don't
|
||||||
|
# allow shell access for users. <doc/wiki/Chrooting.txt>
|
||||||
|
#valid_chroot_dirs =
|
||||||
|
|
||||||
|
# Default chroot directory for mail processes. This can be overridden for
|
||||||
|
# specific users in user database by giving /./ in user's home directory
|
||||||
|
# (eg. /home/./user chroots into /home). Note that usually there is no real
|
||||||
|
# need to do chrooting, Dovecot doesn't allow users to access files outside
|
||||||
|
# their mail directory anyway. If your home directories are prefixed with
|
||||||
|
# the chroot directory, append "/." to mail_chroot. <doc/wiki/Chrooting.txt>
|
||||||
|
#mail_chroot =
|
||||||
|
|
||||||
|
# UNIX socket path to master authentication server to find users.
|
||||||
|
# This is used by imap (for shared users) and lda.
|
||||||
|
#auth_socket_path = /var/run/dovecot/auth-userdb
|
||||||
|
|
||||||
|
# Directory where to look up mail plugins.
|
||||||
|
#mail_plugin_dir = /usr/lib/dovecot/modules
|
||||||
|
|
||||||
|
# Space separated list of plugins to load for all services. Plugins specific to
|
||||||
|
# IMAP, LDA, etc. are added to this list in their own .conf files.
|
||||||
|
mail_plugins = $mail_plugins quota
|
||||||
|
|
||||||
|
##
|
||||||
|
## Mailbox handling optimizations
|
||||||
|
##
|
||||||
|
|
||||||
|
# Mailbox list indexes can be used to optimize IMAP STATUS commands. They are
|
||||||
|
# also required for IMAP NOTIFY extension to be enabled.
|
||||||
|
#mailbox_list_index = yes
|
||||||
|
|
||||||
|
# Trust mailbox list index to be up-to-date. This reduces disk I/O at the cost
|
||||||
|
# of potentially returning out-of-date results after e.g. server crashes.
|
||||||
|
# The results will be automatically fixed once the folders are opened.
|
||||||
|
#mailbox_list_index_very_dirty_syncs = yes
|
||||||
|
|
||||||
|
# Should INBOX be kept up-to-date in the mailbox list index? By default it's
|
||||||
|
# not, because most of the mailbox accesses will open INBOX anyway.
|
||||||
|
#mailbox_list_index_include_inbox = no
|
||||||
|
|
||||||
|
# The minimum number of mails in a mailbox before updates are done to cache
|
||||||
|
# file. This allows optimizing Dovecot's behavior to do less disk writes at
|
||||||
|
# the cost of more disk reads.
|
||||||
|
#mail_cache_min_mail_count = 0
|
||||||
|
|
||||||
|
# When IDLE command is running, mailbox is checked once in a while to see if
|
||||||
|
# there are any new mails or other changes. This setting defines the minimum
|
||||||
|
# time to wait between those checks. Dovecot can also use inotify and
|
||||||
|
# kqueue to find out immediately when changes occur.
|
||||||
|
#mailbox_idle_check_interval = 30 secs
|
||||||
|
|
||||||
|
# Save mails with CR+LF instead of plain LF. This makes sending those mails
|
||||||
|
# take less CPU, especially with sendfile() syscall with Linux and FreeBSD.
|
||||||
|
# But it also creates a bit more disk I/O which may just make it slower.
|
||||||
|
# Also note that if other software reads the mboxes/maildirs, they may handle
|
||||||
|
# the extra CRs wrong and cause problems.
|
||||||
|
#mail_save_crlf = no
|
||||||
|
|
||||||
|
# Max number of mails to keep open and prefetch to memory. This only works with
|
||||||
|
# some mailbox formats and/or operating systems.
|
||||||
|
#mail_prefetch_count = 0
|
||||||
|
|
||||||
|
# How often to scan for stale temporary files and delete them (0 = never).
|
||||||
|
# These should exist only after Dovecot dies in the middle of saving mails.
|
||||||
|
#mail_temp_scan_interval = 1w
|
||||||
|
|
||||||
|
# How many slow mail accesses sorting can perform before it returns failure.
|
||||||
|
# With IMAP the reply is: NO [LIMIT] Requested sort would have taken too long.
|
||||||
|
# The untagged SORT reply is still returned, but it's likely not correct.
|
||||||
|
#mail_sort_max_read_count = 0
|
||||||
|
|
||||||
|
protocol !indexer-worker {
|
||||||
|
# If folder vsize calculation requires opening more than this many mails from
|
||||||
|
# disk (i.e. mail sizes aren't in cache already), return failure and finish
|
||||||
|
# the calculation via indexer process. Disabled by default. This setting must
|
||||||
|
# be 0 for indexer-worker processes.
|
||||||
|
#mail_vsize_bg_after_count = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Maildir-specific settings
|
||||||
|
##
|
||||||
|
|
||||||
|
# By default LIST command returns all entries in maildir beginning with a dot.
|
||||||
|
# Enabling this option makes Dovecot return only entries which are directories.
|
||||||
|
# This is done by stat()ing each entry, so it causes more disk I/O.
|
||||||
|
# (For systems setting struct dirent->d_type, this check is free and it's
|
||||||
|
# done always regardless of this setting)
|
||||||
|
#maildir_stat_dirs = no
|
||||||
|
|
||||||
|
# When copying a message, do it with hard links whenever possible. This makes
|
||||||
|
# the performance much better, and it's unlikely to have any side effects.
|
||||||
|
#maildir_copy_with_hardlinks = yes
|
||||||
|
|
||||||
|
# Assume Dovecot is the only MUA accessing Maildir: Scan cur/ directory only
|
||||||
|
# when its mtime changes unexpectedly or when we can't find the mail otherwise.
|
||||||
|
#maildir_very_dirty_syncs = no
|
||||||
|
|
||||||
|
# If enabled, Dovecot doesn't use the S=<size> in the Maildir filenames for
|
||||||
|
# getting the mail's physical size, except when recalculating Maildir++ quota.
|
||||||
|
# This can be useful in systems where a lot of the Maildir filenames have a
|
||||||
|
# broken size. The performance hit for enabling this is very small.
|
||||||
|
#maildir_broken_filename_sizes = no
|
||||||
|
|
||||||
|
# Always move mails from new/ directory to cur/, even when the \Recent flags
|
||||||
|
# aren't being reset.
|
||||||
|
#maildir_empty_new = no
|
||||||
|
|
||||||
|
##
|
||||||
|
## mbox-specific settings
|
||||||
|
##
|
||||||
|
|
||||||
|
# Which locking methods to use for locking mbox. There are four available:
|
||||||
|
# dotlock: Create <mailbox>.lock file. This is the oldest and most NFS-safe
|
||||||
|
# solution. If you want to use /var/mail/ like directory, the users
|
||||||
|
# will need write access to that directory.
|
||||||
|
# dotlock_try: Same as dotlock, but if it fails because of permissions or
|
||||||
|
# because there isn't enough disk space, just skip it.
|
||||||
|
# fcntl : Use this if possible. Works with NFS too if lockd is used.
|
||||||
|
# flock : May not exist in all systems. Doesn't work with NFS.
|
||||||
|
# lockf : May not exist in all systems. Doesn't work with NFS.
|
||||||
|
#
|
||||||
|
# You can use multiple locking methods; if you do the order they're declared
|
||||||
|
# in is important to avoid deadlocks if other MTAs/MUAs are using multiple
|
||||||
|
# locking methods as well. Some operating systems don't allow using some of
|
||||||
|
# them simultaneously.
|
||||||
|
#
|
||||||
|
# The Debian value for mbox_write_locks differs from upstream Dovecot. It is
|
||||||
|
# changed to be compliant with Debian Policy (section 11.6) for NFS safety.
|
||||||
|
# Dovecot: mbox_write_locks = dotlock fcntl
|
||||||
|
# Debian: mbox_write_locks = fcntl dotlock
|
||||||
|
#
|
||||||
|
#mbox_read_locks = fcntl
|
||||||
|
#mbox_write_locks = fcntl dotlock
|
||||||
|
|
||||||
|
# Maximum time to wait for lock (all of them) before aborting.
|
||||||
|
#mbox_lock_timeout = 5 mins
|
||||||
|
|
||||||
|
# If dotlock exists but the mailbox isn't modified in any way, override the
|
||||||
|
# lock file after this much time.
|
||||||
|
#mbox_dotlock_change_timeout = 2 mins
|
||||||
|
|
||||||
|
# When mbox changes unexpectedly we have to fully read it to find out what
|
||||||
|
# changed. If the mbox is large this can take a long time. Since the change
|
||||||
|
# is usually just a newly appended mail, it'd be faster to simply read the
|
||||||
|
# new mails. If this setting is enabled, Dovecot does this but still safely
|
||||||
|
# fallbacks to re-reading the whole mbox file whenever something in mbox isn't
|
||||||
|
# how it's expected to be. The only real downside to this setting is that if
|
||||||
|
# some other MUA changes message flags, Dovecot doesn't notice it immediately.
|
||||||
|
# Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK
|
||||||
|
# commands.
|
||||||
|
#mbox_dirty_syncs = yes
|
||||||
|
|
||||||
|
# Like mbox_dirty_syncs, but don't do full syncs even with SELECT, EXAMINE,
|
||||||
|
# EXPUNGE or CHECK commands. If this is set, mbox_dirty_syncs is ignored.
|
||||||
|
#mbox_very_dirty_syncs = no
|
||||||
|
|
||||||
|
# Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK
|
||||||
|
# commands and when closing the mailbox). This is especially useful for POP3
|
||||||
|
# where clients often delete all mails. The downside is that our changes
|
||||||
|
# aren't immediately visible to other MUAs.
|
||||||
|
#mbox_lazy_writes = yes
|
||||||
|
|
||||||
|
# If mbox size is smaller than this (e.g. 100k), don't write index files.
|
||||||
|
# If an index file already exists it's still read, just not updated.
|
||||||
|
#mbox_min_index_size = 0
|
||||||
|
|
||||||
|
# Mail header selection algorithm to use for MD5 POP3 UIDLs when
|
||||||
|
# pop3_uidl_format=%m. For backwards compatibility we use apop3d inspired
|
||||||
|
# algorithm, but it fails if the first Received: header isn't unique in all
|
||||||
|
# mails. An alternative algorithm is "all" that selects all headers.
|
||||||
|
#mbox_md5 = apop3d
|
||||||
|
|
||||||
|
##
|
||||||
|
## mdbox-specific settings
|
||||||
|
##
|
||||||
|
|
||||||
|
# Maximum dbox file size until it's rotated.
|
||||||
|
#mdbox_rotate_size = 10M
|
||||||
|
|
||||||
|
# Maximum dbox file age until it's rotated. Typically in days. Day begins
|
||||||
|
# from midnight, so 1d = today, 2d = yesterday, etc. 0 = check disabled.
|
||||||
|
#mdbox_rotate_interval = 0
|
||||||
|
|
||||||
|
# When creating new mdbox files, immediately preallocate their size to
|
||||||
|
# mdbox_rotate_size. This setting currently works only in Linux with some
|
||||||
|
# filesystems (ext4, xfs).
|
||||||
|
#mdbox_preallocate_space = no
|
||||||
|
|
||||||
|
##
|
||||||
|
## Mail attachments
|
||||||
|
##
|
||||||
|
|
||||||
|
# sdbox and mdbox support saving mail attachments to external files, which
|
||||||
|
# also allows single instance storage for them. Other backends don't support
|
||||||
|
# this for now.
|
||||||
|
|
||||||
|
# Directory root where to store mail attachments. Disabled, if empty.
|
||||||
|
#mail_attachment_dir =
|
||||||
|
|
||||||
|
# Attachments smaller than this aren't saved externally. It's also possible to
|
||||||
|
# write a plugin to disable saving specific attachments externally.
|
||||||
|
#mail_attachment_min_size = 128k
|
||||||
|
|
||||||
|
# Filesystem backend to use for saving attachments:
|
||||||
|
# posix : No SiS done by Dovecot (but this might help FS's own deduplication)
|
||||||
|
# sis posix : SiS with immediate byte-by-byte comparison during saving
|
||||||
|
# sis-queue posix : SiS with delayed comparison and deduplication
|
||||||
|
#mail_attachment_fs = sis posix
|
||||||
|
|
||||||
|
# Hash format to use in attachment filenames. You can add any text and
|
||||||
|
# variables: %{md4}, %{md5}, %{sha1}, %{sha256}, %{sha512}, %{size}.
|
||||||
|
# Variables can be truncated, e.g. %{sha256:80} returns only first 80 bits
|
||||||
|
#mail_attachment_hash = %{sha1}
|
||||||
|
|
||||||
|
# Settings to control adding $HasAttachment or $HasNoAttachment keywords.
|
||||||
|
# By default, all MIME parts with Content-Disposition=attachment, or inlines
|
||||||
|
# with filename parameter are consired attachments.
|
||||||
|
# add-flags-on-save - Add the keywords when saving new mails.
|
||||||
|
# content-type=type or !type - Include/exclude content type. Excluding will
|
||||||
|
# never consider the matched MIME part as attachment. Including will only
|
||||||
|
# negate an exclusion (e.g. content-type=!foo/* content-type=foo/bar).
|
||||||
|
# exclude-inlined - Exclude any Content-Disposition=inline MIME part.
|
||||||
|
#mail_attachment_detection_options =
|
136
etc/dovecot/conf.d/10-master.conf
Normal file
136
etc/dovecot/conf.d/10-master.conf
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
#default_process_limit = 100
|
||||||
|
#default_client_limit = 1000
|
||||||
|
|
||||||
|
# Default VSZ (virtual memory size) limit for service processes. This is mainly
|
||||||
|
# intended to catch and kill processes that leak memory before they eat up
|
||||||
|
# everything.
|
||||||
|
#default_vsz_limit = 256M
|
||||||
|
|
||||||
|
# Login user is internally used by login processes. This is the most untrusted
|
||||||
|
# user in Dovecot system. It shouldn't have access to anything at all.
|
||||||
|
#default_login_user = dovenull
|
||||||
|
|
||||||
|
# Internal user is used by unprivileged processes. It should be separate from
|
||||||
|
# login user, so that login processes can't disturb other processes.
|
||||||
|
#default_internal_user = dovecot
|
||||||
|
|
||||||
|
service imap-login {
|
||||||
|
inet_listener imap {
|
||||||
|
port = 143
|
||||||
|
}
|
||||||
|
inet_listener imaps {
|
||||||
|
port = 993
|
||||||
|
ssl = yes
|
||||||
|
}
|
||||||
|
|
||||||
|
# Number of connections to handle before starting a new process. Typically
|
||||||
|
# the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0
|
||||||
|
# is faster. <doc/wiki/LoginProcess.txt>
|
||||||
|
#service_count = 1
|
||||||
|
|
||||||
|
# Number of processes to always keep waiting for more connections.
|
||||||
|
#process_min_avail = 0
|
||||||
|
|
||||||
|
# If you set service_count=0, you probably need to grow this.
|
||||||
|
#vsz_limit = $default_vsz_limit
|
||||||
|
}
|
||||||
|
|
||||||
|
service pop3-login {
|
||||||
|
inet_listener pop3 {
|
||||||
|
port = 110
|
||||||
|
}
|
||||||
|
inet_listener pop3s {
|
||||||
|
port = 995
|
||||||
|
ssl = yes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
service submission-login {
|
||||||
|
inet_listener submission {
|
||||||
|
#port = 587
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
service lmtp {
|
||||||
|
unix_listener lmtp {
|
||||||
|
#mode = 0666
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create inet listener only if you can't use the above UNIX socket
|
||||||
|
#inet_listener lmtp {
|
||||||
|
# Avoid making LMTP visible for the entire internet
|
||||||
|
#address =
|
||||||
|
#port =
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
|
||||||
|
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 = $default_vsz_limit
|
||||||
|
|
||||||
|
# Max. number of IMAP processes (connections)
|
||||||
|
#process_limit = 1024
|
||||||
|
}
|
||||||
|
|
||||||
|
service pop3 {
|
||||||
|
# Max. number of POP3 processes (connections)
|
||||||
|
#process_limit = 1024
|
||||||
|
}
|
||||||
|
|
||||||
|
service submission {
|
||||||
|
# Max. number of SMTP Submission processes (connections)
|
||||||
|
#process_limit = 1024
|
||||||
|
}
|
||||||
|
|
||||||
|
service auth {
|
||||||
|
# auth_socket_path points to this userdb socket by default. It's typically
|
||||||
|
# used by dovecot-lda, doveadm, possibly imap process, etc. Users that have
|
||||||
|
# full permissions to this socket are able to get a list of all usernames and
|
||||||
|
# get the results of everyone's userdb lookups.
|
||||||
|
#
|
||||||
|
# The default 0666 mode allows anyone to connect to the socket, but the
|
||||||
|
# userdb lookups will succeed only if the userdb returns an "uid" field that
|
||||||
|
# matches the caller process's UID. Also if caller's uid or gid matches the
|
||||||
|
# socket's uid or gid the lookup succeeds. Anything else causes a failure.
|
||||||
|
#
|
||||||
|
# To give the caller full permissions to lookup all users, set the mode to
|
||||||
|
# something else than 0666 and Dovecot lets the kernel enforce the
|
||||||
|
# permissions (e.g. 0777 allows everyone full permissions).
|
||||||
|
unix_listener auth-userdb {
|
||||||
|
#mode = 0666
|
||||||
|
#user =
|
||||||
|
#group =
|
||||||
|
}
|
||||||
|
|
||||||
|
unix_listener auth-client {
|
||||||
|
mode = 0660
|
||||||
|
user = mail
|
||||||
|
group = Debian-exim
|
||||||
|
}
|
||||||
|
|
||||||
|
# Postfix smtp-auth
|
||||||
|
#unix_listener /var/spool/postfix/private/auth {
|
||||||
|
# mode = 0666
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Auth process is run as this user.
|
||||||
|
#user = $default_internal_user
|
||||||
|
}
|
||||||
|
|
||||||
|
service auth-worker {
|
||||||
|
# Auth worker process is run as root by default, so that it can access
|
||||||
|
# /etc/shadow. If this isn't necessary, the user should be changed to
|
||||||
|
# $default_internal_user.
|
||||||
|
#user = root
|
||||||
|
}
|
||||||
|
|
||||||
|
service dict {
|
||||||
|
# If dict proxy is used, mail processes should have access to its socket.
|
||||||
|
# For example: mode=0660, group=vmail and global mail_access_groups=vmail
|
||||||
|
unix_listener dict {
|
||||||
|
#mode = 0600
|
||||||
|
#user =
|
||||||
|
#group =
|
||||||
|
}
|
||||||
|
}
|
82
etc/dovecot/conf.d/10-ssl.conf
Normal file
82
etc/dovecot/conf.d/10-ssl.conf
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
##
|
||||||
|
## SSL settings
|
||||||
|
##
|
||||||
|
|
||||||
|
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
|
||||||
|
ssl = required
|
||||||
|
|
||||||
|
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
|
||||||
|
# dropping root privileges, so keep the key file unreadable by anyone but
|
||||||
|
# root. Included doc/mkcert.sh can be used to easily generate self-signed
|
||||||
|
# certificate, just make sure to update the domains in dovecot-openssl.cnf
|
||||||
|
ssl_cert = </etc/dovecot/private/dovecot.pem
|
||||||
|
ssl_key = </etc/dovecot/private/dovecot.key
|
||||||
|
|
||||||
|
# If key file is password protected, give the password here. Alternatively
|
||||||
|
# give it when starting dovecot with -p parameter. Since this file is often
|
||||||
|
# world-readable, you may want to place this setting instead to a different
|
||||||
|
# root owned 0600 file by using ssl_key_password = <path.
|
||||||
|
#ssl_key_password =
|
||||||
|
|
||||||
|
# PEM encoded trusted certificate authority. Set this only if you intend to use
|
||||||
|
# ssl_verify_client_cert=yes. The file should contain the CA certificate(s)
|
||||||
|
# followed by the matching CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem)
|
||||||
|
#ssl_ca =
|
||||||
|
|
||||||
|
# Require that CRL check succeeds for client certificates.
|
||||||
|
#ssl_require_crl = yes
|
||||||
|
|
||||||
|
# Directory and/or file for trusted SSL CA certificates. These are used only
|
||||||
|
# when Dovecot needs to act as an SSL client (e.g. imapc backend or
|
||||||
|
# submission service). The directory is usually /etc/ssl/certs in
|
||||||
|
# Debian-based systems and the file is /etc/pki/tls/cert.pem in
|
||||||
|
# RedHat-based systems.
|
||||||
|
ssl_client_ca_dir = /etc/ssl/certs
|
||||||
|
#ssl_client_ca_file =
|
||||||
|
|
||||||
|
# Require valid cert when connecting to a remote server
|
||||||
|
#ssl_client_require_valid_cert = yes
|
||||||
|
|
||||||
|
# Request client to send a certificate. If you also want to require it, set
|
||||||
|
# auth_ssl_require_client_cert=yes in auth section.
|
||||||
|
#ssl_verify_client_cert = no
|
||||||
|
|
||||||
|
# Which field from certificate to use for username. commonName and
|
||||||
|
# x500UniqueIdentifier are the usual choices. You'll also need to set
|
||||||
|
# auth_ssl_username_from_cert=yes.
|
||||||
|
#ssl_cert_username_field = commonName
|
||||||
|
|
||||||
|
# SSL DH parameters
|
||||||
|
# Generate new params with `openssl dhparam -out /etc/dovecot/dh.pem 4096`
|
||||||
|
# Or migrate from old ssl-parameters.dat file with the command dovecot
|
||||||
|
# gives on startup when ssl_dh is unset.
|
||||||
|
ssl_dh = </usr/share/dovecot/dh.pem
|
||||||
|
|
||||||
|
# Minimum SSL protocol version to use. Potentially recognized values are SSLv3,
|
||||||
|
# TLSv1, TLSv1.1, and TLSv1.2, depending on the OpenSSL version used.
|
||||||
|
ssl_min_protocol = TLSv1.2
|
||||||
|
|
||||||
|
# SSL ciphers to use, the default is:
|
||||||
|
#ssl_cipher_list = ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
|
||||||
|
# To disable non-EC DH, use:
|
||||||
|
#ssl_cipher_list = ALL:!DH:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
|
||||||
|
ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
|
||||||
|
|
||||||
|
# Colon separated list of elliptic curves to use. Empty value (the default)
|
||||||
|
# means use the defaults from the SSL library. P-521:P-384:P-256 would be an
|
||||||
|
# example of a valid value.
|
||||||
|
#ssl_curve_list =
|
||||||
|
|
||||||
|
# Prefer the server's order of ciphers over client's.
|
||||||
|
ssl_prefer_server_ciphers = no
|
||||||
|
|
||||||
|
# SSL crypto device to use, for valid values run "openssl engine"
|
||||||
|
#ssl_crypto_device =
|
||||||
|
|
||||||
|
# SSL extra options. Currently supported options are:
|
||||||
|
# compression - Enable compression.
|
||||||
|
# no_ticket - Disable SSL session tickets.
|
||||||
|
#ssl_options =
|
||||||
|
|
||||||
|
# include domain specific ssl certs
|
||||||
|
!include_try ../sites.d/*
|
88
etc/dovecot/conf.d/15-mailboxes.conf
Normal file
88
etc/dovecot/conf.d/15-mailboxes.conf
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
##
|
||||||
|
## Mailbox definitions
|
||||||
|
##
|
||||||
|
|
||||||
|
# Each mailbox is specified in a separate mailbox section. The section name
|
||||||
|
# specifies the mailbox name. If it has spaces, you can put the name
|
||||||
|
# "in quotes". These sections can contain the following mailbox settings:
|
||||||
|
#
|
||||||
|
# auto:
|
||||||
|
# Indicates whether the mailbox with this name is automatically created
|
||||||
|
# implicitly when it is first accessed. The user can also be automatically
|
||||||
|
# subscribed to the mailbox after creation. The following values are
|
||||||
|
# defined for this setting:
|
||||||
|
#
|
||||||
|
# no - Never created automatically.
|
||||||
|
# create - Automatically created, but no automatic subscription.
|
||||||
|
# subscribe - Automatically created and subscribed.
|
||||||
|
#
|
||||||
|
# special_use:
|
||||||
|
# A space-separated list of SPECIAL-USE flags (RFC 6154) to use for the
|
||||||
|
# mailbox. There are no validity checks, so you could specify anything
|
||||||
|
# you want in here, but it's not a good idea to use flags other than the
|
||||||
|
# standard ones specified in the RFC:
|
||||||
|
#
|
||||||
|
# \All - This (virtual) mailbox presents all messages in the
|
||||||
|
# user's message store.
|
||||||
|
# \Archive - This mailbox is used to archive messages.
|
||||||
|
# \Drafts - This mailbox is used to hold draft messages.
|
||||||
|
# \Flagged - This (virtual) mailbox presents all messages in the
|
||||||
|
# user's message store marked with the IMAP \Flagged flag.
|
||||||
|
# \Junk - This mailbox is where messages deemed to be junk mail
|
||||||
|
# are held.
|
||||||
|
# \Sent - This mailbox is used to hold copies of messages that
|
||||||
|
# have been sent.
|
||||||
|
# \Trash - This mailbox is used to hold messages that have been
|
||||||
|
# deleted.
|
||||||
|
#
|
||||||
|
# comment:
|
||||||
|
# Defines a default comment or note associated with the mailbox. This
|
||||||
|
# value is accessible through the IMAP METADATA mailbox entries
|
||||||
|
# "/shared/comment" and "/private/comment". Users with sufficient
|
||||||
|
# privileges can override the default value for entries with a custom
|
||||||
|
# value.
|
||||||
|
|
||||||
|
# NOTE: Assumes "namespace inbox" has been defined in 10-mail.conf.
|
||||||
|
namespace inbox {
|
||||||
|
# These mailboxes are widely used and could perhaps be created automatically:
|
||||||
|
mailbox Drafts {
|
||||||
|
special_use = \Drafts
|
||||||
|
auto = subscribe
|
||||||
|
}
|
||||||
|
mailbox Junk {
|
||||||
|
special_use = \Junk
|
||||||
|
auto = subscribe
|
||||||
|
autoexpunge = 30d
|
||||||
|
}
|
||||||
|
mailbox Trash {
|
||||||
|
special_use = \Trash
|
||||||
|
auto = subscribe
|
||||||
|
autoexpunge = 30d
|
||||||
|
}
|
||||||
|
mailbox Archives {
|
||||||
|
special_use = \Archive
|
||||||
|
auto = subscribe
|
||||||
|
}
|
||||||
|
|
||||||
|
# For \Sent mailboxes there are two widely used names. We'll mark both of
|
||||||
|
# them as \Sent. User typically deletes one of them if duplicates are created.
|
||||||
|
mailbox Sent {
|
||||||
|
special_use = \Sent
|
||||||
|
auto = subscribe
|
||||||
|
}
|
||||||
|
mailbox "Sent Messages" {
|
||||||
|
special_use = \Sent
|
||||||
|
}
|
||||||
|
|
||||||
|
# If you have a virtual "All messages" mailbox:
|
||||||
|
#mailbox virtual/All {
|
||||||
|
# special_use = \All
|
||||||
|
# comment = All my messages
|
||||||
|
#}
|
||||||
|
|
||||||
|
# If you have a virtual "Flagged" mailbox:
|
||||||
|
#mailbox virtual/Flagged {
|
||||||
|
# special_use = \Flagged
|
||||||
|
# comment = All my flagged messages
|
||||||
|
#}
|
||||||
|
}
|
98
etc/dovecot/conf.d/20-imap.conf
Normal file
98
etc/dovecot/conf.d/20-imap.conf
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
##
|
||||||
|
## IMAP specific settings
|
||||||
|
##
|
||||||
|
|
||||||
|
# If nothing happens for this long while client is IDLEing, move the connection
|
||||||
|
# to imap-hibernate process and close the old imap process. This saves memory,
|
||||||
|
# because connections use very little memory in imap-hibernate process. The
|
||||||
|
# downside is that recreating the imap process back uses some resources.
|
||||||
|
#imap_hibernate_timeout = 0
|
||||||
|
|
||||||
|
# Maximum IMAP command line length. Some clients generate very long command
|
||||||
|
# lines with huge mailboxes, so you may need to raise this if you get
|
||||||
|
# "Too long argument" or "IMAP command line too large" errors often.
|
||||||
|
#imap_max_line_length = 64k
|
||||||
|
|
||||||
|
# IMAP logout format string:
|
||||||
|
# %i - total number of bytes read from client
|
||||||
|
# %o - total number of bytes sent to client
|
||||||
|
# %{fetch_hdr_count} - Number of mails with mail header data sent to client
|
||||||
|
# %{fetch_hdr_bytes} - Number of bytes with mail header data sent to client
|
||||||
|
# %{fetch_body_count} - Number of mails with mail body data sent to client
|
||||||
|
# %{fetch_body_bytes} - Number of bytes with mail body data sent to client
|
||||||
|
# %{deleted} - Number of mails where client added \Deleted flag
|
||||||
|
# %{expunged} - Number of mails that client expunged, which does not
|
||||||
|
# include automatically expunged mails
|
||||||
|
# %{autoexpunged} - Number of mails that were automatically expunged after
|
||||||
|
# client disconnected
|
||||||
|
# %{trashed} - Number of mails that client copied/moved to the
|
||||||
|
# special_use=\Trash mailbox.
|
||||||
|
# %{appended} - Number of mails saved during the session
|
||||||
|
#imap_logout_format = in=%i out=%o deleted=%{deleted} expunged=%{expunged} \
|
||||||
|
# trashed=%{trashed} hdr_count=%{fetch_hdr_count} \
|
||||||
|
# hdr_bytes=%{fetch_hdr_bytes} body_count=%{fetch_body_count} \
|
||||||
|
# body_bytes=%{fetch_body_bytes}
|
||||||
|
|
||||||
|
# Override the IMAP CAPABILITY response. If the value begins with '+',
|
||||||
|
# add the given capabilities on top of the defaults (e.g. +XFOO XBAR).
|
||||||
|
#imap_capability =
|
||||||
|
|
||||||
|
# How long to wait between "OK Still here" notifications when client is
|
||||||
|
# IDLEing.
|
||||||
|
#imap_idle_notify_interval = 2 mins
|
||||||
|
|
||||||
|
# ID field names and values to send to clients. Using * as the value makes
|
||||||
|
# Dovecot use the default value. The following fields have default values
|
||||||
|
# currently: name, version, os, os-version, support-url, support-email.
|
||||||
|
#imap_id_send =
|
||||||
|
|
||||||
|
# ID fields sent by client to log. * means everything.
|
||||||
|
#imap_id_log =
|
||||||
|
|
||||||
|
# Workarounds for various client bugs:
|
||||||
|
# delay-newmail:
|
||||||
|
# Send EXISTS/RECENT new mail notifications only when replying to NOOP
|
||||||
|
# and CHECK commands. Some clients ignore them otherwise, for example OSX
|
||||||
|
# Mail (<v2.1). Outlook Express breaks more badly though, without this it
|
||||||
|
# may show user "Message no longer in server" errors. Note that OE6 still
|
||||||
|
# breaks even with this workaround if synchronization is set to
|
||||||
|
# "Headers Only".
|
||||||
|
# tb-extra-mailbox-sep:
|
||||||
|
# Thunderbird gets somehow confused with LAYOUT=fs (mbox and dbox) and
|
||||||
|
# adds extra '/' suffixes to mailbox names. This option causes Dovecot to
|
||||||
|
# ignore the extra '/' instead of treating it as invalid mailbox name.
|
||||||
|
# tb-lsub-flags:
|
||||||
|
# Show \Noselect flags for LSUB replies with LAYOUT=fs (e.g. mbox).
|
||||||
|
# This makes Thunderbird realize they aren't selectable and show them
|
||||||
|
# greyed out, instead of only later giving "not selectable" popup error.
|
||||||
|
#
|
||||||
|
# The list is space-separated.
|
||||||
|
#imap_client_workarounds =
|
||||||
|
|
||||||
|
# Host allowed in URLAUTH URLs sent by client. "*" allows all.
|
||||||
|
#imap_urlauth_host =
|
||||||
|
|
||||||
|
# Enable IMAP LITERAL- extension (replaces LITERAL+)
|
||||||
|
#imap_literal_minus = no
|
||||||
|
|
||||||
|
# What happens when FETCH fails due to some internal error:
|
||||||
|
# disconnect-immediately:
|
||||||
|
# The FETCH is aborted immediately and the IMAP client is disconnected.
|
||||||
|
# disconnect-after:
|
||||||
|
# The FETCH runs for all the requested mails returning as much data as
|
||||||
|
# possible. The client is finally disconnected without a tagged reply.
|
||||||
|
# no-after:
|
||||||
|
# Same as disconnect-after, but tagged NO reply is sent instead of
|
||||||
|
# disconnecting the client. If the client attempts to FETCH the same failed
|
||||||
|
# mail more than once, the client is disconnected. This is to avoid clients
|
||||||
|
# from going into infinite loops trying to FETCH a broken mail.
|
||||||
|
#imap_fetch_failure = disconnect-immediately
|
||||||
|
|
||||||
|
protocol imap {
|
||||||
|
# Space separated list of plugins to load (default is global mail_plugins).
|
||||||
|
mail_plugins = $mail_plugins imap_quota
|
||||||
|
|
||||||
|
# Maximum number of IMAP connections allowed for a user from each IP address.
|
||||||
|
# NOTE: The username is compared case-sensitively.
|
||||||
|
#mail_max_userip_connections = 10
|
||||||
|
}
|
94
etc/dovecot/conf.d/90-quota.conf
Normal file
94
etc/dovecot/conf.d/90-quota.conf
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
##
|
||||||
|
## Quota configuration.
|
||||||
|
##
|
||||||
|
|
||||||
|
# Note that you also have to enable quota plugin in mail_plugins setting.
|
||||||
|
# <doc/wiki/Quota.txt>
|
||||||
|
|
||||||
|
##
|
||||||
|
## Quota limits
|
||||||
|
##
|
||||||
|
|
||||||
|
# Quota limits are set using "quota_rule" parameters. To get per-user quota
|
||||||
|
# limits, you can set/override them by returning "quota_rule" extra field
|
||||||
|
# from userdb. It's also possible to give mailbox-specific limits, for example
|
||||||
|
# to give additional 100 MB when saving to Trash:
|
||||||
|
|
||||||
|
plugin {
|
||||||
|
quota_rule = *:storage=1G
|
||||||
|
quota_rule2 = Trash:ignore
|
||||||
|
quota_rule3 = Junk:ignore
|
||||||
|
#quota_rule2 = Trash:storage=+100M
|
||||||
|
|
||||||
|
# LDA/LMTP allows saving the last mail to bring user from under quota to
|
||||||
|
# over quota, if the quota doesn't grow too high. Default is to allow as
|
||||||
|
# long as quota will stay under 10% above the limit. Also allowed e.g. 10M.
|
||||||
|
quota_grace = 10%%
|
||||||
|
|
||||||
|
# Quota plugin can also limit the maximum accepted mail size.
|
||||||
|
#quota_max_mail_size = 100M
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Quota warnings
|
||||||
|
##
|
||||||
|
|
||||||
|
# You can execute a given command when user exceeds a specified quota limit.
|
||||||
|
# Each quota root has separate limits. Only the command for the first
|
||||||
|
# exceeded limit is executed, so put the highest limit first.
|
||||||
|
# The commands are executed via script service by connecting to the named
|
||||||
|
# UNIX socket (quota-warning below).
|
||||||
|
# Note that % needs to be escaped as %%, otherwise "% " expands to empty.
|
||||||
|
|
||||||
|
plugin {
|
||||||
|
quota_warning = storage=95%% quota-warning 95 %u
|
||||||
|
quota_warning2 = storage=80%% quota-warning 90 %u
|
||||||
|
}
|
||||||
|
|
||||||
|
# Example quota-warning service. The unix listener's permissions should be
|
||||||
|
# set in a way that mail processes can connect to it. Below example assumes
|
||||||
|
# that mail processes run as vmail user. If you use mode=0666, all system users
|
||||||
|
# can generate quota warnings to anyone.
|
||||||
|
#service quota-warning {
|
||||||
|
# executable = script /usr/local/bin/quota-warning.sh
|
||||||
|
# user = dovecot
|
||||||
|
# unix_listener quota-warning {
|
||||||
|
# user = vmail
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
service quota-warning {
|
||||||
|
executable = script /usr/local/sbin/quota-warning.sh
|
||||||
|
user = dovecot
|
||||||
|
unix_listener quota-warning {
|
||||||
|
user = dovecot
|
||||||
|
group = mail
|
||||||
|
mode = 0660
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Quota backends
|
||||||
|
##
|
||||||
|
|
||||||
|
# Multiple backends are supported:
|
||||||
|
# dirsize: Find and sum all the files found from mail directory.
|
||||||
|
# Extremely SLOW with Maildir. It'll eat your CPU and disk I/O.
|
||||||
|
# dict: Keep quota stored in dictionary (eg. SQL)
|
||||||
|
# maildir: Maildir++ quota
|
||||||
|
# fs: Read-only support for filesystem quota
|
||||||
|
|
||||||
|
plugin {
|
||||||
|
#quota = dirsize:User quota
|
||||||
|
quota = maildir:User quota
|
||||||
|
#quota = dict:User quota::proxy::quota
|
||||||
|
#quota = fs:User quota
|
||||||
|
}
|
||||||
|
|
||||||
|
# Multiple quota roots are also possible, for example this gives each user
|
||||||
|
# their own 100MB quota and one shared 1GB quota within the domain:
|
||||||
|
plugin {
|
||||||
|
#quota = dict:user::proxy::quota
|
||||||
|
#quota2 = dict:domain:%d:proxy::quota_domain
|
||||||
|
#quota_rule = *:storage=102400
|
||||||
|
#quota2_rule = *:storage=1048576
|
||||||
|
}
|
30
etc/dovecot/conf.d/auth-sql.conf.ext
Normal file
30
etc/dovecot/conf.d/auth-sql.conf.ext
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# Authentication for SQL users. Included from 10-auth.conf.
|
||||||
|
#
|
||||||
|
# <doc/wiki/AuthDatabase.SQL.txt>
|
||||||
|
|
||||||
|
passdb {
|
||||||
|
driver = sql
|
||||||
|
|
||||||
|
# Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
|
||||||
|
args = /etc/dovecot/dovecot-sql.conf.ext
|
||||||
|
}
|
||||||
|
|
||||||
|
# "prefetch" user database means that the passdb already provided the
|
||||||
|
# needed information and there's no need to do a separate userdb lookup.
|
||||||
|
# <doc/wiki/UserDatabase.Prefetch.txt>
|
||||||
|
userdb {
|
||||||
|
driver = prefetch
|
||||||
|
}
|
||||||
|
|
||||||
|
#userdb {
|
||||||
|
# driver = sql
|
||||||
|
# args = /etc/dovecot/dovecot-sql.conf.ext
|
||||||
|
#}
|
||||||
|
|
||||||
|
# If you don't have any user-specific settings, you can avoid the user_query
|
||||||
|
# by using userdb static instead of userdb sql, for example:
|
||||||
|
# <doc/wiki/UserDatabase.Static.txt>
|
||||||
|
userdb {
|
||||||
|
driver = static
|
||||||
|
args = uid=vmail gid=vmail home=/var/vmail/%d/%n
|
||||||
|
}
|
146
etc/dovecot/dovecot-sql.conf.ext
Normal file
146
etc/dovecot/dovecot-sql.conf.ext
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
# This file is commonly accessed via passdb {} or userdb {} section in
|
||||||
|
# conf.d/auth-sql.conf.ext
|
||||||
|
|
||||||
|
# This file is opened as root, so it should be owned by root and mode 0600.
|
||||||
|
#
|
||||||
|
# http://wiki2.dovecot.org/AuthDatabase/SQL
|
||||||
|
#
|
||||||
|
# For the sql passdb module, you'll need a database with a table that
|
||||||
|
# contains fields for at least the username and password. If you want to
|
||||||
|
# use the user@domain syntax, you might want to have a separate domain
|
||||||
|
# field as well.
|
||||||
|
#
|
||||||
|
# If your users all have the same uig/gid, and have predictable home
|
||||||
|
# directories, you can use the static userdb module to generate the home
|
||||||
|
# dir based on the username and domain. In this case, you won't need fields
|
||||||
|
# for home, uid, or gid in the database.
|
||||||
|
#
|
||||||
|
# If you prefer to use the sql userdb module, you'll want to add fields
|
||||||
|
# for home, uid, and gid. Here is an example table:
|
||||||
|
#
|
||||||
|
# CREATE TABLE users (
|
||||||
|
# username VARCHAR(128) NOT NULL,
|
||||||
|
# domain VARCHAR(128) NOT NULL,
|
||||||
|
# password VARCHAR(64) NOT NULL,
|
||||||
|
# home VARCHAR(255) NOT NULL,
|
||||||
|
# uid INTEGER NOT NULL,
|
||||||
|
# gid INTEGER NOT NULL,
|
||||||
|
# active CHAR(1) DEFAULT 'Y' NOT NULL
|
||||||
|
# );
|
||||||
|
|
||||||
|
# Database driver: mysql, pgsql, sqlite
|
||||||
|
driver = mysql
|
||||||
|
|
||||||
|
# Database connection string. This is driver-specific setting.
|
||||||
|
#
|
||||||
|
# HA / round-robin load-balancing is supported by giving multiple host
|
||||||
|
# settings, like: host=sql1.host.org host=sql2.host.org
|
||||||
|
#
|
||||||
|
# pgsql:
|
||||||
|
# For available options, see the PostgreSQL documentation for the
|
||||||
|
# PQconnectdb function of libpq.
|
||||||
|
# Use maxconns=n (default 5) to change how many connections Dovecot can
|
||||||
|
# create to pgsql.
|
||||||
|
#
|
||||||
|
# mysql:
|
||||||
|
# Basic options emulate PostgreSQL option names:
|
||||||
|
# host, port, user, password, dbname
|
||||||
|
#
|
||||||
|
# But also adds some new settings:
|
||||||
|
# client_flags - See MySQL manual
|
||||||
|
# connect_timeout - Connect timeout in seconds (default: 5)
|
||||||
|
# read_timeout - Read timeout in seconds (default: 30)
|
||||||
|
# write_timeout - Write timeout in seconds (default: 30)
|
||||||
|
# ssl_ca, ssl_ca_path - Set either one or both to enable SSL
|
||||||
|
# ssl_cert, ssl_key - For sending client-side certificates to server
|
||||||
|
# ssl_cipher - Set minimum allowed cipher security (default: HIGH)
|
||||||
|
# ssl_verify_server_cert - Verify that the name in the server SSL certificate
|
||||||
|
# matches the host (default: no)
|
||||||
|
# option_file - Read options from the given file instead of
|
||||||
|
# the default my.cnf location
|
||||||
|
# option_group - Read options from the given group (default: client)
|
||||||
|
#
|
||||||
|
# You can connect to UNIX sockets by using host: host=/var/run/mysql.sock
|
||||||
|
# Note that currently you can't use spaces in parameters.
|
||||||
|
#
|
||||||
|
# sqlite:
|
||||||
|
# The path to the database file.
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
# connect = host=192.168.1.1 dbname=users
|
||||||
|
# connect = host=sql.example.com dbname=virtual user=virtual password=blarg
|
||||||
|
# connect = /etc/dovecot/authdb.sqlite
|
||||||
|
#
|
||||||
|
connect = host=localhost dbname=vmail user=vmail password=password
|
||||||
|
|
||||||
|
# Default password scheme.
|
||||||
|
#
|
||||||
|
# List of supported schemes is in
|
||||||
|
# http://wiki2.dovecot.org/Authentication/PasswordSchemes
|
||||||
|
#
|
||||||
|
default_pass_scheme = SHA512-CRYPT
|
||||||
|
|
||||||
|
# passdb query to retrieve the password. It can return fields:
|
||||||
|
# password - The user's password. This field must be returned.
|
||||||
|
# user - user@domain from the database. Needed with case-insensitive lookups.
|
||||||
|
# username and domain - An alternative way to represent the "user" field.
|
||||||
|
#
|
||||||
|
# The "user" field is often necessary with case-insensitive lookups to avoid
|
||||||
|
# e.g. "name" and "nAme" logins creating two different mail directories. If
|
||||||
|
# your user and domain names are in separate fields, you can return "username"
|
||||||
|
# and "domain" fields instead of "user".
|
||||||
|
#
|
||||||
|
# The query can also return other fields which have a special meaning, see
|
||||||
|
# http://wiki2.dovecot.org/PasswordDatabase/ExtraFields
|
||||||
|
#
|
||||||
|
# Commonly used available substitutions (see http://wiki2.dovecot.org/Variables
|
||||||
|
# for full list):
|
||||||
|
# %u = entire user@domain
|
||||||
|
# %n = user part of user@domain
|
||||||
|
# %d = domain part of user@domain
|
||||||
|
#
|
||||||
|
# Note that these can be used only as input to SQL query. If the query outputs
|
||||||
|
# any of these substitutions, they're not touched. Otherwise it would be
|
||||||
|
# difficult to have eg. usernames containing '%' characters.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# password_query = SELECT userid AS user, pw AS password \
|
||||||
|
# FROM users WHERE userid = '%u' AND active = 'Y'
|
||||||
|
#
|
||||||
|
#password_query = \
|
||||||
|
# SELECT username, domain, password \
|
||||||
|
# FROM users WHERE username = '%n' AND domain = '%d'
|
||||||
|
|
||||||
|
# userdb query to retrieve the user information. It can return fields:
|
||||||
|
# uid - System UID (overrides mail_uid setting)
|
||||||
|
# gid - System GID (overrides mail_gid setting)
|
||||||
|
# home - Home directory
|
||||||
|
# mail - Mail location (overrides mail_location setting)
|
||||||
|
#
|
||||||
|
# None of these are strictly required. If you use a single UID and GID, and
|
||||||
|
# home or mail directory fits to a template string, you could use userdb static
|
||||||
|
# instead. For a list of all fields that can be returned, see
|
||||||
|
# http://wiki2.dovecot.org/UserDatabase/ExtraFields
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
# user_query = SELECT home, uid, gid FROM users WHERE userid = '%u'
|
||||||
|
# user_query = SELECT dir AS home, user AS uid, group AS gid FROM users where userid = '%u'
|
||||||
|
# user_query = SELECT home, 501 AS uid, 501 AS gid FROM users WHERE userid = '%u'
|
||||||
|
#
|
||||||
|
#user_query = \
|
||||||
|
# SELECT home, uid, gid \
|
||||||
|
# FROM users WHERE username = '%n' AND domain = '%d'
|
||||||
|
|
||||||
|
# If you wish to avoid two SQL lookups (passdb + userdb), you can use
|
||||||
|
# userdb prefetch instead of userdb sql in dovecot.conf. In that case you'll
|
||||||
|
# also have to return userdb fields in password_query prefixed with "userdb_"
|
||||||
|
# string. For example:
|
||||||
|
#password_query = \
|
||||||
|
# SELECT userid AS user, password, \
|
||||||
|
# home AS userdb_home, uid AS userdb_uid, gid AS userdb_gid \
|
||||||
|
# FROM users WHERE userid = '%u'
|
||||||
|
|
||||||
|
password_query = SELECT vm_mboxes.passwd AS password, CONCAT('*:bytes=', vm_mboxes.quota, 'G') AS userdb_quota_rule, '/var/vmail/%d/%n' AS userdb_home, '/var/vmail/%d/%n/Maildir' AS userdb_mail, 'vmail' AS userdb_uid, 'vmail' AS userdb_gid FROM vm_domains, vm_mboxes WHERE vm_domains.domain = '%d' AND vm_domains.id = vm_mboxes.domain_id AND vm_mboxes.mbox = '%n'
|
||||||
|
|
||||||
|
# Query to get a list of all usernames.
|
||||||
|
#iterate_query = SELECT username AS user FROM users
|
22
etc/exim4/autowhitelist.filter
Normal file
22
etc/exim4/autowhitelist.filter
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Exim filter
|
||||||
|
|
||||||
|
if error_message then finish endif
|
||||||
|
|
||||||
|
# check for and delete type = MANUAL. don't need to insert anything???
|
||||||
|
if "${lookup mysql{SELECT COUNT(*) FROM vm_greylisting WHERE sender = \"$local_part@$domain\" AND recipient = '$sender_address' AND type = 'MANUAL'}}" is 0 then
|
||||||
|
if "${lookup mysql{INSERT INTO vm_greylisting SET sender = \"$local_part@$domain\", recipient = '$sender_address', create_time = NOW()}}" is not 0 then
|
||||||
|
if "${lookup mysql{DELETE FROM vm_greylisting WHERE sender = \"$local_part@$domain\" AND recipient = '$sender_address' AND type = 'AUTO'}}" is not 0 then
|
||||||
|
# done updated greylisting
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if "${lookup mysql{SELECT COUNT(*) FROM sa_userpref WHERE username = '$sender_address' AND preference = 'whitelist_from' AND value = \"$local_part@$domain\"}}" is 0 then
|
||||||
|
if "${lookup mysql{INSERT INTO sa_userpref SET username = '$sender_address', preference = 'whitelist_from', value = \"$local_part@$domain\"}}" is not 0 then
|
||||||
|
if "${lookup mysql{DELETE FROM sa_userpref WHERE username = '$sender_address' AND preference != 'whitelist_from' AND value = \"$local_part@$domain\"}}" is not 0 then
|
||||||
|
# done updated sa_userpref
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
finish
|
1135
etc/exim4/exim4.conf
Normal file
1135
etc/exim4/exim4.conf
Normal file
File diff suppressed because it is too large
Load Diff
16
etc/exim4/exim_local.conf
Normal file
16
etc/exim4/exim_local.conf
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
qualify_domain = example.com
|
||||||
|
|
||||||
|
hide mysql_servers = localhost/vmail/vmail/password
|
||||||
|
|
||||||
|
# comment out to disable Greylisting
|
||||||
|
GREYLIST_ENABLED=
|
||||||
|
|
||||||
|
# only use 1 of the following at a time:
|
||||||
|
# disable for now as clamav is not currently enabled
|
||||||
|
#VIRUS_WARN=
|
||||||
|
#VIRUS_DENY=
|
||||||
|
|
||||||
|
# Uncomment and change values to override defaults already in main config
|
||||||
|
#smtp_accept_max = 50
|
||||||
|
#smtp_accept_max_per_host = 10
|
||||||
|
#smtp_accept_queue_per_connection = 50
|
19
etc/exim4/return-resender.sh
Normal file
19
etc/exim4/return-resender.sh
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
HOSTNAME=$1
|
||||||
|
|
||||||
|
COUNT=`/bin/echo $HOSTNAME|/bin/grep -o '\.'|/usr/bin/wc -l`
|
||||||
|
|
||||||
|
if [ "$COUNT" -lt '2' ]; then
|
||||||
|
# second level domain, don't munge just return
|
||||||
|
/bin/echo -n $HOSTNAME
|
||||||
|
exit 0
|
||||||
|
elif [ "$COUNT" -ge '2' ]; then
|
||||||
|
# third or higher level domain, strip first level off
|
||||||
|
/bin/echo -n "$HOSTNAME" | /bin/sed 's/[^.]*./\*\./'
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
# unexpected. hostname not set?
|
||||||
|
/bin/echo -n $HOSTNAME
|
||||||
|
exit 0
|
||||||
|
fi
|
1
etc/exim4/skip_greylisting_hosts
Normal file
1
etc/exim4/skip_greylisting_hosts
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*.example.com
|
112
etc/spamassassin/local.cf
Normal file
112
etc/spamassassin/local.cf
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
# This is the right place to customize your installation of SpamAssassin.
|
||||||
|
#
|
||||||
|
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
|
||||||
|
# tweaked.
|
||||||
|
#
|
||||||
|
# Only a small subset of options are listed below
|
||||||
|
#
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
add_header all Score _HITS_
|
||||||
|
version_tag config-v1.0
|
||||||
|
|
||||||
|
# Add *****SPAM***** to the Subject header of spam e-mails
|
||||||
|
#
|
||||||
|
# rewrite_header Subject *****SPAM*****
|
||||||
|
|
||||||
|
|
||||||
|
# Save spam messages as a message/rfc822 MIME attachment instead of
|
||||||
|
# modifying the original message (0: off, 2: use text/plain instead)
|
||||||
|
#
|
||||||
|
report_safe 0
|
||||||
|
|
||||||
|
|
||||||
|
# Set which networks or hosts are considered 'trusted' by your mail
|
||||||
|
# server (i.e. not spammers)
|
||||||
|
#
|
||||||
|
# trusted_networks 212.17.35.
|
||||||
|
|
||||||
|
|
||||||
|
# Set file-locking method (flock is not safe over NFS, but is faster)
|
||||||
|
#
|
||||||
|
# lock_method flock
|
||||||
|
|
||||||
|
|
||||||
|
# Set the threshold at which a message is considered spam (default: 5.0)
|
||||||
|
#
|
||||||
|
# required_score 5.0
|
||||||
|
|
||||||
|
|
||||||
|
# Use Bayesian classifier (default: 1)
|
||||||
|
#
|
||||||
|
# use_bayes 1
|
||||||
|
|
||||||
|
|
||||||
|
# Bayesian classifier auto-learning (default: 1)
|
||||||
|
#
|
||||||
|
# bayes_auto_learn 1
|
||||||
|
|
||||||
|
|
||||||
|
# Set headers which may provide inappropriate cues to the Bayesian
|
||||||
|
# classifier
|
||||||
|
#
|
||||||
|
# bayes_ignore_header X-Bogosity
|
||||||
|
# bayes_ignore_header X-Spam-Flag
|
||||||
|
# bayes_ignore_header X-Spam-Status
|
||||||
|
|
||||||
|
|
||||||
|
# Whether to decode non- UTF-8 and non-ASCII textual parts and recode
|
||||||
|
# them to UTF-8 before the text is given over to rules processing.
|
||||||
|
#
|
||||||
|
# normalize_charset 1
|
||||||
|
|
||||||
|
# Textual body scan limit (default: 50000)
|
||||||
|
#
|
||||||
|
# Amount of data per email text/* mimepart, that will be run through body
|
||||||
|
# rules. This enables safer and faster scanning of large messages,
|
||||||
|
# perhaps having very large textual attachments. There should be no need
|
||||||
|
# to change this well tested default.
|
||||||
|
#
|
||||||
|
# body_part_scan_size 50000
|
||||||
|
|
||||||
|
# Textual rawbody data scan limit (default: 500000)
|
||||||
|
#
|
||||||
|
# Amount of data per email text/* mimepart, that will be run through
|
||||||
|
# rawbody rules.
|
||||||
|
#
|
||||||
|
# rawbody_part_scan_size 500000
|
||||||
|
|
||||||
|
# Some shortcircuiting, if the plugin is enabled
|
||||||
|
#
|
||||||
|
ifplugin Mail::SpamAssassin::Plugin::Shortcircuit
|
||||||
|
#
|
||||||
|
# default: strongly-whitelisted mails are *really* whitelisted now, if the
|
||||||
|
# shortcircuiting plugin is active, causing early exit to save CPU load.
|
||||||
|
# Uncomment to turn this on
|
||||||
|
#
|
||||||
|
# SpamAssassin tries hard not to launch DNS queries before priority -100.
|
||||||
|
# If you want to shortcircuit without launching unneeded queries, make
|
||||||
|
# sure such rule priority is below -100. These examples are already:
|
||||||
|
#
|
||||||
|
# shortcircuit USER_IN_WHITELIST on
|
||||||
|
# shortcircuit USER_IN_DEF_WHITELIST on
|
||||||
|
# shortcircuit USER_IN_ALL_SPAM_TO on
|
||||||
|
# shortcircuit SUBJECT_IN_WHITELIST on
|
||||||
|
|
||||||
|
# the opposite; blacklisted mails can also save CPU
|
||||||
|
#
|
||||||
|
# shortcircuit USER_IN_BLACKLIST on
|
||||||
|
# shortcircuit USER_IN_BLACKLIST_TO on
|
||||||
|
# shortcircuit SUBJECT_IN_BLACKLIST on
|
||||||
|
|
||||||
|
# if you have taken the time to correctly specify your "trusted_networks",
|
||||||
|
# this is another good way to save CPU
|
||||||
|
#
|
||||||
|
# shortcircuit ALL_TRUSTED on
|
||||||
|
|
||||||
|
# and a well-trained bayes DB can save running rules, too
|
||||||
|
#
|
||||||
|
# shortcircuit BAYES_99 spam
|
||||||
|
# shortcircuit BAYES_00 ham
|
||||||
|
|
||||||
|
endif # Mail::SpamAssassin::Plugin::Shortcircuit
|
4
etc/spamassassin/sql.cf
Normal file
4
etc/spamassassin/sql.cf
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
user_scores_dsn DBI:mysql:vmail:localhost:3306
|
||||||
|
user_scores_sql_password password
|
||||||
|
user_scores_sql_username vmail
|
||||||
|
user_scores_sql_custom_query SELECT preference, value FROM sa_userpref WHERE username = _USERNAME_ OR username = '$GLOBAL' OR username = CONCAT('%',_DOMAIN_) ORDER BY username ASC
|
Loading…
Reference in New Issue
Block a user