Postfix installer configurer serveur de messagerie partie 7/8 Verification des ports smtp imap ouverts dans…

Postfix installer et configurer un serveur de messagerie partie 5/8
Configurer postfix – installer et configurer un serveur de messagerie partie 5/8
Configurer Postfix, certificat ssl, création des paramètres Diffie-Hellman, gestion et du stockage des mails, paramètre SMTP sortie vers client
Sommaire
-
- 1- Pré-requis avant installer Postfix
- 2- Installer Postfix et les paquets pour le système
- 3 – Pré-requis avant installer postfixadmin
- 4 – Installer et configurer de PostfixAdmin
- 5- Configurer Postfix, certificat ssl, création des paramètres Diffie-Hellman, gestion et du stockage des mails, paramètre SMTP sortie vers client
- 6- Installer et configurer Dovecot
- 7- Verification des ports smtp imap ouverts dans iptables
- Tester la configuration
- 8- Installer et configurer Roundcube comme client de messagerie via un webmail
- Tester aussi sur un client comme Outlook
Configurer postfix
Dans un premier temps, avant de configurer postfix, vous devez sauvegarder du fichier de configuration de Postfix. En effet; en cas d’erreur nous pouvons toujours revenir en arrière.
cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
Nous remarquons que ce fichier de configuration est très complexe. Je vous conseille de bien suivre le tutoriel pour configurer postfix. Maintenant vous ouvrez le fichier en question.
# nano /etc/postfix/main.cf
Dans ce fichier, j’ai séparé les bloc pour mieux comprendre.
Les blocs sont les suivant :
- Générale
- Paramètre TLS ( SMTP Sortie vers client et Entrée vers serveur)
- Paramètre SMTP Sortie vers client
- Paramètre SMTP Entrée vers serveur
- Paramètre SASL
- Paramètre VIRTUALS MAPS
- Paramètre RESTRICTIONS
- Paramètre OpenDKIM
Générale configurer postfix
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#######################
## GENERALS ##
#######################
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
delay_warning_time = 4h
mailbox_command = procmail -a "$EXTENSION"
recipient_delimiter = +
disable_vrfy_command = yes
message_size_limit = 502400000
mailbox_size_limit = 1024000000
inet_interfaces = all
inet_protocols = ipv4
myhostname = hostname.domain.com
myorigin = hostname.domain.com
mydestination = localhost localhost.$mydomain
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.4.0/24 adresse ip publique
relayhost =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
Paramètre TLS
Avant de configurer le TLS, nous devons installer openssl.
Paramètre SMTP Entrée vers serveur
Nous devons créer certificat SSL.
Avant tout, vous devez installer openssl.
# apt-get install openssl
Cette commande va vous créer un fichier ca.key.pem
Attention : c’est certificat auto-signé
openssl genrsa -out ca.key.pem 4096
Puis grâce à ce fichier vous allez créer un fichier ca.cert.pem
openssl req -x509 -new -nodes -days 1460 -sha256 -key ca.key.pem -out ca.cert.pem
Cette commande va vous demander des informations.
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: France
Locality Name (eg, city) []: Votre ville
Organization Name (eg, company) [Internet Widgits Pty Ltd]: domaine.com
Organizational Unit Name (eg, section) []: Certificate Authority
Common Name (e.g. server FQDN or YOUR name) []: domaine.com CA
Nous allons créer la clé mailserver.key cripter en 4096
openssl genrsa -out mailserver.key 4096
Puis grâce à ce fichier vous allez créer un fichier mailserver.key.crs
openssl req -new -sha256 -key mailserver.key -out mailserver.csr
De nouveau, avec cette commande va vous demander des informations.
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: France
Locality Name (eg, city) []: Votre ville
Organization Name (eg, company) [Internet Widgits Pty Ltd]: domaine.com
Organizational Unit Name (eg, section) []:Mail server
Common Name (e.g. server FQDN or YOUR name) []: mail.domain.com
Nous allons créer le fichier mailserver.crt
openssl x509 -req -days 1460 -sha256 -in mailserver.csr -CA ca.cert.pem -CAkey ca.key.pem -CAcreateserial -out mailserver.crt
Pour chaque fichiers, nous devons changer les droits pour la sécurité.
chmod 444 ca.cert.pem
chmod 444 mailserver.crt
chmod 400 ca.key.pem
chmod 400 mailserver.key
Nous allons déplacer cer fichiers dans le répertoire qui leur correspond. le ca.key.pem et mailserver.key dans le répertoire /etc/ssl/private. les fichiers ca.cert.pem et mailserver.crt dans le répertoire certs.
mv ca.key.pem private/
mv ca.cert.pem certs/
mv mailserver.key private/
mv mailserver.crt certs/
Création des paramètres Diffie-Hellman :
L’algorithme Diffie-Hellman est de créer un secret commun aux personnes qui veulent communiquer et d’utiliser ce secret pour chiffrer les données échangées.
Nous allons créer deux chiffrements l’un en 2048 et l’autre en 512.
openssl dhparam -out /etc/postfix/dh2048.pem 2048
Voici la deuxième commande à lancer.
openssl dhparam -out /etc/postfix/dh512.pem 512
Une fois que c’est créée, nous devons renseigner le fichier main.cf de postfix dans /etc/postfix/main.cf.
J’ai souligné en gras les lignes.
#######################
# Smtp ( ENTREE / Serveur ) #
#############################
smtpd_tls_loglevel = 1
smtpd_tls_auth_only = yes
smtpd_tls_security_level = may
smtpd_tls_received_header = yes
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_CAfile = $smtp_tls_CAfile
smtpd_tls_cert_file = /etc/ssl/certs/mailserver.crt
smtpd_tls_key_file = /etc/ssl/private/mailserver.key
smtpd_tls_dh1024_param_file = $config_directory/dh2048.pem
smtpd_tls_dh512_param_file = $config_directory/dh512.pem
tls_preempt_cipherlist = yes
tls_random_source = dev:/dev/urandom
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
lmtp_tls_session_cache_database = btree:${data_directory}/lmtp_scache
Nous allons déclaré Dovecot pour identifier les utilisateurs.
#####################
## Paremètre SASL ##
#####################
# C'est ici que l'on déclare Dovecot comme une passerelle pour authentifier les utilisateurs.
# Postfix peut s'appuyer sur Dovecot pour identifier les connexions SMTP.
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
Gestion et du stockage des mails
Ici nous allons dire où nous stockons les mail. J’ai choisi le dosssier /var/mail/vhosts/.
mkdir -p /var/mail/vhosts/domain.com
Nous allons créer un utilisateur virtuel nommé vmail avec comme UID/GID de 5000, avec un HOME par défaut pointant sur /var/mail.
# groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /var/vmail/ -m
chown -R vmail:vmail /var/mail
Le paramètre virtual_transport est très très important, il permet à Postfix de savoir où envoyer les emails reçus. Dans notre cas, on utilise le protocole LMTP pour les acheminer jusqu’à Dovecot.
##############################
## Paramètre VIRTUALS MAPS ##
##############################
# Gestion et du stockage des emails. Dans la suite de ce tutoriel
#nous allons créer un utilisateur nommé vmail avec UID/GID de 5000
#avec un HOME par défaut pointant sur /var/mail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_minimum_uid = 5000
virtual_mailbox_base = /var/mail
# Le paramètre virtual_transport est très très important,
# il permet à Postfix de savoir où envoyer les emails reçus. Dans notre cas,
# on utilise le protocole LMTP pour les acheminer jusqu'à Dovecot
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql/mysql-virtual-alias-maps.cf
smtpd_sender_login_maps = mysql:/etc/postfix/mysql/mysql-sender-login-maps.cf
D’une part nous allons définir règles de restrictions au niveau du protocole SMTP afin de sécuriser les échanges lors de l’envoie des mails.
###############################
## Paramètre de RESTRICTIONS ##
###############################
# Règles sur les adresses de destination
# permit_sasl_authenticated : Accepter la connexion lorsque le client est authentifié
# reject_non_fqdn_recipient : Refuser les adresses de destinations invalides (non FQDN)
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unknown_recipient_domain,
reject_rbl_client zen.spamhaus.org
# Règles sur l'échange HELO qui survient avant la connexion
# reject_invalid_helo_hostname : Refuser les échanges HELO invalides
# reject_non_fqdn_helo_hostname : Refuser les noms d'hôte invalides (non FQDN)
# reject_unknown_helo_hostname : Refuser les noms d'hôte qui n'ont pas de champ DNS A ou MX dans leurs DNS.
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname
reject_unknown_helo_hostname
smtpd_client_restrictions =
permit_mynetworks,
permit_inet_interfaces,
permit_sasl_authenticated
reject_plaintext_session,
reject_unauth_pipelining
# Règles de connexion des clients
# permit_sasl_authenticated : Accepter la connexion lorsque le client est authentifié
# reject_plaintext_session : Refuser les connexions non sécurisées
# reject_unauth_pipelining : Refuser les défauts lors de la connexion
smtpd_sender_restrictions =
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_sender_login_mismatch
################### ## Paramètre OpenDKIM ## ################### # Indiquer à Postfix comment s'interfacer avec OpenDKIM milter_protocol = 6 milter_default_action = accept smtpd_milters = unix:/opendkim/opendkim.sock non_smtpd_milters = unix:/opendkim/opendkim.sock
Paramètre SMTP Sortie vers client
Nous allons paramétrer les paramètres de chiffrement TLS pour les sortie vers le client et entrée vers le serveur. Le protocol utilisé est ssl.
#############################
# TLS PARAMETERS #
#############################
#############################
# Smtp ( SORTIE / Client ) #
#############################
smtp_tls_loglevel = 1
smtpd_tls_security_level = may
smtp_tls_CAfile = /etc/ssl/certs/ca.cert.pem
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_ciphers = high
smtp_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, 3DES, RC2, RC4, MD5, PSK, SRP, DSS, AECDH, ADH
smtp_tls_note_starttls_offer = yes
Configurer Postfix pour MySQL
Maintenant nous allons créer 4 fichiers de configuration qui vont permettre à Postfix d’interagir avec MySQL. Ces fichiers se peuvent se mettre dans /etc/postfix/mysql/ ou à la racine.
Le premier fichier est mysql-virtual-mailbox-domaine.cf.
# nano /etc/postfix/mysql-virtual-mailbox-domains.cf
hosts = 127.0.0.1
user = postfix
password = MOT DE PASSE
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
Le deuxième fichier est mysql-virtual-mailbox-maps
# nano /etc/postfix/mysql-virtual-mailbox-maps.cf
hosts = 127.0.0.1
user = postfix
password = MOT DE PASSE
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
Le troisième fichier est mysql-virtual-mailbox-alias-maps.cf
# nano /etc/postfix/mysql-virtual-mailbox-alias-maps.cf
hosts = 127.0.0.1
user = postfix
password = MOT DE PASSE
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
Le quatrième fichier est mysql-sender-login-maps.cf
# nano /etc/postfix/mysql-virtual-sender-login-maps.cf
hosts = 127.0.0.1
user = postfix
password = MOT DE PASSE
dbname = postfix
query = SELECT username FROM mailbox WHERE username='%s' AND active = 1
Attention : Vérifier dans le fichier /etc/postfix/main.cf que vous avez le même chemin.
Dans la partie Paramètre Virtual maps, vérifier le chemin.
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
smtpd_sender_login_maps = mysql:/etc/postfix/mysql-sender-login-maps.cf
Nous avons terminé de configurer postfix. Maintenant, nous allons configurer Dovecote.
Postfix installer et configurer un serveur de messagerie partie 6/8
Cet article comporte 0 commentaires