From 56d869dc4ba05d9d1d960a583f5b849f95fc8292 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Thu, 23 Jul 2015 14:57:19 +0000 Subject: [PATCH] * Univention: support Dovecot as IMAP available and default from 4.0-2 on --- doc/rpm-build/post_install.php | 18 +++++++++++++++--- phpgwapi/inc/class.accounts_univention.inc.php | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/doc/rpm-build/post_install.php b/doc/rpm-build/post_install.php index 3869d729a9..85c0605004 100755 --- a/doc/rpm-build/post_install.php +++ b/doc/rpm-build/post_install.php @@ -649,15 +649,27 @@ function set_univention_defaults() $config['smtpserver'] = "$mailserver,465,,,yes,tls,no,yes"; $config['smtp'] = ',emailadmin_smtp_univention'; $config['mailserver'] = "$mailserver,993,$domain,email,tls"; - $config['imap'] = /*'cyrus,'._ucr_secret('cyrus')*/','.',emailadmin_imap_cyrus'; + if (_ucr_get('mail/dovecot') == 'yes') + { + $config['imap'] = /*'cyrus,'._ucr_secret('cyrus')*/','.',emailadmin_imap_dovecot'; + // default with sieve port to 4190, as config is only available on host mailserver app is installed + if (!($sieve_port = _ucr_get('mail/dovecot/sieve/port'))) $sieve_port = 4190; + } + else + { + $config['imap'] = /*'cyrus,'._ucr_secret('cyrus')*/','.',emailadmin_imap_cyrus'; + // default with sieve port to 4190, as config is only available on host mailserver app is installed + if (!($sieve_port = _ucr_get('mail/cyrus/sieve/port'))) $sieve_port = 4190; + } // set folders so mail creates them on first login, UCS does not automatic $config['folder'] = 'INBOX/Sent,INBOX/Trash,INBOX/Drafts,INBOX/Templates,INBOX/Spam'; - // default with sieve port to 4190, as config is only available on host mailserver app is installed - if (!($sieve_port = _ucr_get('mail/cyrus/sieve/port'))) $sieve_port = 4190; $config['sieve'] = "$mailserver,$sieve_port,starttls"; // set an email address for sysop user so mail works right away $config['admin_email'] = '$admin_user@'.$domain; } + # add directory of univention-directory-manager and it's sysmlink target to open_basedir + system("/bin/sed -i 's|/usr/bin|/usr/bin:/usr/sbin:/usr/share/univention-directory-manager-tools|' /etc/egroupware/apache.conf"); + } } diff --git a/phpgwapi/inc/class.accounts_univention.inc.php b/phpgwapi/inc/class.accounts_univention.inc.php index dd6006d2d8..669342b975 100644 --- a/phpgwapi/inc/class.accounts_univention.inc.php +++ b/phpgwapi/inc/class.accounts_univention.inc.php @@ -27,6 +27,9 @@ class accounts_univention extends accounts_ldap /** * Name of binary to call + * + * It is a symlink to /usr/share/univention-directory-manager-tools/directory-manager-cli. + * Both directories must be included in open_basedir! */ const DIRECTORY_MANAGER_BIN = '/usr/sbin/univention-directory-manager'; @@ -60,6 +63,21 @@ class accounts_univention extends accounts_ldap if (!empty($data['account_passwd'])) { $params[] = '--set'; $params[] = 'password='.$data['account_passwd']; + // we need to set mailHomeServer, so mailbox gets created for Dovecot + // get_default() does not work for Adminstrator, try acc_id=1 instead + // if everything fails try hostname ... + try { + if (!($account = emailadmin_account::get_default())) + { + $account = emailadmin_account::read(1); + } + $hostname = $account->acc_imap_host; + } + catch(Exception $e) { + unset($e); + } + if (empty($hostname)) $hostname = trunc(system('hostname -f')); + $params[] = '--set'; $params[] = 'mailHomeServer='.$hostname; } $cmd = self::DIRECTORY_MANAGER_BIN.' '.implode(' ', array_map('escapeshellarg', $params)); $output_arr = $ret = $matches = null;