4 234
modifications
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. |