Pagina 1 di 1

Probemi autenticazione SMTP con Postfix + Cyrus SASL + MySQL

Inviato: sab 28 giu 2008, 11:30
da DanBadJar
Ciao a tutti,
sto costruendo un mailserver con lo scopo di avere un frontend globale su MySQL (almeno per la gestione degli utenti,password..attivi o non attivi).
Ho disinstallato sendmail e ricompilato postfix 2.5.2 abilitando il supporto a SASL e MySQL.
Il mio scopo è offrire autenticazione SMTP col servizio Cyrus SASL (Pacchetto standard di Slackware 12.1 cyrus-sasl-2.1.22)
Il file di configurazione del servizio smtp è /usr/lib/sasl2/smtpd.conf ed è questo:

Codice: Seleziona tutto

# Global Parameters
log_level: 7
pwcheck_method: auxprop
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5

# Auxiliary plugins parameters
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_database: mail
sql_user: root
sql_password: password
sql_select: SELECT '%p' FROM users WHERE username = '%u' AND userrealm = '%r' AND auth='1'
sql_usessl: no

Il database su MySQL esiste e le tabelle sono corrette.
In fase di autenticazioni ottengo i seguenti errori da Postfix (/var/log/maillog):

Codice: Seleziona tutto

Jun 28 11:05:27 SLACKSERVER2 postfix/smtpd[3842]: connect from unknown[192.168.1.2]
Jun 28 11:05:29 SLACKSERVER2 postfix/smtpd[3842]: warning: SASL authentication failure: no secret in database
Jun 28 11:05:29 SLACKSERVER2 postfix/smtpd[3842]: warning: unknown[192.168.1.2]: SASL CRAM-MD5 authentication failed: authentication failure
Jun 28 11:05:29 SLACKSERVER2 postfix/smtpd[3842]: warning: SASL authentication failure: Password verification failed
Jun 28 11:05:29 SLACKSERVER2 postfix/smtpd[3842]: warning: unknown[192.168.1.2]: SASL PLAIN authentication failed: authentication failure
Jun 28 11:05:29 SLACKSERVER2 postfix/smtpd[3842]: warning: unknown[192.168.1.2]: SASL LOGIN authentication failed: authentication failure
Jun 28 11:06:02 SLACKSERVER2 postfix/smtpd[3842]: disconnect from unknown[192.168.1.2]
Se invece cambio il serivizio di verifica della password da auxprop a saslauthd , offrendo a Cyrus SASL il seguente file /usr/lib/sasl2/smtpd.conf

Codice: Seleziona tutto

pwcheck_method: saslauthd
log_level: 3
mech_list: PLAIN LOGIN
...tutto funziona e si autentica cercando la password dell'utente sul file /etc/shadow
Ma questo non era il mio scopo...

Ora mi chiedo:
1) Faccio bene ad avviare saslauthd con

Codice: Seleziona tutto

saslauthd -a shadow
?

2) C'è da ricompilare Cyrus SASL? Se si...come?

3) Perchè diavolo PAT non la smette con sendmail e include Postfix di default su slackware?!

Grazie a tutti in anticipo.

Re: Probemi autenticazione SMTP con Postfix + Cyrus SASL + MySQL

Inviato: sab 28 giu 2008, 16:21
da bebbo
Spesso mi chiedo se sono io che mi complico la vita... ma fa piacere vedere che c'è chi se la complica più di me :p

Solitamente quando ho problemi di questo tipo mi ricompilo tutti i pacchetti dai sorgenti aggiornati e i problemi si risolvono "da soli".

Sinceramente nn so se cyrus SASL ha supporto sql... dovresti controllare se hai un file tipo /usr/lib/sasl2/smtpd.conf insomma... prova con un "locate smtpd.conf| grep sasl2" se non lo trovi... nn ha il supporto SQL :) Se invece esiste... dovresti controllarne il contenuto e schiaffarci una cosa tipo:

Codice: Seleziona tutto

sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: mysql login plain crammd6 digestmd5
mysql_user: XXXXX
mysql_passwd: XXXXX
mysql_database: postfix
mysql_statement: SELECT password FROM mailboxes WHERE mail = '%u'
mysql_verbose: yes
comunque ti consiglio di dare uno sguardo qui: http://postfix.wiki.xs4all.nl/index.php ... _and_MySQL

Spero di esser stato d'aiuto :)

Re: Probemi autenticazione SMTP con Postfix + Cyrus SASL + MySQL

Inviato: sab 28 giu 2008, 16:53
da conraid
Dan, ora non posso controllare, ma mi sembra che sasl in Slackware sia compilato senza --enable-sql

Re: Probemi autenticazione SMTP con Postfix + Cyrus SASL + MySQL

