diff --git a/docker-compose.yml b/docker-compose.yml index 29192f93bcf4614cce9347c9893ae270f9973bea..60d593dc2fc5daf233c9f49ca409a73dd39d1f78 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,6 +23,10 @@ services: SYMPA_DB_NAME: SYMPA_DB_USER: SYMPA_DB_PASSWD: + REMOTES: + networks: + - postfix + - default ports: - '8081:80' @@ -32,6 +36,8 @@ services: - "./sympa/shared:/etc/sympa/shared" - "./postfix/log:/var/log/postfix" - "spool_postfix:/var/spool/postfix" + networks: + - postfix environment: POSTFIX_VIRTUAL_DOMAINS: MAILNAME: @@ -56,3 +62,9 @@ volumes: spool_postfix: spool_nullmailer: lib_sympa: + +networks: + postfix: + ipam: + config: + - subnet: 10.42.0.0/16 diff --git a/docker/postfix/etc/service/postfix/run.config b/docker/postfix/etc/service/postfix/run.config index 6459d8431632eed9ce6f04d7f84226b9683241e6..b71a28ab4439c71fd6f28926928b821377a8c42c 100644 --- a/docker/postfix/etc/service/postfix/run.config +++ b/docker/postfix/etc/service/postfix/run.config @@ -1,2 +1,4 @@ -sed "s/POSTFIX_VIRTUAL_DOMAINS/$POSTFIX_VIRTUAL_DOMAINS/g" /etc/postfix/main.cf.append > /etc/postfix/main.cf -cat /etc/postfix/master.cf.orig /etc/postfix/master.cf.append > /etc/postfix/master.cf +cp /etc/postfix/main.cf.orig /etc/postfix/main.cf +cp /etc/postfix/master.cf.orig /etc/postfix/master.cf +sed "s/POSTFIX_VIRTUAL_DOMAINS/$POSTFIX_VIRTUAL_DOMAINS/g" /etc/postfix/main.cf.append >> /etc/postfix/main.cf +cat /etc/postfix/master.cf.orig /etc/postfix/master.cf.append >> /etc/postfix/master.cf diff --git a/docker/sympa/Dockerfile b/docker/sympa/Dockerfile index 837456f10ba492ef1c74e35c02be89b6e47f54fa..10d7e6cd4035ec9525a85713dec06507231ce8d2 100644 --- a/docker/sympa/Dockerfile +++ b/docker/sympa/Dockerfile @@ -10,8 +10,10 @@ RUN apt-get -y install \ libapache2-mod-fcgid \ libdbd-pg-perl \ libfcgi-perl \ + nullmailer \ openssh-server \ - sudo + sudo \ + supervisor RUN apt-get -y install --no-install-recommends sympa @@ -25,6 +27,8 @@ RUN echo "local1.* -/var/log/sympa.log" >> /etc/syslog.conf RUN cp -r /etc/sympa /etc/sympa.sample +COPY supervisord.conf /etc/supervisor/conf.d + COPY run.sh /opt/sympa_run.sh COPY entrypoint.sh /entrypoint diff --git a/docker/sympa/entrypoint.sh b/docker/sympa/entrypoint.sh index 37acf304655f17f25382d92d5f780318d3e38c64..79a2e162ea83f24278af19e53f521b77045d11c7 100755 --- a/docker/sympa/entrypoint.sh +++ b/docker/sympa/entrypoint.sh @@ -1,5 +1,6 @@ #!/bin/bash +## Init sympa # Populate volume if [ -z "$(ls /etc/sympa/)" ]; then cp -pr /etc/sympa.sample/* /etc/sympa/ @@ -20,14 +21,17 @@ done cp /opt/sympa_run.sh /etc/sympa/run.sh chmod +x /etc/sympa/run.sh # Fix permissions -chown -R sympa:sympa /etc/sympa/ +chown -Rh :sympa /etc/sympa/* +chown -Rh sympa:sympa /var/lib/sympa /var/spool/sympa +chmod 771 /var/spool/sympa +chmod 750 /etc/sympa/includes +chmod 640 /etc/sympa/includes/* +chown -Rh :sympa /etc/sympa/includes/* + /bin/mkdir -p /run/sympa /bin/chown sympa:sympa /run/sympa -# Launch services -syslogd - # So that Postfix can connect into us to deliver e-mail to mailing lists. /etc/sympa/shared is a # volume shared with the Postfix container which contains the SSH key that container should use # when connecting to this container. @@ -41,7 +45,7 @@ rm -f /etc/sympa/shared/known_hosts echo -n 'sympa ' > /etc/sympa/shared/known_hosts cat /etc/ssh/ssh_host_rsa_key.pub >> /etc/sympa/shared/known_hosts # Allow sympa user to ssh -usermod -s /bin/sh sympa +usermod -s /etc/sympa/run.sh sympa mkdir -p /var/lib/sympa/.ssh echo -n 'no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/etc/sympa/run.sh" ' > /var/lib/sympa/.ssh/authorized_keys @@ -50,9 +54,37 @@ cat /etc/sympa/shared/id_rsa.pub >> /var/lib/sympa/.ssh/authorized_keys # Remove any stale config binaries. rm -f /etc/sympa/*/*.bin -sudo -u sympa /usr/lib/sympa/bin/sympa_automatic.pl --foreground 2>&1 & -sudo -u sympa /usr/lib/sympa/bin/sympa_msg.pl -/usr/bin/sympa --health_check -mkdir -p /var/run/sshd -/usr/sbin/sshd -D -e & -exec apache2ctl -DFOREGROUND +## Init apache2 +mkdir -p /var/log/apache2 +chown -R www-data:www-data /var/log/apache2 + +## Init ssh +mkdir /run/sshd + +### Init nullmailer +chown mail /var/spool/nullmailer + +# If directory is empty, we restore it from our copy of initial files +[[ $(ls -A /var/spool/nullmailer | grep -v placeholder) ]] || cp -a /var/spool/nullmailer.orig/* /var/spool/nullmailer/ + +if [ ! -p /var/spool/nullmailer/trigger ]; then + rm -f /var/spool/nullmailer/trigger + mkfifo /var/spool/nullmailer/trigger +fi +chown mail:root /var/spool/nullmailer/trigger +chmod 0622 /var/spool/nullmailer/trigger + +if [ -n "$ADMINADDR" ]; then + echo "$ADMINADDR" > /etc/nullmailer/adminaddr +fi + +if [ -n "$REMOTES" ]; then + echo "$REMOTES" > /etc/nullmailer/remotes +fi + +if [ -n "$HOSTNAME" ]; then + echo "$HOSTNAME" > /etc/mailname +fi + +# Launch all services +exec /usr/bin/supervisord diff --git a/shared.yml b/shared.yml index 3bd19769c6ee7faa72ecd7aedb4a25d515d03e88..e665647e67dfbfa7181237b29e426517917393a2 100644 --- a/shared.yml +++ b/shared.yml @@ -4,6 +4,7 @@ services: sympa: networks: - default + - postfix - dolibarr_shared networks: