diff -rua maia-1.0.2a/auth.php maia-1.0.2a-sessauth/auth.php
--- maia-1.0.2a/auth.php	2007-07-06 17:26:32.000000000 -0400
+++ maia-1.0.2a-sessauth/auth.php	2007-12-18 15:10:01.000000000 -0500
@@ -416,6 +416,9 @@
             if (!empty($user_name) && !empty($pwd)) {
                 $email = auth_ldap($user_name, $pwd);
                 $authenticated = (!($email === false));
+            } elseif (isset($_SESSION["username"]) && isset($_SESSION["user_is_logged_in"])){
+                $email = auth_ldap($user_name, "");
+                $authenticated = (!($email === false));
             }
         } elseif ($auth_method == "exchange") {
             if (!empty($user_name) && !empty($pwd)) {
diff -rua maia-1.0.2a/logout.php maia-1.0.2a-sessauth/logout.php
--- maia-1.0.2a/logout.php	2007-07-06 17:26:32.000000000 -0400
+++ maia-1.0.2a-sessauth/logout.php	2007-12-18 09:36:02.000000000 -0500
@@ -85,8 +85,11 @@
     require_once ("smarty.php");
     
     // Remove the session file from the server.
-    if (session_is_registered("uid")) {
-        session_destroy();
+    // ...only if user not still logged into squirrelmail.
+    if (!isset($_SESSION["username"]) && !isset($_SESSION["user_is_logged_in"])){
+    	if (session_is_registered("uid")) {
+            session_destroy();
+    	}
     }
 
     $smarty->display('logout.tpl');
diff -rua maia-1.0.2a/xlogin.php maia-1.0.2a-sessauth/xlogin.php
--- maia-1.0.2a/xlogin.php	2007-07-06 17:30:43.000000000 -0400
+++ maia-1.0.2a-sessauth/xlogin.php	2007-12-17 16:58:53.000000000 -0500
@@ -102,9 +102,11 @@
    require_once ("./locale/$display_language/login.php");
    require_once ("./locale/$display_language/xlogin.php");
 
-
+   session_start(); // start so we can see session variables from squirrelmail
    if (isset($_POST["username"])) {
       $user_name = trim($_POST["username"]);
+   } elseif (isset($_SESSION["username"]) && isset($_SESSION["user_is_logged_in"])){ // set from squirrelmail session
+      $user_name = $_SESSION["username"];
    } else {
       $user_name = "";
    }
