Déploiement MAIL - ThomasDeceuninck/Admin2bis GitHub Wiki

Marche à suivre

Le conteneur mail a été crée depuis une image de ubuntu de base, ensuite des services pour utiliser les protocoles SMTP, IMAP et POP3 on du être installer sur le conteneur. Les services qui on été installé pour ces protocoles sont postfix pour SMTP et dovecot pour IMAP et POP3. On doit ensuite configurer le fichier de configuration de dovecot et de postfix et ils devront être copier à la place des fichiers de base de configuration de dovecot et postfix, pour cela dans le docker file on va copier le dovecot.conf et le main.cf que l'on a crée et ils vont remplacer les fichiers portant le même nom qui ont été crée quand les services dovecot et postfix on été crée. Pour finir ont doit lancer les 2 services et pour cela ont va utiliser la commande CMD des docker file, et a la fin pour évité que le conteneur ne s'arrête on va lui demander d'exécuter la commande " tail -f /dev/null" ce qui permettra d'avoir notre conteneur toujours running tant que on ne l'arrête pas. Voici le dockerfile qui créera notre image:

FROM ubuntu:latest

RUN apt update

RUN apt install dovecot-imapd dovecot-pop3d -y
RUN apt install postfix -y

COPY dovecot.conf /etc/dovecot/
COPY main.cf /etc/postfix/

CMD service postfix start && service dovecot start && tail -f /dev/null

les fichier dovecot.conf

protocols = pop3 imap
#Utilisation des utilisateurs syst      mes et des shadow password
passdb {
  driver = shadow
}
userdb {
  driver = passwd
}

#Dovecot doit faire partie du groupe mail pour avoir les permissions sur /var/m>
mail_privileged_group = mail
#Indiquer        dovecot o       sendmail stocke les mails et o       il peut c>
mail_location = mbox:~/mail:INBOX=/var/mail/%u
#Pas de ssl par facilit       dans le cadre du TP
ssl=no
disable_plaintext_auth = no
#Configuration des logs : On veut un maximum d'information
log_path=/var/log/dovecot.log
auth_verbose = yes
auth_verbose_passwords = yes
auth_debug = yes
auth_debug_passwords = yes
mail_debug = yes

le fichier postfix.conf

# Define server identity
myhostname = mail.woodytoys.lab
mydomain = woodytoys.lab

# Outgoing mail must use this as source address domain
myorigin = $mydomain
# Accepting local mail delivery for those destinations
mydestination = $myhostname localhost.$mydomain localhost $mydomain

smtpd_banner = $myhostname ESMTP $mail_name

# Network from which we accept smtp connexions
mynetworks = 172.17.0.0/24 127.0.0.0/8 [::1]/128
smtpd_relay_restrictions = permit_mynetworks, reject

#Log configuration
maillog_file=/var/log/postfix.log
#debug_peer_list = woodytoys.lab
#debug_peer_level = 5

ensuite pour lancer notre conteneur on doit lancer les commandes suivantes :

docker build -t mail .
docker run -d --name mail mail

Pour pouvoir utilisé le conteneur mail on aura besoin de créée des utilisateurs pour cela on devra lancer un terminal sur notre conteneur mail et ensuite ajouter les utilisateurs, quand on exécutera la commande adduser pour ajouté les utilisateur il faudra leur donné un mot de passe ce mot de passe sera très important pour utiliser un autre service appelé 'mutt' sur des pc de test qui seront sur le même réseau que le serveur.

docker exec -ti mail /bin/bash
root@ubuntu> adduser toto
root@ubuntu> adduser tutu

Accès mail depuis un utilisateur

Pour tester notre service mail depuis un utilisateur on aura besoin de lancer un conteneur qu'on utilisera comme un pc de test sur le réseau docker. Pour cela une fois le conteneur du pc lancé on devra accéder a un terminal sur le conteneur et ajouté des utilisateur dessus et installé le service mutt sur le pc. Une fois cela fait on va créée un fichier '.muttrc' qui sera un fichier de configuration pour utiliser ce service mutt pour pouvoir envoyer et regarder les mails reçu sur notre conteneur mail.

les commandes a executer pour utiliser mutt:

docker exec -ti pctest /bin/bash
root@ubuntu> adduser toto
root@ubuntu> apt install mutt -y
root@ubuntu> cd /home/toto
root@ubuntu> nano .muttrc
root@ubuntu> su toto
root@ubuntu> mutt

le fichier '.muttrc':

set from="[email protected]"
set ssl_starttls=no
set ssl_force_tls=no
set smtp_url = "smtp://mail.woodytoys.lab:25"

# Imap settings
set spoolfile="imap://[email protected]/"
set imap_user = "[email protected]"
set imap_pass = "toto"
set folder = "imap://[email protected]/"

set editor = "nano"

il est très important que dans ce fichier l'utilisateur que vous préciser soit le même que l'utilisateur existant sur le serveur mail et le mot de passe doit être le même mot de passe qui a été utiliser pour créée l'utilisateur sur le serveur mail.

PS : il est également important de noter que les utilisateurs sont encodés directement dans le conteneur et ne proviennent actuellement pas d'une base de données (utilisateurs physiques vs utilisateurs virtuels). Si un employé arrive dans l'entreprise, il sera obligatoire d'ajouter le nom de l'employé dans le conteneur mail. Afin qu'il puisse utiliser le client "mutt" sur sa machine, il devra créer un utilisateur sur sa machine et modifie le fichier de configuration de "mutt".

Quant à nos e-mails ils sont stockés dans des fichiers du serveur à partir de /var/mail.

Erreurs fréquentes et solutions (troubleshooting)

Si vous rencontrez des erreurs pendant votre déploiement de votre conteneur web vous pouvez aller regarder les fichiers logs qui se trouvent :

  • pour dovecot "/var/log/dovecot.log"
  • pour postfix "/var/log/postfix.log"

vous pouvez également regarder les logs du conteneur mail :

  • docker logs "le nom de votre conteneur"

parfois les ports de votre conteneur mail ne sont pas ouvert, tester l'ouverture des ports avec telnet comme ceci :

  • telnet "adresse ip de votre conteneur" "port que vous voulez joindre"
  • exemple : telnet 10.0.0.1 143