Rien à cacher #3 – Mes mails

Publié le 23/03/2016

Article mis à jour le 19/06/2016 pour la sécurité.

 

Comme vu précédemment chiffrer ses mails c'est bien, mais si c'est pour les offrir à Google ou à d'autres sociétés qui respectent si bien la vie privée il y a peu d'intérêt. Nous allons donc voir comment créer notre propre serveur mail, qu'il soit hébergé sur un serveur mutualisé ou même sur une framboise domestique.
 

I – Préparation : ports et nom de domaine

1- Les ports

Si vous hébergez votre serveur il va falloir ouvrir quelques ports afin de laisser passer les mails(seuls les ports sécurisés sont important mais connaître les autres est bien aussi) : 110(pop3), 995(pop3 sécurisé), 143(imap), 993(imap sécurisé), 25(smtp sans chiffrement historiquement), 587(submission).

 

2- Le nom de domaine

Il vous faut aussi un nom de domaine, je ne vais pas m'attarder là-dessus et suppose que vous en avez un et savez accéder à votre zone DNS.
 

II – Installation et configuration

1- Les serveurs

 

On installe postfix sur notre serveur (durant l'installation choisir « site internet ») :

$ apt-get install postfix

 

On génére le DH pour notre serveur mail :

openssl gendh -out /etc/postfix/dh_4096.pem -2 4096

 

On configure ensuite postfix via /etc/postfix/main.cf (en modifiant en fonction de vos certificats, ...) :

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no

# TLS
smtp_use_tls=yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_cert_file = your_cert_file
smtpd_tls_key_file = your_key_file
smtpd_tls_CAfile = your_ca_file
smtpd_tls_session_cache_database = btree:/smtpd_scache
smtp_tls_session_cache_database = btree:/smtp_scache
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtpd_tls_dh1024_param_file = /etc/postfix/dh_4096.pem

# Activer l'identification SASL
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_tls_ciphers = high
smtpd_tls_security_level = encrypt
smtpd_tls_protocols = TLSv1.2
smtpd_tls_exclude_ciphers = aNULL, EXPORT, LOW, MD5, RC4, ANONYMOUS, DES, CBC3, SHA, AES128-SHA256, AES128-GCM-SHA256, AES256-SHA256, AES256-GCM-SHA384
smtpd_tls_eecdh_grade = ultra
tls_eecdh_ultra_curve = secp384r1

mydomain = yourdomain.tld
myhostname = yourdomain.tld
myorigin = $mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
inet_interfaces = all
mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost, localhost.$myhostname
relayhost =
recipient_delimiter = +
inet_interfaces = all
home_mailbox = mail/

# Securité
show_user_unknown_table_name = no
smtpd_helo_required = yes
strict_rfc821_envelopes = yes

# Utiliser Dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
# Noter dans les en-tête des messages l’identifiant de l’utilisateur.
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = yourdomain.tld
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

# DKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

# Antispam
smtpd_delay_reject = yes
smtpd_error_sleep_time = 20
smtpd_soft_error_limit = 1
smtpd_hard_error_limit = 3
smtpd_junk_command_limit = 2
smtpd_helo_required = yes
strict_rfc821_envelopes = yes

 

On modifie /etc/postfix/master.cf afin de mettre le port 587 pour le SMTP (le port 25 est souvent bloqué par les hébergeurs), on ajoute la ligne suivante :

 

587 inet n - y - - smtpd

 

Sous cette ligne :

smtp inet n - - - - smtpd

 

On installe ensuite Dovecot ainsi que Sasl :

$ apt-get install libsasl2-2 sasl2-bin dovecot-imapd dovecot-pop3d

 

On modifie /etc/dovecot/dovecot.conf :

## Dovecot configuration

# Activation des protocoles actifs
!include_try /usr/share/dovecot/protocols.d/*.protocol

listen = *, ::

##
## Paramètres du serveur
##

# La majorité de la configuration est insérée ici.
# Les fichiers sont classés par valeurs ASCII et parsés dans cet ordre.
# Les préfixes 00- des fichiers facilitent la visualisation de l'ordre.
!include conf.d/*.conf

# Un fichier de configuration inclus ne retournera pas d'erreur s'il n'est pas trouvé
!include_try local.conf

mail_location = maildir:~/mail
lda_mailbox_autocreate = yes
protocols = "imap pop3"
disable_plaintext_auth = yes
auth_failure_delay = 15 secs
auth_mechanisms = plain login
ssl = required
verbose_ssl = yes
ssl_cert = ssl_key = service auth {
    unix_listener /var/spool/postfix/private/auth {
        mode = 0660
        # Assuming the default Postfix user and group
        user = postfix
        group = postfix
    }
}

 

On redémarre le tout :

$ service saslauthd restart
$ service postfix restart
$ service dovecot restart

 

2- OpenDKIM

OpenDKIM est est un outil qui va permettre de signer vos mails sortants avec DKIM afin d'indiquer à vos destinataires que vous n'êtes pas un spammeur.

 

On installe OpenDKIM :

$ apt-get install opendkim opendkim-tools

 

Modifier la ligne suivante dans /etc/opendkim.conf afin de la mettre à yes :

SubDomains yes

 

Nous créons un répertoire pour nos clés et les générons :

$ mkdir -p /etc/dkim
$ opendkim-genkey -D /etc/dkim/ -d mondomaine.tld -s mail
$ chown opendkim:opendkim -R /etc/dkim

 

On ajoute à présent une ligne dans /etc/default/opendkim afin que postfix puisse communiquer avec OpenDKIM :

SOCKET=inet:8891@localhost

 

On modifie /etc/opendkim.conf afin d'y ajouter ces lignes :

UserID opendkim:opendkim
Domain mondomaine.tld
KeyFile /etc/dkim/mail.private
Selector mail
AutoRestart yes
DNSTimeout 5

 

III – Les enregistrements DNS

Maintenant que la configuration est prête il suffit de déclarer que nous possédons un serveur mail et que ce dernier signe ses messages.

 

On crée un enregistrement DKIM avec le nom de notre selecteur :

Nom de domaine : mail._domainkey.mondomaine.tld
Valeur : v=DKIM; k=rsa; p= votre clé publique (voir le fichier /etc/dkim/mail.txt )

 

On crée un enregistrement SPF (permet de vérifier l'expéditeur) :

Nom de domaine : mondomaine.tld
Valeur : v=spf1 a mx ~all

 

On crée un enregistrement TXT afin de déclarer DMARC (permet de signaler la protection SPF/DKIM) :

Nom de domaine : _dmarc,mondomaine.tld
Valeur : v=DMARC1; p=none

 

IV – On teste

La mise à jour du DNS peut prendre jusqu'à 24 heures, donc on prend notre temps (on boit un café, on compile un noyau ou d'autres trucs sympas) et on vérifie la validité de son mail grâce à mail-tester.com.

 

V – Un webmail

On peut aussi installer un webmail (Roundcube, ...) sur notre serveur afin de consulter et envoyer nos messages. Pour les barbus il existe également des clients en console comme Mutt.

 

Credit image : Anne-Onyme

Publié dans informatique rien-a-cacher vie-privee-mail


captcha