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 = hashetc/aliases
alias_maps = hashetc/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 = mysqletc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /var/mail/vhost
virtual_mailbox_domains = mysqletc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysqletc/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/sbinusr/binsbinbin
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