From 7493ec656a7dfae1a65901216806924e4ca4125e Mon Sep 17 00:00:00 2001 From: Fab Date: Wed, 9 Sep 2026 22:52:04 +0200 Subject: [PATCH] passe le docker sympa sous trixie --- dockers/sympa/Dockerfile | 284 +++++++++++++++++++++----- dockers/sympa/config/supervisord.conf | 16 +- dockers/sympa/config/sympa.preseed | 20 +- 3 files changed, 252 insertions(+), 68 deletions(-) diff --git a/dockers/sympa/Dockerfile b/dockers/sympa/Dockerfile index 043d356..3880c8d 100644 --- a/dockers/sympa/Dockerfile +++ b/dockers/sympa/Dockerfile @@ -6,7 +6,9 @@ # Fanch janvier 2022 # migration en bullseye, tentative de rendre générique -FROM debian:bullseye +#FROM debian:bullseye + +FROM debian:trixie ######################################## # APT local cache @@ -20,116 +22,296 @@ RUN if [ -f /.apt-mirror-config ] ; then . /.apt-mirror-config && sed -i \ -e "s%s\?://security.ubuntu.com%://${APT_MIRROR_UBUNTU_SECURITY}%g" \ /etc/apt/sources.list; fi + ######################################## +# Locale +######################################## + RUN apt-get update \ - && apt-get install -y locales locales-all \ - && sed -i '/fr_FR.UTF-8/s/^# //g' /etc/locale.gen && locale-gen -ENV LC_ALL fr_FR.UTF-8 -ENV LANG fr_FR.UTF-8 -ENV LANGUAGE fr_FR:fr + && apt-get install -y --no-install-recommends \ + locales \ + locales-all \ + && sed -i '/fr_FR.UTF-8/s/^# //g' /etc/locale.gen \ + && locale-gen \ + && rm -rf /var/lib/apt/lists/* + +ENV LC_ALL=fr_FR.UTF-8 +ENV LANG=fr_FR.UTF-8 +ENV LANGUAGE=fr_FR:fr + RUN update-locale LANG=fr_FR.UTF-8 \ && echo sympa >/etc/hostname -RUN apt-get -y install libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libcurl4-gnutls-dev -#RUN apt-get -y install emacs elpa-php-mode -RUN apt-get -y install procps dos2unix +######################################## +# Dépendances de compilation +######################################## + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libboost-program-options-dev \ + libboost-system-dev \ + libboost-filesystem-dev \ + libcurl4-gnutls-dev \ + procps \ + dos2unix \ + doxygen \ + git \ + build-essential \ + make \ + g++ \ + libssl-dev \ + && rm -rf /var/lib/apt/lists/* + +######################################## +# Création du user filter +######################################## + +RUN mkdir /home/filter \ + && useradd -d /home/filter filter \ + && chown filter /home/filter + +######################################## +# Depollueur +######################################## -# creation du user filter,son repertoire home, copie des fichiers -RUN mkdir /home/filter ; useradd -d /home/filter filter ; chown filter /home/filter -RUN apt-get install -y --fix-missing doxygen dos2unix git \ - build-essential make g++ libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libcurl4-gnutls-dev libssl-dev WORKDIR /home/ + +RUN update-ca-certificates RUN git clone https://git.kaz.bzh/KAZ/depollueur.git + WORKDIR /home/depollueur/ + RUN make -RUN cp build/out/* /home/filter/ -RUN cp src/bash/* /home/filter/ -RUN chown filter /home/filter/*; chmod 755 /home/filter/* +RUN cp build/out/* /home/filter/ \ + && cp src/bash/* /home/filter/ -# creation du repertoire filter et application des bons droits pour le filtre -RUN mkdir -p /var/log/mail; touch /var/log/mail/filter.log ; chown filter /var/log/mail/filter.log ; chmod 777 /var/log/mail/filter.log -RUN mkdir -p /var/spool/filter ; chmod 775 /var/spool/filter ; chown filter /var/spool/filter -RUN mkdir -p /var/log/mail/pb ; chmod a+rwx /var/log/mail/pb +RUN chown filter /home/filter/* \ + && chmod 755 /home/filter/* + +######################################## +# Répertoires du filtre +######################################## + +RUN mkdir -p /var/log/mail \ + && touch /var/log/mail/filter.log \ + && chown filter /var/log/mail/filter.log \ + && chmod 777 /var/log/mail/filter.log + +RUN mkdir -p /var/spool/filter \ + && chmod 775 /var/spool/filter \ + && chown filter /var/spool/filter + +RUN mkdir -p /var/log/mail/pb \ + && chmod a+rwx /var/log/mail/pb + +######################################## +# OpenDKIM +######################################## -# install de opendkim RUN apt-get update \ && apt-get install -y --no-install-recommends \ opendkim \ opendkim-tools \ && rm -rf /var/lib/apt/lists/* - + +######################################## +# Sympa / Apache / Postfix +######################################## COPY dockers/sympa/config/sympa.preseed /tmp/sympa.preseed + RUN debconf-set-selections < /tmp/sympa.preseed \ && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends sympa apache2 postfix supervisor anacron spawn-fcgi libapache2-mod-fcgid apg curl \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + sympa \ + dbconfig-sqlite3 \ + apache2 \ + postfix \ + supervisor \ + anacron \ + spawn-fcgi \ + libapache2-mod-fcgid \ + apg \ + curl \ && a2enmod rewrite ssl proxy_fcgi \ && a2ensite default-ssl \ && a2enconf sympa-soap \ - \ && sed \ - -e 's%SSLCertificateKeyFile\s.*$%SSLCertificateKeyFile ENVKEY%g' \ - -e 's%SSLCertificateFile\s.*$%SSLCertificateFile ENVCERT%g' \ - -i /etc/apache2/sites-available/default-ssl.conf \ + -e 's%SSLCertificateKeyFile\s.*$%SSLCertificateKeyFile ENVKEY%g' \ + -e 's%SSLCertificateFile\s.*$%SSLCertificateFile ENVCERT%g' \ + -i /etc/apache2/sites-available/default-ssl.conf \ && sed \ - -e '/ServerName/a Redirect / https://MAILNAME.DOMAINNAME/' \ - -i /etc/apache2/sites-available/000-default.conf \ - && echo '\n \n\n' > /var/www/html/index.html \ - && sed -e 's%ScriptAlias.*%ProxyPass "/wws" "fcgi://localhost:8442/"%' -i /etc/apache2/conf-enabled/sympa.conf \ - && sed -e 's%ScriptAlias.*%ProxyPass "/sympasoap" "fcgi://localhost:8443/"%' -i /etc/apache2/conf-enabled/sympa-soap.conf + -e '/ServerName/a Redirect / https://MAILNAME.DOMAINNAME/' \ + -i /etc/apache2/sites-available/000-default.conf \ + && echo '\n \n\n' \ + > /var/www/html/index.html \ +# sous bullseye +# && sed \ +# -e 's%ScriptAlias.*%ProxyPass "/wws" "fcgi://localhost:8442/"%' \ +# -i /etc/apache2/conf-enabled/sympa.conf \ +# sous trixie + && sed \ + -i '//,/<\/Location>/c\ ProxyPass "/wws" "fcgi://localhost:8442/"' \ + /etc/apache2/conf-enabled/sympa.conf \ + && sed \ + -e 's%ScriptAlias.*%ProxyPass "/sympasoap" "fcgi://localhost:8443/"%' \ + -i /etc/apache2/conf-enabled/sympa-soap.conf \ + && rm -rf /var/lib/apt/lists/* + + +######################################## +# Confort : .bashrc de root +######################################## -# pour le confort : modif du .bashrc de root RUN sed -i 's/# alias/alias/g' /root/.bashrc \ && sed -i 's/# export/export/g' /root/.bashrc \ && sed -i 's/# eval/eval/g' /root/.bashrc +######################################## +# Supervisor +######################################## + COPY dockers/sympa/config/supervisord.conf /etc/supervisord.conf +######################################## +# Logs Sympa +######################################## + RUN touch /var/log/sympa.log \ && chmod 640 /var/log/sympa.log \ - && echo "local1.* -/var/log/sympa.log" >>/etc/rsyslog.conf + && echo "local1.* -/var/log/sympa.log" >> /etc/rsyslog.conf + +######################################## +# Configuration Postfix +######################################## -# configuration de postfix COPY dockers/sympa/config/transport /etc/postfix/ -COPY dockers/sympa/config/postfix.sh /tmp +COPY dockers/sympa/config/postfix.sh /tmp/ + RUN bash /tmp/postfix.sh -# # modif des fichiers de postfix pour filter -RUN cat /home/filter/master.cf.update >>/etc/postfix/master.cf \ - && sed -i 's/^\(smtp .*smtpd\)$/\1\n\t-o content_filter=filter:dummy/' /etc/postfix/master.cf +######################################## +# Filtre Postfix +######################################## + +RUN cat /home/filter/master.cf.update >> /etc/postfix/master.cf \ + && sed -i \ + 's/^\(smtp .*smtpd\)$/\1\n\t-o content_filter=filter:dummy/' \ + /etc/postfix/master.cf + +######################################## +# Milter OpenDKIM +######################################## + +RUN postconf "smtpd_milters = inet:localhost:8891" \ + && postconf "non_smtpd_milters = inet:localhost:8891" + +######################################## +# Alias root +######################################## -# pour qu'admin@kaz.bzh recoivent les mails d'anomalie RUN echo "root: ADMIN_EMAIL" >> /etc/aliases \ && postalias hash:/etc/aliases -# Configuration de sympa -RUN echo aliases_program postalias >>/etc/sympa/sympa/sympa.conf \ - && echo sendmail /usr/sbin/sendmail >>/etc/sympa/sympa/sympa.conf \ - && echo soap_url /sympasoap >>/etc/sympa/sympa/sympa.conf \ - && echo dmarc_protection.mode dmarc_reject,dmarc_quarantine >>/etc/sympa/sympa/sympa.conf \ - && cp /usr/share/doc/sympa/examples/script/sympa_soap_client.pl.gz /usr/lib/sympa/bin/ \ - && gunzip /usr/lib/sympa/bin/sympa_soap_client.pl.gz \ - && chmod +x /usr/lib/sympa/bin/sympa_soap_client.pl \ - && chown sympa:sympa /usr/lib/sympa/lib/sympa/* \ +######################################## +# Correctif Sympa CLI.pm +# --> corrigé en 6.2.78 (mais absent de trixie) +# +# Bug rencontré avec Sympa 6.2.76~dfsg-1 : +# Sympa::CLI.pm transforme les spécifications +# d'options Getopt::Long de manière incorrecte. +# +# Exemple : +# config|f=s +# +# est transformé en : +# config|config|f|f=s +# +# ce qui provoque au lancement de "sympa check" : +# Spécification en double "config|config|f|f=s" +# +# Même problème pour debug|d, lang|l, mail|m, etc. +# +# Cause : +# le code ajoute deux fois chaque nom d'option lors +# de la transformation des alias. +# +# Code original : +# $keys = join '|', map { +# (s/-/_/gr, $_) +# } split /[|]/, $keys; +# +# Correction : +# $keys = join '|', map { s/-/_/gr } split /[|]/, $keys; +# +# Ce correctif est appliqué à l'image afin de ne pas +# perdre la modification lors de la recréation du conteneur. +######################################## + +RUN sed -i 's/(s\/-\/_\/gr, \$_)/(s\/-\/_\/gr)/' \ + /usr/share/sympa/lib/Sympa/CLI.pm + +######################################## +# Configuration Sympa +######################################## + +RUN echo aliases_program postalias >> /etc/sympa/sympa/sympa.conf \ + && echo sendmail /usr/sbin/sendmail >> /etc/sympa/sympa/sympa.conf \ + && echo soap_url /sympasoap >> /etc/sympa/sympa/sympa.conf \ + && echo dmarc_protection.mode dmarc_reject,dmarc_quarantine >> /etc/sympa/sympa/sympa.conf \ +# && cp /usr/share/doc/sympa/examples/script/sympa_soap_client.pl.gz /usr/lib/sympa/bin/ \ +# && gunzip /usr/lib/sympa/bin/sympa_soap_client.pl.gz \ +# && chmod +x /usr/lib/sympa/bin/sympa_soap_client.pl \ +# && chown sympa:sympa /usr/lib/sympa/lib/sympa/* \ && chmod u+s /usr/lib/sympa/lib/sympa/* + + COPY dockers/sympa/config/aliases.sympa.postfix /etc/sympa/aliases.sympa.postfix COPY dockers/sympa/config/trusted_applications.conf /etc/sympa/trusted_applications.conf - RUN postconf "alias_maps = hash:/etc/aliases,hash:/etc/sympa/aliases.sympa.postfix,hash:/etc/mail/sympa/aliases" \ && postconf "alias_database = hash:/etc/aliases,hash:/etc/sympa/aliases.sympa.postfix" \ && postalias hash:/etc/sympa/aliases.sympa.postfix \ && usermod -a -G sympa postfix +######################################## +# Wrapper Postfix +######################################## + COPY dockers/sympa/config/postfix-wrapper.sh /usr/local/bin/ + RUN chmod a+x /usr/local/bin/postfix-wrapper.sh + +####################### +# ATTENTION !!!! à passer après le build +###################### +#les volume Docker ont conservé les anciens UID/GID de Bullseye, il faut redonner à sympa +#docker exec sympaServ chown -R sympa:sympa /var/spool/sympa +#docker exec sympaServ chown -R sympa:sympa /var/lib/sympa/list_data +#docker exec sympaServ chown -R sympa:sympa /var/lib/sympa/arc + +#pareil pour postfix (check avec docker exec sympaServ postfix check) +#docker exec sympaServ postfix set-permissions +###################### + +#CHANGEMENT DE bulleyes à trixie +RUN chown sympa:sympa /usr/lib/sympa/bin/queue \ + && chmod 4755 /usr/lib/sympa/bin/queue + +######################################## +# Démarrage +######################################## + COPY dockers/sympa/config/start.sh / + ENTRYPOINT ["/bin/bash", "/start.sh"] EXPOSE 80 443 25 -# docs sympa : https://listes.renater.fr/sympa/arc/sympa-fr/2021-02/msg00026.html +# docs sympa : +# https://listes.renater.fr/sympa/arc/sympa-fr/2021-02/msg00026.html # https://listes.renater.fr/sympa/arc/sympa-fr/2012-05/msg00042.html diff --git a/dockers/sympa/config/supervisord.conf b/dockers/sympa/config/supervisord.conf index ca9b46f..4a3bf22 100644 --- a/dockers/sympa/config/supervisord.conf +++ b/dockers/sympa/config/supervisord.conf @@ -31,14 +31,14 @@ command=/usr/sbin/rsyslogd -n stdout_events_enabled=true stderr_events_enabled=true -#[program:opendkim] -#startsecs=0 -#stopwaitsecs=10 -#autostart=true -#autorestart=true -#command=/usr/sbin/opendkim -f -x /etc/opendkim/opendkim.conf -#stdout_events_enabled=true -#stderr_events_enabled=true +[program:opendkim] +startsecs=0 +stopwaitsecs=10 +autostart=true +autorestart=true +command=/usr/sbin/opendkim -f -x /etc/opendkim/opendkim.conf +stdout_events_enabled=true +stderr_events_enabled=true [program:postfix] startsecs=0 diff --git a/dockers/sympa/config/sympa.preseed b/dockers/sympa/config/sympa.preseed index 5d105fe..6e4b79a 100644 --- a/dockers/sympa/config/sympa.preseed +++ b/dockers/sympa/config/sympa.preseed @@ -1,15 +1,17 @@ -postfix postfix/mailname string MAILNAME.DOMAINNAME -postfix postfix/main_mailer_type string 'Pas de configuration' +postfix postfix/mailname string MAILNAME.DOMAINNAME +postfix postfix/main_mailer_type string 'Pas de configuration' -sympa sympa/dbconfig-install boolean true -sympa sympa/database-type select sqlite3 -sympa sympa/sympa_newaliases-wrapper-setuid-root boolean true -sympa sympa/listmaster string LISTMASTERS +sympa sympa/dbconfig-install boolean true +sympa sympa/listmaster string admin@kaz.bzh +sympa sympa/hostname string MAILNAME.DOMAINNAME +sympa sympa/sympa_newaliases-wrapper-setuid-root boolean true -sympa wwsympa/webserver_type select Apache 2 -sympa sympa/use_soap boolean false +sympa wwsympa/webserver_type select Apache 2 +sympa wwsympa/wwsympa_url string https://MAILNAME.DOMAINNAME/wws + +sympa sympa/use_soap boolean false # à garder dans un coin # sympa sympa/use_wwsympa boolean true # sympa wwsympa/fastcgi boolean true -# sympa sympa/use_soap boolean true +# sympa sympa/use_soap boolean true