diff --git a/pica-mail/docker-compose.yml b/pica-mail/docker-compose.yml index 0b3f5195f9cd621c4a64b86a8356f7503c351ac1..8b631baad6355abffd1306e1324a7136fa99281b 100644 --- a/pica-mail/docker-compose.yml +++ b/pica-mail/docker-compose.yml @@ -49,42 +49,44 @@ services: - /var/log/opendmarc.log:/var/log/opendmarc.log # For sharing with exporter - mail-mta-spool:/var/spool/postfix - #doit contenir selecteur.domaine.rsa + # Doit contenir selecteur.domaine.rsa - /DATA/docker/mail/opendkim/:/etc/dkimkeys/ - /DATA/docker/certs/mail.picasoft.net/:/certs-ssl/:ro env_file: ./secrets/mail.secrets environment: - #hostname et port du serveur LMTP i.e. le MDA + # As specified in volume section, this is where + # keys generated by Traefik are mounted + SSL_CERT: "/certs-ssl/fullchain.pem" + SSL_KEY: "/certs-ssl/privkey.pem" + # Hostname et port du serveur LMTP i.e. le MDA LMTP_LAN_HOSTNAME: pica-mail-mda LMTP_PORT: 24 - #nom d'hôte sous lequel Postfix répondra aux requêtes SMTP + # Nom d'hôte sous lequel Postfix répondra aux requêtes SMTP MY_HOSTNAME: mail.picasoft.net - #domaine des mails + # Domaine des mails MY_DOMAIN: picasoft.net - #domaines mails qu'on s'autorise à relayer (qui ont le droit de passer à travers notre serveur si ils sont en expéditeur ou destinataire) + # Domaines mails qu'on s'autorise à relayer (qui ont le droit de passer à travers notre serveur si ils sont en expéditeur ou destinataire) RELAY_DOMAINS: picasoft.net - #réglage de la connexion au serveur LDAP: protocole (ldap ou ldaps), hôte et port + # Réglage de la connexion au serveur LDAP LDAP_PROTOCOL: ldaps LDAP_SERVER_HOSTNAME: ldap.picasoft.net LDAP_PORT: 636 - #réglage du bind : login d'un compte qui a suffisamment de droits pour lire l'arborescence (à l'exception des mots de passe) + # Réglage du bind : login d'un compte qui a suffisamment de droits pour lire l'arborescence (à l'exception des mots de passe) LDAP_BIND_DN: cn=nss,dc=picasoft,dc=net - #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 - #ce qui fait qu'on peut créer une adresse valide sans nécessairement lui associer un compte valide - #ainsi, on pourra recevoir des mails dans la boîte, mais on ne pourra pas se connecter en tant que cet utilisateur - #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: + # 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 + # On peut donc créer une adresse valide sans nécessairement lui associer un compte valide : on pourra recevoir des mails dans la boîte, mais on ne pourra pas se connecter en tant que cet utilisateur + # Il suffit d'utiliser des attributs LDAP différents : 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 - #filtre permettant de répertorier les comptes SASL + # Filtre permettant de répertorier les comptes SASL LDAP_SASL_FILTER: "cn=%u" - #filtre permettant de répertorier les adresses mail + # Filtre permettant de répertorier les adresses mail 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). + # 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 - #prefixe DKIM, utilise pour identifier la clef + # Préfixe DKIM, utilise pour identifier la clef DKIM_SELECTOR: janv2021 labels: traefik.http.routers.pica-mail-mta.rule: Host(`mail.picasoft.net`) diff --git a/pica-mail/pica-mail-mta/Dockerfile b/pica-mail/pica-mail-mta/Dockerfile index c8dc9f1c0640f59c41d5d4904d9e8d5d971c4cdd..87cc3683b8f5bdea66b7ba61abfaa7c4394b7185 100644 --- a/pica-mail/pica-mail-mta/Dockerfile +++ b/pica-mail/pica-mail-mta/Dockerfile @@ -1,55 +1,26 @@ -#Dockerfile pour le MTA et MSA de Picasoft -#actuellement basé sur postfix -From debian:stretch +LABEL maintainer="picasoft@assos.utc.fr" +FROM debian:stretch -#lors de l'installation de postfix, par défaut, il y a des "fenêtres dans la console", ceci les désactive et utilise des réponses par défaut +# Use default answer for installation as no one can answer ENV DEBIAN_FRONTEND noninteractive -#installation des paquets debian RUN apt-get update -y \ && apt-get install -y \ postfix postfix-ldap libsasl2-modules sasl2-bin opendkim opendkim-tools rsyslog opendmarc ca-certificates \ && rm -rf /var/lib/apt/lists/* - -#configuration de postfix -#nom de domaine des courriers dont on est à l'origine (pour s'en réserver l'exclusivité) -ENV MY_DOMAIN picasoft.net -#nom d'\hôte de la machine qui va faire tourner le MTA -ENV MY_HOSTNAME pica01-test.picasoft.net -#noms de domaines de courriers qu'on s'autorise à transmettre, séparés par des virgules (example.com, example2.com, example3.com) -ENV RELAY_DOMAINS picasoft.net - -ENV LDAP_BIND_PW readonly -#niveau de l'arborescence à partir de laquelle les entrées sont considérées -ENV LDAP_SEARCH_BASE dc=picasoft,dc=net -#filtre sur les entrées demandées par saslauthd. %u sera substitué par le login entré par l'utilisateur -ENV LDAP_SASL_FILTER cn=%u -#filtre sur les entrées demandées par virtual_mailbox. %s sera substitué par la partie gauche de l'adresse mail. -ENV LDAP_VIRTUAL_MAILBOX_FILTER uid=%s - -#Local Delivery (LMTP) -#adresse et port du LDA (dans notre cas, c'est le MDA Dovecot, embarqué dans un conteneur, et accessible à travers un docker network) -ENV LMTP_LAN_HOSTNAME pica-mail-mda-ldap.local-mail-delivery -ENV LMTP_PORT 24 - -#blacklist, peut être vide -ENV SMTPD_CLIENT_RESTRICTIONS reject_rbl_client sbl.spamhaus.org, reject_rbl_client dnsbl.sorbs.net - -# SSL -ENV SSL_CERT "/certs-ssl/fullchain.pem" -ENV SSL_KEY "/certs-ssl/privkey.pem" - -#configuration de OpenDKIM +# Copy DKIM and DMARC conf COPY spam/opendkim.conf /etc/ COPY spam/opendmarc.conf /etc/ -COPY spam/dkimkeys/* /etc/dkimkeys/ COPY spam/opendkim /etc/default/opendkim COPY spam/opendmarc /etc/default/opendmarc RUN mkdir /etc/opendmarc COPY --chown=opendmarc:opendmarc spam/ignore.hosts /etc/opendmarc/ignore.hosts +# Copy authentication daemon configuration COPY saslauthd-postfix /etc/default/ + +# Copy scripts for building configuration at startup COPY opendkim-tables.sh / COPY config.sh / COPY entrypoint.sh / diff --git a/pica-mail/pica-mail-mta/rsyslog.conf b/pica-mail/pica-mail-mta/rsyslog.conf deleted file mode 100644 index 81a2ea20625b6511986db694d6f7bec79df7001c..0000000000000000000000000000000000000000 --- a/pica-mail/pica-mail-mta/rsyslog.conf +++ /dev/null @@ -1,95 +0,0 @@ -# /etc/rsyslog.conf Configuration file for rsyslog. -# -# For more information see -# /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html - - -################# -#### MODULES #### -################# - -module(load="imuxsock") # provides support for local system logging -module(load="imklog") # provides kernel logging support -#module(load="immark") # provides --MARK-- message capability - -# provides UDP syslog reception -#module(load="imudp") -#input(type="imudp" port="514") - -# provides TCP syslog reception -#module(load="imtcp") -#input(type="imtcp" port="514") - - -########################### -#### GLOBAL DIRECTIVES #### -########################### - -# -# Use traditional timestamp format. -# To enable high precision timestamps, comment out the following line. -# -$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat - -# -# Set the default permissions for all log files. -# -$FileOwner root -$FileGroup adm -$FileCreateMode 0640 -$DirCreateMode 0755 -$Umask 0022 - -# -# Where to place spool and state files -# -$WorkDirectory /var/spool/rsyslog - -# -# Include all config files in /etc/rsyslog.d/ -# -$IncludeConfig /etc/rsyslog.d/*.conf - - -############### -#### RULES #### -############### - -# -# First some standard log files. Log by facility. -# -auth,authpriv.* /var/log/auth.log -*.*;auth,authpriv.none -/var/log/syslog -#cron.* /var/log/cron.log -daemon.* -/var/log/daemon.log -kern.* -/var/log/kern.log -lpr.* -/var/log/lpr.log -#sera redirige vers le stdout -mail.* -/var/log/mail.log -user.* -/var/log/user.log - -# -# Logging for the mail system. Split it up so that -# it is easy to write scripts to parse these files. -# -#mail.info -/var/log/mail.info -#mail.warn -/var/log/mail.warn -#mail.err /var/log/mail.err -#desactive car doublon avec mail.log - -# -# Some "catch-all" log files. -# -*.=debug;\ - auth,authpriv.none;\ - news.none;mail.none -/var/log/debug -*.=info;*.=notice;*.=warn;\ - auth,authpriv.none;\ - cron,daemon.none;\ - mail,news.none -/var/log/messages - -# -# Emergencies are sent to everybody logged in. -# -*.emerg :omusrmsg:* - diff --git a/pica-mail/pica-mail-mta/spam/dkimkeys/README.PrivateKeys b/pica-mail/pica-mail-mta/spam/dkimkeys/README.PrivateKeys deleted file mode 100644 index 1e9104aa7ff3b9a8682c1e0641f88e1e4a91fd29..0000000000000000000000000000000000000000 --- a/pica-mail/pica-mail-mta/spam/dkimkeys/README.PrivateKeys +++ /dev/null @@ -1,14 +0,0 @@ -This directory is for storing private keys associated with DKIM signing with -opendkim. - -Here is advice from upstream - -(4) Store the private key in a safe place. We generally use a path like - /var/db/dkim/SELECTOR.key.pem (where "SELECTOR" is the name you chose). - The /var/db/dkim directory and the associated .pem file should be owned by - the user that will be executing the filter (preferably not the - superuser) and be mode 0700 and 0600 respectively. - -In Debian, we use /etc/dkimkeys by default and the directory permissions and -ownership are set correctly. Ensure that the private key is owned by the -opendkim user and the permissions are 0600. diff --git a/pica-mail/pica-mail-mta/spam/dkimkeys/rsakeys.table b/pica-mail/pica-mail-mta/spam/dkimkeys/rsakeys.table deleted file mode 100644 index 4290bb1bcd29c612388c3543e71ab07e3fb81b88..0000000000000000000000000000000000000000 --- a/pica-mail/pica-mail-mta/spam/dkimkeys/rsakeys.table +++ /dev/null @@ -1 +0,0 @@ -nov2018._domainkey.picasoft.net picasoft.net:nov2018:/etc/dkimkeys/nov2018.picasoft.net.rsa diff --git a/pica-mail/pica-mail-mta/spam/dkimkeys/signingdomains.table b/pica-mail/pica-mail-mta/spam/dkimkeys/signingdomains.table deleted file mode 100644 index 161d9e20e25d02006fbd153f0e8c6ebd73a4f5c8..0000000000000000000000000000000000000000 --- a/pica-mail/pica-mail-mta/spam/dkimkeys/signingdomains.table +++ /dev/null @@ -1 +0,0 @@ -*@picasoft.net nov2018._domainkey.picasoft.net diff --git a/pica-mail/pica-mail-mta/spam/nov2018.picasoft.net.rsa b/pica-mail/pica-mail-mta/spam/nov2018.picasoft.net.rsa deleted file mode 100644 index a9e428bce58d45e80b8a553275ad7b67cee943d5..0000000000000000000000000000000000000000 --- a/pica-mail/pica-mail-mta/spam/nov2018.picasoft.net.rsa +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJJwIBAAKCAgEA0LZPCh8GyDn1loMJs0IDfWVc6hJKnrDIQaUmcaBxtAoZUyEf -TBdGIYaqswC/xCMa/ov01QCFP293RD1caN8h45CaArwoiPIjmM0xnq1YmSVRjABB -ozUVk6o8F08W9XzwO5iolWLfuMA+oiFnIyhH+ATcb8DxBvBTa8AUwCs6fEvfdSfI -PlJNHhymWIbg2rWD01klOY36J0OZC1p12Fl1fkUU5jNMcJZOezwrqbQqbqZQOF5+ -1BY/Wx2xWmjdlyn9OR4nE5046pF7l5/yOQr8EPVnrFK3dx2SNiJuOSj1qs56CAIN -kytvOoZEH65sULwh/HrQjvVvUYQjwYpVl3cOVLGIybo8n6ArsCUMcBiBjBHJRb6v -UI7GM9gilZM17wOTDKL6ncxQPlya5DvmQCuf+2Kaz8HZAG/lAYHUqZ2+YaKDcR8k -/xz9dQazqNqXSMvLn/DbisUDd21vhfSJxEfW4FKQmJ6g9YSJCyzyKuvI8lyiwuXE -TM/dJI47Y3nlYJjJtIlxPn7MTvPyh5qByr1C3LrjEVFIe2dhA3C105PAkFMCpG7d -ut8l1nyxBUmJW1qmJ4dR/EHzwVfMnkcZPi/V8+6BUCT2hg95/rUTtwSD1JTTJduu -vkAtrLSOaus35p0wsmmqU/glNDF3H9ARqJnAs/5UgEB+zOBs8fZuI/bcxCkCAwEA -AQKCAgALzWNm1R5TEEP9AOf5hRAhdSvt6J7jnmeUnrwvzLzhS3jnJIZajS5gEvdw -K+isNLgAEPYFXYQrdCgwaa/iFkwaTEEJSo6YP+kXaPMXYAIUlvGnkxQjIItZ0FSZ -lNVdiHUlSZqu5+pyzhw8mtr0OADp24yDnUuD8u8ktrX1r/wcr0WxoFBIherqewBF -HUt10rHjr7TVLlwpAD+VTsY/N7/XJhzqb5gw/a7udRabAB8uJqV+qolNgPyQMHuo -+ykctTkmk7ft+gQP764ngtn1s9NROi9kpUDOsZNlEElfXhuWTxrDfSo7Wkdt7c3I -ZNqnLhxV5LQKgYKL/4buGN6CNC9RLI0vFAUe+GZqxD3ViFRd7qxBxzOpRwu+XOQ+ -ZDhS8Bcmbb+xMjVasSUki8DGZdiglpugmA0PJu4506fUebDpo95MOsitK6VmdZdI -qej/Odf4wGuOO1qxKYs9ArWcTiSJan03x9mqgJO44x71tl0ksVyYMmjzQT1i5xZo -IsGLUd+EEuzIXCxbqvzRMfzy/0LiiSyVsA5BxP2wfJbx3t9YO9Pz/+6p3T/bDDO8 -28DxUhftqpfGqxhdLU311Q2uvCCvCON32YSntAYcO3lceWqu/EejbWtN+WZZ7Cl6 -D1jiQHWw/38cmkkF9blaMvDktbi57MVmEB9MZjSovxZks1cGoQKCAQEA90VUyJrc -yDmndZ7TmLntbZmYm8lSjN7PkSWHPcBvuUR17Tr3rkgQXlRhKPDsp046k+lJ9Rva -LQ0wTqEQ1j8TSDMRqrR/3/8k7vT2ewGtdxyeJzIVDKCMSTDNwySpwurSQBlySO0r -xstffHt7hJ0gSxTt8K9tWs3b9Z7YjsaN1socW5YddsLXvlIZVhZMl7v4W9gb7leo -eVL46tjsDaHw8KV8OMIfFbwIKLRF0Kn48DPClEX5+GRyZfv6EarB9GgjZB/J/kJq -HTCDlbJh64+aDz/7pPw5Jf8klvXzYbzhbKO5cS3JnbPsJkJ7uUzGZeWMuQrzhxr9 -G4xGZ04WK45AnQKCAQEA2BSCibnepUj9lmF4JzrSg/uy+efBTw/GC/Rm29VvPFjq -F9Rx5t7PL1TmwnYTXs8HdQQxr5y8/PrbJ8IpvHy6MoeguiURYh4UwY3pI19fLPNa -LfDXMcKfsWk7lNK6YX8U6LLzsk3OSJINB6ZKdXro96FXlPwqmaBV9uFlrLJd62MR -uXiJRZqtReU4Dh2BcqAM2K3rz0HuwDmYhrsptmPC8nIrHtojLx0/ePVaPXrfPFrs -uBfw9Tbe7J/uvfYq31H3HXsIFhcU2omRHio2X5vrkbB5TZSVFFtXLGtpzYaDyMz5 -t688edRSNy+sOEPfHuVDWcfnP5T1YZwUb4wa7++9/QKCAQAi5nQ7BDCZShnqrgor -ikKKr50sj9PI8kHVuLhH7PtX6OPEIgiHXsCAr+QuxSKB0rbN3aWEpPO8XBovXuhj -dO+hxyN9NpC96uMpnwWTAv+ayj1ARv9Vkut6ARtpqakUS9R1G6JXzLHbEyVdCoi6 -hPrj3gZfbENBB8E9/7eNH1UxtcEe5CcwdfvBbxEIZ4lT+UHqpKv8jf7HcQCVFRzs -J6k8Lf9Ee5GrnaiBJkCcXQE31fZmuyG2/2ZuIox/JdzOREyKezolWvZjPE+2N0E+ -4DvcXymDdd4TENn3PKunZeNjVBB+evnz+ksgc03HL6DpDOc5zuPkc9i5pKjjN9BF -QYS5AoIBAHkwv6opUmOXlYsDbdVq22llARPC1RvXt/c6g3omsjXBlMH6yEt5ifB9 -CNPmT6TsLr2FtaxOF3034TTiZHAv8GqowQ/F/ILwZinMwwaw1furHVgI7VkeVFy3 -rdAhhKFsGjkNLTtDAkCXkbFJphdP8Vv55NpNuELjt3M5JcJ/Y8fCj81benpMb4R1 -NERObizw8WOR4GElFJhBdXeTf6ipOUyrld2+8N7a45+e1JcI1C3QvVXfL6kItm02 -ojtu1srb+OJS/80L8wlDAN5PRKHJHI1g0hgeDqMVO8ZRFE1OdZloxWItaZjW6anE -Fi6Ueo6kfWrcgKmbjSjK1ndduDn8V60CggEANBpFf0bH4iUop8rBL5Dz6saJQHgD -41vDIRdNxDGZfa91rNax9npiaL4r4e6e/QKNYmiXBdSVNgKi74IL34Dpn0sOzUjV -hB1CGpIJh1fAXLQY8yZ0RMXC7MJ+CCFWZ6SNRDwWSz/sIkIcD6ZuDZ7jUBQHJbN3 -MNifhfJxIIv/8iC3Zf1ol9nwPNBL/VGWRWRGe2/XqQvNGipa08djRSocg1ofJyrU -ep2L09eYmSYAtwAzkYgbOfCDW5x6wciFCVgClsZm+7ztGXZDKlSFqzqVUwhtT7Q4 -32qMQf8rWLLOR/6whzc4rtm0NQJCzEJQ5Mlk+jNKlwcf6CStWeoLjmEtGQ== ------END RSA PRIVATE KEY-----