Commit 2463043a authored by Thomas Picouet's avatar Thomas Picouet
Browse files

Merge branch 'mail' of gitlab.utc.fr:picasoft/dockerfiles into mail

parents 3207d1c0 17ca641f
From pica-mail-mta
#installation des paquets debian
RUN apt-get update -y \
&& apt-get install -y \
nano telnet rsyslog dnsutils \
&& rm -rf /var/lib/apt/lists/*
#serveur MDA/LDA sous la forme d'un serveur LMTP : donner l'adresse et le port du conteneur avec pica-mail-mda
ENV LMTP_LAN_HOSTNAME pica-mail-mda-auth_plaintext.local-mail-delivery
ENV LMTP_PORT 24
ENV LDAP_SERVER_HOSTNAME ldap.test.picasoft.net
ENV LDAP_PORT 389
COPY local_users /
COPY entrypoint2.sh /
ENTRYPOINT ["/entrypoint2.sh"]
Cette image Docker a pour but de tester pica-mail-mta en se passant du LDAP.
Elle prend pica-mail-mta et rajoute :
* des adresses mails reconnues localement (inscrites dans la recipient table) : mail1@picasoft.net, mail2@picasoft.net
* des comptes d'utilisateur autorisés à utiliser ces adresses mail: mail1 et mail2 de mots de passe respectifs mail1pwd et mail2pwd autorisés à envoyer des mails respectivement en tant que mail1@picsoft.net et mail2@picasoft.net
Cette image docker est actuellement en développement. Pour le moment, nous sommes en train de travailler sur le premier point et pas sur le second, c'est-à-dire que n'importe qui peut se connecter au serveur et envoyer des mails en tant qu'une adresse de son choix, mais le destinataire doit être une adresse connue.
Le le réseau 127.0.0.1 a le droit de se connecter à la machine, mais pas besoin de mot de passe. On peut donc la tester en faisant
```
docker exec -it conteneur /bin/bash
apt update
apt install telnet
telnet localhost 25
helo pica01-test.test.picasoft.net
MAIL FROM:<mail1@picasoft.net>
RCPT TO:<mail2@picasoft.net>
DATA
Subject: bonjour
bla bla bla
.
```
Voilà!
#!/bin/bash
/entrypoint.sh true
postfix stop
#génération du .db à partir du fichier texte
postmap /local_users
#ajout du .db en tant que source
postconf -e "virtual_mailbox_maps = hash:/local_users"
#on modifie temporairement les restrictions pour permettre à tout le monde d'envoyer du mail par notre serveur tant que la destination est autorisée (par les autres règles) et que celui qui tente de se servir du serveur est sur un réseau autorisé (typiquement l'hôte et le subnet)
postconf -e "mynetworks = 127.0.0.0/8"
#voir en dessous pour la config sasl
postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination"
#désactivation de la blacklist de clients à des fins de debug (elle rejette les clients en local)
postconf -e "smtpd_client_restrictions = permit_mynetworks"
#désactivation des restrictions sur le helo
postconf -e "smtpd_helo_restrictions = "
#configuration du local delivery agent sous la forme du serveur lmtp de dovecot connecté par socket ip (inet)
postconf -e "virtual_transport = lmtp:inet:${LMTP_LAN_HOSTNAME}:${LMTP_PORT}"
#:private/dovecot-lmtp
#utiliser le démon saslauthd. Il est contacté par des appels de fonction à une lib et retourne la validité des login.
cat <<EOF >> /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
EOF
#fichiers de config et socket utilisés par le démon de saslauthd créé pour postfix (voir fichier copié dans le Dockerfile)
dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd
adduser postfix sasl
service saslauthd restart
#on utilise les comptes unix de l'hôte
postconf -e 'smtpd_sasl_local_domain = $myhostname'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
#autorise l'auth depuis des clients connus comme sécurisés mais utilisant des syntaxes obsolètes/non standard (=outlook)
postconf -e 'broken_sasl_auth_clients = yes'
useradd mail1
useradd mail2
echo "mail1:1234"|chpasswd
echo "mail2:1234"|chpasswd
postfix start
postfix reload
postfix stop
service rsyslog start
service postfix stop
service postfix start
tail -F /var/log/mail.log
mail1 mail1
mail2 mail2
#attention: la partie après les deux points n'est pas interprétée, ceci liste les adresses existantes mais n'effectue aucun contrôle d'accès
#
# Settings for saslauthd daemon
# Please read /usr/share/doc/sasl2-bin/README.Debian for details.
#
# Should saslauthd run automatically on startup? (default: no)
START=yes
# Description of this saslauthd instance. Recommended.
# (suggestion: SASL Authentication Daemon)
DESC="SASL Authentication Daemon"
# Short name of this saslauthd instance. Strongly recommended.
# (suggestion: saslauthd)
NAME="saslauthd"
# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam -- use PAM
# rimap -- use a remote IMAP server
# shadow -- use the local shadow password file
# sasldb -- use the local sasldb database file
# ldap -- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"
# Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""
# How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5
# Other options (default: -c -m /var/run/saslauthd)
# Note: You MUST specify the -m option or saslauthd won't run!
#
# WARNING: DO NOT SPECIFY THE -d OPTION.
# The -d option will cause saslauthd to run in the foreground instead of as
# a daemon. This will PREVENT YOUR SYSTEM FROM BOOTING PROPERLY. If you wish
# to run saslauthd in debug mode, please run it by hand to be safe.
#
# See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information.
# See the saslauthd man page and the output of 'saslauthd -h' for general
# information about these options.
#
# Example for chroot Postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Example for non-chroot Postfix users: "-c -m /var/run/saslauthd"
#
# To know if your Postfix is running chroot, check /etc/postfix/master.cf.
# If it has the line "smtp inet n - y - - smtpd" or "smtp inet n - - - - smtpd"
# then your Postfix is running in a chroot.
# If it has the line "smtp inet n - n - - smtpd" then your Postfix is NOT
# running in a chroot.
OPTIONS="-c -m /var/run/saslauthd"
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment