Skip to content

Optional Configuration

Volumes

DMS has several locations in the container which may be worth persisting externally via Docker Volumes.

  • Often you will want to prefer bind mount volumes for easy access to files at a local location on your filesystem.
  • As a convention for our docs and example configs, the local location has the common prefix docker-data/dms/ for grouping these related volumes.

Reference - Volmes for DMS

Our docs may refer to these DMS specific volumes only by name, or the host/container path for brevity.

  • Config: docker-data/dms/config/ => /tmp/docker-mailserver/
  • Mail Storage: docker-data/dms/mail-data/ => /var/mail/
  • State: docker-data/dms/mail-state/ => /var/mail-state/
  • Logs: docker-data/dms/mail-logs/ => /var/log/mail/

Mail Storage Volume

This is the location where mail is delivered to your mailboxes.

State Volume

Run-time specific state lives here, but so does some data you may want to keep if a failure event occurs (crash, power loss).

Examples of relevant data

  • The Postfix queue (eg: mail pending delivery attempt)
  • Fail2Ban blocks.
  • ClamAV signature updates.
  • Redis storage for Rspamd.

When a volume is mounted to /var/mail-state/

  • Service run-time data is consolidated into the /var/mail-state/ directory. Otherwise the original locations vary and would need to be mounted individually.
  • The original locations are updated with symlinks to redirect to their new path in /var/mail-state/ (eg: /var/lib/redis => /var/mail-state/lib-redis/).

Supported services: Postfix, Dovecot, Fail2Ban, Amavis, PostGrey, ClamAV, SpamAssassin, Rspamd & Redis, Fetchmail, Getmail, LogRotate, PostSRSd, MTA-STS.

Tip

Sometimes it is helpful to disable this volume when troubleshooting to verify if the data stored here is in a bad state (eg: caused by a failure event).

Logs Volume

This can be a useful volume to persist for troubleshooting needs for the full set of log files.

Config Volume

Most configuration files for Postfix, Dovecot, etc. are persisted here.

This is a list of all configuration files and directories which are optional, automatically generated / updated by our setup CLI, or other internal scripts.

Directories

  • sieve-filter: directory for sieve filter scripts. (Docs: Sieve)
  • sieve-pipe: directory for sieve pipe scripts. (Docs: Sieve)
  • opendkim: DKIM directory. Auto-configurable via setup.sh config dkim. (Docs: DKIM)
  • ssl: SSL Certificate directory if SSL_TYPE is set to self-signed or custom. (Docs: SSL)
  • rspamd: Override directory for custom settings when using Rspamd (Docs: Rspamd)

Files

  • {user_email_address}.dovecot.sieve: User specific Sieve filter file. (Docs: Sieve)
  • before.dovecot.sieve: Global Sieve filter file, applied prior to the ${login}.dovecot.sieve filter. (Docs: Sieve)
  • after.dovecot.sieve: Global Sieve filter file, applied after the ${login}.dovecot.sieve filter. (Docs: Sieve)
  • postfix-main.cf: Every line will be added to the postfix main configuration. (Docs: Override Postfix Defaults)
  • postfix-master.cf: Every line will be added to the postfix master configuration. (Docs: Override Postfix Defaults)
  • postfix-accounts.cf: User accounts file. Modify via the setup.sh email script.
  • postfix-send-access.cf: List of users denied sending. Modify via setup.sh email restrict.
  • postfix-receive-access.cf: List of users denied receiving. Modify via setup.sh email restrict.
  • postfix-virtual.cf: Alias configuration file. Modify via setup.sh alias.
  • postfix-sasl-password.cf: listing of relayed domains with their respective <username>:<password>. Modify via setup.sh relay add-auth <domain> <username> [<password>]. (Docs: Relay-Hosts Auth)
  • postfix-relaymap.cf: domain-specific relays and exclusions. Modify via setup.sh relay add-domain and setup.sh relay exclude-domain. (Docs: Relay-Hosts Senders)
  • postfix-regexp.cf: Regular expression alias file. (Docs: Aliases)
  • ldap-users.cf: Configuration for the virtual user mapping virtual_mailbox_maps. See the setup-stack.sh script.
  • ldap-groups.cf: Configuration for the virtual alias mapping virtual_alias_maps. See the setup-stack.sh script.
  • ldap-aliases.cf: Configuration for the virtual alias mapping virtual_alias_maps. See the setup-stack.sh script.
  • ldap-domains.cf: Configuration for the virtual domain mapping virtual_mailbox_domains. See the setup-stack.sh script.
  • whitelist_clients.local: Whitelisted domains, not considered by postgrey. Enter one host or domain per line.
  • spamassassin-rules.cf: Anti-spam rules for Spamassassin. (Docs: FAQ - SpamAssassin Rules)
  • fail2ban-fail2ban.cf: Additional config options for fail2ban.cf. (Docs: Fail2Ban)
  • fail2ban-jail.cf: Additional config options for fail2ban's jail behavior. (Docs: Fail2Ban)
  • amavis.cf: replaces the /etc/amavis/conf.d/50-user file
  • dovecot.cf: replaces /etc/dovecot/local.conf. (Docs: Override Dovecot Defaults)
  • dovecot-quotas.cf: list of custom quotas per mailbox. (Docs: Accounts)
  • user-patches.sh: this file will be run after all configuration files are set up, but before the postfix, amavis and other daemons are started. (Docs: FAQ - How to adjust settings with the user-patches.sh script)
  • rspamd/custom-commands.conf: list of simple commands to adjust Rspamd modules in an easy way (Docs: Rspamd)