<?php

##############################################################
# LIBPOPAV - Library for POP3 based Authenticy Verification  #
##############################################################
# by snyke

/*
-- This is the configuration section. Copy this to your main config file or leave here and
-- uncomment for use.

// POP3-Auth-Verification Module (by snyke)
$cfg["popav_server"]    = "mail";
$cfg["popav_port"]      = 110;
$cfg["popav_verbose"]   = false;
require("libpopav.php");

*/

// First, check if we have the required configuration options
if ($cfg["popav_server"]=="" || $cfg["popav_port"]=="") die("POPAV: Not properly configured.");

function 
popav_log($log) {
    global 
$cfg;
    if (
$cfg["popav_verbose"]) echo $log;
    }

// The Main Function! Starts getting interesting..
function popav($username$password) {
    
    
ini_set("auto_detect_line_endings""1");
    global 
$cfg;

    
$fp_server = @fsockopen($cfg["popav_server"], $cfg["popav_port"], $errno$errstr5)
        or die(
"POPAV: Open failed. Verification impossible. $errno ($errstr)");
    
popav_log("Connected to {$cfg["popav_server"]}:{$cfg["popav_port"]}.<br>\n");
    
    
$ret fgets($fp_server)
        or die(
"POPAV: Read failed.");
    
popav_log("In: $ret<br>\n");

    @
fputs($fp_server"USER $username\r\n")
        or die(
"POPAV: Write failed.");
    
popav_log("Out: USER $username<br>\n");
    
    
$ret = @fgets($fp_server)
        or die(
"POPAV: Read failed.");
    
popav_log("In: $ret<br>\n");

    
$stat["user"] = $ret[0];

    @
fputs($fp_server"PASS $password\r\n")
        or die(
"POPAV: Write failed.");
    
popav_log("Out: PASS $password<br>\n");

    
$ret = @fgets($fp_server)
        or die(
"POPAV: Read failed.");
    
popav_log("In: $ret<br>\n");

    
$stat["pass"] = $ret[0];

    @
fputs($fp_server"QUIT\r\n")
        or die(
"POPAV: Write failed.");
    
popav_log("Out: QUIT<br>\n");

    
$ret = @fgets($fp_server)
        or die(
"POPAV: Read failed.");
    
popav_log("In: $ret<br>\n");

    @
fclose($fp_server)
        or die(
"POPAV: Close failed.");
    
popav_log("Connection closed.<br>\n");

    
// Check and cleanup
    
$success false;
    if (
$stat["user"]=="+" && $stat["pass"]=="+"$success true;

    
    return 
$success;
    }

?>