From d7480c82525c02c9d7a174104a7e08192e70245c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20M=C3=BCller?= Date: Sat, 11 Oct 2014 19:52:43 +0200 Subject: [PATCH] Only Use LMTP in case of webserver->mailserver uid-mapping Use dovecot or maildrop in default-cases Switching to LMTP and back included in server-postfix-plugin validator added to disable switching uid-mapping when already created mailusers or in multiserver-environment --- install/dist/lib/debian60.lib.php | 2 +- install/dist/lib/fedora.lib.php | 2 +- install/dist/lib/gentoo.lib.php | 2 +- install/dist/lib/opensuse.lib.php | 2 +- install/tpl/debian_postfix.conf.master | 2 +- install/tpl/fedora_postfix.conf.master | 2 +- install/tpl/gentoo_postfix.conf.master | 2 +- install/tpl/opensuse_postfix.conf.master | 2 +- .../validate_server_mail_config.inc.php | 70 +++++++++++++++++++ .../web/admin/form/server_config.tform.php | 4 ++ .../web/admin/lib/lang/ar_server_config.lng | 6 +- .../web/admin/lib/lang/bg_server_config.lng | 6 +- .../web/admin/lib/lang/br_server_config.lng | 6 +- .../web/admin/lib/lang/cz_server_config.lng | 6 +- .../web/admin/lib/lang/de_server_config.lng | 6 +- .../web/admin/lib/lang/el_server_config.lng | 6 +- .../web/admin/lib/lang/en_server_config.lng | 6 +- .../web/admin/lib/lang/es_server_config.lng | 6 +- .../web/admin/lib/lang/fi_server_config.lng | 6 +- .../web/admin/lib/lang/hr_server_config.lng | 6 +- .../web/admin/lib/lang/hu_server_config.lng | 6 +- .../web/admin/lib/lang/id_server_config.lng | 6 +- .../web/admin/lib/lang/it_server_config.lng | 6 +- .../web/admin/lib/lang/ja_server_config.lng | 6 +- .../web/admin/lib/lang/nl_server_config.lng | 6 +- .../web/admin/lib/lang/pl_server_config.lng | 6 +- .../web/admin/lib/lang/pt_server_config.lng | 6 +- .../web/admin/lib/lang/ro_server_config.lng | 6 +- .../web/admin/lib/lang/ru_server_config.lng | 6 +- .../web/admin/lib/lang/se_server_config.lng | 6 +- .../web/admin/lib/lang/sk_server_config.lng | 6 +- .../web/admin/lib/lang/tr_server_config.lng | 6 +- .../templates/server_config_mail_edit.htm | 2 +- .../postfix_server_plugin.inc.php | 17 ++++- 34 files changed, 208 insertions(+), 33 deletions(-) create mode 100644 interface/lib/classes/validate_server_mail_config.inc.php diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php index 1ddb6029f..42da878c3 100644 --- a/install/dist/lib/debian60.lib.php +++ b/install/dist/lib/debian60.lib.php @@ -57,7 +57,7 @@ class installer extends installer_base { // Adding the amavisd commands to the postfix configuration $postconf_commands = array ( 'dovecot_destination_recipient_limit = 1', - 'virtual_transport = lmtp:unix:private/dovecot-lmtp', + 'virtual_transport = dovecot', 'smtpd_sasl_type = dovecot', 'smtpd_sasl_path = private/auth' ); diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index a6250bbb4..078f64901 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -402,7 +402,7 @@ class installer_dist extends installer_base { // Adding the amavisd commands to the postfix configuration $postconf_commands = array ( 'dovecot_destination_recipient_limit = 1', - 'virtual_transport = lmtp:unix:private/dovecot-lmtp', + 'virtual_transport = dovecot', 'smtpd_sasl_type = dovecot', 'smtpd_sasl_path = private/auth', ); diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 407ec011f..b419082cc 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -245,7 +245,7 @@ class installer extends installer_base //* Reconfigure postfix to use dovecot authentication $postconf_commands = array ( 'dovecot_destination_recipient_limit = 1', - 'virtual_transport = lmtp:unix:private/dovecot-lmtp', + 'virtual_transport = dovecot', 'smtpd_sasl_type = dovecot', 'smtpd_sasl_path = private/auth' ); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 1144776aa..0bcf58d78 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -453,7 +453,7 @@ class installer_dist extends installer_base { // Adding the amavisd commands to the postfix configuration $postconf_commands = array ( 'dovecot_destination_recipient_limit = 1', - 'virtual_transport = lmtp:unix:private/dovecot-lmtp', + 'virtual_transport = dovecot', 'smtpd_sasl_type = dovecot', 'smtpd_sasl_path = private/auth', ); diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index 8ec3cb523..fa3105f3d 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -25,7 +25,7 @@ smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual smtpd_client_message_rate_limit = 100 maildrop_destination_concurrency_limit = 1 maildrop_destination_recipient_limit = 1 -virtual_transport = lmtp:unix:private/dovecot-lmtp +virtual_transport = maildrop header_checks = regexp:{config_dir}/header_checks mime_header_checks = regexp:{config_dir}/mime_header_checks nested_header_checks = regexp:{config_dir}/nested_header_checks diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 414160c72..3b542f32e 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -22,7 +22,7 @@ smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual smtpd_client_message_rate_limit = 100 maildrop_destination_concurrency_limit = 1 maildrop_destination_recipient_limit = 1 -virtual_transport = lmtp:unix:private/dovecot-lmtp +virtual_transport = maildrop header_checks = regexp:{config_dir}/header_checks mime_header_checks = regexp:{config_dir}/mime_header_checks nested_header_checks = regexp:{config_dir}/nested_header_checks diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index 7ea89c92d..1b2770200 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -22,7 +22,7 @@ smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual smtpd_client_message_rate_limit = 100 maildrop_destination_concurrency_limit = 1 maildrop_destination_recipient_limit = 1 -virtual_transport = lmtp:unix:private/dovecot-lmtp +virtual_transport = maildrop header_checks = regexp:{config_dir}/header_checks mime_header_checks = regexp:{config_dir}/mime_header_checks nested_header_checks = regexp:{config_dir}/nested_header_checks diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index 7ea89c92d..1b2770200 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -22,7 +22,7 @@ smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual smtpd_client_message_rate_limit = 100 maildrop_destination_concurrency_limit = 1 maildrop_destination_recipient_limit = 1 -virtual_transport = lmtp:unix:private/dovecot-lmtp +virtual_transport = maildrop header_checks = regexp:{config_dir}/header_checks mime_header_checks = regexp:{config_dir}/mime_header_checks nested_header_checks = regexp:{config_dir}/nested_header_checks diff --git a/interface/lib/classes/validate_server_mail_config.inc.php b/interface/lib/classes/validate_server_mail_config.inc.php new file mode 100644 index 000000000..00bce9a21 --- /dev/null +++ b/interface/lib/classes/validate_server_mail_config.inc.php @@ -0,0 +1,70 @@ +tform->wordbook[$errmsg])) { + return $app->tform->wordbook[$errmsg]."
\r\n"; + } else { + return $errmsg."
\r\n"; + } + } + + /* Validator function to check for changing virtual_uidgid_maps */ + function mailbox_virtual_uidgid_maps($field_name, $field_value, $validator) { + global $app, $conf; + + if (empty($field_value)) $field_value = 'n'; + $app->uses('getconf,system,db'); + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); + + // try to activat the function -> only if only one mailserver out there and if dovecot is installed + if ($field_value == 'y') { + // if this count is more then 1, there is more than 1 webserver, more than 1 mailserver or different web+mailserver -> so this feature isn't possible + $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM server WHERE mail_server=1 OR web_server=1"); + if($num_rec['number'] > 1) { + return $this->get_error('mailbox_virtual_uidgid_maps_error_nosingleserver'); + } + } + + // Value can only be changed if there is no mailuser set + if ($mail_config["mailbox_virtual_uidgid_maps"] != $field_value) { + $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM mail_user"); + if($num_rec['number'] > 0) { + return $this->get_error('mailbox_virtual_uidgid_maps_error_alreadyusers'); + } + } + } + +} diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 8c6f89976..dd62c1862 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -381,6 +381,10 @@ $form["tabs"]['mail'] = array( 'mailbox_virtual_uidgid_maps' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', + 'validators' => array (0 => array ( 'type' => 'CUSTOM', + 'class' => 'validate_server_mail_config', + 'function' => 'mailbox_virtual_uidgid_maps'), + ), 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 252004c00..a6871301a 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Mailuser Name'; $wb['mailuser_group_txt'] = 'Mailuser Group'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost User'; $wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index b64c6eeb6..dc5920328 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -22,7 +22,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Mailuser Name'; $wb['mailuser_group_txt'] = 'Mailuser Group'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost User'; $wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index b3977f316..fc0cbc6ec 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -23,7 +23,11 @@ $wb['mailuser_uid_txt'] = 'UID usuário de email'; $wb['mailuser_gid_txt'] = 'GID usuário de email'; $wb['mailuser_name_txt'] = 'Nome usuário de email'; $wb['mailuser_group_txt'] = 'Grupo usuário de email'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Host Relay'; $wb['relayhost_user_txt'] = 'Usuário do Host Relay'; $wb['relayhost_password_txt'] = 'Senha do Host Relay'; diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index fa62b9376..df212ea35 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mail uživatel UID'; $wb['mailuser_gid_txt'] = 'Mail uživatel GID'; $wb['mailuser_name_txt'] = 'Mail uživatel jméno'; $wb['mailuser_group_txt'] = 'Mail uživatel skupina'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost uživatel'; $wb['relayhost_password_txt'] = 'Relayhost heslo'; diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index a6e71ba77..66b037833 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mailbenutzer UID'; $wb['mailuser_gid_txt'] = 'Mailbenutzer GID'; $wb['mailuser_name_txt'] = 'Mailbenutzer Name'; $wb['mailuser_group_txt'] = 'Mailbenutzer Gruppe'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Website Linux Uid für Mailboxen (nur wenn beides auf gleichem Server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Website Linux Uid für Mailboxen'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'nur wenn beides auf gleichem Server'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid kann in Multiserver-Umgebung nicht gemappt werden.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid Mapping funktioniert nur in Verbindung mit dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid Mapping kann nur umgeschaltet werden, wenn noch keine Mailuser angelegt sind.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost Benutzer'; $wb['relayhost_password_txt'] = 'Relayhost Passwort'; diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index da3f99c5d..598b1d9b0 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Όνομα Mailuser'; $wb['mailuser_group_txt'] = 'Ομάδα Mailuser'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Χρήστης Relayhost'; $wb['relayhost_password_txt'] = 'Συνθηματικό Relayhost'; diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index 9331b50d8..46262bbba 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -35,7 +35,11 @@ $wb["mailuser_uid_txt"] = 'Mailuser UID'; $wb["mailuser_gid_txt"] = 'Mailuser GID'; $wb["mailuser_name_txt"] = 'Mailuser Name'; $wb["mailuser_group_txt"] = 'Mailuser Group'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb["relayhost_txt"] = 'Relayhost'; $wb["relayhost_user_txt"] = 'Relayhost User'; $wb["relayhost_password_txt"] = 'Relayhost Password'; diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index 734d83bde..5a768d82d 100644 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -22,7 +22,11 @@ $wb['mailuser_uid_txt'] = 'UID del usuario de correo'; $wb['mailuser_gid_txt'] = 'GID del usuario de correo'; $wb['mailuser_name_txt'] = 'Nombre del usuario de correo'; $wb['mailuser_group_txt'] = 'Grupo del usuario de correo'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Usar ID de usuario de Linux de sitios web para los buzones (solo si en el mismo servidor)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Servidor de retransmisión'; $wb['relayhost_user_txt'] = 'Usuario de retransmisión'; $wb['relayhost_password_txt'] = 'Contraseña de retramisión'; diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 70bf661c8..e55baa633 100755 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -22,7 +22,11 @@ $wb['mailuser_uid_txt'] = 'Käyttäjätunnus'; $wb['mailuser_gid_txt'] = 'Käyttäjäryhmä'; $wb['mailuser_name_txt'] = 'Postikäyttäjän nimi'; $wb['mailuser_group_txt'] = 'Postikäyttäjän ryhmä'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Edelleenlähetyspalvelin'; $wb['relayhost_user_txt'] = 'Edelleenlähetyspalvelimen käyttäjätunnus'; $wb['relayhost_password_txt'] = 'Edelleenlähetyspalvelimen salasana'; diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index 00d99afd9..d63f46190 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -23,7 +23,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Mailuser ime'; $wb['mailuser_group_txt'] = 'Mailuser grupa'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost korisnik'; $wb['relayhost_password_txt'] = 'Relayhost šifra'; diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 88d2148a5..7347bfd99 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -22,7 +22,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Mailuser Name'; $wb['mailuser_group_txt'] = 'Mailuser Group'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost User'; $wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index 8fcd47e64..4b75b353d 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'UID Pengguna Mail'; $wb['mailuser_gid_txt'] = 'GID Pengguna Mail'; $wb['mailuser_name_txt'] = 'Nama Pengguna Mail'; $wb['mailuser_group_txt'] = 'Grup Pengguna Mail'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Pengguna Relayhost'; $wb['relayhost_password_txt'] = 'Kata Sandi Relayhost'; diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index 8f74a30b7..8c7bd1169 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -21,7 +21,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Mailuser Name'; $wb['mailuser_group_txt'] = 'Mailuser Group'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost User'; $wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 3ca75cd17..1be98aa09 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'メールユーザーのUID'; $wb['mailuser_gid_txt'] = 'メールユーザーのGID'; $wb['mailuser_name_txt'] = 'メールユーザー名'; $wb['mailuser_group_txt'] = 'メールユーザーグループ'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'リレーホスト'; $wb['relayhost_user_txt'] = 'リレーホストユーザー'; $wb['relayhost_password_txt'] = 'リレーホストパスワード'; diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index e7c6b4bd6..cbb6c2bed 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Mailuser name'; $wb['mailuser_group_txt'] = 'Mailuser groep'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost gebruiker'; $wb['relayhost_password_txt'] = 'Relayhost wachtwoord'; diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index e13f2fcde..2d67bd35b 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'UID użytkownika e-mail'; $wb['mailuser_gid_txt'] = 'GID użytkownika e-mail'; $wb['mailuser_name_txt'] = 'Nazwa użytkownika e-mail'; $wb['mailuser_group_txt'] = 'Grupa użytkownika e-mail'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Adres Relayhost'; $wb['relayhost_user_txt'] = 'Użytkownik Relayhost'; $wb['relayhost_password_txt'] = 'Hasło Relayhost'; diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index 93a7971b0..1ed4cf1c7 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -23,7 +23,11 @@ $wb['mailuser_uid_txt'] = 'UID utilizador de email'; $wb['mailuser_gid_txt'] = 'GID utilizador de email'; $wb['mailuser_name_txt'] = 'Nome utilizador de email'; $wb['mailuser_group_txt'] = 'Grupo utilizador de email'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Host Relay'; $wb['relayhost_user_txt'] = 'Utilizador do Host Relay'; $wb['relayhost_password_txt'] = 'Senha do Host Relay'; diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index a3d9b429a..aa7e42a30 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -23,7 +23,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Mailuser Name'; $wb['mailuser_group_txt'] = 'Mailuser Group'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost User'; $wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index c7b355ad0..dd82e58f4 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -21,7 +21,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Имя Mailuser'; $wb['mailuser_group_txt'] = 'Группа Mailuser'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relay-хост'; $wb['relayhost_user_txt'] = 'Логин Relay-хоста'; $wb['relayhost_password_txt'] = 'Пароль Relay-хоста'; diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index 8e3768c1e..9a2d518a5 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -22,7 +22,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Mailuser Name'; $wb['mailuser_group_txt'] = 'Mailuser Group'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost User'; $wb['relayhost_password_txt'] = 'Relayhost Password'; diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 6cf7be925..78d6ccb5c 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID'; $wb['mailuser_gid_txt'] = 'Mailuser GID'; $wb['mailuser_name_txt'] = 'Mailuser Meno'; $wb['mailuser_group_txt'] = 'Mailuser Skupina'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost uživateľ'; $wb['relayhost_password_txt'] = 'Relayhost heslo'; diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 9081a4dad..4c6c4f351 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mail kullanıcısı UID'; $wb['mailuser_gid_txt'] = 'Mail kullanıcısı GID'; $wb['mailuser_name_txt'] = 'Mail kullanıcısı Adı'; $wb['mailuser_group_txt'] = 'Mail kullanıcısı Grubu'; -$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)'; +$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox'; +$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup'; +$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.'; +$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.'; +$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.'; $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost Kullanıcı'; $wb['relayhost_password_txt'] = 'Relayhost Şifre'; diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm index 2bf8f9368..7eeab34c1 100644 --- a/interface/web/admin/templates/server_config_mail_edit.htm +++ b/interface/web/admin/templates/server_config_mail_edit.htm @@ -58,7 +58,7 @@

