postfix+sasl+mysql

postfix+sasl+mysql - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 11-04-2007 à 18:41:39    

Salut tous,

 

J'ai un petit souci:

 

En fait, j'ai un serveur mail multidomaine avec postfix+mysql+courier-imap qui marche nickel.

 

Cependant, j'essaye de mettre le support TLS pour envoyer des mails de l'exterieur.
Je veux reutiliser la base de données postfix pour l'authentification
J'ai presque reussi, mais j'ai ceci dans les logs au moment de l'authentification:

 

Apr 11 18:30:04 ns23969 postfix/smtpd[8466]: warning: SASL authentication failure: Password verification failed
Apr 11 18:30:04 ns23969 postfix/smtpd[8466]: warning: ns1.domaine.fr[83.11.11.11: SASL PLAIN authentication failed: authentication failure
Apr 11 18:30:04 ns23969 postfix/smtpd[8466]: warning: ns1.domaine.fr83.11.11.11]: SASL LOGIN authentication failed: authentication failure

 


Mon /etc/postfix/sasl/smtpd.conf

 

wcheck_method: saslauthd auxprop
mech_list: login plain password encrypt
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_user: postfix
sql_database: postfix
sql_passwd: mdp
sql_select: select password from mailbox where username = '%u@%r'

 

Mon fichier /etc/default/saslauth:
START=yes
MECHANISMS="pam"
PARAMS="-m /var/spool/postfix/var/run/saslauthd -r"

 

Une idée ?

 

Merci beaucoup d'avance


Message édité par tchouvince le 21-01-2008 à 16:21:45
Reply

Marsh Posté le 11-04-2007 à 18:41:39   

Reply

Marsh Posté le 11-04-2007 à 18:46:58    

configurer pam-mysql ;)


---------------
Intermittent du GNU
Reply

Marsh Posté le 11-04-2007 à 18:52:29    

mikala a écrit :

configurer pam-mysql ;)


Ok merci c'est ou stp que tu configures ça ?

Reply

Marsh Posté le 11-04-2007 à 18:55:46    

/etc/pam.d/
il faut encore installer les plugins appropriés .


---------------
Intermittent du GNU
Reply

Marsh Posté le 11-04-2007 à 18:56:10    

j'ai mis ça dans /etc/pam.d/smtp
 
auth       required     pam_mysql.so user=postfix passwd=pass host=localhost db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1
account    sufficient   pam_mysql.so user=postfix passwd=pass host=localhost db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1
 

Reply

Marsh Posté le 12-04-2007 à 09:41:02    

ça marche toujours pas J'y comprend rien d'autant plus que j'ai deja fait marcher ça

Reply

Marsh Posté le 12-04-2007 à 10:04:02    

verifie les logs du demon salsauthd en premier lieu  
met le en verbose si necessaire
met egalement en verbose pam_mysql
 
active les logs sur mysql pour voir si les requetes arrivent bien a la base.
 pour ton smtpd.conf tu n'a a priori besoin que de
 

Code :
  1. pwcheck_method: saslauthd
  2. mech_list: PLAIN LOGIN
  3. log_level: 5


 

Reply

Marsh Posté le 12-04-2007 à 11:23:06    

Bon je viens de regarder les logs mysql.
 
Les requetes arrivent bien à la base.
 
Par contre, a partir d'une autre machine sur un autre réseau, j'ai essayer d'envoyer un mail via la commande mail, et j'ai ceci dans les logs de la machine cliente:
 