Inviato: dom 29 giu 2008, 0:13
da DanBadJar
Da quanto ho potuto vedere in /usr/lib/sasl2 non ho notato la libreria libsql.so.2.0.22 non esiste ... quindi credo proprio che Conraid avesse ragione (Conraid santo subito)
Così ho disinstallato il pacchetto di Pat e ho ricompilato da zero seguendo questo configure:

Codice: Seleziona tutto

./configure \
--with-plugindir=/usr/lib/sasl2 \
--disable-java \
--disable-krb4 \
--with-dblib=berkeley \
--with-saslauthd=/var/state/saslauthd \
--without-pwcheck \
--with-devrandom=/dev/urandom \
--enable-cram \
--enable-digest \
--enable-plain \
--enable-login \
--disable-otp \
--enable-sql \
--with-ldap=/usr \
--with-mysql=/usr \
Poi il famoso make che non ha restituito errori
E poi il temuto make install

Ho notato che le librerie me le ha messe in /usr/local/lib/sasl2 e come da suggerimento ho creato un link simbolico da /usr/lib/sasl2
con

Codice: Seleziona tutto

ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
Così finalmente ho rimesso il smtpd.conf di cui ho parlato nel primo post e adesso trovo in /var/log/maillog alcuni errori diversi e l'autenticazione comunque non avviene.

Codice: Seleziona tutto

postfix/smtpd[16772]: fatal: SASL per-process initialization failed
postfix/master[16746]: warning: process /usr/libexec/postfix/smtpd pid 16772 exit status 1
postfix/master[16746]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
Non ne vengo mica fuori. Qualcuno mi da una manina? Thanks :oops:

Re: Probemi autenticazione SMTP con Postfix + Cyrus SASL + MySQL

Inviato: dom 29 giu 2008, 1:32
da DanBadJar
Procedendo con l'odissea ho notato che nel file di configurazione di postfix avevo un valore impostato male.
Correggendolo è diventato

Codice: Seleziona tutto

smtpd_sasl_path = /usr/lib/sasl2
..che poi ora è un link che punta a /usr/local/lib/sasl2

Così riavviando i servizi ho trovato errori diversi...il piu lampante nei log di saslauthd

Codice: Seleziona tutto

Jun 29 01:28:40 SLACKSERVER2 postfix/smtpd[3853]: sql_select option missing
Jun 29 01:28:40 SLACKSERVER2 postfix/smtpd[3853]: auxpropfunc error no mechanism available
Jun 29 01:28:40 SLACKSERVER2 postfix/smtpd[3853]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: sql
?

Poi da /var/log/maillog

Codice: Seleziona tutto

Jun 29 01:28:44 SLACKSERVER2 postfix/smtpd[3853]: warning: SASL authentication failure: Password verification failed
Jun 29 01:28:44 SLACKSERVER2 postfix/smtpd[3853]: warning: unknown[192.168.1.2]: SASL PLAIN authentication failed: authentication failure
Jun 29 01:28:44 SLACKSERVER2 postfix/smtpd[3853]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory
Jun 29 01:28:44 SLACKSERVER2 last message repeated 5 times
Jun 29 01:28:44 SLACKSERVER2 postfix/smtpd[3853]: warning: unknown[192.168.1.2]: SASL LOGIN authentication failed: authentication failure
Perchè mi cerca il Berkley db se gli ho chiesto di cercare mysql?

:-k

Re: Probemi autenticazione SMTP con Postfix + Cyrus SASL + MySQL

Inviato: lun 19 gen 2009, 15:53
da DanBadJar
RISOLTO!

Tutti i pacchetti vanno ricompilati da sorgente.

Ecco come compilare la libreria Cyrus Sasl:

Codice: Seleziona tutto

./configure \
--with-plugindir=/usr/lib/sasl2 \
--disable-java \
--disable-krb4 \
--with-dblib=berkeley \
--with-saslauthd=/var/state/saslauthd \
--without-pwcheck \
--with-devrandom=/dev/urandom \
--enable-cram \
--enable-digest \
--enable-plain \
--enable-login \
--disable-otp \
--disable-anon \
--enable-sql \
--with-mysql=/usr \
Ecco come compilare Postfix:

Codice: Seleziona tutto

make -f Makefile.init makefiles \
    'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl' \
    'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lsasl2'
Poi per l'autenticazione su tabelle mysql è necessario fornire questo file smtpd.conf nella directory della libreria Cyrus /usr/lib/sasl2:

Codice: Seleziona tutto

#Global parameters
log_level: 3
sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: mysql login plain crammd6 digestmd5
sasl_mech_list: PLAIN LOGIN

sql_engine: mysql
sql_hostnames: localhost
sql_database: mail
sql_user: utente
sql_passwd: password
sql_select: SELECT password FROM mailboxes WHERE mail = '%u'
sql_usessl: no