From 4ab0a041601f254fad6a7f9a1931809d40663dd9 Mon Sep 17 00:00:00 2001
From: CdRom1 <r.maliach@live.fr>
Date: Thu, 3 Jan 2019 13:00:09 +0100
Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20g=C3=A9n=C3=A9ration=20automa?=
 =?UTF-8?q?tique=20des=20tables=20de=20cl=C3=A9s=20dkim=20et=20de=20la=20v?=
 =?UTF-8?q?ariable=20d'environnement=20DKIM=5FSELECTOR=20(fonctionnalit?=
 =?UTF-8?q?=C3=A9=20introduite=20dans=20l'image=20de=20soutenance)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docker-compose/mail.yml          | 16 +++++++++-------
 pica-mail-mta/Dockerfile         |  1 +
 pica-mail-mta/config.sh          |  2 ++
 pica-mail-mta/opendkim-tables.sh | 15 +++++++++++++++
 4 files changed, 27 insertions(+), 7 deletions(-)
 create mode 100755 pica-mail-mta/opendkim-tables.sh

diff --git a/docker-compose/mail.yml b/docker-compose/mail.yml
index 7ac7c704..71acfa78 100644
--- a/docker-compose/mail.yml
+++ b/docker-compose/mail.yml
@@ -27,7 +27,8 @@ services:
       - mail
    volumes:
       - /var/lib/docker/volumes/mail-mta-log/_data:/var/log
-      - /DATA/docker/mail/opendkim/nov2018.private:/etc/dkimkeys/nov2018.picasoft.net.rsa
+#doit contenir selecteur.domaine.rsa
+      - /DATA/docker/mail/opendkim/:/etc/dkimkeys/
       - /DATA/docker/mail/ssl/:/certs-ssl/
    environment:
 #adresse et port du serveur LMTP i.e. le MTA
@@ -45,7 +46,7 @@ services:
      LDAP_PORT: 389
 #réglage du bind : login et mot de passe d'un compte qui a suffisamment de droits pour lire l'arborescence (à l'exception des mots de passe)
      LDAP_BIND_DN: cn=readonly,dc=picasoft,dc=net
-     LDAP_BIND_PW readonly
+     LDAP_BIND_PW: readonly
 #réglage de la manière dont on répertorie les comptes et les adresses existantes
 #la config actuelle fait que la possession d'une adresse mail se fait ainsi : login => login@picasoft.net
 #cependant, nous avons quand même deux couches différentes: l'existence d'un compte (SASL) et l'existence d'une adresse
@@ -54,14 +55,15 @@ services:
 #pour ce faire, il suffit d'utiliser des attributs LDAP différents
 #nous utilisons donc le cn pour l'existence d'un compte LDAP, et l'uid pour l'existence d'une adresse
 #niveau de l'arborescence à partir duquel les entrées sont trouvées:
-     LDAP_SEARCH_BASE dc=picasoft,dc=net
+     LDAP_SEARCH_BASE: dc=picasoft,dc=net
 #filtre permettant de répertorier les comptes SASL
-     LDAP_SASL_FILTER cn=%u
+     LDAP_SASL_FILTER: cn=%u
 #filtre permettant de répertorier les adresses mail
-     LDAP_VIRTUAL_MAILBOX_FILTER uid=%s
+     LDAP_VIRTUAL_MAILBOX_FILTER: uid=%s
 #ajout de listes noires pour éviter le SPAM. La décision politique et l'éthique associée sortent du cadre de la conception de cette image et doivent être discutées par l'asso; en tout cas, si on lève cette restriction, elle doit être remplacée par une autre (un spamassassin par exemple).
-     SMTPD_CLIENT_RESTRICTIONS reject_rbl_client sbl.spamhaus.org, reject_rbl_client dnsbl.sorbs.net
-
+     SMTPD_CLIENT_RESTRICTIONS: reject_rbl_client sbl.spamhaus.org, reject_rbl_client dnsbl.sorbs.net
+#prefixe DKIM, utilise pour identifier la clef
+     DKIM_SELECTOR: nov2018
    labels:
       - "traefik.frontend.rule=Host:mail.test.picasoft.net"
       - "traefik.port=80"
diff --git a/pica-mail-mta/Dockerfile b/pica-mail-mta/Dockerfile
index 4fef2285..6d6d597f 100644
--- a/pica-mail-mta/Dockerfile
+++ b/pica-mail-mta/Dockerfile
@@ -56,6 +56,7 @@ RUN mkdir /etc/opendmarc
 COPY --chown=opendmarc:opendmarc spam/ignore.hosts /etc/opendmarc/ignore.hosts
 
 COPY saslauthd-postfix /etc/default/
+COPY opendkim-tables.sh /
 COPY config.sh /
 COPY entrypoint.sh /
 
diff --git a/pica-mail-mta/config.sh b/pica-mail-mta/config.sh
index 70fd98c9..db402983 100755
--- a/pica-mail-mta/config.sh
+++ b/pica-mail-mta/config.sh
@@ -102,6 +102,8 @@ AuthservID ${MY_HOSTNAME}
 EOF
 
 #configuration DKIM
+#ecriture des tables indiquant quoi signer avec quelle clef
+/opendkim-tables.sh
 postconf -e "milter_default_action = accept"
 postconf -e "milter_protocol = 6"
 postconf -e "smtpd_milters = local:/opendkim/opendkim.sock, local:/opendmarc/opendmarc.sock"
diff --git a/pica-mail-mta/opendkim-tables.sh b/pica-mail-mta/opendkim-tables.sh
new file mode 100755
index 00000000..140b7a45
--- /dev/null
+++ b/pica-mail-mta/opendkim-tables.sh
@@ -0,0 +1,15 @@
+if [ -z ${MY_DOMAIN+x} ]
+then
+  >&2 echo "Fatal to opendkim set-up : MY_DOMAIN environment variable is unset"
+  exit 1
+fi
+if [ -z ${DKIM_SELECTOR+x} ]
+then
+  >&2 echo "Fatal to opendkim set-up : DKIM_SELECTOR environment variable is unset"
+  exit 1
+fi
+echo "pica-generating opendkim tables (rsakeys and signingdomains tables) for domain ${MY_DOMAIN} and selector ${DKIM_SELECTOR}"
+rm /etc/dkimkeys/rsakeys.table
+echo "${DKIM_SELECTOR}._domainkey.${MY_DOMAIN} ${MY_DOMAIN}:${DKIM_SELECTOR}:/etc/dkimkeys/${DKIM_SELECTOR}.${MY_DOMAIN}.rsa" > /etc/dkimkeys/rsakeys.table
+rm /etc/dkimkeys/signingdomains.table
+echo "*@${MY_DOMAIN} ${DKIM_SELECTOR}._domainkey.${MY_DOMAIN}" > /etc/dkimkeys/signingdomains.table
-- 
GitLab