1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
<?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 " );
}
?>
|