Lo so, il titolo non è poi così comprensibile.
Partiamo da lontano:
in questi giorni sto configurando ed ottimizzando le funzionalità di un server di posta. Il server di posta è già in produzione e funziona degnamente.
Non sto a dilungarmi sulle modalità di installazione e configurazione, comunque il sistema operativo è ubuntu 8.04 server, con installato:
- postfix
- dovecot
- mysql come back-end di autenticazione degli utenti e dei domini
- clamav
- amavis
- postgrey
- spamassassin
- squirrelmail
- postfixadmin
Gli utenti ed i domini risiedono sul database mysql ed in particolare le password degli utenti vengono memorizzate con l’algoritmo MD5.
Per quanto riguarda servizi pop3, imap e la webmail stessa, l’autenticazione non da problemi, i dolori arrivano con l’autenticazione smtp.
Gli strumenti che utilizzo per l’autenticazione smtp sono:
- cyrus-sal
- pam
In particolare postfix delega al demone sasl la procedura di autenticazione e questa si appoggia alle librerie pam per la procedura vera e propria. Sostanzialemnte pam effettua una query sql per estrapolare nome utente e password e controllare le credenziali così ottenute con quelle inviate dal client di posta elettronica.
Pam, per interrogare il database mysql, sfrutta le librebrie libpam-mysql. Con questa metolodogia è possibile cifrare la password inviata in 4 modi, impostando il valore crypt:
- crypt(0) -> valore di default, password in chiaro
- crypt(1) -> valore cifrato con la funzione mysql crypt
- crypt(2) -> valore cifrato con la funzione mysql password
- crypt(3) -> valore cifrato con la funzione mysql md5 (la scelta adottata)
Tutto chiaro, ecco che la query da inserire nel file di configurazione di pam per l’autenticazione smtp:
auth required pam_mysql.so verbose=1 user=postfix passwd=password host=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=3
La configurazione sembra a posto, ma la procedura di autenticazione fallisce inesorabilmente, ecco l’errore specifico da file di log pam (ottenuto aumentando la verbosità del log , con il paramentro Verbose=1) :
Dopo varie ricerche in internet sono riuscito a scoprire che questo è un bug riconosciuto del pacchetto pam_mysql.
Per risolvere, l’unica soluzione ora attuabile è scaricarsi il sorgente di libpam_mysql e ricompilarlo a mano, effattuando delle opportune modifiche.
Ecco i passi da fare:
- scaricare il sorgente da http://ftp.de.debian.org/debian/pool/main/p/pam-mysql/pam-mysql_0.6.2.orig.tar.gz
- decomprimerlo e modificare le linea 109 del file Makefile.ini in questo modo:
- installare i seguenti pacchetti di supporto, anche già compilati (
)
- classica procedura di compilazione ->
Finalmente viene generato il file lib_mysql.so corretto in /lib/security/pam, in modo tale che l’autenticazione con password md5 funziona senza ostacoli.
Fonti:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=373834
http://packages.debian.org/sid/libpam-mysql
http://pam-mysql.sourceforge.net/Documentation/package-readme.php?seemore=y










Mi vuoi dire che adesso potremo autenticarci con l’utente POP3? Sarebbe fantastico!
Direi proprio di sì. Per centa il discorso un pò si complica in quanto dovrei fermare un attimo il serivzio smtp, ed in quel frangente ricompilare a mano libpam-sql. Per i nuovi server di posta però possiamo farlo sin dal principio, o in alternativa scegliere di mettere le password anche degli utenti pop non in md5 ma coperte con l’algoritmo crypt o password, senza quindi doverci ricompilare libpam-mysql
[...] è comparso un Interessante articolo di Cesare sulla risoluzione di un problema tecnico di autenticazione sul server di posta, legato a [...]