Ciao Ragazzi,
oggi andiamo sul tecnico.
Questo articolo server a chi utilizza Postfix come SMTP Server e nel caso specifico ad implementare l’autenticazione mediante il sistema Simple Authentication and Security Layer (SASL)
Questo sistema prevede la possibilità di integrare diverse modalità di autenticazione:
– EXTERNAL, in cui l’autenticazione è implicita nel contesto (per esempio, nei protocolli che già utilizzano IPsec o TLS)
– ANONYMOUS, per accessi guest non autenticati
– PLAIN, per gli accessi in testo chiaro
– OTP, un meccanismo one-time password. (OTP è stato reso obsoleto da SKEY)
– SKEY, meccanismo S/KEY.
– CRAM-MD5, un semplice schema challenge-response basato su HMAC-MD5.
– DIGEST-MD5 (storico), meccanismo challenge-response compatibile parzialmente con HTTP Digest basato su MD5.
– SCRAM (RFC 5802), schema moderno challenge-response con supporto al binding del canale
– NTLM, schema di autenticazione NT LAN Manage
– GSSAPI, per Kerberos V5 authentication attraverso il GSSAPI.
– BROWSERID-AES128, per Mozilla Persona authentication
– EAP-AES128, per GSS EAP authentication
– GateKeeper (& GateKeeperPassport), meccanismo challenge-response sviluppato da Microsoft per MSN Chat
Quello che vediamo oggi per Postfix è il più semplice ovvero il PLAIN con login tramite username e password memorizzati in un Database MySQL.
In questo articolo do per scontato che Postfix sia installato e funzionante.
Installiamo il demone di SASL:
apt-get install libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql
Fatto questo modifichiamo il file /etc/default/saslauthd sostituendo START=no con START=yes così il demone partirà all’avvio del pc.
Inoltre modificate la stringa OPTIONS=…. così OPTIONS=”-c -r -m /var/spool/postfix/var/run/saslauthd” questo è necessario perchè Postfix è eseguito come chroot e ha bisogno di accedere al socket di saslauthd
Inoltre dobbiamo creare la directory:
mkdir -p /var/spool/postfix/var/run/saslauthd
Sempre per l’ambiente chroot è necessario creare il link simbolico:
rm -rf /var/run/saslauthd
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
ATTENZIONE: se non cancellate il file /var/run/saslauthd testando il sistema avrete l’errore “connect() : No such file or directory 0”
Creiamo un nuovo file:
vi /etc/pam.d/smtp
Modifichiamo il file come segue:
auth required pam_mysql.so user=mailadmin passwd=newpassword host=127.0.0.1 db=mail table=mailbox usercolumn=username passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mailadmin passwd=newpassword host=127.0.0.1 db=mail table=mailbox usercolumn=username passwdcolumn=password crypt=1
Abbiamo necessità di un secondo file:
vi /etc/postfix/sasl/smtpd.conf
Che editiamo come segue:
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
Nel caso di autenticazione basata su DB MySQL il file va editato come segue (attenzione a mettere i nomi giusti del db e delle tabelle!):
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: dbuser
sql_passwd: dbpassword
sql_database: dbname
sql_select: SELECT password FROM user WHERE username = '%u@%r'
Aggiungiamo l’utente postfix al gruppo sasl:
adduser postfix sasl
Poi provvediamo ad inserire le voci per l’autenticazione SASL dentro il main.cf di Postfix:
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
Riavviamo i servizi:
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart
E proviamo che tutto funziona correttamente:
razorblade:~# testsaslauthd -s smtp -u [email protected] -p newpassword
0: OK "Success."
Enjoy!