Auto-hébergement de la messagerie : Debian Jessie, Postfix, Dovecot, Postgrey…
Auto-hébergement de la messagerie : Debian Jessie, Postfix, Dovecot, Postgrey…
Cet article répond à la question : comment installer simplement, un serveur de mail, qui soit un minimum sécurisé et capable de limiter un peu le SPAM ?
La configuration proposée permet de gérer les boites mails (BAL) des utilisateurs systèmes sur un ou plusieurs domaines. Les utilisateurs sont ceux ajoutés sur le système (/etc/passwd). Pas besoin de gérer les comptes mails avec des « Virtuals » dans une configuration basique (pour quelques personnes, cette option est amplement suffisante).
Prérequis
Avant tout, il faut que l’enregistrement MX soit configuré sur le DNS du domaine traité.
exemple.com. 3w IN MX 10 mail.exemple.com.
Ajouter aussi le champs Sender Policy Framework (SPF) dans la zone DNS, car certains serveurs de mails vérifient cette information pour qualifier les serveurs SPAMmeurs.
exemple.com. IN TXT "v=spf1 mx -all"
Une dernière chose, pensez à mettre à jour le Reverse (enregistrement PTR dans la zone Reverse du DNS). Cette information est également vérifiée pour savoir si c’est vraiment sérieux de recevoir des mails de votre serveur.
Installation de la messagerie
Je pars du principe que le système est déjà installé et à jour (Debian Jessie). Les configurations ont été faites sur un VPS Cloud OVH, mais le serveur peut être hébergé n’importe où, il faut juste s’assurer que les ports nécessaires au fonctionnement de la messagerie ne soient pas filtrés ou bloqués (TCP 25, 993, 587).
Les paquets à installer :
$ sudo apt install postfix dovecot-imapd postgrey
Aux questions :
Configuration type, répondre : Internet Site
Nom du système de mail, répondre : exemple.com (ou levotre !)
La configuration par défaut après l’installation de Postfix
$ postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no config_directory = /etc/postfix inet_interfaces = all mailbox_size_limit = 0 mydestination = exemple.com, localhost.localdomain, localhost myhostname = mx2.exemple.com mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme_directory = no recipient_delimiter = + relayhost = smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = yes
Il faut y ajouter :
## TLS smtp Opportuniste smtpd_tls_security_level = may ## Dovecot (SASL) Simple Authentication and Security Layer ## http://wiki2.dovecot.org/HowTo/PostfixAndDovecotSASL smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth # On Debian Wheezy path must be relative and queue_directory defined queue_directory = /var/spool/postfix # and the common settings to enable SASL: smtpd_sasl_auth_enable = yes ## local delivery agent (LDA) celui qui délivre le mail dans la BAL, avec la commande qui va bien mailbox_command = /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT" ## Format des BAL : Maildir home_mailbox = Maildir/ ## Quelques restrictions pour éviter les clandestins et les spammeurs ## Bien évidement ces restrictions sont personnelles et sont tout à fait ajustable en fonction des besoins smtpd_client_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_rbl_client sbl-xbl.spamhaus.org, reject_rbl_client list.dsbl.org smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname, warn_if_reject reject_unknown_hostname smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_unlisted_sender, reject_unknown_sender_domain smtpd_recipient_restrictions = # General rules reject_non_fqdn_recipient, reject_unknown_recipient_domain, # Our users permit_mynetworks, permit_sasl_authenticated, # Spam filters reject_rbl_client zen.spamhaus.org, reject_rbl_client dnsbl.sorbs.net, reject_rhsbl_reverse_client dbl.spamhaus.org, reject_rhsbl_helo dbl.spamhaus.org, reject_rhsbl_sender dbl.spamhaus.org, # This should be next-to-last check_policy_service inet:127.0.0.1:10023 reject_unauth_destination, reject_unlisted_recipient, permit
Authentification de l’expéditeur et chiffrement
Pour éviter que n’importe qui envoie des mails depuis notre serveur de mail, il vaut mieux s’assurer de l’identité et vérifier les habilitations de l’expéditeur.
# vi /etc/postfix/master.cf ~ submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING ~
Recharge la configuration et relance le service
service postfix restart
A ce stade
# netstat -lnpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:10023 0.0.0.0:* LISTEN 4787/postgrey.pid - tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 5133/master tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 5191/dovecot tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 539/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 5133/master tcp6 0 0 :::587 :::* LISTEN 5133/master tcp6 0 0 :::143 :::* LISTEN 5191/dovecot tcp6 0 0 :::22 :::* LISTEN 539/sshd tcp6 0 0 :::25 :::* LISTEN 5133/master
On remarque que « postgrey » écoute sur le port 10023. Ce service va rejeter dans un premier temps, les serveurs mails qu’il ne connaît pas, puis acceptera de laisser passer le mail à la seconde tentative.
Théoriquement, avec le « Greylisted » et les quelques règles de restrictions, une bonne partie des SPAM seront rejetés.
Fini pour Postfix
Maintenant configuration de Dovecot
A modifier dans /etc/dovecot/conf.d/10-mail.conf
## Emplacement des BAL #mail_location = mbox:~/mail:INBOX=/var/mail/%u mail_location = maildir:~/Maildir
A modifier dans /etc/dovecot/conf.d/10-ssl.conf
## Activation du TLS # SSL/TLS support: yes, no, required. #ssl = no ssl = required ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key
A modifier dans /etc/dovecot/conf.d/10-master.conf
# Gestion de l'authentification des utilisateurs # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 }
Relance le service
# service dovecot restart
Création d’un utilisateur
# adduser alex
Création des alias
A modifier dans /etc/aliases
# See man 5 aliases for format postmaster: root root: alex
Recharge la base des alias
# newaliases
Test
A configurer sur un client comme Thunderbird
Attention, le certificat TLS est auto signé, donc, une exception est nécessaire.
IMAP Server Name: mx2.exemple.com Port: 993 Connection security: SSL/TLS Authentication method: Normal password User Name: alex SMTP Server Name: mx2.exemple.com Port: 587 Connection security: STARTTLS Authentication method: Normal password User Name: alex
Conclusion
Bon ben, voila ! Un serveur de mail de plus.
Cette configuration est suffisante pour passer la plus part des mécanismes de répudiation mis en place anarchiquement par certains serveurs de mail (pour lutter contre le SPAM).
Cet article Auto-hébergement de la messagerie : Debian Jessie, Postfix, Dovecot, Postgrey… est apparu en premier sur PointRoot.org.