mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
introduce F2B v0.11 (#1965)
This commit is contained in:
parent
1da3da011a
commit
75e74e4a19
31
Dockerfile
31
Dockerfile
|
@ -4,6 +4,12 @@ ARG VCS_VER
|
||||||
ARG VCS_REF
|
ARG VCS_REF
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
ARG FAIL2BAN_DEB_URL=https://github.com/fail2ban/fail2ban/releases/download/0.11.2/fail2ban_0.11.2-1.upstream1_all.deb
|
||||||
|
ARG FAIL2BAN_DEB_ASC_URL=${FAIL2BAN_DEB_URL}.asc
|
||||||
|
ARG FAIL2BAN_GPG_PUBLIC_KEY_ID=0x683BF1BEBD0A882C
|
||||||
|
ARG FAIL2BAN_GPG_PUBLIC_KEY_SERVER=keys.gnupg.net
|
||||||
|
ARG FAIL2BAN_GPG_FINGERPRINT="8738 559E 26F6 71DF 9E2C 6D9E 683B F1BE BD0A 882C"
|
||||||
|
|
||||||
LABEL org.opencontainers.image.version=${VCS_VER}
|
LABEL org.opencontainers.image.version=${VCS_VER}
|
||||||
LABEL org.opencontainers.image.revision=${VCS_REF}
|
LABEL org.opencontainers.image.revision=${VCS_REF}
|
||||||
LABEL org.opencontainers.image.title="docker-mailserver"
|
LABEL org.opencontainers.image.title="docker-mailserver"
|
||||||
|
@ -45,7 +51,7 @@ RUN \
|
||||||
dovecot-managesieved dovecot-pop3d dovecot-sieve dovecot-solr \
|
dovecot-managesieved dovecot-pop3d dovecot-sieve dovecot-solr \
|
||||||
dumb-init \
|
dumb-init \
|
||||||
# E - O
|
# E - O
|
||||||
ed fail2ban fetchmail file gamin gnupg gzip iproute2 iptables \
|
ed fetchmail file gamin gnupg gzip iproute2 iptables \
|
||||||
locales logwatch lhasa libdate-manip-perl liblz4-tool \
|
locales logwatch lhasa libdate-manip-perl liblz4-tool \
|
||||||
libmail-spf-perl libnet-dns-perl libsasl2-modules lrzip lzop \
|
libmail-spf-perl libnet-dns-perl libsasl2-modules lrzip lzop \
|
||||||
netcat-openbsd nomarch opendkim opendkim-tools opendmarc \
|
netcat-openbsd nomarch opendkim opendkim-tools opendmarc \
|
||||||
|
@ -53,19 +59,36 @@ RUN \
|
||||||
pax pflogsumm postgrey p7zip-full postfix-ldap postfix-pcre \
|
pax pflogsumm postgrey p7zip-full postfix-ldap postfix-pcre \
|
||||||
postfix-policyd-spf-python postsrsd pyzor \
|
postfix-policyd-spf-python postsrsd pyzor \
|
||||||
razor rpm2cpio rsyslog sasl2-bin spamassassin supervisor \
|
razor rpm2cpio rsyslog sasl2-bin spamassassin supervisor \
|
||||||
unrar-free unzip whois xz-utils >/dev/null && \
|
unrar-free unzip whois xz-utils \
|
||||||
|
# Fail2Ban
|
||||||
|
gpg gpg-agent >/dev/null && \
|
||||||
|
gpg --keyserver ${FAIL2BAN_GPG_PUBLIC_KEY_SERVER} \
|
||||||
|
--recv-keys ${FAIL2BAN_GPG_PUBLIC_KEY_ID} &>/dev/null && \
|
||||||
|
curl -Lso fail2ban.deb ${FAIL2BAN_DEB_URL} && \
|
||||||
|
curl -Lso fail2ban.deb.asc ${FAIL2BAN_DEB_ASC_URL} && \
|
||||||
|
FINGERPRINT="$(LANG=C gpg --verify \
|
||||||
|
fail2ban.deb.asc fail2ban.deb 2>&1 \
|
||||||
|
| sed -n 's#Primary key fingerprint: \(.*\)#\1#p')" && \
|
||||||
|
if [[ -z ${FINGERPRINT} ]]; then \
|
||||||
|
echo "ERROR: Invalid GPG signature!" 2>&1; exit 1; fi && \
|
||||||
|
if [[ ${FINGERPRINT} != "${FAIL2BAN_GPG_FINGERPRINT}" ]]; then \
|
||||||
|
echo "ERROR: Wrong GPG fingerprint!" 2>&1; exit 1; fi && \
|
||||||
|
dpkg -i fail2ban.deb &>/dev/null && \
|
||||||
|
rm fail2ban.deb fail2ban.deb.asc && \
|
||||||
|
apt-get -qq -y purge gpg gpg-agent &>/dev/null && \
|
||||||
# cleanup
|
# cleanup
|
||||||
|
apt-get -qq autoremove &>/dev/null && \
|
||||||
apt-get -qq autoclean && \
|
apt-get -qq autoclean && \
|
||||||
apt-get -qq clean && \
|
apt-get -qq clean && \
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
c_rehash 2>/dev/null
|
c_rehash &>/dev/null
|
||||||
|
|
||||||
# –––––––––––––––––––––––––––––––––––––––––––––––
|
# –––––––––––––––––––––––––––––––––––––––––––––––
|
||||||
# ––– ClamAV & FeshClam –––––––––––––––––––––––––
|
# ––– ClamAV & FeshClam –––––––––––––––––––––––––
|
||||||
# –––––––––––––––––––––––––––––––––––––––––––––––
|
# –––––––––––––––––––––––––––––––––––––––––––––––
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
echo '0 */6 * * * clamav /usr/bin/freshclam --quiet' > /etc/cron.d/clamav-freshclam && \
|
echo '0 */6 * * * clamav /usr/bin/freshclam --quiet' >/etc/cron.d/clamav-freshclam && \
|
||||||
chmod 644 /etc/clamav/freshclam.conf && \
|
chmod 644 /etc/clamav/freshclam.conf && \
|
||||||
freshclam && \
|
freshclam && \
|
||||||
sed -i 's/Foreground false/Foreground true/g' /etc/clamav/clamd.conf && \
|
sed -i 's/Foreground false/Foreground true/g' /etc/clamav/clamd.conf && \
|
||||||
|
|
|
@ -136,15 +136,21 @@ function teardown_file() {
|
||||||
|
|
||||||
run docker exec mail_fail2ban /bin/sh -c "fail2ban-client set dovecot banip 192.0.66.4"
|
run docker exec mail_fail2ban /bin/sh -c "fail2ban-client set dovecot banip 192.0.66.4"
|
||||||
run docker exec mail_fail2ban /bin/sh -c "fail2ban-client set dovecot banip 192.0.66.5"
|
run docker exec mail_fail2ban /bin/sh -c "fail2ban-client set dovecot banip 192.0.66.5"
|
||||||
|
|
||||||
sleep 10
|
sleep 10
|
||||||
|
|
||||||
run ./setup.sh -c mail_fail2ban debug fail2ban
|
run ./setup.sh -c mail_fail2ban debug fail2ban
|
||||||
assert_output --regexp "^Banned in dovecot: 192.0.66.5, 192.0.66.4.*"
|
assert_output --regexp "^Banned in dovecot: 192.0.66.5, 192.0.66.4.*"
|
||||||
|
|
||||||
run ./setup.sh -c mail_fail2ban debug fail2ban unban 192.0.66.4
|
run ./setup.sh -c mail_fail2ban debug fail2ban unban 192.0.66.4
|
||||||
assert_output --partial "Unbanned IP from dovecot: 192.0.66.4"
|
assert_output --partial "Unbanned IP from dovecot: 1"
|
||||||
|
|
||||||
run ./setup.sh -c mail_fail2ban debug fail2ban
|
run ./setup.sh -c mail_fail2ban debug fail2ban
|
||||||
assert_output --regexp "^Banned in dovecot: 192.0.66.5.*"
|
assert_output --regexp "^Banned in dovecot: 192.0.66.5.*"
|
||||||
|
|
||||||
run ./setup.sh -c mail_fail2ban debug fail2ban unban 192.0.66.5
|
run ./setup.sh -c mail_fail2ban debug fail2ban unban 192.0.66.5
|
||||||
assert_output --partial "Unbanned IP from dovecot: 192.0.66.5"
|
assert_output --partial "Unbanned IP from dovecot: 1"
|
||||||
|
|
||||||
run ./setup.sh -c mail_fail2ban debug fail2ban unban
|
run ./setup.sh -c mail_fail2ban debug fail2ban unban
|
||||||
assert_output --partial "You need to specify an IP address. Run"
|
assert_output --partial "You need to specify an IP address. Run"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue