Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/02/2008, à 17:00

jak0lantash

[RESOLU][Courier][MySQL]Echec de connexion à  imap

Bonjour,

J'aurai besoin d'un peu d'aide pour la configuration d'un serveur Courier. J'ai déjà  installé PostFix, qui fonctionne parfaitement (c'est déjà  ça ^^).
J'ai suivi le tuto : http://doc.ubuntu-fr.org/serveur/postfix_mysql_tls_sasl

J'ai une configuration un peu particulière. Mais le problème que je rencontre m'est totalement incompréhensible. J'ai un echec authentification, mais surtout, cette erreur est déclenchée avant même que courier n'exécute la requête SQL...

Pour me logs, dans /var/log/syslog :

Feb 10 16:02:30 sd-**** imapd: Connection, ip=[::ffff:88.**.**.**]
Feb 10 16:02:31 sd-**** imapd: LOGIN FAILED, user=utilisateur***, ip=[::ffff:88.**.**.**]
Feb 10 16:02:31 sd-**** imapd: authentication error: Input/output error

Dans /var/log/mysql/mysql.log :

080210 16:02:31     672 Connect     userbdd@localhost on
                    672 Init DB     tablebdd

Ce que je ne comprend pas c'est pourquoi est ce que l'erreur est déclenchée avant que la requête soit lancée sur le serveur.
Si quelqu'un pouvait m'aider svp... Merci d'avance

Quand je fais un telnet sur le serveur :

* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THRE
AD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyr
ight 1998-2005 Double Precision, Inc.  See COPYING for distribution information.
0001 LOGIN ****** ******
* BYE Temporary problem, please try again later


Perte de la connexion à  l'hà´te.

Dernière modification par jak0lantash (Le 10/07/2008, à 00:33)

Hors ligne

#2 Le 10/02/2008, à 21:15

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

