Ajouter description de l'objectif
Lorsque nous envoyons des mails, il faut dans un premier temps savoir où ils vont se rendre. C'est pour cette raison que nous aurons besoin de créer des entrées DNS.
Voici ce dont nous avons besoin au minimum :
Sans trop rentrer dans les détails, le protocole SMTP est le cœurs de la gestion des mails. Sans lui rien ne fonctionnerait et ce sont les utilitaires de postfix qui doivent s'en charger.
apt install postfix mailutils
le paquet mailutils vas nous être utile plus tard pour tester la configuration.
A la 1ere question, nous sélectionnons le type de configuration “Site Internet” :
Lors de la seconde question, il nous demande quel sera le FQDN. Si notre mail doit ressembler à contact@mon-domaine.com alors il faut lui renseigner mon-domaine.com.
Pour une configuration globale, il est déjà possible d'envoyer du mail vu qu'il s'agit juste de faire la commande suivante pour en envoyer :
mail -s "mon sujet" utilisateur@ma-boiter.com
Si l'on utilise un logiciel client alors il sera intéressant de laisser dovecot authentifier la personne qui communiquera par SMTP. On ajoutera donc dans le fichier main.fr :
# AUTH : smtpd_tls_auth_only = no smtpd_sasl_path = private/auth smtpd_sasl_type = dovecot smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous
Ensuite nous ajoutons manuellement quelques options qui vont nous permettre de ne pas être blacklisté directement dont réduire le rythme d'envois :
nano /etc/postfix/main.cf
minimal_backoff_time = 2h maximal_backoff_time = 6h maximal_queue_lifetime = 4d queue_run_delay = 100s bounce_queue_lifetime = 1d initial_destination_concurrency = 5 default_destination_concurrency_limit = 20 slow_destination_rate_delay = 0 slow_destination_concurrency_limit = 1 slow_destination_concurrency_failed_cohort_limit = 100 slow_destination_recipient_limit = 25 smtpd_helo_required = yes inet_protocols = ipv4
Puis dans le fichier suivant :
nano /etc/postfix/master.cf
Nous ajoutons cette ligne :
slow unix - - n - - smtp
Il est également préférable de spécifier quels domaines qui accepte la réceptions de mail plus lente :
nano /etc/postfix/transport
orange.fr slow: wanadoo.fr slow: voila.fr slow: laposte.net slow:
Nous pouvons maintenant prendre en compte touts ces changements :
postmap /etc/postfix/transport systemctl restart postfix
Spécifions le nom de la machine qui sera présent dans l'entête :
echo "domaine.com" > /etc/mailname
Pour le moment, nous allons mettre en place une solution locale permettant de consulter ses mails facilement via un navigateur web et non pas depuis un logiciel client comme Thunderbird. Nous allons instaler rainloop car il est simple d'installation et ne demande pas d'utiliser de base de donnée.
Vu que le service postfix et rainloop seront sur la même machine et pour éviter que les requêtes passent par l'extérieure du réseau (et donc pas utile d'ouvrir de nouveaux ports), on édite le fichier suivant :
echo "127.0.0.1 domaine.com" >> /etc/hosts
Téléchargeons Rainloop:
wget https://www.rainloop.net/repository/webmail/rainloop-latest.zip -O /tmp/rainloop.zip unzip /tmp/rainloop.zip -d /var/www/
On définit les bon droits :
find /var/www/ -type d -exec chmod 755 {} \; find /var/www/ -type f -exec chmod 644 {} \; chown -R www-data:www-data /var/www/
Remarque, la racine futur site web sera situé à /var/www/.
Par la suite, il faut installer le service web avec Nginx et php7.0 en suivant ce tutoriel. N'oublions pas d'installer les dépendances de php7 que l'application utilise:
apt install php7.0-curl php7.0-json php7.0-xml /etc/init.d/php7.0-fpm restart
Voici un exemple de configuration :
On vérifie la configuration et si elle est sans erreur alors on recharge la configuration générale :
nginx -t /etc/init.d/nginx reload
L'application communique à travers dovecot pour authentifier un utilisateur donc, nous installons le requis suivant :
apt install dovecot-imapd
Et on lui indique que l'authentification se basse pas fichier :
nano /etc/dovecot/conf.d/10-master.conf
Et dé-commenté la section suivante :
unix_listener /var/spool/postfix/private/auth { mode = 0666 }
Rendons-nous à cette URL pour configurer l'accès au server mail en local : http://mail.domaine.com/?admin Par défaut les identifiants sont : admin et 12345
Il reste à configurer son domaine (par exemple pour le domaine fusing.fr):
Nous avons enfin terminé la configuration! Il reste plus qu'a se connecter avec un compte utilisateur UNIX.
Admettons par exemple que nous avions l'utilisateur toto, alors son adresse mail ressemblera a : toto@domaine.com
Cette configuration s'effectue du côté de Postfix et je propose deux solutions.
Il est possible d'utiliser le certificat ssl-cert-snakeoil.pem. Il est installé en même temps que le système servant ainsi à s'authentifier et sécuriser les communications (tel que les mises à jours avec la commande apt) faites avec la machine. Il dépend du paquet ca-certificates.
Cependant, c'est un certificat auto-signé et si vous avez déjà de côté des certificats qui servent pour un site web par exemple, il est possible de joindre ces certificats ainsi :
nano /etc/postfix/main.cf
smtpd_use_tls = yes smtpd_tls_loglevel = 1 smtpd_tls_key_file = /etc/letsencrypt/live/domaine.com/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/domaine.com/fullchain.pem smtpd_tls_CAfile = /etc/letsencrypt/live/domaine.com/chain.pem smtpd_sasl_tls_security_options = noanonymous
Pour activer ces directives ont édite le fichier suivant pour décommenter/ajouter ces directives :
nano /etc/postfix/master.cf
smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
Vérifier que l'échange de clés s'effectue et qu'ils s'échangent les bon certificats :
msmtp --serverinfo --tls --tls-certcheck=off --host domaine.com
On verra notamment ces informations :
TLS session parameters: (TLS1.2)-(ECDHE-SECP256R1)-(RSA-SHA256)-(AES-256-GCM)
C'est un peu le même pricinpe qu'avec SMTPS. A la différence, qu'ici j'utilise juste le cartificat de base vu que qu'il n'y a pas vraiment besoin d'un certificat valide. pour communiquer avec les autres serveurs mais juste avec des logiciels clients tel que Thunderbird.
protocols = imap ssl = yes ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key ssl_dh_parameters_length = 1024
Notons que le Diffie-Hellman sera recréé à chaque rechargement de la configuration.
Quelques directives de sécurité en plus :
ssl_protocols = TLSv1.2 TLSv1.1 !TLSv1 !SSLv2 !SSLv3 ssl_cipher_list = CDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES128:DH+AES:ECDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!LOW ssl_prefer_server_ciphers = yes mail_max_userip_connections = 10
On vérifie que tout fonctionne bien ainsi :
openssl s_client -tls1_2 -connect domaine.com:imaps
On obtiendra alors la bannière de bienvenu :
Il reste encore quelque configuration à appliquer sur le serveur dont la gestion des droits :
usermod -aG mail contact
Depuis votre propre machine en local, vous pouvez le faire avec Thunderbird ou alors avec Mutt en mode console dont voici le minimum pour se connecter à sa boite mail :