Apr 12 11:19:53 machine postfix/smtp[19226]: EB1F029ABC6: to=<admin@domaine.com>, relay=autredomaine[91.121.25.25]:25, delay=0.18, delays=0.12/0.01/0.05/0.01, dsn=5.7.0, status=bounced (host machine.autedomaine.com[91.121.25.25 said: 530 5.7.0 Must issue a STARTTLS command first (in reply to MAIL FROM command))
 
De plus je vois pas commant activer et/ou lire les logs de saslauthd
 
Merci pour tout
 
 
 
 

Reply

Marsh Posté le 12-04-2007 à 11:33:37    

faudrait voir les logs de postfix et un postconf -n
 
saslauthd doit logguer dans /var/log/messages , mais cela peut dependre des distrib
 
pour le mettre en debug tu peux ajouter un -d dans ces parametres de demarrage.
 
de meme il faudrait savoir avec quel parametre le demon salsauthd demarre (dans le init.d)
faudrait aussi savoir si ton postfix est chrooté (donc poste le master.cf)
 
 
quand tu dis que cela fonctionnait avant, tu veux dire que l'authentification sasl fonctionnait correctement ? ou bien juste postfix et mysql sans le sasl ?
 

Reply

Marsh Posté le 12-04-2007 à 11:39:23    

egalement  
as tu bien ajouter le user postfix au groupe sasl ?
 
et verifie les droits sur /var/spool/postfix/var/run/saslauthd
 

Reply

Marsh Posté le 12-04-2007 à 11:39:23   

Reply

Marsh Posté le 12-04-2007 à 11:40:53    

Non, sur ce serveur sasl n' jamais marcher.
 
j'ai bien mis -d dans PARAMS de /etc/default/saslauthd
 
Mon postfix n'est pas chrooter
mon postconf -n:
 
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = yes
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
delay_warning_time = 4h
home_mailbox = Maildir/
inet_interfaces = all
mailbox_command =
mailbox_size_limit = 0
message_size_limit = 20480000
mydestination = hote.mondomaine.com, localhost
mydomain = mon domaine.com
myhostname = hote.mondomaine.com
mynetworks = 91.25.25.0/24, 127.0.0.0/8
myorigin = /etc/mailname
receive_override_options = no_address_mappings
recipient_delimiter = +
relayhost =
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_recipient_restrictions = permit_mynetworks,  permit_sasl_authenticated,  reject_non_fqdn_hostname,  reject_non_fqdn_sender,  reject_non_fqdn_recipient,    reject_unauth_destination,  reject_unauth_pipelining,     reject_invalid_hostname,  reject_rbl_client opm.blitzed.org,  reject_rbl_client list.dsbl.org,  reject_rbl_client bl.spamcop.net,  reject_rbl_client sbl-xbl.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /var/mail/vhost
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 5000
virtual_transport = virtual
virtual_uid_maps = static:5000
 
 
master.cf:
 
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#submission inet n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
628      inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       -       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       -       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       -       -       -       smtp
        -o fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -       n       n       -       2       pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
 
Merci

Reply

Marsh Posté le 12-04-2007 à 11:47:41    

c'est fou le nombre de tuto sur le net qui preconise de dechrooté postfix
bon passons....  :??:  
 
 
verifie bien les droits sur /var/spool/postfix/var/run/saslauthd
 
 
pour le main.cf modifie comme ceci

Code :
  1. smtpd_sasl_auth_enable = yes
  2. smtpd_sasl_security_options = noanonymous
  3. smtpd_sasl_local_domain =
  4. broken_sasl_auth_clients = yes
  5. smtp_use_tls = yes
  6. smtpd_use_tls = yes

Reply

Marsh Posté le 12-04-2007 à 11:49:15    

et dans ton /etc/pam.d/smtp
modifie host=localhost par  host=127.0.0.1

Reply

Marsh Posté le 12-04-2007 à 18:51:17    

ça marche tjs pas.
 
Je vois pas de logs de saslauthd
 
Toujours ça dans /var/log/mail.log:
 
Apr 12 11:07:19 postfix/smtpd[27560]: warning: ns1.client.fr[83.14.14.14]: SASL PLAIN authentication failed: authentication failure
Apr 12 11:07:19  postfix/smtpd[27560]: warning: ns1.client.fr[83.14.14.14]: SASL LOGIN authentication failed: authentication failure

Reply

Marsh Posté le 12-04-2007 à 18:53:08    

mes password mysql sont au format encrypt

Reply

Marsh Posté le 13-04-2007 à 09:26:16    

regarde le readme de pam_mysql sur les differents cryptages

Reply

Marsh Posté le 13-04-2007 à 13:25:19    

Bon ben j'ai tester toutes les possibiltés
 
Toujours rien.
 
Toujours LOGIN et PLAIN failed dans les logs postfix.
 
Franchement je vois pas la

Reply

Marsh Posté le 13-04-2007 à 13:40:49    

quand tu relances saslauthd tu vois quoi dans  /var/spool/postfix/var/run/saslauthd/  ?
fais un  

Code :
  1. ls -la /var/spool/postfix/var/run/saslauthd/


 
et poste ici le resultat
 
 
pareil pour la commande:

Code :
  1. ps waux | grep saslauthd


 
 

Reply

Marsh Posté le 13-04-2007 à 15:02:49    

ps auxw | grep saslauth
root      4853  0.0  0.1   6376  1520 ?        Ss   14:56   0:00 /usr/sbin/saslauthd -a pam
root     20492  0.0  0.1   6376  1520 ?        S    14:56   0:00 /usr/sbin/saslauthd -a pam
root     25045  0.0  0.1   6376  1520 ?        S    14:56   0:00 /usr/sbin/saslauthd -a pam
root      4225  0.0  0.1   6376  1520 ?        S    14:56   0:00 /usr/sbin/saslauthd -a pam
root      1472  0.0  0.1   6376  1520 ?        S    14:56   0:00 /usr/sbin/saslauthd -a pam
 
Donc ça tourne
 
par contre dans /var/spool/postfix/var/run/saslauthd/ j'ai rien du tout

Reply

Marsh Posté le 13-04-2007 à 15:16:13    

oula  :pt1cable:  
 
ca tourne pas du tout
 
tu devrais avoir les parametres en question du genre:

Code :
  1. usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd -n 5


 
donc probleme a ce niveau la
ce qui signifie que ton socket est aussi au mauvais endroit et c'est pour ca qu'il n'y a rien dans /var/spool/postfix/var/run/saslauthd  (bon cela dit postfix est dechrooté mais bon tant qu'a faire faison les choses proprement)
 
 
edit:
 
