SASL : Envoie de mails à distance sécurisé avec son serveur Postfix (SASL+TLS)

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search
Postfix

Software version 2.7.1
Operating System Debian 6
Website Postfix Website
Last Update 06/06/2012
Others

1 Introduction

Depuis déjà quelques années, pour éviter à son serveur mail de passer en OpenRelay, la plus part des édtieurs de serveurs mails n'autorisent plus l'envoie des mails depuis l'extérieur. Il faut donc ajouter une couche supplémentaire appellée SASL.

C'est donc ce que nous allons essayer de mettre en place ici avec de la sécurité en plus (TLS) :-)

2 Installation

Pour installer SASL, il vous faut déjà avoir installé et configuré postfix. En fois que c'est fait, installez le SASL :

Command aptitude
aptitude install postfix-tls sasl2-bin libsasl2-2 libsasl2-modules openssl

3 Configuration

3.1 Préparation des répertoires

Nous allons créer ici le nécessaire pour notre postfix chrooté :

Command
mkdir -p /var/spool/postfix/var/run
mv /var/run/saslauthd /var/spool/postfix/var/run/
ln -s /var/spool/postfix/var/run/saslauthd /var/run
chgrp sasl /var/spool/postfix/var/run/saslauthd
adduser postfix sasl
mkdir -p /etc/postfix/ssl

3.2 Création des certificats

Créez le dossier /etc/postfix/ssl :

Command
cd /etc/postfix/ssl
openssl genrsa -des3 -rand /dev/urandom -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

3.3 main.cf

Dans votre fichier de configuration de postfix, vous allez rajouter ces lignes. Editez donc le fichier /etc/postfix/main.cf :

Configuration File /etc/postfix/mainc.cf
# SASL
smtp_sasl_auth_enable = yes
smtpd_sasl_auth_enable = yes
smtp_sasl_security_options =
# Pour corriger le bug de certains client (Outlook...)
broken_sasl_auth_clients = yes
smtpd_sasl_application_name= smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
 
# TLS/SSL
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 1
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem

Ce qui devrait vous donner quelquechose du genre :

Configuration File /etc/postfix/mainc.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
 
# Security
smtpd_banner = fire.deimos.fr - Microsoft Exchange (5.5)
biff = no
disable_vrfy_command = yes
smtpd_helo_required = yes
 
# Reject unknow domain
reject_unknown_recipient_domain = yes
 
# appending .domain is the MUA's job.
append_dot_mydomain = no
 
mydomain = deimos.fr
myhostname = fire.deimos.fr
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = deimos.fr
relayhost = 
mynetworks = 127.0.0.0/8, 192.168.0.0/24, 10.8.0.0/24
home_mailbox = Maildir/
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
mailbox_command = procmail -a "$EXTENSION"
 
# Virtual Domains
virtual_alias_domains = deimos.fr
virtual_alias_maps = hash:/etc/postfix/virtual
 
# Protection against Open Relay
smtpd_client_restrictions = reject_rbl_client bl.spamcop.net 
 
# Protection against Spam
smtpd_recipient_restrictions =  permit_mynetworks,
                                permit_sasl_authenticated,
                                reject_unauth_destination,
                                reject_invalid_hostname,
                                reject_non_fqdn_sender,
                                reject_unknown_sender_domain,
                                reject_non_fqdn_recipient,
                                reject_unknown_recipient_domain,
                                reject_rhsbl_client blackhole.securitysage.com,
                                reject_rhsbl_sender blackhole.securitysage.com,
                                reject_rbl_client list.dsbl.org,
                                reject_rbl_client cbl.abuseat.org,
                                reject_rbl_client dul.dnsbl.sorbs.net,
                                reject_rbl_client multi.uribl.com,
                                reject_rbl_client dsn.rfc-ignorant.org,
                                reject_rbl_client dul.dnsbl.sorbs.net,
                                reject_rbl_client sbl-xbl.spamhaus.org,
                                reject_rbl_client bl.spamcop.net,
                                reject_rbl_client cbl.abuseat.org,
                                reject_rbl_client ix.dnsbl.manitu.net,
                                reject_rbl_client combined.rbl.msrbl.net,
                                reject_rbl_client rabl.nuclearelephant.com,
                                permit
smtpd_data_restrictions = reject_unauth_pipelining
mime_header_checks = regexp:/etc/postfix/mime_header_checks.regexp
 
# SASL
smtp_sasl_auth_enable = yes
smtpd_sasl_auth_enable = yes
smtp_sasl_security_options =
# Pour corriger le bug de certains client (Outlook...)
broken_sasl_auth_clients = yes
smtpd_sasl_application_name= smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
 
# TLS/SSL
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 1
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
 
# Divers
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
 
# Use Amavis
content_filter = amavis:[127.0.0.1]:10024

3.4 saslauthd

Editez le fichier /etc/defaut/saslauthd et renseignez ces champs :

Configuration File /etc/defaut/saslauthd
START=yesDESC="SASL Authentication Daemon"
NAME="saslauthd"MECHANISMS="pam"MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

3.5 smtpd.conf

Ici, nous allons définir la méthode d'authentification. Pour celà créons un fichier smtpd.conf dans postfix :

Command mkdir
mkdir /etc/postfix/sasl

Puis créez un fichier /etc/postfix/sasl/smtpd.conf et mettez ceci dedans :

Configuration File /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login

3.6 sasl_passwd

Maintenant, il va falloir donner les droits aux utilisateurs d'avoir accès au SASL. Créez le fichier /etc/postfix/sasl_passwd et le renseigner comme ceci :

Configuration File /etc/postfix/sasl_passwd
mail   login:password
fqdn   login

Un petit exemple :

Configuration File /etc/postfix/sasl_passwd
deimos@deimos.fr   deimos:xxxxx

Pour finir, nous allons mettre des droits assez restreints car les mots de passe sont en clair, puis, nous exécuterons un postmap :

Command
 chmod 600 /etc/postfix/sasl_passwd
 postmap /etc/postfix/sasl_passwd

4 Validation

Pour valider le tout, il suffit de redémarrer les services en question :

Command
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart

5 Vérification

Pour vérifier, un petit telnet fera l'affaire :

Command telnet
 > telnet deimos.fr 25 Connected to deimos.fr.
 Escape character is '^]'.
 220 *******************************************
 ehlo test 250-fire.deimos.fr
 250-PIPELINING
 250-SIZE 10240000
 250-ETRN
 250-XXXXXXXA
 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN

Certains auront ceci :

Command telnet
250-STARTTLS

à la place de :

Command telnet
250-XXXXXXXA

6 Ressources

Postfix SMTP Authentication - On The Secure Port Only