version: "3.7" #attention, docker-compose préfixe le nom du réseau créé par le nom du projet (contenu dans le .env, sinon c'est le nom du dossier) networks: mail: volumes: mail-mda-maildir: name: mail-mda-maildir mail-mta-log: name: mail-mta-log services: mail-mda: image: registry.picasoft.net/pica-mail-mda:v1.0 build: ./pica-mail-mda container_name: pica-mail-mda ports: - "143:143" - "993:993" networks: - mail hostname: pica-mail-mda volumes: - mail-mda-maildir:/home - /DATA/docker/mail/ssl/:/certs-ssl/:ro environment: LDAP_ADDRESS: ldap.picasoft.net LDAP_NSS_CN: cn=mail,ou=Services,dc=picasoft,dc=net LDAP_BASE: dc=picasoft,dc=net USER_FILTER: (uid=%n) PASSWORD_FILTER: (uid=%n) env_file: ./secrets/mail.secrets mail-mta: image: registry.picasoft.net/pica-mail-mta:v1.0 build: ./pica-mail-mta container_name: pica-mail-mta ports: - "25:25" - "465:465" - "587:587" networks: - mail volumes: - mail-mta-log:/var/log #doit contenir selecteur.domaine.rsa - /DATA/docker/mail/opendkim/:/etc/dkimkeys/ - /DATA/docker/mail/ssl/:/certs-ssl/ env_file: ./secrets/mail.secrets environment: #adresse et port du serveur LMTP i.e. le MTA LMTP_LAN_HOSTNAME: pica-mail-mda.pica_mail LMTP_PORT: 24 #nom d'hôte sous lequel Postfix répondra aux requêtes SMTP MY_HOSTNAME: mail.picasoft.net #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) RELAY_DOMAINS: picasoft.net #réglage de la connexion au serveur LDAP: protocole (ldap ou ldaps), hôte et port LDAP_PROTOCOL: ldap LDAP_SERVER_HOSTNAME: ldap.picasoft.net LDAP_PORT: 389 #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=mail,ou=Services,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: LDAP_SEARCH_BASE: dc=picasoft,dc=net #filtre permettant de répertorier les comptes SASL LDAP_SASL_FILTER: "cn=%u" #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). SMTPD_CLIENT_RESTRICTIONS: reject_rbl_client sbl.spamhaus.org, reject_rbl_client dnsbl.sorbs.net #prefixe DKIM, utilise pour identifier la clef DKIM_SELECTOR: janv2019 labels: - "traefik.frontend.rule=Host:mail.picasoft.net" - "traefik.port=80" - "traefik.enable=true" - "traefik.docker.network=pica_mail"