From 668960ccf6bb9578c9bed6e874a41ddfb30092fb Mon Sep 17 00:00:00 2001 From: John Fawcett Date: Sun, 7 Jan 2024 15:25:17 +0100 Subject: [PATCH 1/3] Add a flag to mailbox table for enable/disable smtp protocol. The table column name is "smtp_active". This enables use of this flag instead of active flag for postfix mysql queries. There is a new configuration parameter $CONF['smtp_active_flag'] = YES or NO, which defaults to NO, providing the existing behaviour. When set to YES the active_smtp field is displayed in the edit mode and can be modified. The commit includes update to the language files and documentation. The commit does not include the code to add the field to existing installs, which I presume can be added during the release cycle in upgrade.php along the lines of: _db_add_field('mailbox', 'smtp_active', 'int DEFAULT 1'); --- DOCUMENTS/DOVECOT.txt | 5 +++++ config.inc.php | 11 +++++++++++ languages/bg.lang | 1 + languages/ca.lang | 1 + languages/cn.lang | 1 + languages/cs.lang | 1 + languages/da.lang | 1 + languages/de.lang | 1 + languages/en.lang | 1 + languages/es.lang | 1 + languages/et.lang | 1 + languages/eu.lang | 1 + languages/fi.lang | 1 + languages/fo.lang | 1 + languages/fr.lang | 1 + languages/gl.lang | 1 + languages/hr.lang | 1 + languages/hu.lang | 1 + languages/is.lang | 1 + languages/it.lang | 1 + languages/ja.lang | 1 + languages/lt.lang | 1 + languages/mk.lang | 1 + languages/nb.lang | 1 + languages/nl.lang | 1 + languages/nn.lang | 1 + languages/pl.lang | 1 + languages/pt-br.lang | 1 + languages/pt-pt.lang | 1 + languages/ro.lang | 1 + languages/ru.lang | 1 + languages/sk.lang | 1 + languages/sl.lang | 1 + languages/sv.lang | 1 + languages/tr.lang | 1 + languages/tw.lang | 1 + languages/ua.lang | 1 + model/MailboxHandler.php | 2 ++ public/editactive.php | 14 +++++++++++++- templates/list-virtual_mailbox.tpl | 5 +++++ 40 files changed, 71 insertions(+), 1 deletion(-) diff --git a/DOCUMENTS/DOVECOT.txt b/DOCUMENTS/DOVECOT.txt index bc157e75..db293da5 100644 --- a/DOCUMENTS/DOVECOT.txt +++ b/DOCUMENTS/DOVECOT.txt @@ -147,7 +147,12 @@ iterate_query = SELECT username as user FROM mailbox WHERE active = '1' #END /etc/dovecot/dovecot-sql.conf +If you make use of the separate smtp_active flag in the mailbox table of postfixadmin by +enabling the configuration parameter $CONF['smtp_active_flag'] = YES in postfixadmin configuration +and you're using dovecot sasl with postfix, the dovecot queries can be updated to use the different flag for smtp: +password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND (('%s' = 'smtp' AND smtp_active = '1') OR ('%s' <> 'smtp' AND active = '1')) +user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, 1001 AS uid, 1001 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND (('%s' = 'smtp' AND smtp_active = '1') OR ('%s' <> 'smtp' AND active = '1')) 3. Permissions -------------- diff --git a/config.inc.php b/config.inc.php index fc387b9f..2011d1cd 100644 --- a/config.inc.php +++ b/config.inc.php @@ -802,6 +802,17 @@ function x_send_sms_clickatell($to, $message) { $CONF['version'] = '3.4-dev'; +// The smtp_active_flag when set to YES enables editing of the smtp_active +// field of the mailbox table. The smtp_active field can be used to enable +// or disable smtp sending for a mailbox separately to other mailbox functions. +// This can be useful if you want the ability to stop a user sending email +// while still allowing receipt of new mail and reading existing email. +// Please refer to DOCUMENTS/DOVECOT.txt for an example of how to configure this. +// The default is NO for backwards compatibility. Only enable this if you +// have also set up the SQL queries that make use of the smtp_active field +// in your Dovecot SQL configuration. +$CONF['smtp_active_flag'] = 'NO'; + // If you want to keep most settings at default values and/or want to ensure // that future updates work without problems, you can use a separate config // file (config.local.php) instead of editing this file and override some diff --git a/languages/bg.lang b/languages/bg.lang index 61b04950..38944c52 100644 --- a/languages/bg.lang +++ b/languages/bg.lang @@ -83,6 +83,7 @@ $PALANG['pOverview_welcome'] = 'Преглед на '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'От'; $PALANG['active'] = 'Активен'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'Е-мейл'; $PALANG['name'] = 'Име'; diff --git a/languages/ca.lang b/languages/ca.lang index 0aefab56..58e1f5a2 100644 --- a/languages/ca.lang +++ b/languages/ca.lang @@ -81,6 +81,7 @@ $PALANG['pOverview_welcome'] = 'Resum de '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'De'; $PALANG['active'] = 'Actiu'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'E-mail'; # XXX $PALANG['name'] = 'Nom'; diff --git a/languages/cn.lang b/languages/cn.lang index 84d989f4..45a9fdc2 100644 --- a/languages/cn.lang +++ b/languages/cn.lang @@ -82,6 +82,7 @@ $PALANG['pOverview_welcome'] = '浏览 '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = '前往'; $PALANG['active'] = '活动'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = '邮件地址'; $PALANG['name'] = '姓名'; diff --git a/languages/cs.lang b/languages/cs.lang index a054951e..35faf240 100644 --- a/languages/cs.lang +++ b/languages/cs.lang @@ -90,6 +90,7 @@ $PALANG['pOverview_welcome'] = 'Přehled domény '; $PALANG['pOverview_alias_domain_aliases'] = 'Přesměrované domény'; $PALANG['pOverview_alias_address'] = 'Od'; $PALANG['active'] = 'Aktivní'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[a %s dalších...]'; $PALANG['pOverview_mailbox_username'] = 'Email'; $PALANG['name'] = 'Jméno'; diff --git a/languages/da.lang b/languages/da.lang index e47e4310..bd4e6141 100644 --- a/languages/da.lang +++ b/languages/da.lang @@ -86,6 +86,7 @@ $PALANG['pOverview_welcome'] = 'Oversigt for '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias domæner'; $PALANG['pOverview_alias_address'] = 'Alias'; $PALANG['active'] = 'Aktiv'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[og %s til...]'; $PALANG['pOverview_mailbox_username'] = 'Emailadresse'; $PALANG['name'] = 'Navn'; diff --git a/languages/de.lang b/languages/de.lang index 6ac85a21..89881d52 100644 --- a/languages/de.lang +++ b/languages/de.lang @@ -84,6 +84,7 @@ $PALANG['pOverview_welcome'] = 'Überblick über '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias-Domains'; $PALANG['pOverview_alias_address'] = 'Von'; $PALANG['active'] = 'Aktiv'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[und %s weitere...]'; $PALANG['pOverview_mailbox_username'] = 'Email'; $PALANG['name'] = 'Name'; diff --git a/languages/en.lang b/languages/en.lang index 7a5529dc..1ca603dc 100644 --- a/languages/en.lang +++ b/languages/en.lang @@ -90,6 +90,7 @@ $PALANG['pOverview_welcome'] = 'Overview for '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; $PALANG['pOverview_alias_address'] = 'From'; $PALANG['active'] = 'Active'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; $PALANG['pOverview_mailbox_username'] = 'Email'; $PALANG['name'] = 'Name'; diff --git a/languages/es.lang b/languages/es.lang index f3706471..0e3335ab 100644 --- a/languages/es.lang +++ b/languages/es.lang @@ -82,6 +82,7 @@ $PALANG['pOverview_welcome'] = 'Resumen de '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias de Dominios'; $PALANG['pOverview_alias_address'] = 'De'; $PALANG['active'] = 'Activo'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[y %s más...]'; $PALANG['pOverview_mailbox_username'] = 'E-mail'; $PALANG['name'] = 'Nombre'; diff --git a/languages/et.lang b/languages/et.lang index dad50d30..1a815028 100644 --- a/languages/et.lang +++ b/languages/et.lang @@ -82,6 +82,7 @@ $PALANG['pOverview_welcome'] = 'Ülevaade domeenist: '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'Kellelt'; $PALANG['active'] = 'Aktiivne'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'E-posti aadress'; $PALANG['name'] = 'Nimi'; diff --git a/languages/eu.lang b/languages/eu.lang index df177b99..814c9f3a 100644 --- a/languages/eu.lang +++ b/languages/eu.lang @@ -81,6 +81,7 @@ $PALANG['pOverview_welcome'] = 'Laburpena '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'Igorlea'; $PALANG['active'] = 'Aktibatua'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'E-mail'; $PALANG['name'] = 'Izena'; diff --git a/languages/fi.lang b/languages/fi.lang index 63def4d1..5fd1e0c5 100644 --- a/languages/fi.lang +++ b/languages/fi.lang @@ -83,6 +83,7 @@ $PALANG['pOverview_welcome'] = 'Yleisnäkymä '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domainit'; $PALANG['pOverview_alias_address'] = 'Keneltä'; $PALANG['active'] = 'Aktiivinen'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[ja %s lisää...]'; $PALANG['pOverview_mailbox_username'] = 'Sähköposti'; $PALANG['name'] = 'Nimi'; diff --git a/languages/fo.lang b/languages/fo.lang index 96a71069..11434ed9 100644 --- a/languages/fo.lang +++ b/languages/fo.lang @@ -82,6 +82,7 @@ $PALANG['pOverview_welcome'] = 'Yvirlit yvir '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'Frá'; $PALANG['active'] = 'Virkin'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'E-post'; $PALANG['name'] = 'Navn'; diff --git a/languages/fr.lang b/languages/fr.lang index 9e835f98..28ac6ac2 100644 --- a/languages/fr.lang +++ b/languages/fr.lang @@ -86,6 +86,7 @@ $PALANG['pOverview_welcome'] = 'Vue d\'ensemble pour '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias de domaines'; $PALANG['pOverview_alias_address'] = 'De'; $PALANG['active'] = 'Actif'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[et %s en plus...]'; $PALANG['pOverview_mailbox_username'] = 'courriel'; $PALANG['name'] = 'Nom'; diff --git a/languages/gl.lang b/languages/gl.lang index 5b350c39..0d4a2b72 100644 --- a/languages/gl.lang +++ b/languages/gl.lang @@ -80,6 +80,7 @@ $PALANG['pOverview_welcome'] = 'Resumo de '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias de Dominios'; $PALANG['pOverview_alias_address'] = 'De'; $PALANG['active'] = 'Activo'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[e %s máis...]'; $PALANG['pOverview_mailbox_username'] = 'E-mail'; $PALANG['name'] = 'Nome'; diff --git a/languages/hr.lang b/languages/hr.lang index 61730427..f9712a51 100644 --- a/languages/hr.lang +++ b/languages/hr.lang @@ -81,6 +81,7 @@ $PALANG['pOverview_welcome'] = 'Pregled za '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'Od'; $PALANG['active'] = 'Aktivan'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'E-pošta'; $PALANG['name'] = 'Ime'; diff --git a/languages/hu.lang b/languages/hu.lang index 59eefcf5..7b263993 100644 --- a/languages/hu.lang +++ b/languages/hu.lang @@ -83,6 +83,7 @@ $PALANG['pOverview_welcome'] = 'Áttekintés: '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'Honnan'; $PALANG['active'] = 'Aktív'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'Email'; $PALANG['name'] = 'Név'; diff --git a/languages/is.lang b/languages/is.lang index caba6d5c..6bf52711 100644 --- a/languages/is.lang +++ b/languages/is.lang @@ -82,6 +82,7 @@ $PALANG['pOverview_welcome'] = 'Yfirlit fyrir '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'Póstur fyrir'; $PALANG['active'] = 'Virkt'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'Póstfang'; $PALANG['name'] = 'Nafn notanda'; # XXX check text - should be 'Name' diff --git a/languages/it.lang b/languages/it.lang index 5887ff47..82817091 100644 --- a/languages/it.lang +++ b/languages/it.lang @@ -84,6 +84,7 @@ $PALANG['pOverview_welcome'] = 'Resoconto per '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias di Dominio'; $PALANG['pOverview_alias_address'] = 'Da'; $PALANG['active'] = 'Attivo'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[più %s altri...]'; $PALANG['pOverview_mailbox_username'] = 'Email'; $PALANG['name'] = 'Nome'; diff --git a/languages/ja.lang b/languages/ja.lang index d2444031..0a25a952 100644 --- a/languages/ja.lang +++ b/languages/ja.lang @@ -84,6 +84,7 @@ $PALANG['pOverview_welcome'] = '概要 '; $PALANG['pOverview_alias_domain_aliases'] = 'エイリアスドメイン'; $PALANG['pOverview_alias_address'] = '転送元'; $PALANG['active'] = 'アクティブ'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[その他 %s 個]'; $PALANG['pOverview_mailbox_username'] = 'メールアドレス'; $PALANG['name'] = '名前'; diff --git a/languages/lt.lang b/languages/lt.lang index b747261c..c6a208e0 100644 --- a/languages/lt.lang +++ b/languages/lt.lang @@ -82,6 +82,7 @@ $PALANG['pOverview_welcome'] = 'Peržiūra '; $PALANG['pOverview_alias_domain_aliases'] = 'Srities sinonimai'; $PALANG['pOverview_alias_address'] = 'Iš'; $PALANG['active'] = 'Įjungtas'; # XXX check text - should be 'Active' +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[ir %s daugiau...]'; $PALANG['pOverview_mailbox_username'] = 'El.paštas'; $PALANG['name'] = 'Vardas'; diff --git a/languages/mk.lang b/languages/mk.lang index 13e31e94..dcbb4eb3 100644 --- a/languages/mk.lang +++ b/languages/mk.lang @@ -82,6 +82,7 @@ $PALANG['pOverview_welcome'] = 'Преглед за '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'Од'; $PALANG['active'] = 'Активен'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'Адреса'; $PALANG['name'] = 'Име'; diff --git a/languages/nb.lang b/languages/nb.lang index e731b383..5d7cbb55 100644 --- a/languages/nb.lang +++ b/languages/nb.lang @@ -84,6 +84,7 @@ $PALANG['pOverview_welcome'] = 'Oversikt for '; $PALANG['pOverview_alias_domain_aliases'] = 'Aliasdomener'; $PALANG['pOverview_alias_address'] = 'Fra'; $PALANG['active'] = 'Aktiv'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[og %s flere...]'; $PALANG['pOverview_mailbox_username'] = 'E-post'; $PALANG['name'] = 'Navn'; diff --git a/languages/nl.lang b/languages/nl.lang index c8a672b8..8575eb7a 100644 --- a/languages/nl.lang +++ b/languages/nl.lang @@ -84,6 +84,7 @@ $PALANG['pOverview_welcome'] = 'Overzicht voor '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias domeinen'; $PALANG['pOverview_alias_address'] = 'Van'; $PALANG['active'] = 'Actief'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[en %s meer...]'; $PALANG['pOverview_mailbox_username'] = 'e-mail'; $PALANG['name'] = 'Naam'; diff --git a/languages/nn.lang b/languages/nn.lang index e66e6a22..15b596e3 100644 --- a/languages/nn.lang +++ b/languages/nn.lang @@ -82,6 +82,7 @@ $PALANG['pOverview_welcome'] = 'Oversikt for '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'Fra'; $PALANG['active'] = 'Aktiv'; # XXX check text - should be 'Active' +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'E-post'; $PALANG['name'] = 'Nann'; # XXX check text - should be 'Name' diff --git a/languages/pl.lang b/languages/pl.lang index 0760ff20..e37e8358 100644 --- a/languages/pl.lang +++ b/languages/pl.lang @@ -85,6 +85,7 @@ $PALANG['pOverview_welcome'] = 'Dane zbiorcze dla domeny '; $PALANG['pOverview_alias_domain_aliases'] = 'Domeny aliasowe'; $PALANG['pOverview_alias_address'] = 'Od'; $PALANG['active'] = 'Aktywny'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[i %s wiecej...]'; $PALANG['pOverview_mailbox_username'] = 'Email'; $PALANG['name'] = 'Nazwa'; diff --git a/languages/pt-br.lang b/languages/pt-br.lang index 9b4033e3..93854c54 100644 --- a/languages/pt-br.lang +++ b/languages/pt-br.lang @@ -84,6 +84,7 @@ $PALANG['pOverview_welcome'] = 'Visão geral de '; $PALANG['pOverview_alias_domain_aliases'] = 'Aliases de Domínio'; $PALANG['pOverview_alias_address'] = 'De'; $PALANG['active'] = 'Habilitado'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[e %s mais...]'; $PALANG['pOverview_mailbox_username'] = 'Email'; $PALANG['name'] = 'Nome'; diff --git a/languages/pt-pt.lang b/languages/pt-pt.lang index 47137636..727671f3 100644 --- a/languages/pt-pt.lang +++ b/languages/pt-pt.lang @@ -84,6 +84,7 @@ $PALANG['pOverview_welcome'] = 'Visão geral de '; $PALANG['pOverview_alias_domain_aliases'] = 'Aliases de Domínio'; $PALANG['pOverview_alias_address'] = 'De'; $PALANG['active'] = 'Activado'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[e %s mais...]'; $PALANG['pOverview_mailbox_username'] = 'Email'; $PALANG['name'] = 'Nome'; diff --git a/languages/ro.lang b/languages/ro.lang index b456091e..f9f7d505 100644 --- a/languages/ro.lang +++ b/languages/ro.lang @@ -83,6 +83,7 @@ $PALANG['pOverview_welcome'] = 'Vizualizare pentru '; $PALANG['pOverview_alias_domain_aliases'] = 'Domenii alias'; $PALANG['pOverview_alias_address'] = 'De la'; $PALANG['active'] = 'Activ'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[inca %s ...]'; $PALANG['pOverview_mailbox_username'] = 'Email'; $PALANG['name'] = 'Nume'; diff --git a/languages/ru.lang b/languages/ru.lang index 756cf85d..70e441b6 100644 --- a/languages/ru.lang +++ b/languages/ru.lang @@ -86,6 +86,7 @@ $PALANG['pOverview_welcome'] = 'Обзор для '; $PALANG['pOverview_alias_domain_aliases'] = 'Алиасы доменов'; $PALANG['pOverview_alias_address'] = 'От'; $PALANG['active'] = 'Активен'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[и еще %s...]'; $PALANG['pOverview_mailbox_username'] = 'Ящик'; $PALANG['name'] = 'Имя'; diff --git a/languages/sk.lang b/languages/sk.lang index d0cae939..e621d47b 100644 --- a/languages/sk.lang +++ b/languages/sk.lang @@ -83,6 +83,7 @@ $PALANG['pOverview_welcome'] = 'Prehľad pre doménu '; $PALANG['pOverview_alias_domain_aliases'] = 'Aliasy domén'; $PALANG['pOverview_alias_address'] = 'Od'; $PALANG['active'] = 'Aktívny'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[a %s ďalších...]'; $PALANG['pOverview_mailbox_username'] = 'Email'; $PALANG['name'] = 'Meno'; diff --git a/languages/sl.lang b/languages/sl.lang index e7cf071a..7a4a2575 100644 --- a/languages/sl.lang +++ b/languages/sl.lang @@ -82,6 +82,7 @@ $PALANG['pOverview_welcome'] = 'Pregled za '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX $PALANG['pOverview_alias_address'] = 'Od'; $PALANG['active'] = 'Aktiven'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = 'E-pošta'; $PALANG['name'] = 'Ime'; diff --git a/languages/sv.lang b/languages/sv.lang index e0df54fd..e3c58f6d 100644 --- a/languages/sv.lang +++ b/languages/sv.lang @@ -85,6 +85,7 @@ $PALANG['pOverview_welcome'] = 'Sammanfattning för '; $PALANG['pOverview_alias_domain_aliases'] = 'Domänalias'; $PALANG['pOverview_alias_address'] = 'Från'; $PALANG['active'] = 'Aktiv'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[och %s mer...]'; $PALANG['pOverview_mailbox_username'] = 'E-post'; $PALANG['name'] = 'Namn'; diff --git a/languages/tr.lang b/languages/tr.lang index 1afed162..a4e9379a 100644 --- a/languages/tr.lang +++ b/languages/tr.lang @@ -82,6 +82,7 @@ $PALANG['pOverview_welcome'] = 'Genel Bilgiler: '; $PALANG['pOverview_alias_domain_aliases'] = 'Alias Domainleri'; $PALANG['pOverview_alias_address'] = 'Kimden'; $PALANG['active'] = 'Aktif'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[ve %s daha fazla...]'; $PALANG['pOverview_mailbox_username'] = 'E-posta'; $PALANG['name'] = 'İsim'; diff --git a/languages/tw.lang b/languages/tw.lang index e0e0fc50..0d833957 100644 --- a/languages/tw.lang +++ b/languages/tw.lang @@ -83,6 +83,7 @@ $PALANG['pOverview_welcome'] = '瀏覽 '; $PALANG['pOverview_alias_domain_aliases'] = '網域名'; $PALANG['pOverview_alias_address'] = '前往'; $PALANG['active'] = '生效'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[and %s more...]'; # XXX $PALANG['pOverview_mailbox_username'] = '郵件地址'; $PALANG['name'] = '姓名'; diff --git a/languages/ua.lang b/languages/ua.lang index 35b7d8fd..12ef045a 100644 --- a/languages/ua.lang +++ b/languages/ua.lang @@ -84,6 +84,7 @@ $PALANG['pOverview_welcome'] = 'Огляд для '; $PALANG['pOverview_alias_domain_aliases'] = 'Псевдоними (аліаси) доменів'; $PALANG['pOverview_alias_address'] = 'Від кого'; $PALANG['active'] = 'Активний'; +$PALANG['smtp_active'] = 'Smtp'; $PALANG['and_x_more'] = '[та ще %s...]'; $PALANG['pOverview_mailbox_username'] = 'Поштова адреса (Email)'; $PALANG['name'] = 'Ім'я'; diff --git a/model/MailboxHandler.php b/model/MailboxHandler.php index ca7ab678..105fbef0 100644 --- a/model/MailboxHandler.php +++ b/model/MailboxHandler.php @@ -16,6 +16,7 @@ class MailboxHandler extends PFAHandler protected function initStruct() { $passwordReset = (int) ( Config::bool('forgotten_user_password_reset') && !Config::read('mailbox_postpassword_script') ); + $smtpActiveFlag = (int) ( Config::bool('smtp_active_flag') ); $reset_by_sms = 0; if ($passwordReset && Config::read_string('sms_send_function')) { $reset_by_sms = 1; @@ -50,6 +51,7 @@ protected function initStruct() # read_from_db_postprocess() also sets 'quotabytes' for use in init() # TODO: read used quota from quota/quota2 table 'active' => pacol(1, 1, 1, 'bool', 'active' , '' , 1 ), + 'smtp_active' => pacol($smtpActiveFlag, $smtpActiveFlag,0, 'bool', 'smtp_active' , '' , 1 ), 'welcome_mail' => pacol($this->new, $this->new, 0, 'bool', 'pCreate_mailbox_mail' , '' , 1, /*options*/ array(), /*not_in_db*/ 1 ), diff --git a/public/editactive.php b/public/editactive.php index 2034ef7c..14194351 100644 --- a/public/editactive.php +++ b/public/editactive.php @@ -28,7 +28,9 @@ $id = safeget('id'); $table = safeget('table'); +$field = safeget('field'); $active = safeget('active'); +if ($field === '') $field = 'active'; if (empty($table)) { die("Invalid table name given"); @@ -47,11 +49,21 @@ authentication_require_role($formconf['required_role']); if ($handler->init($id)) { # errors will be displayed as last step anyway, no need for duplicated code ;-) + if ($table == 'mailbox') { + if ($field != 'active' && $field != 'smtp_active') { + die(Config::Lang('invalid_parameter')); + } + } else { + if ($field != 'active') { + die(Config::Lang('invalid_parameter')); + } + } + if ($active != '0' && $active != '1') { die(Config::Lang('invalid_parameter')); } - if ($handler->set(array('active' => $active))) { + if ($handler->set(array($field => $active))) { $handler->save(); } } diff --git a/templates/list-virtual_mailbox.tpl b/templates/list-virtual_mailbox.tpl index b2c43f15..d00dd553 100644 --- a/templates/list-virtual_mailbox.tpl +++ b/templates/list-virtual_mailbox.tpl @@ -15,6 +15,7 @@ {if $CONF.quota===YES}{$PALANG.pOverview_mailbox_quota}{/if} {$PALANG.last_modified} {$PALANG.active} + {if $CONF.smtp_active_flag===YES}{$PALANG.smtp_active}{/if} {assign var="colspan" value="`$colspan-6`"}   @@ -76,6 +77,10 @@ {$item.modified} {if $item.active==1} {$PALANG.YES}{else} {$PALANG.NO}{/if} + {if $CONF.smtp_active_flag===YES} + {if $item.smtp_active==1} {$PALANG.YES}{else} {$PALANG.NO}{/if} + {/if} {if $CONF.vacation_control_admin===YES && $CONF.vacation===YES} {if $item.v_active!==-1} {if $item.v_active==1} From 8a314079bd0ff8d86fffaf253d3de77de9fc195b Mon Sep 17 00:00:00 2001 From: John Fawcett Date: Tue, 9 Jan 2024 23:15:57 +0100 Subject: [PATCH 2/3] Updates to POSTFIX_CONF.txt for configuration of authenticaiton with dovecot sasl and configuration of Postfix submission service --- DOCUMENTS/POSTFIX_CONF.txt | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/DOCUMENTS/POSTFIX_CONF.txt b/DOCUMENTS/POSTFIX_CONF.txt index 02fba9f1..f76c1c58 100644 --- a/DOCUMENTS/POSTFIX_CONF.txt +++ b/DOCUMENTS/POSTFIX_CONF.txt @@ -32,6 +32,36 @@ transport_maps = proxy:mysql:/etc/postfix/sql/mysql_transport_maps.cf virtual_mailbox_base = /var/mail/vmail # or whereever you want to store the mails +If you are using dovecot sasl for authentication you can configure Postfix main.cf: + +smtpd_sasl_path = private/auth +smtpd_sasl_type = dovecot +smtpd_sasl_authenticated_header = yes + +If using the Postfix submission service you could configure as follows in master.cf + +submission inet n - n - - smtpd + -o syslog_name=postfix/submission + -o stress= + -o smtpd_sasl_auth_enable=yes + -o smtpd_delay_reject=no + -o smtpd_etrn_restrictions=reject + -o smtpd_helo_restrictions= + -o smtpd_client_restrictions=submission_client_checks + -o smtpd_sender_restrictions=submission_sender_checks + -o smtpd_recipient_restrictions=submission_recipient_checks + -o smtpd_tls_security_level=encrypt + +and in main.cf: + +smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql-login_maps_dovecot.cf +smtpd_sasl_auth_enable = no +smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination +smtpd_restriction_classes = submission_recipient_checks, submission_sender_checks +submission_recipient_checks = reject_unknown_recipient_domain,permit_sasl_authenticated,reject_unauth_destination +submission_sender_checks = reject_sender_login_mismatch +submission_client_checks = permit_sasl_authenticated,reject_unauth_destination + Where you chose to store the .cf files doesn't really matter, but they will have database passwords stored in plain text so they should be readable only by user postfix, or in a directory only accessible to user postfix. From c700f3c9c726a4e956fb1cd6caee375825808409 Mon Sep 17 00:00:00 2001 From: David Goodwin Date: Wed, 10 Jan 2024 10:02:07 +0000 Subject: [PATCH 3/3] update mailbox - add smtp_active for #796 --- public/upgrade.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/upgrade.php b/public/upgrade.php index 6302c037..e8c2cc0d 100644 --- a/public/upgrade.php +++ b/public/upgrade.php @@ -2349,3 +2349,7 @@ function upgrade_1849_sqlite() ) "); } + +function upgrade_1850() { + _db_add_field('mailbox', 'smtp_active', 'int DEFAULT 1'); +}