{tmpl_var name='mailbox_virtual_uidgid_maps_txt'}

- {tmpl_var name='mailbox_virtual_uidgid_maps'} + {tmpl_var name='mailbox_virtual_uidgid_maps'} {tmpl_var name='mailbox_virtual_uidgid_maps_info_txt'}
diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index fd9fd5a02..474d10dc3 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -79,12 +79,12 @@ class postfix_server_plugin { global $app, $conf; // get the config - $app->uses("getconf"); + $app->uses("getconf,system"); $old_ini_data = $app->ini_parser->parse_ini_string($data['old']['config']); $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); copy('/etc/postfix/main.cf', '/etc/postfix/main.cf~'); - + if($mail_config['relayhost'] != '') { exec("postconf -e 'relayhost = ".$mail_config['relayhost']."'"); if($mail_config['relayhost_user'] != '' && $mail_config['relayhost_password'] != '') { @@ -137,6 +137,19 @@ class postfix_server_plugin { } exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); } + + if ($mail_config["mailbox_virtual_uidgid_maps"] == 'y') { + // If dovecot switch to lmtp + if($app->system->is_installed('dovecot')) { + exec("postconf -e 'virtual_transport = lmtp:unix:private/dovecot-lmtp'"); + } + } + else { + // If dovecot switch to dovecot + if($app->system->is_installed('dovecot')) { + exec("postconf -e 'virtual_transport = dovecot'"); + } + } exec("postconf -e 'mailbox_size_limit = ".intval($mail_config['mailbox_size_limit']*1024*1024)."'"); exec("postconf -e 'message_size_limit = ".intval($mail_config['message_size_limit']*1024*1024)."'"); -- GitLab