Horde
Horde ist ein PHP-Framework für Webapplikationen. Darüber hinaus gibt es bereits fertige Apps, wie z.b. Webmail IMP
Known Bugs
BasicAuth and ActiveSync
If BasicAuth is used for Authentication, ActiveSync is not working. See http://bugs.horde.org/ticket/11801
Workaround:
#Horde/Auth/Http.php
#beginning of _authenticate()
#return true if htpasswd-file is empty and transparent is working, no need to check more
if (empty($this->_params['htpasswd_file']) && $this->transparent()) {
return true;
}
Pear Error
If you get the error "CRITICAL ERROR: Registry could not be initialized from any value" the rights are probably wrong. E.g. /usr/share/php or /usr/share/php//usr/share/php/.registry must be readable/executable by e.g. webserver account www-data.
Module
Emailfilter/Ingo
Dovecot bringt einen Sieve-Filter-Server mit, diesen kann man mit Horde nutzen: http://www.radnerd.de/artikel/vom-radsport/2013/02/sieve-mit-dovecot-und-horde-5-ingo.html
Für einen Defaultfilter gibt es ein Hook (horde/config/hooks.php)
<?php public function transport_auth($driver) { switch ($driver) { case 'timsieved': // Example #1: Use full Horde username for password. return array('euser' => $GLOBALS['registry']->getAuth(null), 'username' => $GLOBALS['registry']->getAuth(null)); // Example #2: Use IMP password/username. //$ob = $GLOBALS['registry']->call('mail/imapOb'); //return array( // 'password' => $ob->getParam('password'), // 'username' => $ob->getParam('username') //); } // DEFAULT: Use hordeauth (identical to not defining hook at all). //return true; } // filter rules $_prefs['rules'] = array( 'value' => 'a:5:{i:0;a:8:{s:4:"name";s:9:"move_Spam";s:7:"combine";s:1:"1";s:10:"conditions";a:1:{i:0;a:5:{s:5:"field";s:13:"X-Spam-Status";s:4:"type";i:1;s:5:"match";s:8:"contains";s:5:"value";s:3:"YES";s:4:"case";s:1:"1";}}s:6:"action";s:1:"2";s:12:"action-value";s:10:"INBOX.Spam";s:4:"stop";N;s:5:"flags";i:0;s:7:"disable";b:0;}i:1;a:2:{s:4:"name";s:9:"Whitelist";s:6:"action";i:9;}i:2;a:3:{s:4:"name";s:8:"Vacation";s:6:"action";i:8;s:7:"disable";b:1;}i:3;a:2:{s:4:"name";s:9:"Blacklist";s:6:"action";i:7;}i:4;a:2:{s:4:"name";s:7:"Forward";s:6:"action";i:10;}}', 'locked' => false, 'shared' => false, 'type' => 'implicit'); php?>
Weiterleitung/Forward
Damit der Username inkl. Domain an das Backend (ftp) weitergegeben wird, muß forward/main.php angepaßt werden:
... // Get the current login username and realm. #$split = explode('@', Auth::getAuth()); #$user = @$split[0]; $user = Auth::getAuth(); $realm = @$split[1]; ...