que donne exactment la sortie de  

Code :
  1. ls -la /var/spool/postfix/var/run/saslauthd/


Message édité par toniotonio le 13-04-2007 à 15:18:47
Reply

Marsh Posté le 13-04-2007 à 15:38:41    

ls -la /var/spool/postfix/var/run/saslauthd
 
drwxrwxrwx 2 root sasl 4096 2007-04-11 17:31 .
drwxrwxrwx 4 root sasl 4096 2007-04-11 17:32 ..

Reply

Marsh Posté le 13-04-2007 à 15:50:45    

un peu trop large les droits mais bon pour l'instant on va pas chipoter, faudrait deja que ca fonctionne  :)  
 
poste tes  
/etc/default/saslauthd  
/etc/init.d/saslautdh  
/etc/postfix/sasl/smtpd.conf
/etc/pam.d/smtp
 
 
 
et lance la commande

Code :
  1. getent group sasl

 pour verifier que ton user postfix est bien dans le groupe sasl

Reply

Marsh Posté le 13-04-2007 à 16:05:09    

/etc/default/saslauthd

 

START=yes
MECHANISMS="pam"
PARAMS="-m /var/spool/postfix/var/run/saslauthd -r"

 

/etc/init.d/saslauthd

 

ATH=/usr/sbin:/usr/bin:/sbin:/bin
DESC="SASL Authentication Daemon"
NAME=saslauthd
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS=""
SCRIPTNAME=/etc/init.d/$NAME
FALLBACK_RUN_DIR=/var/run/$NAME
EXIT_ERROR_CODE=1

 

test -x "$DAEMON" || exit 0

 

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

 

[ -f /etc/default/rcS ] && . /etc/default/rcS

 

. /lib/lsb/init-functions

 

RUN_DIR=`echo "$OPTIONS" | xargs -n 1 echo | sed -n '/^-m$/{n;p}'`
if [ -z "$RUN_DIR" ]; then
        # No run directory defined in defaults file, use fallback
        RUN_DIR=$FALLBACK_RUN_DIR
fi
PIDFILE=$RUN_DIR/saslauthd.pid

 

if [ "$START" != "yes" -a "$1" != "stop" ]; then
        log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes"
        exit 0
fi

 

if [ -z "$MECHANISMS" ]; then
        log_failure_msg "No mechanisms defined in /etc/default/$NAME," \
                        "not starting $NAME"
        exit $EXIT_ERROR_CODE
fi

 

if [ -n "$MECH_OPTIONS" ]; then
        MECH_OPTIONS="-O $MECH_OPTIONS"
fi

 

if [ -n "$THREADS" ]; then
        THREAD_OPTIONS="-n $THREADS"
fi

 

DAEMON_ARGS="$DAEMON_ARGS -a $MECHANISMS $MECH_OPTIONS $OPTIONS $THREAD_OPTIONS"

 

createdir()
{
        install -d --group="$2" --mode="$3" --owner="$1" "$4"
}
do_start()
{

 

       if dpkg-statoverride --list $RUN_DIR > /dev/null; then
                dir=`dpkg-statoverride --list $RUN_DIR`
        fi
        test -z "$dir" || createdir $dir

 

       start-stop-daemon --start --quiet --pidfile $PIDFILE --name $NAME \
                --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --name $NAME \
                --exec $DAEMON -- $DAEMON_ARGS \
                || return 2
}

 

do_stop()
{
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \
                --pidfile $PIDFILE --name $NAME
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 \
                --exec $DAEMON
        [ "$?" = 2 ] && return 2
        rm -f $PIDFILE
        return "$RETVAL"
}

 