Ca inspire personne ??? sadhmm:(

Hors ligne

#3 Le 10/02/2008, à 21:17

toniotonio

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

fais voir la conf


Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com

Hors ligne

#4 Le 10/02/2008, à 22:33

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

toniotonio a écrit :

fais voir la conf

Ca risque d'être un peu compliqué mais soit ^^
Par contre, je peux pas la récupérer tout de suite, je poste ça dès que je peux repasser sur le lien Internet nominal chez moi... wink

Hors ligne

#5 Le 12/02/2008, à 06:33

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

root@sd-****:/etc/courier# cat authdaemonrc

authmodulelist="authmysql"
daemons=5
authdaemonvar=/var/run/courier/authdaemon
DEBUG_LOGIN=0
DEFAULTOPTIONS=""
LOGGEROPTS=""

_
root@sd--****:/etc/courier# cat authmodulelist

authdaemon

_
root@sd-****:/etc/courier# cat authmysqlrc

MYSQL_SERVER            127.0.0.1
MYSQL_USERNAME          ********
MYSQL_PASSWORD          ********
MYSQL_PORT      0
MYSQL_OPT               0
MYSQL_DATABASE          ********
MYSQL_USER_TABLE        user
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         5000
MYSQL_GID_FIELD         5000
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        "********"
MYSQL_MAILDIR_FIELD     maildir

MYSQL_SELECT_CLAUSE     SELECT CONCAT(********,'@',********) AS 'username', CONCAT('{MD5}', ********) AS 'clearpw',      '5000' AS 'uid', '5000' AS 'gid', '/********/' AS 'home', CONCAT(********,'@',********,'/') AS 'maildir', ******** AS 'quota', CONCAT(********,' ',********) AS 'fullname', '' FROM ******** INNER JOIN ******** ON ********=********;

_
root@sd-****:/etc/courier# cat imapd

ADDRESS=0
PORT=143
MAXDAEMONS=40
MAXPERIP=20
PIDFILE=/var/run/courier/imapd.pid
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=imapd"
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
IMAP_KEYWORDS=1
IMAP_ACL=1
IMAP_CAPABILITY_ORIG="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE"
IMAP_PROXY=0
IMAP_PROXY_FOREIGN=0
IMAP_IDLE_TIMEOUT=60
IMAP_CAPABILITY_TLS="$IMAP_CAPABILITY AUTH=PLAIN"
IMAP_CAPABILITY_TLS_ORIG="$IMAP_CAPABILITY_ORIG AUTH=PLAIN"
IMAP_DISABLETHREADSORT=0
IMAP_CHECK_ALL_FOLDERS=0
IMAP_OBSOLETE_CLIENT=0
IMAP_UMASK=022
IMAP_ULIMITD=65536
IMAP_USELOCKS=1
IMAP_SHAREDINDEXFILE=/etc/courier/shared/index
IMAP_ENHANCEDIDLE=0
IMAP_TRASHFOLDERNAME=Trash
IMAP_EMPTYTRASH=Trash:7
IMAP_MOVE_EXPUNGE_TO_TRASH=0
SENDMAIL=/usr/sbin/sendmail
HEADERFROM=X-IMAP-Sender
IMAPDSTART=YES
MAILDIRPATH=Maildir

_
root@sd-****:/etc/courier# cat imapd.cnf

RANDFILE = /usr/lib/courier/imapd.rand
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
[ req_dn ]
C=US
ST=NY
L=New York
O=Courier Mail Server
OU=Automatically-generated IMAP SSL key
CN=localhost
emailAddress=*******
[ cert_type ]
nsCertType = server

_
root@sd-****:/etc/courier# cat imapd-ssl

SSLPORT=993
SSLADDRESS=0
SSLPIDFILE=/var/run/courier/imapd-ssl.pid
SSLLOGGEROPTS="-name=imapd-ssl"
IMAPDSSLSTART=YES
IMAPDSTARTTLS=YES
IMAP_TLS_REQUIRED=0
COURIERTLS=/usr/bin/couriertls
TLS_PROTOCOL=SSL3
TLS_STARTTLS_PROTOCOL=TLS1
TLS_CERTFILE=/etc/courier/imapd.pem
TLS_VERIFYPEER=NONE
TLS_CACHEFILE=/var/lib/courier/couriersslcache
TLS_CACHESIZE=524288
MAILDIRPATH=Maildir

Hors ligne

#6 Le 12/02/2008, à 08:14

toniotonio

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

fais un

ls -la /var/run/courier/authdaemon/

puis un

authtest user@domain.com

autre question: pourquoi as tu un MYSQL_SELECT_CLAUSE  a la fin du authmysqlrc ?


Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com

Hors ligne

#7 Le 12/02/2008, à 09:25

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

Pour les commandes, je te donne le résultat dès que j'ai accès au serveur. Et le MYSQL_SELECT_CLAUSE, c'est parce que je dois m'intégrer dans une architecture BDD existante. Je ne peux pas me contenter des tables de bases pour la gestion des utilisateurs virtuels. Quoiqu'il en soit, la requête n'est même pas exécutée (toutefois c'est vrai que je n'ai pas testé Courier avec une archi simple)...

Hors ligne

#8 Le 12/02/2008, à 17:56

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

root@sd-****:~# ls -la /var/run/courier/authdaemon/

total 4
drwxr-xr-x 2 daemon daemon 100 2008-02-10 15:50 .
drwxr-xr-x 4 daemon daemon 240 2008-02-10 15:50 ..
-rw-r--r-- 1 root   root     6 2008-02-10 15:50 pid
-rw------- 1 root   root     0 2008-01-31 00:09 pid.lock
srwxrwxrwx 1 root   root     0 2008-02-10 15:50 socket

_
root@sd-****:~# authtest utilisateur@*mondomaine*.eu

ERR: authdaemon: s_connect() failed: Connection refused
Authentication FAILED: Illegal seek

Hors ligne

#9 Le 12/02/2008, à 23:32

toniotonio

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

le pb semble provenir du authmysqlrc

essaye avec un fichier sans la clause


Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com

Hors ligne

#10 Le 13/02/2008, à 03:00

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

toniotonio a écrit :

le pb semble provenir du authmysqlrc

essaye avec un fichier sans la clause

Ok, je vais essayer ça, mais la requête n'est même pas exécutée (puisqu'elle n'apparaît pas dans les logs MySQL).

Hors ligne

#11 Le 13/02/2008, à 03:42

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

Avec la config par défaut du tuto, ça marche bien :
root@sd-****:~# authtest utilisateur@domain.tld

Authentication succeeded.

     Authenticated: utilisateur@domain.tld  (uid 5000, gid 5000)
    Home Directory: /home/vmail
           Maildir: utilisateur@domain.tld/
             Quota: (none)
Encrypted Password: $1$caea3837$gPafod/Do/8Jj5M9HehhM.
Cleartext Password: (none)
           Options: (none)

Y me reste plus qu'a refaire du step by step pour réadapter et voir o๠ça coince...

Hors ligne

#12 Le 13/02/2008, à 05:15

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

Bon, ben après tests. Il s'avère que ça marche bien, mais dès que j'active la directive MYSQL_SELECT_CLAUSE, ça ne marche plus, et j'obtients un Input/Output error (pourtant la requête est bonne et elle est même exécutée...

Premier test, sans MYSQL_SELECT_CLAUSE :

root@sd-****:/etc/courier# cat authmysqlrc
MYSQL_SERVER            127.0.0.1
MYSQL_USERNAME          bddtempuser
MYSQL_PASSWORD          bddtemppass
MYSQL_PORT              0
MYSQL_OPT               0
MYSQL_DATABASE          bddtemp
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         5000
MYSQL_GID_FIELD         5000
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        "/home/vmail"
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     maildir
MYSQL_QUOTA_FIELD       quota
#MYSQL_SELECT_CLAUSE    SELECT username, password, "5000" AS 'uid', "5000" AS 'gid', "/home/vmail" AS 'home', name, maildir, quota FROM mailbox WHERE username="$(local_part)@$(domain)"

L'authentif fonctionne bien :

root@sd-****:~# authtest utilisateur@domain.tld
Authentication succeeded.

     Authenticated: utilisateur@domain.tld  (uid 5000, gid 5000)
    Home Directory: /home/vmail
           Maildir: utilisateur@domain.tld/
             Quota: 0
Encrypted Password: $1$caea3837$gPafod/Do/8Jj5M9HehhM.
Cleartext Password: (none)
           Options: (none)

La requête SQL exécutée est (elle fonctionne bien sous mysql-client) :

SELECT username, password, "", 5000, 5000, "/home/vmail", maildir, quota, name, "" FROM mailbox WHERE username = "utilisateur@domain.tld"

Quand je définit la directive MYSQL_SELECT_CLAUSE :

root@sd-****:/etc/courier# cat authmysqlrc
MYSQL_SERVER            127.0.0.1
MYSQL_USERNAME          bddtempuser
MYSQL_PASSWORD          bddtemppass
MYSQL_PORT              0
MYSQL_OPT               0
MYSQL_DATABASE          bddtemp
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         5000
MYSQL_GID_FIELD         5000
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        "/home/vmail"
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     maildir
MYSQL_QUOTA_FIELD       quota
MYSQL_SELECT_CLAUSE    SELECT username, password, "5000" AS 'uid', "5000" AS 'gid', "/home/vmail" AS 'home', name, maildir, quota FROM mailbox WHERE username="$(local_part)@$(domain)"

Ca ne fonctionne pas, j'ai l'erreur :

root@sd-****:~# authtest utilisateur@domain.tld
Authentication FAILED: Input/output error

La requête SQL exécutée est (elle fonctionne bien sous mysql-client) :

SELECT username, password, "5000" AS 'uid', "5000" AS 'gid', "/home/vmail" AS 'home', name, maildir, quota FROM mailbox WHERE username="utilisateur@domain.tld"

Hors ligne

#13 Le 13/02/2008, à 05:46

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

Ayé j'ai trouvé !!! big_smilelol:D:mad::D
Merci en tout cas pour toute ton aide et tes pistes !!

En fait, c'est une histoire de position des valeurs retournées par la requête !
Y a un champ que j'avais pas, que j'ai remplacé par "" AS 'unknow' et ça marche !!!

root@sd-****:/etc/courier# cat authmysqlrc
MYSQL_SERVER            127.0.0.1
MYSQL_USERNAME          bddtempuser
MYSQL_PASSWORD          bddtemppass
MYSQL_PORT              0
MYSQL_OPT               0
MYSQL_DATABASE          bddtemp
MYSQL_SELECT_CLAUSE     SELECT CONCAT(`mailbox`.`username`,'@',`domain`.`domain`) AS 'username',                \
                                `mailbox`.`password` AS 'password',                                             \
                                "" AS 'unknow',                                                                 \
                                "5000" AS 'uid',                                                                \
                                "5000" AS 'gid',                                                                \
                                "/home/vmail" AS 'home',                                                        \
                                `mailbox`.`maildir`,                                                            \
                                `mailbox`.`quota`,                                                              \
                                `mailbox`.`name`                                                                \
                        FROM `mailbox` INNER JOIN `domain`                                                      \
                                ON `mailbox`.`domain`=`domain`.`id`                                             \
                        WHERE CONCAT(`mailbox`.`username`,'@',`domain`.`domain`)="$(local_part)@$(domain)"      \
                                AND `mailbox`.`active`='1'                                                      \
                                AND `domain`.`active`='1'                                                       \
                        LIMIT 1

L'authentif est OK :

root@sd-****:~# authtest utilisateur@domain.tld
Authentication succeeded.

     Authenticated: utilisateur@domain.tld  (uid 5000, gid 5000)
    Home Directory: /home/vmail
           Maildir: utilisateur@domain.tld/
             Quota: 0
Encrypted Password: $1$caea3837$gPafod/Do/8Jj5M9HehhM.
Cleartext Password: (none)
           Options: (none)

Et la requête exécutée est bien :

SELECT CONCAT(`mailbox`.`username`,'@',`domain`.`domain`) AS 'username', `mailbox`.`password` AS 'password', "" AS 'unknow', "5000" AS 'uid', "5000" AS 'gid', "/home/vmail" AS 'home', `mailbox`.`maildir`, `mailbox`.`quota`, `mailbox`.`name`
FROM `mailbox` INNER JOIN `domain` ON `mailbox`.`domain`=`domain`.`id`
WHERE CONCAT(`mailbox`.`username`,'@',`domain`.`domain`)="utilisateur@domain.tld" AND `mailbox`.`active`='1' AND `domain`.`active`='1'
LIMIT 1

Je refais la conf comme avant, et si ça marche, je tagg le sujet en résolu...

Dernière modification par jak0lantash (Le 13/02/2008, à 07:32)

Hors ligne

#14 Le 13/02/2008, à 06:56

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

J'ai une petite question cependant. Pour l'encryptage du mot de passe, je souhaite utilisé MD5. Toutefois, j'éprouve quelques difficultés à  mettre en place cette utilisation.
Chez moi, les MD5 ressemble à  d41d8cd98f00b204e9800998ecf8427e
Pourtant quand j'utilise userdbpw -md5, ça me génère un $1$0p1dyH39$OoiR4E6OFQ/Y7iJQCFb5K0

Avec le premier, impossible de se connecter, avec le deuxième ça marche hmm:/
Donc, c'est lequel qui est en MD5 ????
Serait-il possible de convertir (simplement) le e54cfb3714f76cedd4b27889e1f6a174 en $1$0p1dyH39$OoiR4E6OFQ/Y7iJQCFb5K0 ???

NB : Le champ que je qualifiais de "unknow", c'est le CLEAR_PASSWORD_FIELD...

Dernière modification par jak0lantash (Le 13/02/2008, à 10:21)

Hors ligne

#15 Le 13/02/2008, à 08:23

toniotonio

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

le "vrai" md5 commence par $1$


Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com

Hors ligne

#16 Le 13/02/2008, à 08:27

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

toniotonio a écrit :

le "vrai" md5 commence par $1$

OK merci, mais :
Serait-il possible de convertir (simplement) le e54cfb3714f76cedd4b27889e1f6a174 en $1$0p1dyH39$OoiR4E6OFQ/Y7iJQCFb5K0 ???

Dernière modification par jak0lantash (Le 13/02/2008, à 10:19)

Hors ligne

#17 Le 18/02/2008, à 12:06

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

J'en conclu qu'il ne dois pas y avoir de solutions... sad

Hors ligne

#18 Le 19/02/2008, à 16:12

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

J'ai finalement réussi à  obtenir un élément de réponse.

En fait, c'est plus un salt crypt de md5 que du md5...
Si tu prend la chaà®ne : $1$6NjG3t8G$rl8LR9kxqsuOnkTRCV8wh0
Les $ sont en faite des balises permettant de séparer les paramètres.
Le premier paramètre, ici 1, indique que la fonction de hash utilisée est MD5 (1->md5, 2a->blowfish)
Le second paramètre, ici 6NjG3t8G, indique la chaà®ne de salt.
Le dernier paramèter, ici rl8LR9kxqsuOnkTRCV8wh0, est résultat du cryptage.

J'ai réussit à  obtenir ce même résultat en utilisant la fonction PHP :

crypt($str, $salt)

Un exemple :
chaine = string
sel = $1$salt
cryptage = crypt("string", "$1$salt") = $1$salt$zQ85DZwaOPzoVL57BgVNP0

Donc, c'est un crypt de MD5 ou un truc du genre...

Par contre, ça ne résoud toujours pas mon problème de reconnaissance des mots de passes encrypté en MD5 par Courier-MTA !

Dernière modification par jak0lantash (Le 19/02/2008, à 16:13)

Hors ligne

#19 Le 19/02/2008, à 20:52

toniotonio

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

de memoire courier ne prend que le md5 avec le salt (les 2 c'est du md5)

la conversion est a ma connaissance impossible


Tutoriaux Postfix sur www.starbridge.org/spip
Messagerie Dédiée, Relais Mail Antispam/Antivirus, Infogérance 24/7: http://www.eole-its.com

Hors ligne

#20 Le 20/02/2008, à 17:13

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

OK merci pour l'info !
C'est une bien mauvaise nouvelle ... hmm:/

Hors ligne

#21 Le 21/02/2008, à 01:17

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

Si ça interesse des gens :
http://www.starbridge.org/support/viewtopic.php?f=2&t=223&start=0&st=0&sk=t&sd=a

Hors ligne

#22 Le 21/02/2008, à 01:50

Fozzy

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

Jak0, tu resteras toujours un geek ,mais un geek compétent !

#23 Le 21/02/2008, à 17:38

jak0lantash

Re : [RESOLU][Courier][MySQL]Echec de connexion à  imap

Lol, Fozzyyyy !!!
En tout cas, c'est résolu.

Pour convertir du MD5 Hexadecimal en MD5 Base64 :

<?php
  function hexToString($hex) {
    $hex = str_replace(array("\n","\r"," "), "", $hex);
    for ($ix=0; $ix < strlen($hex); $ix=$ix+2) {
      $ord = hexdec(substr($hex, $ix, 2));
      $string .= chr($ord);
    }
    return $string;
  }
  $string = "testing";
  $hexa_md5 = md5($string);
  $base64_md5 = base64_encode(hexToString(md5($string));
?>

Ca n'a pas le mérite d'être direct (la fonction n'est pas appelée au moment de l'exécution de la requête SQL utilisée pour reconnaître les utilisateurs virtuels), mais ça me permettra au moins, de rajouter une donnée calculée dans la BDD. Il m'est donc possible de re-générer les mots de passes pour qu'ils soient compatibles avec Courier en partant des MD5 Hexa dont je disposais...
Me restera donc plus qu'à faire une routine pour m'assurer de la complétude des valeurs.

Hors ligne