« Mise en place d'un serveur de mail complet » : différence entre les versions

Aller à la navigation Aller à la recherche
Ligne 269 : Ligne 269 :
chmod +x /etc/postfix/postfix-script
chmod +x /etc/postfix/postfix-script
</pre>
</pre>
==Configuration du smtp-auth==
Nous allons maintenant configurer le support SASL afin de ne pas laisser notre serveur en open-relay et servir ainsi comme relai pour les spams.
Ajoutez les lignes suivantes dans le fichier <code>/etc/postfix/main.cf</code> :
<pre>
# Support SASL
broken_sasl_auth_clients = yes
smtpd_sender_restrictions =
  reject_unknown_sender_domain,
  reject_non_fqdn_sender
  smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient, 
  reject_unauth_destination,
  reject_unauth_pipelining, 
  reject_invalid_hostname
#  reject_rbl_client dnsbl.dronebl.org,
#  reject_rbl_client list.dsbl.org,
#  reject_rbl_client bl.spamcop.net,
#  reject_rbl_client sbl-xbl.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
</pre>
Créez le fichier <code>/etc/postfix/sasl/smtpd.conf</code> et ajoutez y les lignes suivantes:
<pre>
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
</pre>
Comme précédemment, veillez à bien utiliser localhost comme hostname afin d'utiliser le socket mysql si le skip-networking est activé sur votre serveur MySQL.
Notez qu'il est impossible d'utiliser les méthodes d'authentification CRAM-MD5 et DIGEST-MD5 si les mot-de-passes sont cryptés dans la base mysql (ce qui est le cas ici). Nous nous contenterons donc de plain.
Éditez le fichier <code>/etc/default/saslauthd</code> de façon à ce qu'il ait la configuration suivante:
<pre>
START=yes
MECHANISMS="pam"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
</pre>
Il faut encore créé le dossier qui contiendra le socket de sasl:
<pre>mkdir -p /var/spool/postfix/var/run/saslauthd</pre>
Créez le fichier <code>/etc/pam.d/smtp</code> (il faudra peut-être le nommer <code>smtpd</code>) et ajoutez y les lignes suivantes:
<pre>
auth      required    pam_mysql.so user=postfix passwd=password host=localhost db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1
account    sufficient  pam_mysql.so user=postfix passwd=password host=localhost db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1
</pre>
Une fois de plus, soyez attentif à l'argument host=
A titre d'information, voici les différentes options possibles pour l'argument <code>crypt=</code> :
* 0 (ou "plain") = Pas de cryptage. Ceci n'est pas recommandé.
* 1 (ou "Y") = utilise la fonction crypt() de linux. Celà correspond à la fonction ENCRYPT() de MySQL. C'est la solution que nous avons choisi ici. Attention cependant, seul les huits premiers caractères du mot-de-passe seront pris en compte.
* 2 (ou "mysql") = Utilise la fonction MySQL PASSWORD().
* 3 (or "md5") = Utilise la fonction MySQL MD5().
Il ne reste plus qu'à ajouter l'utilisateur postfix au groupe sasl :
<pre>adduser postfix sasl</pre>
Un petit point à propos des permissions :
<pre>
/var/spool/postfix/ /var/spool/postfix/var/ et /var/spool/postfix/var/run/ doivent être o+x
/var/spool/postfix/var/run/saslauthd doit appartenir à root:sasl
</pre>
==Ajout du support SSL/TLS.==
Comme pour tous les serveurs, il est interessant de mettre en place un cryptage SSL/TLS afin de sécuriser les transactions.
En admettant que vous avez suivi mon guide concernant la mise en place d'une autorité de certification, voici ce qu'il reste à faire.
Commencez par ajouter les lignes suivantes dans votre fichier <code>/etc/ssl/openssl.cnf</code> :
<pre>
[POSTFIX]
nsComment                      = "SMTP Server Certificate"
subjectKeyIdentifier            = hash
authorityKeyIdentifier          = keyid,issuer:always
issuerAltName                  = issuer:copy
basicConstraints                = critical,CA:FALSE
keyUsage                        = digitalSignature, nonRepudiation, keyEncipherment
nsCertType                      = server
extendedKeyUsage                = serverAuth
</pre>
Puis créés le certificat et signés le avec votre autorité :
<pre>
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req
openssl ca -config /etc/ssl/openssl.cnf -name core_ca -extensions POSTFIX -in postfix.req -out postfix.pem
</pre>
Si jamais vous possédez déjà vos clés mais qu'elles sont chiffrés par une passphrase, voici comment supprimer la passphrase :
<pre>
openssl rsa -in key.pem -text
openssl rsa -in key.pem -out key_unlocked.pem
mv key.pem key_locked.pem
mv key_unlocked.pem key.pem
</pre>
Postfix ne permet pas d'utiliser des clés vérouillés par une passphrase, veillez donc bien à spécifier l'option <code>-nodes</code> de la première ligne.
Personnellement, je stock les fichiers du certificat dans /etc/postfix/ssl/:
<pre>
mkdir /etc/postfix/ssl
mv smtpd.key /etc/postfix/ssl/
mv smtpd.pem /etc/postfix/ssl/
chmod 600 /etc/postfix/ssl/*
</pre>
Créez le fichier contenant la chaine de certification :
<pre>cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/core_ca/core_ca.pem > /etc/postfix/ssl/ca_chain.pem
Il faut encore modifier <code>/etc/postfix/main.cf</code> :
<pre>
smtpd_tls_cert_file=/etc/postfix/ssl/smtpd.pem
smtpd_tls_key_file=/etc/postfix/ssl/smtpd.key
smtpd_tls_CAfile=/etc/ssl/csnu.org/ca.pem
smtp_tls_cert_file=/etc/postfix/ssl/smtpd.pem
smtp_tls_key_file=/etc/postfix/ssl/smtpd.key
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem
smtpd_use_tls=yes
smtp_use_tls=yes
smtpd_tls_loglevel = 1
smtp_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600
smtp_tls_session_cache_timeout = 3600
</pre>
Désormais, vous pourrez configurer votre logiciel de messagerie afin d'utiliser le chiffrement TLS.
Si vous souhaitez permettre les connexions SSL, il faut décommenter les quatres lignes suivantes du fichier <code>/etc/postfix/master.cf</code> :
<pre>
#smtps    inet  n      -      -      -      -      smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
</pre>
Pour des informations complémentaires, rendez-vous ici.
4 203

modifications

Menu de navigation