[imp] multiple imap servers

jason kawaja kawaja at ece.ufl.edu
Tue Jul 10 13:05:12 UTC 2012


greetings list, been running version 3 for a long while and i must be missing something obvious as i was reading http://wiki.horde.org/ImapSelect and have the following in my setup :

horde/imp/config/conf.php

<?php
$conf['hooks']['preauthenticate'] = true;
...

horde/imp/config/hooks.php

<?php

if (!function_exists('_horde_hook_preauthenticate')) {
    function _horde_hook_preauthenticate($userID, $credential, $realm)
    {
        require dirname(__FILE__) . '/../imp/config/servers.php';
 
        // Convert all to lower chars (even the possible domain part)
        $userID=strtolower($userID);
        // Strip domain part from user, if it exists.
        if (($domainpart = strpos($userID, '@'))) {
          $server=substr($userID, $domainpart+1);
          $userID=substr($userID, 0, $domainpart);
          // Change the values only if a domain part was found ...
          if (!empty($server)) {
            foreach ($servers as $serverkey => $curServer) {
              if (!empty($curServer['realm']) && $server == $curServer['realm']) {
                // We found an entry, now set IMAP server values.
                foreach (array('server', 'folders', 'namespace',
                  'protocol', 'port', 'smtphost', 'smtpport', 'maildomain') as $key) {
                  if (isset($servers[$serverkey][$key])) {
                    $_SESSION['imp'][$key] = $servers[$serverkey][$key];
                  }
                }
                // Now use only the stripped version of the userID to logon to the server
                $_SESSION['imp']['user'] = $userID;
                // Setup the correct base_protocol
                $_SESSION['imp']['base_protocol'] = $_SESSION['imp']['protocol'];
                if (($pos = strpos($_SESSION['imp']['protocol'], '/'))) {
                  $_SESSION['imp']['base_protocol'] = substr($_SESSION['imp']['protocol'], 0, $pos);
                }
              }
            }
          }
        }
        return true;
    }
}

...

horde/imp/config/servers.php

$servers['svr1'] = array(
    'name' => 'SVR1',
    'server' => 'SVR1.ece.ufl.edu',
    'hordeauth' => true,
    'protocol' => 'imap/ssl/novalidate-cert',
    'port' => 993,
    'maildomain' => 'one.ece.ufl.edu',
    'smtphost' => 'smtp1.ece.ufl.edu',
    'smtpport' => 25,
    'realm' => '',
    'preferred' => 'true',
);
 
$servers['svr2'] = array(
    'name' => 'SVR2',
    'server' => 'SVR2.ece.ufl.edu',
    'hordeauth' => true,
    'protocol' => 'imap/ssl/novalidate-cert',
    'port' => 993,
    'maildomain' => 'two.ece.ufl.edu',
    'smtphost' => 'smtp2.ece.ufl.edu',
    'smtpport' => 25,
    'realm' => 'two.ece.ufl.edu',
    'preferred' => '',
);


i can login a user on svr1 but only if i do not include the domain part (@svr1.ece.ufl.edu) and when i try to include the domain part for svr2 there is no logon attempt on the svr2 server from webmail, so its not even trying...let me know what else to post to assist, thanks in advance...id like to put in a few different domains that are selected automatically depending on @domain.tld in the username.

--
Jason Kawaja, 2-4568
UF Dept of ECE






More information about the imp mailing list