<?php /* * Collection de fonctions pour une authentification externe POP3 */ // Constantes d'erreur define("ERR_POP3_AUTH_BADSOCK", -1); define("ERR_POP3_AUTH_SERVERNACK", -2); define("ERR_POP3_AUTH_BADUSER", -3); define("ERR_POP3_AUTH_BADPASS", -4); define("ERR_BAD_PARAMS", -100); // Fonction d'authentification pop3 function pop3_auth_simple($mail, $upw) { if ( ($ret = ereg ( "(^.*)@([[:alnum:]]+\.[[:alnum:]]+)", $mail, $re_tokens ) ) ) { /* $re_tokens [] * [0] : email complet * [1] : nom_mail * [2] : serveur_mail */ require_once('config.inc.php'); $srv_conf = $CONFIG['AUTH']['POP']['SERVERS'][strtolower($re_tokens[2])]; if ( is_array($srv_conf) ) { $server=$srv_conf['subdomain']; $port=$srv_conf['port']; if ( $srv_conf['username_is_full_mail'] ) { $user = $mail; } else { $user = $re_tokens[1]; } return pop3_auth ($server, $port, $user, $upw); } } /* DEBUG echo $mail . "\n" . $ret . "\n";; print_r($re_tokens); */ return ERR_BAD_PARAMS; } function pop3_auth ($server, $port, $user, $upw) { //echo "DEBUG : fsockopen($server, $port, $errno, $errstr, 10);"; $sock = @fsockopen($server, $port, $errno, $errstr, 10); if ( $sock === false) { return ERR_POP3_AUTH_BADSOCK; } //stream_set_timeout ( $sock, 1, 0 ); fputs($sock, "user $user\r\n"); if ( pop3_GetAndTestReply($sock) === false ) { return ERR_POP3_AUTH_BADUSER; } fputs($sock, "pass $upw\r\n"); if ( pop3_GetAndTestReply($sock) === false ) { return ERR_POP3_AUTH_BADPASS; } fputs($sock, "quit\r\n"); return 0; } // Fonction interne testant les r�ponses du serveur POP3 function pop3_GetAndTestReply($sock) { $reply = fgets($sock, 128); echo $reply . "\n"; return ( substr($reply, 0, 4) == "+OK " ); } ?>