dbmail.conf
DBMAIL.CONF(5)
==============
NAME
----
dbmail.conf - configuration file for DBMail, the Database Mailer.
SYNOPSIS
--------
There are 8 sections: DBMAIL, SMTP, LMTP, POP, IMAP, SIEVE, LDAP, DELIVERY.
The default config file already has documentation for all of the settings.
DESCRIPTION
-----------
# Configuration file for DBMAIL
#
# Copyright (c) 2000-2006 IC&S, The Netherlands
# Copyright (c) 2004-2013 NFG Net Facilities Group BV support@nfg.nl
# Copyright (c) 2014-2019 Paul J Stevens, The Netherlands, support@nfg.nl
# Copyright (c) 2020-2023 Alan Hicks, Persistent Objects Ltd support@p-o.co.uk
#
[DBMAIL]
#
# Database settings
#
# database connection URI
# https://www.tildeslash.com/libzdb/#api
dburi = sqlite:///var/tmp/dbmail.db
#
# Supported drivers are sql, ldap.
#
authdriver =
#
#
# Number of database connections per threaded daemon
# This also determines the size of the worker threadpool
#
# Do NOT increase this without proper consideration. A
# very large database/worker pool will not only increase
# the connection pressure on the database, but will more
# significantly cause unnecessary context-switching in
# your CPUs.
#
#max_db_connections = 10
#
# Table prefix. Defaults to "dbmail_" if not specified.
#
table_prefix = dbmail_
#
# encoding must match the database/table encoding.
# i.e. latin1, utf8
encoding = utf8
#
# messages with unknown encoding will be assumed to have
# default_msg_encoding
# i.e. iso8859-1, utf8
default_msg_encoding = utf8
#
# Postmaster's email address for use in bounce messages.
#
#postmaster = DBMAIL-MAILER
#
# Sendmail executable for forwards, replies, notifies, vacations.
# You may use pipes (|) in this command, for example:
# dos2unix|/usr/sbin/sendmail works well with Qmail.
# You may use quotes (") for executables with unusual names.
#
sendmail = /usr/sbin/sendmail
#
#
# The following items can be overridden in the service-specific sections.
#
#
#
# Logging via stderr/log file and syslog
#
# Logging is broken up into 8 logging levels and each level can be individually turned on or off.
# The Stderr/log file logs all entries to stderr or the log file.
# Syslog logging uses the facility mail and the logging level of the event for logging.
# Syslog can then be configured to log data according to the levels.
#
# Set the log level to the sum of the values next to the levels you want to record.
# 1 = Emergency
# 2 = Alert
# 4 = Critical
# 8 = Error
# 16 = Warning
# 32 = Notice
# 64 = Info
# 128 = Debug
# 256 = Database -> Logs at debug level
#
# Examples: 0 = Nothing
# 31 = Emergency + Alert + Critical + Error + Warning
# 511 = Everything
#
file_logging_levels = 31
#
syslog_logging_levels = 15
#
# Generate a log entry for database queries for the log level at number of seconds of query execution time.
#
query_time_info = 10
query_time_notice = 20
query_time_warning = 30
#
# Throw an exception is the query takes longer than query_timeout seconds
query_timeout = 300
#
# Root privileges are used to open a port, then privileges
# are dropped down to the user/group specified here.
#
effective_user = nobody
effective_group = nogroup
#
# The IPv4 and/or IPv6 addresses the services will bind to.
# Use * for all local interfaces.
# Use 127.0.0.1 for localhost only.
# Separate multiple entries with spaces ( ) or commas (,).
#
bindip = 0.0.0.0 # IPv4 only - all IP's
#bindip = :: # IPv4 and IPv6 - all IP's (linux)
#bindip = :: # IPv6 only - all IP's (BSD)
#bindip = 0.0.0.0,:: # IPv4 and IPv6 - all IP's (BSD)
#
# The maximum length of the queue of pending connections. See
# listen(2) for more information
#
# backlog = 128
#
# Idle time allowed before a connection is shut off.
#
timeout = 300
#
# Idle time allowed before a connection is shut off if you have not logged in yet.
#
login_timeout = 60
#
# If yes, resolves IP addresses to DNS names when logging.
#
resolve_ip = no
#
# If yes, keep statistics in the authlog table for connecting users
#
authlog = no
#
# logfile for stdout messages
#
logfile = /var/log/dbmail/dbmail.log
#
# logfile for stderr messages
#
errorlog = /var/log/dbmail/dbmail.err
#
# directory for storing PID files
#
pid_directory = /var/run/dbmail
#
# directory for locating libraries (normally has a sane default compiled-in)
#
#library_directory = /usr/lib/dbmail
#
# SSL/TLS certificates
#
# A file containing a list of CAs in PEM format
tls_cafile =
# A file containing a PEM format certificate
tls_cert =
# A file containing a PEM format RSA or DSA key
tls_key =
# A cipher list string in the format given in ciphers(1)
tls_ciphers =
# hashing algorithm. You can select your favorite hash type
# for generating unique ids for message parts.
#
# for valid values check mhash(3) but minus the MHASH_ prefix.
#
# if you ever change this value run 'dbmail-util --rehash' to
# update the hash for all mimeparts.
#
# examples: MD5, SHA1, SHA256, SHA512, TIGER, WHIRLPOOL
#
# hash_algorithm = SHA1
# header_cache tuning
#
# set header_cache_readonly to 'yes' to prevent new
# unknown header-names from being cached.
#
# header_cache_readonly = yes
[LMTP]
port = 24
#tls_port =
[POP]
port = 110
#tls_port = 995
# You can set an alternate banner to display when connecting to the service
# banner = DBMAIL pop3 server ready to rock
# If TLS is enabled, login before starttls is normally
# allowed. Use login_disabled=yes to change this
#
# login_disabled = no
#
# If yes, allows SMTP access from the host IP connecting by POP3.
# This requires addition configuration of your MTA
#
pop_before_smtp = no
[HTTP]
port = 41380
#
# the httpd daemon provides full access to all users, mailboxes
# and messages. Be very careful with this one!
bindip = 127.0.0.1
admin = admin:secret
[IMAP]
# IMAP State Reload Strategy. Internally DBMail is loading various information about the selected folders (flags, message ids, etc)
# 1 = full reload (default)
# 2 = diff reload (experimental)
# In some setups it might be beneficial to use it, due to the fact that
# reloading is done in differential mode, which may result in lower DB usage
# mailbox_update_strategy = 1
# IMAP Search strategy.
# 1 = full sql search (default). All searches performed on the current folder
# are made via sql queries.
# 2 = optimized search, use partial sql search (experimental). Some searches
# will be made via loaded state of the current folder.
# In some setups it might be beneficial to use it, due to lower DB usage.
# mailbox_search_strategy = 1
# Only for IMAP Reload Strategy (mailbox_search_strategy = 2)
# Might be beneficial to do a full reload after n iterations. Sometimes might be beneficial to reload the full state reload.
# -1 = no expiration
# x = number of iterations. If no mails are received (IDLE Server) those iterations can be transform in seconds
# mailbox_update_strategy_2_max_iterations * idle_timeout * idle_interval = s
#
# mailbox_update_strategy_2_max_iterations = 64
# Allow reporting UNSEEN in SELECT command.
# Although RFC 3501 does state it that is mandatory, missing it means that the client need to issue a search for the unseen messages
# 1 = allow UNSEEN in SELECT Command (default)
# 0 = Do not Allow UNSEEN in SELECT Command
# command_select_allow_unseen = 1
# Mailbox Sequence update strategy.
# 1 = normal behaviour, transactional safe
# 2 = non transaction, still safe, might be better in clustered environments
# mailbox_update_seq_strategy = 1
# Mailbox DELETE and message status synchronization.
# In some instances messages marked as deleted are not having the status as deleted
# 1 = normal do not sync
# 2 = sync
# mailbox_sync_deleted = 1
# If mailbox_sync_deleted=2, size of the batch.
# Due to the fact that this flag is making correction live, protection should be put in place
# mailbox_sync_batch_size = 64
# You can set an alternate banner to display when connecting to the service
# banner = imap 4r1 server (dbmail 3.4.x)
#
# Port to bind to.
#
port = 143
#tls_port = 993
#
# IMAP prefers a longer timeout than other services.
#
timeout = 4000
#
# If yes, allows SMTP access from the host IP connecting by IMAP.
# This requires addition configuration of your MTA
#
imap_before_smtp = no
#
# during IDLE, how many seconds between checking the mailbox
# status (default: 30)
#
# idle_timeout = 30
# during IDLE, how often should the server send an '* OK' still
# here message (default: 10)
#
# the time between such a message is idle_timeout * idle_interval
# seconds
#
# idle_interval = 10
#
# If TLS is enabled, login before starttls is normally
# not allowed. Use login_disabled=no to change this
#
# login_disabled = yes
#
# Provide a CAPABILITY to override the default
#
# capability = IMAP4 IMAP4rev1 AUTH=LOGIN ACL RIGHTS=texk NAMESPACE CHILDREN SORT QUOTA THREAD=ORDEREDSUBJECT UNSELECT IDLE
# max message size. You can specify the maximum message size
# accepted by the IMAP daemon during APPEND commands.
#
# Supported formats:
# decimal: 1000000
# octal: 03777777
# hex: 0xfffff
#
# max_message_size =
[SIEVE]
#
# Port to bind to.
#
port = 4090
[LDAP]
port = 389
version = 3
hostname = ldap
base_dn = ou=People,dc=mydomain,dc=com
#
# If your LDAP library supports ldap_initialize(), then you can use the
# alternative LDAP server DSN like following.
#
# URI = ldap://127.0.0.1:389
# URI = ldapi://%2fvar%2frun%2fopenldap%2fldapi/
#
# Leave blank for anonymous bind.
# example: cn=admin,dc=mydomain,dc=com
#
bind_dn =
#
# Leave blank for anonymous bind.
#
bind_pw =
scope = SubTree
# AD users may want to set this to 'no' to disable
# ldap referrals if you are seeing 'Operations errors'
# in your logs
#
referrals = yes
user_objectclass = top,account,dbmailUser
forw_objectclass = top,account,dbmailForwardingAddress
cn_string = uid
field_passwd = userPassword
field_uid = uid
field_nid = uidNumber
min_nid = 10000
max_nid = 15000
field_cid = gidNumber
min_cid = 10000
max_cid = 15000
# a comma-separated list of attributes to match when searching
# for users or forwards that match a delivery address. A match
# on any of them is a hit.
field_mail = mail
# field that holds the mail-quota size for a user.
field_quota = mailQuota
# field that holds the forwarding address.
field_fwdtarget = mailForwardingAddress
# override the query string used to search for users
# or forwards with a delivery address.
# query_string = (mail=%s)
[DELIVERY]
#
# Run Sieve scripts as messages are delivered.
#
SIEVE = yes
#
# Use 'user+mailbox@domain' format to deliver to a mailbox.
#
SUBADDRESS = yes
#
# Turn on/off the Sieve Vacation extension.
#
SIEVE_VACATION = yes
#
# Turn on/off the Sieve Notify extension
#
SIEVE_NOTIFY = yes
#
# Turn on/off additional Sieve debugging.
#
SIEVE_DEBUG = no
# Use the auto_notify table to send email notifications.
#
AUTO_NOTIFY = no
#
# Use the auto_reply table to send away messages.
#
AUTO_REPLY = no
#
# Defaults to "NEW MAIL NOTIFICATION"
#
#AUTO_NOTIFY_SUBJECT =
#
# Defaults to POSTMASTER from the DBMAIL section.
#
#AUTO_NOTIFY_SENDER =
# If you set this to 'yes' dbmail will check for duplicate
# messages in the relevant mailbox during delivery using
# the Message-ID header
#
suppress_duplicates = no
#
# Soft or hard bounce on over-quota delivery
#
quota_failure = hard
# end of configuration file