do_reload() {
        start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE \
                --name $NAME
        return 0
}

 

case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                1) [ "$VERBOSE" != no ] && log_progress_msg "(already running)" && \
                                           log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                                                                                  1) [ "$VERBOSE" != no ] && log_progress_msg "(not running)" && \
                                           log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

 

:
                                                           

 

/etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd auxprop
mech_list: login plain
allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: postfix
sql_database: postfix
sql_passwd: pass
sql_select: select password from mailbox where username = '%u@%r'
log_level: 5

 

/etc/pam.d/smtp

 

auth       required     pam_mysql.so user=postfix passwd=pass host=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1
account    sufficient   pam_mysql.so user=postfix passwd=pass host=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1

 

getent group sasl

 

sasl:*:45:


Message édité par tchouvince le 13-04-2007 à 16:07:41
Reply

Marsh Posté le 13-04-2007 à 16:13:27    

ok il manque pas mal de chose
 
execute  

Code :
  1. adduser postfix sasl


 
modifie ton /etc/postfix/sasl/smtpd.conf et ne met que ceci
 

Code :
  1. pwcheck_method: saslauthd
  2. mech_list: PLAIN LOGIN
  3. log_level: 5


 
ouvre le /etc/init.d/postfix
cherche la ligne FILES et ajoute etc/postfix/sasl/smtpd.conf a la liste
 
cela donne un truc du style:

Code :
  1. FILES="etc/localtime etc/services etc/resolv.conf etc/hosts etc/nsswitch.conf etc/postfix/sasl/smtpd.conf"


 
 
modifie ton /etc/default/saslauthd en changeant la ligne OPTIONS comme ceci

Code :
  1. OPTIONS="-c -r -m /var/spool/postfix/var/run/saslauthd"


 
ensuite tu relance le tout:

Code :
  1. /etc/init.d/postfix restart
  2. /etc/init.d/saslauthd restart


 
apres il reste le probleme du cryptage de tes passwords a faire correspondre dans pam_mysql
 
 

Reply

Marsh Posté le 13-04-2007 à 17:19:00    

maintenant j'ai ça
 
warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory


Message édité par tchouvince le 13-04-2007 à 17:19:25
Reply

Marsh Posté le 16-04-2007 à 09:49:23    

salut
tu peux refaire  

Code :
  1. ls -la /var/spool/postfix/var/run/saslauthd/


 
 
et  

Code :
  1. ps waux | grep saslauthd

Reply

Marsh Posté le 16-04-2007 à 11:42:31    

ps waux | grep saslauthd
root     11831  0.0  0.1   6376  1520 ?        Ss   11:36   0:00 /usr/sbin/saslauthd -a pam
root     28848  0.0  0.1   6376  1520 ?        S    11:36   0:00 /usr/sbin/saslauthd -a pam
root     13837  0.0  0.1   6376  1520 ?        S    11:36   0:00 /usr/sbin/saslauthd -a pam
root     18916  0.0  0.1   6376  1520 ?        S    11:36   0:00 /usr/sbin/saslauthd -a pam
root     10266  0.0  0.1   6376  1520 ?        S    11:36   0:00 /usr/sbin/saslauthd -a pam
root     26778  0.0  0.0   3148   676 pts/3    S+   11:39   0:00 grep saslauthd
 
ls -la /var/spool/postfix/var/run/saslauthd/
total 8
drwxrwxrwx 2 root root 4096 2007-04-13 15:42 .
drwxrwxrwx 4 root sasl 4096 2007-04-13 15:42 ..

Reply

Marsh Posté le 16-04-2007 à 11:43:49    

J'ai l'impression que je suis obligé de renseigner les parametres de connexion à la base mysql dans   /etc/postfix/sasl/smtpd.conf

Reply

Marsh Posté le 16-04-2007 à 11:46:59    

saslauthd ne recoit toujours pas les bons parametres  
et effectivement le socket n'est pas crée.
as tu bien suivi les etapes plus haut ?
 

Reply

Marsh Posté le 16-04-2007 à 12:34:28    

ça marche! Je suis vert! je me suis pris la tete pour rien.
 
En fait c'est le script d'init de saslauthd qui déconne.
 
J'ai fait ça en root:
/etc/init.d/saslautd stop
 
saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd  
 
 
En tout cas merci bcp pour ton aide
 

Reply

Marsh Posté le 16-04-2007 à 13:03:40    

trop fort ce toniotonio, meme pas le temps de poster!!!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed