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:
parent
9f7414d95f
commit
a0791ef457
|
@ -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
|
||||||
|
|
16
.travis.yml
16
.travis.yml
|
@ -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:
|
||||||
|
|
146
Dockerfile
146
Dockerfile
|
@ -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
|
||||||
|
|
18
Makefile
18
Makefile
|
@ -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
|
||||||
|
|
43
README.md
43
README.md
|
@ -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 ¹ | Enforced Encryption | Purpose |
|
| Protocol | Opt-in Encryption ¹ | Enforced Encryption | Purpose |
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue