diff --git a/src/app/Http/Controllers/API/V4/NGINXController.php b/src/app/Http/Controllers/API/V4/NGINXController.php
--- a/src/app/Http/Controllers/API/V4/NGINXController.php
+++ b/src/app/Http/Controllers/API/V4/NGINXController.php
@@ -193,7 +193,7 @@
// All checks passed
switch ($request->headers->get('Auth-Protocol')) {
case "imap":
- return $this->authenticateIMAP($request, $user->getSetting('guam_enabled', false), $password);
+ return $this->authenticateIMAP($request, (bool) $user->getSetting('guam_enabled'), $password);
case "smtp":
return $this->authenticateSMTP($request, $password);
default:
diff --git a/src/app/Traits/UserConfigTrait.php b/src/app/Traits/UserConfigTrait.php
--- a/src/app/Traits/UserConfigTrait.php
+++ b/src/app/Traits/UserConfigTrait.php
@@ -11,10 +11,17 @@
*/
public function getConfig(): array
{
- $settings = $this->getSettings(['greylist_enabled', 'password_policy', 'max_password_age', 'limit_geo']);
+ $settings = $this->getSettings([
+ 'greylist_enabled',
+ 'guam_enabled',
+ 'password_policy',
+ 'max_password_age',
+ 'limit_geo'
+ ]);
$config = [
'greylist_enabled' => $settings['greylist_enabled'] !== 'false',
+ 'guam_enabled' => $settings['guam_enabled'] === 'true',
'limit_geo' => $settings['limit_geo'] ? json_decode($settings['limit_geo'], true) : [],
'max_password_age' => $settings['max_password_age'],
'password_policy' => $settings['password_policy'],
@@ -37,6 +44,8 @@
foreach ($config as $key => $value) {
if ($key == 'greylist_enabled') {
$this->setSetting($key, $value ? 'true' : 'false');
+ } elseif ($key == 'guam_enabled') {
+ $this->setSetting($key, $value ? 'true' : null);
} elseif ($key == 'limit_geo') {
if (!is_array($value)) {
$errors[$key] = \trans('validation.invalid-limit-geo');
diff --git a/src/resources/lang/en/ui.php b/src/resources/lang/en/ui.php
--- a/src/resources/lang/en/ui.php
+++ b/src/resources/lang/en/ui.php
@@ -461,6 +461,8 @@
'greylisting-text' => "Greylisting is a method of defending users against spam. Any incoming mail from an unrecognized sender "
. "is temporarily rejected. The originating server should try again after a delay. "
. "This time the email will be accepted. Spammers usually do not reattempt mail delivery.",
+ 'imapproxy' => "IMAP proxy",
+ 'imapproxy-text' => "Enables IMAP proxy that filters out non-mail groupware folders, so your IMAP clients do not see them.",
'list-title' => "User accounts",
'list-empty' => "There are no users in this account.",
'managed-by' => "Managed by",
diff --git a/src/resources/vue/Admin/User.vue b/src/resources/vue/Admin/User.vue
--- a/src/resources/vue/Admin/User.vue
+++ b/src/resources/vue/Admin/User.vue
@@ -206,6 +206,15 @@
+
+
+
+ {{ $t('form.enabled') }}
+ {{ $t('form.disabled') }}
+
+
+
+
diff --git a/src/resources/vue/User/Info.vue b/src/resources/vue/User/Info.vue
--- a/src/resources/vue/User/Info.vue
+++ b/src/resources/vue/User/Info.vue
@@ -93,6 +93,18 @@
+
+
+
+
+
+ {{ $t('user.imapproxy-text') }}
+
+
+