diff --git a/.editorconfig b/.editorconfig index e4fee2da..bfe2c913 100644 --- a/.editorconfig +++ b/.editorconfig @@ -28,8 +28,6 @@ indent_size = 2 # directories created by git submodules [{test/bats/**,test/test_helper/bats-assert/**,test/test_helper/bats-support/**,target/docker-configomat/**}] -insert_final_newline = none indent_style = none indent_size = none -trim_trailing_whitespace = none end_of_line = none diff --git a/.gitignore b/.gitignore index 75d788ab..283c319b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,4 @@ test/config/postfix-receive-access.cfe test/config/postfix-send-access.cf test/config/postfix-send-access.cfe test/config/relay-hosts/chksum -test/config/relay-hosts/postfix-aliases.cf \ No newline at end of file +test/config/relay-hosts/postfix-aliases.cf diff --git a/.hadolint.yaml b/.hadolint.yaml index f9128629..83545673 100644 --- a/.hadolint.yaml +++ b/.hadolint.yaml @@ -1,5 +1,5 @@ -ignored: - # disable explicit version for apt install - - DL3008 -trustedRegistries: - - docker.io +ignored: + # disable explicit version for apt install + - DL3008 +trustedRegistries: + - docker.io diff --git a/.travis.yml b/.travis.yml index 5dfc6605..8b133114 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,20 +10,27 @@ env: global: - HADOLINT_VERSION=1.17.1 - SHELLCHECK_VERSION=0.7.1 + - ECLINT_VERSION=2.1.0 addons: apt: packages: - - xz-utils + - xz-utils services: - docker before_install: - - sudo curl -L https://github.com/hadolint/hadolint/releases/download/v$HADOLINT_VERSION/hadolint-$(uname -s)-$(uname -m) -o /usr/local/bin/hadolint + # HADOLINT + - sudo curl -L https://github.com/hadolint/hadolint/releases/download/v${HADOLINT_VERSION}/hadolint-$(uname -s)-$(uname -m) -o /usr/local/bin/hadolint - sudo chmod +rx /usr/local/bin/hadolint - - sudo wget -qO- "https://github.com/koalaman/shellcheck/releases/download/v${SHELLCHECK_VERSION}/shellcheck-v${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | tar -xJv - - sudo cp "shellcheck-v${SHELLCHECK_VERSION}/shellcheck" /usr/bin/ + # SHELLCHECK + - sudo wget -qO- "https://github.com/koalaman/shellcheck/releases/download/v${SHELLCHECK_VERSION}/shellcheck-v${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | tar -xJ + - sudo mv "shellcheck-v${SHELLCHECK_VERSION}/shellcheck" /usr/bin/ + # ECLINT + - sudo wget -qO- "https://github.com/editorconfig-checker/editorconfig-checker/releases/download/${ECLINT_VERSION}/ec-linux-amd64.tar.gz" | tar -xaz + - sudo mv bin/ec-linux-amd64 /usr/bin/eclint + - sudo chmod +x /usr/bin/eclint install: - make lint @@ -31,6 +38,7 @@ install: script: - make shellcheck + - make eclint - make generate-accounts run generate-accounts-after-run fixtures tests after_script: diff --git a/Dockerfile b/Dockerfile index c09367a6..863d4201 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,13 +4,13 @@ ARG VCS_REF ARG VCS_VERSION LABEL maintainer="Thomas VIAL" \ - org.label-schema.name="docker-mailserver" \ - org.label-schema.description="A fullstack but simple mailserver (smtp, imap, antispam, antivirus, ssl...)" \ - org.label-schema.url="https://github.com/tomav/docker-mailserver" \ - org.label-schema.vcs-ref=$VCS_REF \ - org.label-schema.vcs-url="https://github.com/tomav/docker-mailserver" \ - org.label-schema.version=$VCS_VERSION \ - org.label-schema.schema-version="1.0" + org.label-schema.name="docker-mailserver" \ + org.label-schema.description="A fullstack but simple mailserver (smtp, imap, antispam, antivirus, ssl...)" \ + org.label-schema.url="https://github.com/tomav/docker-mailserver" \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url="https://github.com/tomav/docker-mailserver" \ + org.label-schema.version=$VCS_VERSION \ + org.label-schema.schema-version="1.0" ARG DEBIAN_FRONTEND=noninteractive ENV VIRUSMAILS_DELETE_DELAY=7 @@ -33,76 +33,76 @@ RUN \ apt-get -y upgrade && \ apt-get -y install postfix && \ apt-get -y install --no-install-recommends \ - altermime \ - amavisd-new \ - apt-transport-https \ - arj \ - binutils \ - bzip2 \ - ca-certificates \ - cabextract \ - clamav \ - clamav-daemon \ - cpio \ - curl \ - ed \ - fail2ban \ - fetchmail \ - file \ - gamin \ - gzip \ - gnupg \ - iproute2 \ - iptables \ - locales \ - logwatch \ - lhasa \ - libdate-manip-perl \ - liblz4-tool \ - libmail-spf-perl \ - libnet-dns-perl \ - libsasl2-modules \ - lrzip \ - lzop \ - netcat-openbsd \ - nomarch \ - opendkim \ - opendkim-tools \ - opendmarc \ - pax \ - pflogsumm \ - p7zip-full \ - postfix-ldap \ - postfix-pcre \ - postfix-policyd-spf-python \ - postsrsd \ - pyzor \ - razor \ - rpm2cpio \ - rsyslog \ - sasl2-bin \ - spamassassin \ - supervisor \ - postgrey \ - unrar-free \ - unzip \ - whois \ - xz-utils \ + altermime \ + amavisd-new \ + apt-transport-https \ + arj \ + binutils \ + bzip2 \ + ca-certificates \ + cabextract \ + clamav \ + clamav-daemon \ + cpio \ + curl \ + ed \ + fail2ban \ + fetchmail \ + file \ + gamin \ + gzip \ + gnupg \ + iproute2 \ + iptables \ + locales \ + logwatch \ + lhasa \ + libdate-manip-perl \ + liblz4-tool \ + libmail-spf-perl \ + libnet-dns-perl \ + libsasl2-modules \ + lrzip \ + lzop \ + netcat-openbsd \ + nomarch \ + opendkim \ + opendkim-tools \ + opendmarc \ + pax \ + pflogsumm \ + p7zip-full \ + postfix-ldap \ + postfix-pcre \ + postfix-policyd-spf-python \ + postsrsd \ + pyzor \ + razor \ + rpm2cpio \ + rsyslog \ + sasl2-bin \ + spamassassin \ + supervisor \ + postgrey \ + unrar-free \ + unzip \ + whois \ + xz-utils \ # use Dovecot community repo to react faster on security updates #curl https://repo.dovecot.org/DOVECOT-REPO-GPG | gpg --import && \ #gpg --export ED409DA1 > /etc/apt/trusted.gpg.d/dovecot.gpg && \ #echo "deb https://repo.dovecot.org/ce-2.3-latest/debian/stretch stretch main" > /etc/apt/sources.list.d/dovecot-community.list && \ #apt-get update -q --fix-missing && \ #apt-get -y install --no-install-recommends \ - dovecot-core \ - dovecot-imapd \ - dovecot-ldap \ - dovecot-lmtpd \ - dovecot-managesieved \ - dovecot-pop3d \ - dovecot-sieve \ - dovecot-solr \ - && \ + dovecot-core \ + dovecot-imapd \ + dovecot-ldap \ + dovecot-lmtpd \ + dovecot-managesieved \ + dovecot-pop3d \ + dovecot-sieve \ + dovecot-solr \ + && \ apt-get autoclean && \ rm -rf /var/lib/apt/lists/* && \ rm -rf /usr/share/locale/* && \ @@ -151,7 +151,7 @@ COPY target/postfix/ldap-users.cf target/postfix/ldap-groups.cf target/postfix/l # Enables Spamassassin CRON updates and update hook for supervisor # hadolint ignore=SC2016 RUN sed -i -r 's/^(CRON)=0/\1=1/g' /etc/default/spamassassin && \ - sed -i -r 's/^\$INIT restart/supervisorctl restart amavis/g' /etc/spamassassin/sa-update-hooks.d/amavisd-new + sed -i -r 's/^\$INIT restart/supervisorctl restart amavis/g' /etc/spamassassin/sa-update-hooks.d/amavisd-new # Enables Postgrey COPY target/postgrey/postgrey /etc/default/postgrey @@ -244,7 +244,7 @@ WORKDIR / # Switch iptables and ip6tables to legacy for fail2ban RUN update-alternatives --set iptables /usr/sbin/iptables-legacy \ - && update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy + && update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy EXPOSE 25 587 143 465 993 110 995 4190 diff --git a/Makefile b/Makefile index 7d8c1381..8e4073ce 100644 --- a/Makefile +++ b/Makefile @@ -19,12 +19,8 @@ build: backup: # if backup directories exist, clean hasn't been called, therefore # we shouldn't overwrite it. It still contains the original content. - @ if [ ! -d config.bak ]; then\ - cp -rp config config.bak;\ - fi - @ if [ ! -d testconfig.bak ]; then\ - cp -rp test/config testconfig.bak;\ - fi + @ if [ ! -d config.bak ]; then cp -rp config config.bak; fi + @ if [ ! -d testconfig.bak ]; then cp -rp test/config testconfig.bak; fi generate-accounts: @ docker run --rm -e MAIL_USER=user1@localhost.localdomain -e MAIL_PASS=mypassword -t $(NAME) /bin/sh -c 'echo "$$MAIL_USER|$$(doveadm pw -s SHA512-CRYPT -u $$MAIL_USER -p $$MAIL_PASS)"' > test/config/postfix-accounts.cf @@ -173,3 +169,13 @@ shellcheck: else\ echo -e '\nSuccess' ;\ fi + +eclint: + @ echo -e "Testing file formatting according to .editorconfig\n" + @ printf "Version %s\n\n" "$$(/usr/bin/eclint --version)" + @ if /usr/bin/eclint -exclude "\.bats$$" | grep .; then\ + echo -e "\nError" ;\ + exit 1 ;\ + else\ + echo -e '\nSuccess' ;\ + fi diff --git a/README.md b/README.md index 8fe3b127..84a0fd7f 100644 --- a/README.md +++ b/README.md @@ -15,13 +15,13 @@ [shields::gitter]: https://img.shields.io/gitter/room/tomav/docker-mailserver.svg [gitter]: https://gitter.im/tomav/docker-mailserver -A fullstack but simple mail server (smtp, imap, antispam, antivirus...). +A fullstack but simple mail server (SMTP, IMAP, Antispam, Antivirus...). Only configuration files, no SQL database. Keep it simple and versioned. Easy to deploy and upgrade. Why I created this image: [Simple Mail Server with Docker](http://tvi.al/simple-mail-server-with-docker/) -1. [Announcement](#announcement) +1. [Announcements](#announcements) 2. [Includes](#includes) 3. [Issues & Contributing](#issues--contributing) 4. [Requirements](#requirements) @@ -29,24 +29,19 @@ Why I created this image: [Simple Mail Server with Docker](http://tvi.al/simple- 6. [Examples](#examples) 7. [Environment Variables](#environment-variables) -## Announcement +## Announcements -At this point we have merged the next branch based on Debian Buster into master. -That means the docker image latest uses Buster. The change may break things! - -The following possibly breaking changes are known: - -- Filebeat is removed and should be handled by another container, see [Wiki](https://github.com/tomav/docker-mailserver/wiki/). -- Dovecot will be downgraded a little bit (same major version) so that we can use the official Debian version. - -If you want to stick to the old version a while longer, either switch to stable or to a specific version. -If you run into problems, please raise issues and ask for help. Don't forget to provide details. +1. Debian Buster is now Docker base image + - Filebeat was removed + - Dovecot was downgraded +2. ELK was removed +3. New contributing guidelines were added ## Includes -- [Postfix](http://www.postfix.org) with smtp or ldap auth -- [Dovecot](https://www.dovecot.org) for sasl, imap (and optional pop3) with ssl support, with ldap auth, sieve and [quotas](https://github.com/tomav/docker-mailserver/wiki/Configure-Accounts#mailbox-quota) -- saslauthd with ldap auth +- [Postfix](http://www.postfix.org) with SMTP or LDAP auth +- [Dovecot](https://www.dovecot.org) for SASL, IMAP (and optional POP3) with ssl support, with ldap auth, sieve and [quotas](https://github.com/tomav/docker-mailserver/wiki/Configure-Accounts#mailbox-quota) +- SASLauthd with LDAP auth - [Amavis](https://www.amavis.org/) - [Spamassasin](http://spamassassin.apache.org/) supporting custom rules - [ClamAV](https://www.clamav.net/) with automatic updates @@ -112,21 +107,11 @@ curl -o env-mailserver https://raw.githubusercontent.com/tomav/docker-mailserver **Note:** If you want to use a bare domain (host name equals domain name) see [FAQ](https://github.com/tomav/docker-mailserver/wiki/FAQ-and-Tips#can-i-use-nakedbare-domains-no-host-name). -### Start the Container +### Get up and running ``` BASH docker-compose up -d mail -``` - -### Create your mail accounts - -``` BASH ./setup.sh email add [] -``` - -### Generate DKIM keys - -``` BASH ./setup.sh config dkim ``` @@ -150,10 +135,6 @@ And don't forget to have a look at the remaining functions of the `setup.sh` scr If you got any problems with SPF and/or forwarding mails, give [SRS](https://github.com/roehling/postsrsd/blob/master/README.md) a try. You enable SRS by setting `ENABLE_SRS=1`. See the variable description for further information. -#### For informational purposes - -`restart: always` ensures that the mail server container (and Filebeat/ELK containers when using the mail server together with ELK stack) is automatically restarted by Docker in cases like a Docker service or host restart or container exit. - #### Exposed ports | Protocol | Opt-in Encryption ¹ | Enforced Encryption | Purpose | diff --git a/target/bin/addmailuser b/target/bin/addmailuser index 3b486863..bf9fe61e 100755 --- a/target/bin/addmailuser +++ b/target/bin/addmailuser @@ -24,7 +24,7 @@ expr index "$USER" "@" >/dev/null || { usage; errex "username must include the d # Protect config file with lock to avoid race conditions touch $DATABASE -( +( flock -e 200 grep -qi "^$(escape "$USER")|" $DATABASE 2>/dev/null && diff --git a/target/dovecot/10-auth.conf b/target/dovecot/10-auth.conf index bfec05ef..942b0857 100644 --- a/target/dovecot/10-auth.conf +++ b/target/dovecot/10-auth.conf @@ -30,7 +30,7 @@ # 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 = +#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 @@ -73,7 +73,7 @@ # 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 = +#auth_krb5_keytab = # Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and # ntlm_auth helper. @@ -88,9 +88,9 @@ # 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 +# Take the username from client's SSL certificate, using # X509_NAME_get_text_by_NID() which returns the subject's DN's -# CommonName. +# CommonName. #auth_ssl_username_from_cert = no # Space separated list of wanted authentication mechanisms: diff --git a/target/dovecot/10-logging.conf b/target/dovecot/10-logging.conf index ddc45cef..0dbf97dd 100644 --- a/target/dovecot/10-logging.conf +++ b/target/dovecot/10-logging.conf @@ -7,9 +7,9 @@ #log_path = syslog # Log file to use for informational messages. Defaults to log_path. -#info_log_path = +#info_log_path = # Log file to use for debug messages. Defaults to info_log_path. -#debug_log_path = +#debug_log_path = # Syslog facility to use if you're logging to syslog. Usually if you don't # want to use "mail", you'll use local0..local7. Also other standard @@ -69,7 +69,7 @@ plugin { # Login log format. %s contains login_log_format_elements string, %$ contains # the data we want to log. #login_log_format = %$: %s - + # Log prefix for mail processes. See doc/wiki/Variables.txt for list of # possible variables you can use. #mail_log_prefix = "%s(%u): " diff --git a/target/dovecot/10-mail.conf b/target/dovecot/10-mail.conf index 782db0b8..2367389e 100644 --- a/target/dovecot/10-mail.conf +++ b/target/dovecot/10-mail.conf @@ -46,11 +46,11 @@ namespace inbox { # 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 = + #separator = # Prefix required to access this namespace. This needs to be different for # all namespaces. For example "Public/". - #prefix = + #prefix = # Physical location of the mailbox. This is in same format as # mail_location, which is also the default for it. @@ -186,7 +186,7 @@ mail_privileged_group = docker # 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. -#valid_chroot_dirs = +#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 @@ -194,7 +194,7 @@ mail_privileged_group = docker # 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. -#mail_chroot = +#mail_chroot = # UNIX socket path to master authentication server to find users. # This is used by imap (for shared users) and lda. @@ -312,7 +312,7 @@ maildir_stat_dirs = yes # 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 +# Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK # commands. #mbox_dirty_syncs = yes diff --git a/target/dovecot/10-master.conf b/target/dovecot/10-master.conf index 059c3eb3..e4ec233a 100644 --- a/target/dovecot/10-master.conf +++ b/target/dovecot/10-master.conf @@ -55,7 +55,7 @@ service lmtp { #inet_listener lmtp { # Avoid making LMTP visible for the entire internet #address = - #port = + #port = #} } @@ -122,7 +122,7 @@ service dict { # For example: mode=0660, group=vmail and global mail_access_groups=vmail unix_listener dict { #mode = 0600 - #user = - #group = + #user = + #group = } } diff --git a/target/postfix/master.cf b/target/postfix/master.cf index 6b4e80bf..1fdfe823 100644 --- a/target/postfix/master.cf +++ b/target/postfix/master.cf @@ -10,10 +10,10 @@ # (yes) (yes) (no) (never) (100) # ========================================================================== -smtp inet n - n - 1 postscreen -smtpd pass - - n - - smtpd -tlsproxy unix - - n - 0 tlsproxy -dnsblog unix - - n - 0 dnsblog +smtp inet n - n - 1 postscreen +smtpd pass - - n - - smtpd +tlsproxy unix - - n - 0 tlsproxy +dnsblog unix - - n - 0 dnsblog submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt diff --git a/target/postsrsd/postsrsd b/target/postsrsd/postsrsd index 8238786a..1ec1822a 100644 --- a/target/postsrsd/postsrsd +++ b/target/postsrsd/postsrsd @@ -38,4 +38,4 @@ SRS_REVERSE_PORT=10002 RUN_AS=postsrsd # Jail daemon in chroot environment -CHROOT=/var/lib/postsrsd \ No newline at end of file +CHROOT=/var/lib/postsrsd diff --git a/target/start-mailserver.sh b/target/start-mailserver.sh index cf0fa2bd..64f5758b 100644 --- a/target/start-mailserver.sh +++ b/target/start-mailserver.sh @@ -1627,7 +1627,7 @@ function _setup_security_stack() if [[ ${DEFAULT_VARS['EXPLICITLY_DEFINED_SPAMASSASSIN_SPAM_TO_INBOX']} == "0" ]] then - _notify 'warn' "Spam messages WILL NOT BE DELIVERED, you will NOT be notified of ANY message bounced. Please define SPAMASSASSIN_SPAM_TO_INBOX explicitly." + _notify 'warn' "Spam messages WILL NOT BE DELIVERED, you will NOT be notified of ANY message bounced. Please define SPAMASSASSIN_SPAM_TO_INBOX explicitly." fi fi fi diff --git a/test/config/dovecot-lmtp/conf.d/10-director.conf b/test/config/dovecot-lmtp/conf.d/10-director.conf index 31e97e9e..5eeb5d68 100644 --- a/test/config/dovecot-lmtp/conf.d/10-director.conf +++ b/test/config/dovecot-lmtp/conf.d/10-director.conf @@ -11,11 +11,11 @@ # List of IPs or hostnames to all director servers, including ourself. # Ports can be specified as ip:port. The default port is the same as # what director service's inet_listener is using. -#director_servers = +#director_servers = # List of IPs or hostnames to all backend mail servers. Ranges are allowed # too, like 10.0.0.10-10.0.0.30. -#director_mail_servers = +#director_mail_servers = # How long to redirect users to a specific server after it no longer has # any connections. @@ -42,7 +42,7 @@ service director { #mode = 0600 } inet_listener { - #port = + #port = } } diff --git a/test/config/dovecot-lmtp/conf.d/10-logging.conf b/test/config/dovecot-lmtp/conf.d/10-logging.conf index ddc45cef..0dbf97dd 100644 --- a/test/config/dovecot-lmtp/conf.d/10-logging.conf +++ b/test/config/dovecot-lmtp/conf.d/10-logging.conf @@ -7,9 +7,9 @@ #log_path = syslog # Log file to use for informational messages. Defaults to log_path. -#info_log_path = +#info_log_path = # Log file to use for debug messages. Defaults to info_log_path. -#debug_log_path = +#debug_log_path = # Syslog facility to use if you're logging to syslog. Usually if you don't # want to use "mail", you'll use local0..local7. Also other standard @@ -69,7 +69,7 @@ plugin { # Login log format. %s contains login_log_format_elements string, %$ contains # the data we want to log. #login_log_format = %$: %s - + # Log prefix for mail processes. See doc/wiki/Variables.txt for list of # possible variables you can use. #mail_log_prefix = "%s(%u): " diff --git a/test/config/dovecot-lmtp/conf.d/10-mail.conf b/test/config/dovecot-lmtp/conf.d/10-mail.conf index da0a13e9..57899ac2 100644 --- a/test/config/dovecot-lmtp/conf.d/10-mail.conf +++ b/test/config/dovecot-lmtp/conf.d/10-mail.conf @@ -46,11 +46,11 @@ namespace inbox { # 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 = + #separator = # Prefix required to access this namespace. This needs to be different for # all namespaces. For example "Public/". - #prefix = + #prefix = # Physical location of the mailbox. This is in same format as # mail_location, which is also the default for it. @@ -186,7 +186,7 @@ mail_privileged_group = docker # 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. -#valid_chroot_dirs = +#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 @@ -194,7 +194,7 @@ mail_privileged_group = docker # 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. -#mail_chroot = +#mail_chroot = # UNIX socket path to master authentication server to find users. # This is used by imap (for shared users) and lda. @@ -205,7 +205,7 @@ mail_privileged_group = docker # 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 = ## ## Mailbox handling optimizations @@ -307,7 +307,7 @@ mail_privileged_group = docker # 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 +# Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK # commands. #mbox_dirty_syncs = yes diff --git a/test/config/dovecot-lmtp/conf.d/10-master.conf b/test/config/dovecot-lmtp/conf.d/10-master.conf index 55c9de96..7d0c7f2c 100644 --- a/test/config/dovecot-lmtp/conf.d/10-master.conf +++ b/test/config/dovecot-lmtp/conf.d/10-master.conf @@ -122,7 +122,7 @@ service dict { # For example: mode=0660, group=vmail and global mail_access_groups=vmail unix_listener dict { #mode = 0600 - #user = - #group = + #user = + #group = } } diff --git a/test/config/dovecot-lmtp/conf.d/20-imap.conf b/test/config/dovecot-lmtp/conf.d/20-imap.conf index 689b0ea4..685917b6 100644 --- a/test/config/dovecot-lmtp/conf.d/20-imap.conf +++ b/test/config/dovecot-lmtp/conf.d/20-imap.conf @@ -14,7 +14,7 @@ # 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 = +#imap_capability = # How long to wait between "OK Still here" notifications when client is # IDLEing. @@ -23,7 +23,7 @@ # 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 = +#imap_id_send = # ID fields sent by client to log. * means everything. #imap_id_log = @@ -46,7 +46,7 @@ # greyed out, instead of only later giving "not selectable" popup error. # # The list is space-separated. -#imap_client_workarounds = +#imap_client_workarounds = # Host allowed in URLAUTH URLs sent by client. "*" allows all. #imap_urlauth_host = diff --git a/test/config/dovecot-lmtp/conf.d/20-pop3.conf b/test/config/dovecot-lmtp/conf.d/20-pop3.conf index 50470e90..d8fbb278 100644 --- a/test/config/dovecot-lmtp/conf.d/20-pop3.conf +++ b/test/config/dovecot-lmtp/conf.d/20-pop3.conf @@ -86,7 +86,7 @@ # Outlook Express and Netscape Mail breaks if end of headers-line is # missing. This option simply sends it if it's missing. # The list is space-separated. -#pop3_client_workarounds = +#pop3_client_workarounds = protocol pop3 { # Space separated list of plugins to load (default is global mail_plugins). diff --git a/test/config/dovecot-lmtp/conf.d/auth-ldap.conf.ext b/test/config/dovecot-lmtp/conf.d/auth-ldap.conf.ext index 5db32fa3..b54d709e 100644 --- a/test/config/dovecot-lmtp/conf.d/auth-ldap.conf.ext +++ b/test/config/dovecot-lmtp/conf.d/auth-ldap.conf.ext @@ -19,7 +19,7 @@ passdb { userdb { driver = ldap args = /etc/dovecot/dovecot-ldap.conf.ext - + # Default fields can be used to specify defaults that LDAP may override #default_fields = home=/home/virtual/%u } diff --git a/test/config/dovecot-lmtp/conf.d/auth-system.conf.ext b/test/config/dovecot-lmtp/conf.d/auth-system.conf.ext index 23f943c7..4c0f6fdc 100644 --- a/test/config/dovecot-lmtp/conf.d/auth-system.conf.ext +++ b/test/config/dovecot-lmtp/conf.d/auth-system.conf.ext @@ -20,7 +20,7 @@ passdb { #passdb { #driver = passwd # [blocking=no] - #args = + #args = #} # Shadow passwords for system users (NSS, /etc/shadow or similiar). @@ -29,7 +29,7 @@ passdb { #passdb { #driver = shadow # [blocking=no] - #args = + #args = #} # PAM-like authentication for OpenBSD. @@ -50,7 +50,7 @@ userdb { # driver = passwd # [blocking=no] - #args = + #args = # Override fields from passwd #override_fields = home=/home/virtual/%u diff --git a/test/config/dovecot-lmtp/dovecot-sql.conf.ext b/test/config/dovecot-lmtp/dovecot-sql.conf.ext index 77e81871..a1ba7a20 100644 --- a/test/config/dovecot-lmtp/dovecot-sql.conf.ext +++ b/test/config/dovecot-lmtp/dovecot-sql.conf.ext @@ -29,7 +29,7 @@ # ); # Database driver: mysql, pgsql, sqlite -#driver = +#driver = # Database connection string. This is driver-specific setting. # @@ -54,7 +54,7 @@ # 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. # @@ -93,7 +93,7 @@ # %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. diff --git a/test/config/dovecot-lmtp/dovecot.conf b/test/config/dovecot-lmtp/dovecot.conf index 6f12cedc..0f86b5ca 100644 --- a/test/config/dovecot-lmtp/dovecot.conf +++ b/test/config/dovecot-lmtp/dovecot.conf @@ -23,7 +23,7 @@ # Enable installed protocols !include_try /etc/dovecot/protocols.d/*.protocol -# A comma separated list of IPs or hosts where to listen in for connections. +# A comma separated list of IPs or hosts where to listen in for connections. # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces. # If you want to specify non-default ports or anything more complex, # edit conf.d/master.conf. @@ -48,7 +48,7 @@ #login_trusted_networks = # Space separated list of login access check sockets (e.g. tcpwrap) -#login_access_sockets = +#login_access_sockets = # With proxy_maybe=yes if proxy destination matches any of these IPs, don't do # proxying. This isn't necessary normally, but may be useful if the destination diff --git a/test/config/letsencrypt/mail.my-domain.com/cert.pem b/test/config/letsencrypt/mail.my-domain.com/cert.pem index 1e391e01..483dc947 100644 --- a/test/config/letsencrypt/mail.my-domain.com/cert.pem +++ b/test/config/letsencrypt/mail.my-domain.com/cert.pem @@ -27,4 +27,4 @@ WIdAFVykPs87WKyHNY8W1zle/Ye9yjS6bjHdjqnOiG/7qDQ/DDYGn7ILHAHmUZYy 1QQ0EdffNkLpkmCnTnotgBUpqmDt7pMNZRuYFTQq631ihe7jRXjSkgWS7tTfUT15 SesUIo1NbjCJmBceFd2c/srgVlbWc2LXt7Qf5yxWJyhT16r/M7ok0btH25D5azk2 TKdnq/QFhHWVZUr3hg== ------END CERTIFICATE----- \ No newline at end of file +-----END CERTIFICATE----- diff --git a/test/config/letsencrypt/mail.my-domain.com/chain.pem b/test/config/letsencrypt/mail.my-domain.com/chain.pem index edb593bc..0002462c 100644 --- a/test/config/letsencrypt/mail.my-domain.com/chain.pem +++ b/test/config/letsencrypt/mail.my-domain.com/chain.pem @@ -24,4 +24,4 @@ wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== ------END CERTIFICATE----- \ No newline at end of file +-----END CERTIFICATE----- diff --git a/test/config/letsencrypt/mail.my-domain.com/fullchain.pem b/test/config/letsencrypt/mail.my-domain.com/fullchain.pem index 9060829b..dbf59489 100644 --- a/test/config/letsencrypt/mail.my-domain.com/fullchain.pem +++ b/test/config/letsencrypt/mail.my-domain.com/fullchain.pem @@ -54,4 +54,4 @@ wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== ------END CERTIFICATE----- \ No newline at end of file +-----END CERTIFICATE----- diff --git a/test/config/letsencrypt/mail.my-domain.com/privkey.pem b/test/config/letsencrypt/mail.my-domain.com/privkey.pem index 54394e92..926a7e20 100644 --- a/test/config/letsencrypt/mail.my-domain.com/privkey.pem +++ b/test/config/letsencrypt/mail.my-domain.com/privkey.pem @@ -25,4 +25,4 @@ NaecuatRxyhxk7O76U4PHuQkAsdrFi+yDcetLJIBAoGBAJHUMttKQ9/sc6EYgdym u8hMi/WGrt5eOOAJ17lY53eRZLci7s1mfsWIF9b0N50iE60SaFADQiMRAUtkJXNI a55qdpalVHsAE4Wwh7nlKLkaDEartx5X1qSTFw4fTMyKNOveiggQ/i9LZpFxsz22 3V+7jPJaCNyPbmOevXGhBEjr ------END PRIVATE KEY----- \ No newline at end of file +-----END PRIVATE KEY----- diff --git a/test/config/letsencrypt/my-domain.com/cert.pem b/test/config/letsencrypt/my-domain.com/cert.pem index 1e391e01..483dc947 100644 --- a/test/config/letsencrypt/my-domain.com/cert.pem +++ b/test/config/letsencrypt/my-domain.com/cert.pem @@ -27,4 +27,4 @@ WIdAFVykPs87WKyHNY8W1zle/Ye9yjS6bjHdjqnOiG/7qDQ/DDYGn7ILHAHmUZYy 1QQ0EdffNkLpkmCnTnotgBUpqmDt7pMNZRuYFTQq631ihe7jRXjSkgWS7tTfUT15 SesUIo1NbjCJmBceFd2c/srgVlbWc2LXt7Qf5yxWJyhT16r/M7ok0btH25D5azk2 TKdnq/QFhHWVZUr3hg== ------END CERTIFICATE----- \ No newline at end of file +-----END CERTIFICATE----- diff --git a/test/config/letsencrypt/my-domain.com/chain.pem b/test/config/letsencrypt/my-domain.com/chain.pem index edb593bc..0002462c 100644 --- a/test/config/letsencrypt/my-domain.com/chain.pem +++ b/test/config/letsencrypt/my-domain.com/chain.pem @@ -24,4 +24,4 @@ wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== ------END CERTIFICATE----- \ No newline at end of file +-----END CERTIFICATE----- diff --git a/test/config/letsencrypt/my-domain.com/fullchain.pem b/test/config/letsencrypt/my-domain.com/fullchain.pem index 9060829b..dbf59489 100644 --- a/test/config/letsencrypt/my-domain.com/fullchain.pem +++ b/test/config/letsencrypt/my-domain.com/fullchain.pem @@ -54,4 +54,4 @@ wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== ------END CERTIFICATE----- \ No newline at end of file +-----END CERTIFICATE----- diff --git a/test/config/letsencrypt/my-domain.com/key.pem b/test/config/letsencrypt/my-domain.com/key.pem index 54394e92..926a7e20 100644 --- a/test/config/letsencrypt/my-domain.com/key.pem +++ b/test/config/letsencrypt/my-domain.com/key.pem @@ -25,4 +25,4 @@ NaecuatRxyhxk7O76U4PHuQkAsdrFi+yDcetLJIBAoGBAJHUMttKQ9/sc6EYgdym u8hMi/WGrt5eOOAJ17lY53eRZLci7s1mfsWIF9b0N50iE60SaFADQiMRAUtkJXNI a55qdpalVHsAE4Wwh7nlKLkaDEartx5X1qSTFw4fTMyKNOveiggQ/i9LZpFxsz22 3V+7jPJaCNyPbmOevXGhBEjr ------END PRIVATE KEY----- \ No newline at end of file +-----END PRIVATE KEY----- diff --git a/test/config/opendkim/TrustedHosts b/test/config/opendkim/TrustedHosts index 0587f890..a0d2f42e 100644 --- a/test/config/opendkim/TrustedHosts +++ b/test/config/opendkim/TrustedHosts @@ -1,2 +1,2 @@ 127.0.0.1 -localhost \ No newline at end of file +localhost diff --git a/test/config/user-patches/user-patches.sh b/test/config/user-patches/user-patches.sh index 2a315070..0e374662 100755 --- a/test/config/user-patches/user-patches.sh +++ b/test/config/user-patches/user-patches.sh @@ -3,4 +3,4 @@ # This user script will be executed between configuration and starting daemons # To enable it you must save it in your config directory as "user-patches.sh" ## -echo "Default user-patches.sh successfully executed" \ No newline at end of file +echo "Default user-patches.sh successfully executed" diff --git a/test/docker-openldap/bootstrap/ldif/02_user-email.ldif b/test/docker-openldap/bootstrap/ldif/02_user-email.ldif index 3528f49b..993a4e70 100644 --- a/test/docker-openldap/bootstrap/ldif/02_user-email.ldif +++ b/test/docker-openldap/bootstrap/ldif/02_user-email.ldif @@ -1,6 +1,6 @@ -# -------------------------------------------------------------------- +# -------------------------------------------------------------------- # Create mail accounts -# -------------------------------------------------------------------- +# -------------------------------------------------------------------- # Some User dn: uniqueIdentifier=some.user,ou=people,dc=localhost,dc=localdomain changetype: add @@ -13,7 +13,7 @@ cn: Some User givenName: User mail: some.user@localhost.localdomain mailAlias: postmaster@localhost.localdomain -mailGroupMember: employees@localhost.localdomain +mailGroupMember: employees@localhost.localdomain mailEnabled: TRUE mailGidNumber: 5000 mailHomeDirectory: /var/mail/localhost.localdomain/some.user/ diff --git a/test/docker-openldap/bootstrap/schema/mmc/postfix-book.schema b/test/docker-openldap/bootstrap/schema/mmc/postfix-book.schema index 8047a242..9f0d7e53 100644 --- a/test/docker-openldap/bootstrap/schema/mmc/postfix-book.schema +++ b/test/docker-openldap/bootstrap/schema/mmc/postfix-book.schema @@ -59,7 +59,7 @@ objectclass ( 1.3.6.1.4.1.29426.1.2.2.1 NAME 'PostfixBookMailAccount' SUP top AUXILIARY DESC 'Mail account used in Postfix Book' MUST ( mail ) - MAY ( mailHomeDirectory $ mailAlias $ mailGroupMember + MAY ( mailHomeDirectory $ mailAlias $ mailGroupMember $ mailUidNumber $ mailGidNumber $ mailEnabled $ mailQuota $mailStorageDirectory ) )