Da ieri alle 17.00 sono ufficialmente un “VMWare Certified Professional on VI3”.
E buona camicia a tutti.
Mese: marzo 2008
FreeBSD, SMTP Authentication e MySQL (DBMail)
Da sempre sono stato un grande sostenitore di DBMail, un Mail server che ha la peculiarità di appoggiare tutti i suoi dati dentro un DB – mySql, PgSql, SQLite…)
Ultimamente ho avuto la necessità di aggiungere l’autenticazione SMTP al mio Sendmail di base… e mi sono accorto che far interoperare i vari pezzi che compongono la ricetta è più facile di quel che credessi. Eccovi un rapido prontuario.
Innanzitutto come reference sono partito dal FreeBSD Handbook che però faceva l’autenticazione sugli utenti di sistema di FreeBSD.
Comunque ho installato il port security/cyrus-sasl2 avendo cura di selezionare tra i possibili backend di autenticazione mySql.
A questo ho creato /usr/local/lib/sasl2/Sendmail.conf inserendoci dentro:
pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_database: dbmail
sql_user: dbmail
sql_passwd: dbmail
sql_select: SELECT passwd FROM dbmail_users WHERE userid = ‘%u@%r’
sql_verbose: yes
Ovviamente al posto di sql_user e sql_password dovrete sostiture utenza e password del vostro dbmail.
A questo punto ho aggiunto ad /etc/make.conf le seguenti righe:
SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl2
che serviranno ad indicare a Sendmail di caricare le estensioni SASL per l’autenticazione. Di conseguenza dovremo ricompilare Sendmail con tre semplici passi:
cd /usr/src/lib/libsmutil
make cleandir && make obj && make
cd /usr/src/lib/libsm
make cleandir && make obj && make
cd /usr/src/usr.sbin/sendmail
make cleandir && make obj && make && make install
Per attivare le nuove funzionalità modifichiamo il file .cf di sendmail dentro /etc/mail aggiungendo le seguenti righe:
dnl The group needs to be mail in order to read the sasldb2 file
define(`confRUN_AS_USER’,`root:mail’)dnldnl set SASL options
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN’)dnl
define(`confAUTH_MECHANISMS’, `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN’)dnldefine(`confDONT_BLAME_SENDMAIL’,`GroupReadableSASLDBFile’)dnl
Dovrebbe funzionare 🙂