| Implementazione tls/ssl postfix (ubuntu) |
| Scritto da Federica |
| Mercoledì 23 Maggio 2007 19:06 |
|
Questo articolo descrive i passaggi necessari per implementare la spedizione di posta dal client verso il proprio server (e da lì verso il server di destinazione) in modo sicuro, cioè criptato attraverso tls/ssl Si presume che postfix sia correttamente installato e funzionante NB: Il fatto di spedire posta criptata non abilita il client ad essere un utente riconosciuto per il relay quindi il vostro server continuerà a darvi l'errore: Relay access denied. Per impedire questo ci sono due strade: 1) nella configurazione di postfix in etc/postfix/main.cf inserire le rete per cui volete permettere il relay in questo modo mynetworks = 127.0.0.0/8, ip_permesso/subnet es: mynetworks = 127.0.0.0/8, 81.174.37.0/24 questa soluzione potrebbe non essere molto sicura se la rete da aggiungere non è una rete interna o una rete raggiungibile attraverso una vpn 2) abilitare l'autenticazione smtp e per questo rimando all'articolo: Autenticazione smtp con Postfix, Ldap e Saslauthd (Ubuntu) Detto questo possiamo incominciare.... Installare i seguenti pacchetti: # apt-get install libsasl2 libsasl2-modules sasl2-bin Opzioni da aggiungere in /etc/postfix/main.cf (ovviamente i percorsi dei certificati possono cambiare) smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/certificati/smtpd.key smtpd_tls_cert_file = /etc/postfix/certificati/smtpd.crt smtpd_tls_CAfile = /etc/postfix/certificati/cacert.pem smtpd_tls_loglevel = 0 smtp_tls_loglevel = 0 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom Editare il file /etc/postfix/master.cf e scommentare o aggiungere: smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes tlsmgr unix - - - 1000? 1 tlsmgr Installare openssl # apt-get install openssl Creare una cartella per contenere i certificati, per esempio: # mkdir /etc/postfix/certificati poi spostarsi in questa cartella: cd /etc/postfix/certificati Lanciare questi comandi per la generazione dei certificati: openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 chmod 600 smtpd.key openssl req -new -key smtpd.key -out smtpd.csr openssl x509 -req -days 365 -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 Riavviare postfix # /etc/init.d/postfix restart Ricordarsi di aprire la porta 465 da un eventuale firewall Configurazione generica del client: nelle impostazioni del client di posta scegliere il tipo di connesione sicura (nella sezione spedizione smtp), fra i tipi supportati potete scegliete tra tls o ssl. DEBUG: Se nel log di /var/log/auth.log vi dovesse capitare un errore di questo tipo: do_auth : auth failure: [user=utente@mail.dominio.org] [service=smtp] [realm=mail.dominio.org] [mech=pam] [reason=PAM auth error] significa che viene appeso il realm (ovvero mail.dominio.org) dopo utente@ Quindi l'utente diventa utente@mail.dominio.org invece che utente@dominio.org per risolvere editare il file saslauthd # vi /etc/default/saslauthd e togliere il parametro -r es: PARAMS="-m -r /var/spool/postfix/var/run/saslauthd" diventa PARAMS="-m /var/spool/postfix/var/run/saslauthd" Se nel syslog trovate questo errore: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory bisogna editare il file saslauthd # vi /etc/init.d/saslauthd nella sezione seguente aggiungere le righe in azzurro: createdir() { # $1 = user # $2 = group # $3 = permissions (octal) # $4 = path to directory [ -d "$4" ] || mkdir -p "$4" # chown -c -h "$1:$2" "$4" # chmod -c "$3" "$4" chown -c -h "root:sasl" "$4" chown -c -h "root:sasl" "/var/spool/postfix/var/run/saslauthd" chmod -c "770" "$4" rm -rf /var/run/saslauthd ln -s /var/spool/postfix/var/run/saslauthd/ /var/run/ } Riavviare saslauthd # /etc/init.d/saslauthd restart |