Skip to content

Optional Configuration


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.


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.


  • sieve-filter: directory for sieve filter scripts. (Docs: Sieve)
  • sieve-pipe: directory for sieve pipe scripts. (Docs: Sieve)
  • opendkim: DKIM directory. Auto-configurable via 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)


  • {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)
  • Every line will be added to the postfix main configuration. (Docs: Override Postfix Defaults)
  • Every line will be added to the postfix master configuration. (Docs: Override Postfix Defaults)
  • User accounts file. Modify via the email script.
  • List of users denied sending. Modify via email restrict.
  • List of users denied receiving. Modify via email restrict.
  • Alias configuration file. Modify via alias.
  • listing of relayed domains with their respective <username>:<password>. Modify via relay add-auth <domain> <username> [<password>]. (Docs: Relay-Hosts Auth)
  • domain-specific relays and exclusions. Modify via relay add-domain and relay exclude-domain. (Docs: Relay-Hosts Senders)
  • Regular expression alias file. (Docs: Aliases)
  • Configuration for the virtual user mapping virtual_mailbox_maps. See the script.
  • Configuration for the virtual alias mapping virtual_alias_maps. See the script.
  • Configuration for the virtual alias mapping virtual_alias_maps. See the script.
  • Configuration for the virtual domain mapping virtual_mailbox_domains. See the script.
  • whitelist_clients.local: Whitelisted domains, not considered by postgrey. Enter one host or domain per line.
  • Anti-spam rules for Spamassassin. (Docs: FAQ - SpamAssassin Rules)
  • Additional config options for (Docs: Fail2Ban)
  • Additional config options for fail2ban's jail behavior. (Docs: Fail2Ban)
  • replaces the /etc/amavis/conf.d/50-user file
  • replaces /etc/dovecot/local.conf. (Docs: Override Dovecot Defaults)
  • list of custom quotas per mailbox. (Docs: Accounts)
  • 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 script)
  • rspamd/custom-commands.conf: list of simple commands to adjust Rspamd modules in an easy way (Docs: Rspamd)