postfix+sasl+mysql - réseaux et sécurité - Linux et OS Alternatifs
Marsh Posté le 11-04-2007 à 18:46:58
ReplyMarsh Posté le 11-04-2007 à 18:52:29
ReplyMarsh Posté le 11-04-2007 à 18:55:46
/etc/pam.d/ 
il faut encore installer les plugins appropriés .
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 
 
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
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 : 
 | 
 
 
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 
 
 
 
 
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 ? 
 
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 
 
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
etc/aliases 
alias_maps = hash etc/aliases
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
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
etc/postfix/mysql_virtual_domains_maps.cf 
virtual_mailbox_maps = mysql etc/postfix/mysql_virtual_mailbox_maps.cf
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
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 : 
 | 
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
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 
Marsh Posté le 13-04-2007 à 09:26:16
regarde le readme de pam_mysql sur les differents cryptages
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
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 : 
 | 
 
 
et poste ici le resultat 
 
 
pareil pour la commande: 
| Code : 
 | 
 
 
 
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
Marsh Posté le 13-04-2007 à 15:16:13
oula   
  
 
ca tourne pas du tout 
 
tu devrais avoir les parametres en question du genre: 
| Code : 
 | 
 
 
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 : 
 | 
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 .. 
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 : 
 | 
  pour verifier que ton user postfix est bien dans le groupe sasl 
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
usr/bin sbin
sbin bin
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:
Marsh Posté le 13-04-2007 à 16:13:27
ok il manque pas mal de chose 
 
execute  
| Code : 
 | 
 
 
modifie ton /etc/postfix/sasl/smtpd.conf et ne met que ceci 
 
| Code : 
 | 
 
 
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 : 
 | 
 
 
 
modifie ton /etc/default/saslauthd en changeant la ligne OPTIONS comme ceci 
| Code : 
 | 
 
 
ensuite tu relance le tout: 
| Code : 
 | 
 
 
apres il reste le probleme du cryptage de tes passwords a faire correspondre dans pam_mysql 
 
 
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 
Marsh Posté le 16-04-2007 à 09:49:23
salut 
tu peux refaire  
| Code : 
 | 
 
 
 
et  
| Code : 
 | 
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 .. 
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
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 ? 
 
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 
 
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