formatting files according to standard (#1619)

* added EditorConfig linting
* adding `eclint` as Travis script target
* re-adjusted .pem files to have a newline
This commit is contained in:
Georg Lauterbach 2020-09-24 14:54:21 +02:00 committed by GitHub
parent 9f7414d95f
commit a0791ef457
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 178 additions and 185 deletions

View File

@ -28,8 +28,6 @@ indent_size = 2
# directories created by git submodules # directories created by git submodules
[{test/bats/**,test/test_helper/bats-assert/**,test/test_helper/bats-support/**,target/docker-configomat/**}] [{test/bats/**,test/test_helper/bats-assert/**,test/test_helper/bats-support/**,target/docker-configomat/**}]
insert_final_newline = none
indent_style = none indent_style = none
indent_size = none indent_size = none
trim_trailing_whitespace = none
end_of_line = none end_of_line = none

View File

@ -10,20 +10,27 @@ env:
global: global:
- HADOLINT_VERSION=1.17.1 - HADOLINT_VERSION=1.17.1
- SHELLCHECK_VERSION=0.7.1 - SHELLCHECK_VERSION=0.7.1
- ECLINT_VERSION=2.1.0
addons: addons:
apt: apt:
packages: packages:
- xz-utils - xz-utils
services: services:
- docker - docker
before_install: 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 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 # SHELLCHECK
- sudo cp "shellcheck-v${SHELLCHECK_VERSION}/shellcheck" /usr/bin/ - 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: install:
- make lint - make lint
@ -31,6 +38,7 @@ install:
script: script:
- make shellcheck - make shellcheck
- make eclint
- make generate-accounts run generate-accounts-after-run fixtures tests - make generate-accounts run generate-accounts-after-run fixtures tests
after_script: after_script:

View File

@ -4,13 +4,13 @@ ARG VCS_REF
ARG VCS_VERSION ARG VCS_VERSION
LABEL maintainer="Thomas VIAL" \ LABEL maintainer="Thomas VIAL" \
org.label-schema.name="docker-mailserver" \ org.label-schema.name="docker-mailserver" \
org.label-schema.description="A fullstack but simple mailserver (smtp, imap, antispam, antivirus, ssl...)" \ 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.url="https://github.com/tomav/docker-mailserver" \
org.label-schema.vcs-ref=$VCS_REF \ org.label-schema.vcs-ref=$VCS_REF \
org.label-schema.vcs-url="https://github.com/tomav/docker-mailserver" \ org.label-schema.vcs-url="https://github.com/tomav/docker-mailserver" \
org.label-schema.version=$VCS_VERSION \ org.label-schema.version=$VCS_VERSION \
org.label-schema.schema-version="1.0" org.label-schema.schema-version="1.0"
ARG DEBIAN_FRONTEND=noninteractive ARG DEBIAN_FRONTEND=noninteractive
ENV VIRUSMAILS_DELETE_DELAY=7 ENV VIRUSMAILS_DELETE_DELAY=7
@ -33,76 +33,76 @@ RUN \
apt-get -y upgrade && \ apt-get -y upgrade && \
apt-get -y install postfix && \ apt-get -y install postfix && \
apt-get -y install --no-install-recommends \ apt-get -y install --no-install-recommends \
altermime \ altermime \
amavisd-new \ amavisd-new \
apt-transport-https \ apt-transport-https \
arj \ arj \
binutils \ binutils \
bzip2 \ bzip2 \
ca-certificates \ ca-certificates \
cabextract \ cabextract \
clamav \ clamav \
clamav-daemon \ clamav-daemon \
cpio \ cpio \
curl \ curl \
ed \ ed \
fail2ban \ fail2ban \
fetchmail \ fetchmail \
file \ file \
gamin \ gamin \
gzip \ gzip \
gnupg \ gnupg \
iproute2 \ iproute2 \
iptables \ iptables \
locales \ locales \
logwatch \ logwatch \
lhasa \ lhasa \
libdate-manip-perl \ libdate-manip-perl \
liblz4-tool \ liblz4-tool \
libmail-spf-perl \ libmail-spf-perl \
libnet-dns-perl \ libnet-dns-perl \
libsasl2-modules \ libsasl2-modules \
lrzip \ lrzip \
lzop \ lzop \
netcat-openbsd \ netcat-openbsd \
nomarch \ nomarch \
opendkim \ opendkim \
opendkim-tools \ opendkim-tools \
opendmarc \ opendmarc \
pax \ pax \
pflogsumm \ pflogsumm \
p7zip-full \ p7zip-full \
postfix-ldap \ postfix-ldap \
postfix-pcre \ postfix-pcre \
postfix-policyd-spf-python \ postfix-policyd-spf-python \
postsrsd \ postsrsd \
pyzor \ pyzor \
razor \ razor \
rpm2cpio \ rpm2cpio \
rsyslog \ rsyslog \
sasl2-bin \ sasl2-bin \
spamassassin \ spamassassin \
supervisor \ supervisor \
postgrey \ postgrey \
unrar-free \ unrar-free \
unzip \ unzip \
whois \ whois \
xz-utils \ xz-utils \
# use Dovecot community repo to react faster on security updates # use Dovecot community repo to react faster on security updates
#curl https://repo.dovecot.org/DOVECOT-REPO-GPG | gpg --import && \ #curl https://repo.dovecot.org/DOVECOT-REPO-GPG | gpg --import && \
#gpg --export ED409DA1 > /etc/apt/trusted.gpg.d/dovecot.gpg && \ #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 && \ #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 update -q --fix-missing && \
#apt-get -y install --no-install-recommends \ #apt-get -y install --no-install-recommends \
dovecot-core \ dovecot-core \
dovecot-imapd \ dovecot-imapd \
dovecot-ldap \ dovecot-ldap \
dovecot-lmtpd \ dovecot-lmtpd \
dovecot-managesieved \ dovecot-managesieved \
dovecot-pop3d \ dovecot-pop3d \
dovecot-sieve \ dovecot-sieve \
dovecot-solr \ dovecot-solr \
&& \ && \
apt-get autoclean && \ apt-get autoclean && \
rm -rf /var/lib/apt/lists/* && \ rm -rf /var/lib/apt/lists/* && \
rm -rf /usr/share/locale/* && \ 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 # Enables Spamassassin CRON updates and update hook for supervisor
# hadolint ignore=SC2016 # hadolint ignore=SC2016
RUN sed -i -r 's/^(CRON)=0/\1=1/g' /etc/default/spamassassin && \ 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 # Enables Postgrey
COPY target/postgrey/postgrey /etc/default/postgrey COPY target/postgrey/postgrey /etc/default/postgrey
@ -244,7 +244,7 @@ WORKDIR /
# Switch iptables and ip6tables to legacy for fail2ban # Switch iptables and ip6tables to legacy for fail2ban
RUN update-alternatives --set iptables /usr/sbin/iptables-legacy \ 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 EXPOSE 25 587 143 465 993 110 995 4190

View File

@ -19,12 +19,8 @@ build:
backup: backup:
# if backup directories exist, clean hasn't been called, therefore # if backup directories exist, clean hasn't been called, therefore
# we shouldn't overwrite it. It still contains the original content. # we shouldn't overwrite it. It still contains the original content.
@ if [ ! -d config.bak ]; then\ @ if [ ! -d config.bak ]; then cp -rp config config.bak; fi
cp -rp config config.bak;\ @ if [ ! -d testconfig.bak ]; then cp -rp test/config testconfig.bak; fi
fi
@ if [ ! -d testconfig.bak ]; then\
cp -rp test/config testconfig.bak;\
fi
generate-accounts: 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 @ 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\ else\
echo -e '\nSuccess' ;\ echo -e '\nSuccess' ;\
fi 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

View File

@ -15,13 +15,13 @@
[shields::gitter]: https://img.shields.io/gitter/room/tomav/docker-mailserver.svg [shields::gitter]: https://img.shields.io/gitter/room/tomav/docker-mailserver.svg
[gitter]: https://gitter.im/tomav/docker-mailserver [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. Only configuration files, no SQL database. Keep it simple and versioned.
Easy to deploy and upgrade. Easy to deploy and upgrade.
Why I created this image: [Simple Mail Server with Docker](http://tvi.al/simple-mail-server-with-docker/) 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) 2. [Includes](#includes)
3. [Issues & Contributing](#issues--contributing) 3. [Issues & Contributing](#issues--contributing)
4. [Requirements](#requirements) 4. [Requirements](#requirements)
@ -29,24 +29,19 @@ Why I created this image: [Simple Mail Server with Docker](http://tvi.al/simple-
6. [Examples](#examples) 6. [Examples](#examples)
7. [Environment Variables](#environment-variables) 7. [Environment Variables](#environment-variables)
## Announcement ## Announcements
At this point we have merged the next branch based on Debian Buster into master. 1. Debian Buster is now Docker base image
That means the docker image latest uses Buster. The change may break things! - Filebeat was removed
- Dovecot was downgraded
The following possibly breaking changes are known: 2. ELK was removed
3. New contributing guidelines were added
- 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.
## Includes ## Includes
- [Postfix](http://www.postfix.org) with smtp or 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) - [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 - SASLauthd with LDAP auth
- [Amavis](https://www.amavis.org/) - [Amavis](https://www.amavis.org/)
- [Spamassasin](http://spamassassin.apache.org/) supporting custom rules - [Spamassasin](http://spamassassin.apache.org/) supporting custom rules
- [ClamAV](https://www.clamav.net/) with automatic updates - [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). **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 ``` BASH
docker-compose up -d mail docker-compose up -d mail
```
### Create your mail accounts
``` BASH
./setup.sh email add <user@domain> [<password>] ./setup.sh email add <user@domain> [<password>]
```
### Generate DKIM keys
``` BASH
./setup.sh config dkim ./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. 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 #### Exposed ports
| Protocol | Opt-in Encryption &#185; | Enforced Encryption | Purpose | | Protocol | Opt-in Encryption &#185; | Enforced Encryption | Purpose |

View File

@ -1627,7 +1627,7 @@ function _setup_security_stack()
if [[ ${DEFAULT_VARS['EXPLICITLY_DEFINED_SPAMASSASSIN_SPAM_TO_INBOX']} == "0" ]] if [[ ${DEFAULT_VARS['EXPLICITLY_DEFINED_SPAMASSASSIN_SPAM_TO_INBOX']} == "0" ]]
then 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 fi
fi fi