diff --git a/Dockerfile b/Dockerfile index 7cf9fa25..36275516 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,81 +4,68 @@ MAINTAINER Thomas VIAL ENV DEBIAN_FRONTEND noninteractive + + # Packages RUN apt-get update && \ apt-get upgrade -y --no-install-recommends && \ - apt-get install -y --no-install-recommends vim postfix sasl2-bin courier-imap courier-imap-ssl \ + apt-get install -y --no-install-recommends \ + postfix sasl2-bin libsasl2-modules courier-imap courier-imap-ssl \ courier-pop courier-pop-ssl courier-authdaemon supervisor gamin amavisd-new spamassassin clamav clamav-daemon libnet-dns-perl libmail-spf-perl \ pyzor razor arj bzip2 cabextract cpio file gzip nomarch p7zip pax unzip zip zoo rsyslog mailutils netcat \ opendkim opendkim-tools opendmarc curl fail2ban +# Copy configuration files/executables +COPY /target / + + + # Configures Saslauthd -RUN rm -rf /var/run/saslauthd && ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd -RUN adduser postfix sasl -RUN echo 'NAME="saslauthd"\nSTART=yes\nMECHANISMS="sasldb"\nTHREADS=0\nPWDIR=/var/spool/postfix/var/run/saslauthd\nPIDFILE="${PWDIR}/saslauthd.pid"\nOPTIONS="-n 0 -c -m /var/spool/postfix/var/run/saslauthd"' > /etc/default/saslauthd - -# Configures Courier -RUN sed -i -r 's/daemons=5/daemons=1/g' /etc/courier/authdaemonrc -RUN sed -i -r 's/authmodulelist="authpam"/authmodulelist="authuserdb"/g' /etc/courier/authdaemonrc - -# Enables Spamassassin and CRON updates -RUN sed -i -r 's/^(CRON|ENABLED)=0/\1=1/g' /etc/default/spamassassin - -# Enables Amavis -RUN sed -i -r 's/#(@| \\%)bypass/\1bypass/g' /etc/amavis/conf.d/15-content_filter_mode -RUN adduser clamav amavis -RUN adduser amavis clamav -RUN useradd -u 5000 -d /home/docker -s /bin/bash -p $(echo docker | openssl passwd -1 -stdin) docker - -# Enables Clamav -RUN chmod 644 /etc/clamav/freshclam.conf -RUN (crontab -l ; echo "0 1 * * * /usr/bin/freshclam --quiet") | sort - | uniq - | crontab - -RUN freshclam - -# Configure DKIM (opendkim) -RUN mkdir -p /etc/opendkim/keys -ADD postfix/TrustedHosts /etc/opendkim/TrustedHosts -# DKIM config files -ADD postfix/opendkim.conf /etc/opendkim.conf -ADD postfix/default-opendkim /etc/default/opendkim - -# Configure DMARC (opendmarc) -ADD postfix/opendmarc.conf /etc/opendmarc.conf -ADD postfix/default-opendmarc /etc/default/opendmarc - -# Configures Postfix -ADD postfix/main.cf /etc/postfix/main.cf -ADD postfix/master.cf /etc/postfix/master.cf -ADD postfix/sasl/smtpd.conf /etc/postfix/sasl/smtpd.conf -ADD bin/generate-ssl-certificate /usr/local/bin/generate-ssl-certificate -RUN chmod +x /usr/local/bin/generate-ssl-certificate - -# Get LetsEncrypt signed certificate -RUN curl https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > /etc/ssl/certs/lets-encrypt-x1-cross-signed.pem -RUN curl https://letsencrypt.org/certs/lets-encrypt-x2-cross-signed.pem > /etc/ssl/certs/lets-encrypt-x2-cross-signed.pem - -# Start-mailserver script -ADD start-mailserver.sh /usr/local/bin/start-mailserver.sh -RUN chmod +x /usr/local/bin/start-mailserver.sh - - -RUN apt-get clean && \ +RUN rm -rf /var/run/saslauthd && ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd && \ + adduser postfix sasl && \ + echo 'NAME="saslauthd"\nSTART=yes\nMECHANISMS="sasldb"\nTHREADS=0\nPWDIR=/var/spool/postfix/var/run/saslauthd\nPIDFILE="${PWDIR}/saslauthd.pid"\nOPTIONS="-n 0 -c -m /var/spool/postfix/var/run/saslauthd"' > /etc/default/saslauthd && \ + \ + # Configures Courier \ + sed -i -r 's/daemons=5/daemons=1/g' /etc/courier/authdaemonrc && \ + sed -i -r 's/authmodulelist="authpam"/authmodulelist="authuserdb"/g' /etc/courier/authdaemonrc && \ + \ + # Enables Spamassassin and CRON updates \ + sed -i -r 's/^(CRON|ENABLED)=0/\1=1/g' /etc/default/spamassassin && \ + \ + # Enables Amavis \ + sed -i -r 's/#(@| \\%)bypass/\1bypass/g' /etc/amavis/conf.d/15-content_filter_mode && \ + adduser clamav amavis && \ + adduser amavis clamav && \ + useradd -u 5000 -d /home/docker -s /bin/bash -p $(echo docker | openssl passwd -1 -stdin) docker && \ + \ + # Enables Clamav \ + chmod 644 /etc/clamav/freshclam.conf && \ + (crontab -l ; echo "0 1 * * * /usr/bin/freshclam --quiet") | sort - | uniq - | crontab - && \ + freshclam && \ + \ + # Configure DKIM (opendkim) \ + mkdir -p /etc/opendkim/keys && \ + chmod +x /usr/local/bin/generate-ssl-certificate && \ + \ + # Get LetsEncrypt signed certificate \ + curl https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > /etc/ssl/certs/lets-encrypt-x1-cross-signed.pem && \ + curl https://letsencrypt.org/certs/lets-encrypt-x2-cross-signed.pem > /etc/ssl/certs/lets-encrypt-x2-cross-signed.pem && \ + \ + # Start-mailserver script \ + chmod +x /usr/local/bin/start-mailserver.sh && \ + \ + # Cleanup + apt-get clean && \ rm -rf /tmp/* /var/tmp/* && \ rm -rf /var/lib/apt/lists/* -# SMTP ports -EXPOSE 25 -EXPOSE 587 -# IMAP ports -EXPOSE 143 -EXPOSE 993 +# SMTP | IMAP | POP3 +EXPOSE 25 587 143 993 110 995 + -# POP3 ports -EXPOSE 110 -EXPOSE 995 CMD /usr/local/bin/start-mailserver.sh diff --git a/postfix/default-opendkim b/target/etc/default/opendkim similarity index 100% rename from postfix/default-opendkim rename to target/etc/default/opendkim diff --git a/postfix/default-opendmarc b/target/etc/default/opendmarc similarity index 100% rename from postfix/default-opendmarc rename to target/etc/default/opendmarc diff --git a/postfix/opendkim.conf b/target/etc/opendkim.conf similarity index 100% rename from postfix/opendkim.conf rename to target/etc/opendkim.conf diff --git a/postfix/TrustedHosts b/target/etc/opendkim/TrustedHosts similarity index 100% rename from postfix/TrustedHosts rename to target/etc/opendkim/TrustedHosts diff --git a/postfix/opendmarc.conf b/target/etc/opendmarc.conf similarity index 100% rename from postfix/opendmarc.conf rename to target/etc/opendmarc.conf diff --git a/postfix/main.cf b/target/etc/postfix/main.cf similarity index 100% rename from postfix/main.cf rename to target/etc/postfix/main.cf diff --git a/postfix/master.cf b/target/etc/postfix/master.cf similarity index 100% rename from postfix/master.cf rename to target/etc/postfix/master.cf diff --git a/postfix/sasl/smtpd.conf b/target/etc/postfix/smtpd.conf similarity index 100% rename from postfix/sasl/smtpd.conf rename to target/etc/postfix/smtpd.conf diff --git a/bin/generate-ssl-certificate b/target/usr/local/bin/generate-ssl-certificate similarity index 100% rename from bin/generate-ssl-certificate rename to target/usr/local/bin/generate-ssl-certificate diff --git a/start-mailserver.sh b/target/usr/local/bin/start-mailserver.sh similarity index 100% rename from start-mailserver.sh rename to target/usr/local/bin/start-mailserver.sh