|
|
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 :
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é :
|
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 :
|
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 :
/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 :
/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 :
/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 :
mkdir
|
|
Puis créez un fichier /etc/postfix/sasl/smtpd.conf et mettez ceci dedans :
/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 :
/etc/postfix/sasl_passwd
|
mail login:password
fqdn login
|
Un petit exemple :
/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 :
|
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 :
|
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart
|
5 Vérification
Pour vérifier, un petit telnet fera l'affaire :
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 :
telnet
|
|
à la place de :
telnet
|
|
6 Ressources
Postfix SMTP Authentication - On The Secure Port Only