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