[Web] Some changes

[SOGo] Allow to not spawn SOGo but an idling shell
[Rspamd] Remove X-CSA-Complaints from bulk headers...
master
andryyy 2020-04-27 17:27:47 +02:00
parent 0d4ba462c4
commit d392257289
29 changed files with 151 additions and 39 deletions

View File

@ -258,4 +258,10 @@ else
rm /etc/cron.d/sogo rm /etc/cron.d/sogo
fi fi
if [[ "${SKIP_SOGO}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
echo "SKIP_SOGO=y, skipping SOGo..."
sleep 365d
exit 0
fi
exec gosu sogo /usr/sbin/sogod exec gosu sogo /usr/sbin/sogod

View File

@ -770,6 +770,7 @@ PID=$!
echo "Spawned phpfpm_checks with PID ${PID}" echo "Spawned phpfpm_checks with PID ${PID}"
BACKGROUND_TASKS+=(${PID}) BACKGROUND_TASKS+=(${PID})
if [[ "${SKIP_SOGO}" =~ ^([nN][oO]|[nN])+$ ]]; then
( (
while true; do while true; do
if ! sogo_checks; then if ! sogo_checks; then
@ -781,6 +782,7 @@ done
PID=$! PID=$!
echo "Spawned sogo_checks with PID ${PID}" echo "Spawned sogo_checks with PID ${PID}"
BACKGROUND_TASKS+=(${PID}) BACKGROUND_TASKS+=(${PID})
fi
if [ ${CHECK_UNBOUND} -eq 1 ]; then if [ ${CHECK_UNBOUND} -eq 1 ]; then
( (

View File

@ -1,4 +1,3 @@
/X-CSA-Complaints: .*/i
/X-EMV-Platform; .*/i /X-EMV-Platform; .*/i
/.*nur-1-click*/i /.*nur-1-click*/i
/.*episerver.*/i /.*episerver.*/i

View File

@ -96,6 +96,7 @@ SIEVE_HOST {
type = "ip"; type = "ip";
map = "$LOCAL_CONFDIR/custom/dovecot_trusted.map"; map = "$LOCAL_CONFDIR/custom/dovecot_trusted.map";
symbols_set = ["SIEVE_HOST"]; symbols_set = ["SIEVE_HOST"];
score = -15;
} }
RSPAMD_HOST { RSPAMD_HOST {
@ -150,3 +151,10 @@ BAD_LANG {
regexp = true; regexp = true;
score = 5.0; score = 5.0;
} }
BAZAR_ABUSE_CH {
type = "selector";
selector = "attachments(hex,sha256)";
map = "https://bazaar.abuse.ch/export/txt/md5/recent/";
score = 10.0;
}

View File

@ -37,6 +37,10 @@ if (strpos($data, 'autodiscover/outlook/responseschema') !== false) {
} }
} }
if (getenv('SKIP_SOGO') == "y") {
$autodiscover_config['autodiscoverType'] = 'imap';
}
//$dsn = $database_type . ":host=" . $database_host . ";dbname=" . $database_name; //$dsn = $database_type . ":host=" . $database_host . ";dbname=" . $database_name;
$dsn = $database_type . ":unix_socket=" . $database_sock . ";dbname=" . $database_name; $dsn = $database_type . ":unix_socket=" . $database_sock . ";dbname=" . $database_name;
$opt = [ $opt = [
@ -176,6 +180,9 @@ if ($login_role === "user") {
<UsePOPAuth>on</UsePOPAuth> <UsePOPAuth>on</UsePOPAuth>
<SMTPLast>off</SMTPLast> <SMTPLast>off</SMTPLast>
</Protocol> </Protocol>
<?php
if (getenv('SKIP_SOGO') != "y") {
?>
<Protocol> <Protocol>
<Type>CalDAV</Type> <Type>CalDAV</Type>
<Server>https://<?=$autodiscover_config['caldav']['server'];?><?php if ($autodiscover_config['caldav']['port'] != 443) echo ':'.$autodiscover_config['caldav']['port']; ?>/SOGo/dav/<?=$email;?>/</Server> <Server>https://<?=$autodiscover_config['caldav']['server'];?><?php if ($autodiscover_config['caldav']['port'] != 443) echo ':'.$autodiscover_config['caldav']['port']; ?>/SOGo/dav/<?=$email;?>/</Server>
@ -188,6 +195,9 @@ if ($login_role === "user") {
<DomainRequired>off</DomainRequired> <DomainRequired>off</DomainRequired>
<LoginName><?=$email;?></LoginName> <LoginName><?=$email;?></LoginName>
</Protocol> </Protocol>
<?php
}
?>
</Account> </Account>
</Response> </Response>
<?php <?php

View File

@ -48,11 +48,17 @@ if (isset($_SESSION['mailcow_cc_role'])) {
<div class="checkbox"> <div class="checkbox">
<label><input class="goto_checkbox" type="checkbox" value="1" name="goto_ham" <?= ($result['goto'] == "ham@localhost") ? "checked" : null; ?>> <?=$lang['add']['goto_ham'];?></label> <label><input class="goto_checkbox" type="checkbox" value="1" name="goto_ham" <?= ($result['goto'] == "ham@localhost") ? "checked" : null; ?>> <?=$lang['add']['goto_ham'];?></label>
</div> </div>
<?php
if (getenv('SKIP_SOGO') != "y") {
?>
<hr> <hr>
<div class="checkbox"> <div class="checkbox">
<label><input type="checkbox" value="1" name="sogo_visible" <?php if (isset($result['sogo_visible_int']) && $result['sogo_visible_int']=="1") { echo "checked"; }; ?>> <?=$lang['edit']['sogo_visible'];?></label> <label><input type="checkbox" value="1" name="sogo_visible" <?php if (isset($result['sogo_visible_int']) && $result['sogo_visible_int']=="1") { echo "checked"; }; ?>> <?=$lang['edit']['sogo_visible'];?></label>
</div> </div>
<p class="help-block"><?=$lang['edit']['sogo_visible_info'];?></p> <p class="help-block"><?=$lang['edit']['sogo_visible_info'];?></p>
<?php
}
?>
</div> </div>
</div> </div>
<hr> <hr>
@ -719,6 +725,9 @@ if (isset($_SESSION['mailcow_cc_role'])) {
</div> </div>
</div> </div>
</div> </div>
<?php
if (getenv('SKIP_SOGO') != "y") {
?>
<div data-acl="<?=$_SESSION['acl']['sogo_access'];?>" class="form-group"> <div data-acl="<?=$_SESSION['acl']['sogo_access'];?>" class="form-group">
<div class="col-sm-offset-2 col-sm-10"> <div class="col-sm-offset-2 col-sm-10">
<div class="checkbox"> <div class="checkbox">
@ -727,6 +736,9 @@ if (isset($_SESSION['mailcow_cc_role'])) {
</div> </div>
</div> </div>
</div> </div>
<?php
}
?>
<div class="form-group"> <div class="form-group">
<div class="col-sm-offset-2 col-sm-10"> <div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-success" data-action="edit_selected" data-id="editmailbox" data-item="<?=htmlspecialchars($result['username']);?>" data-api-url='edit/mailbox' data-api-attr='{}' href="#"><?=$lang['edit']['save'];?></button> <button class="btn btn-success" data-action="edit_selected" data-id="editmailbox" data-item="<?=htmlspecialchars($result['username']);?>" data-api-url='edit/mailbox' data-api-attr='{}' href="#"><?=$lang['edit']['save'];?></button>

View File

@ -108,7 +108,7 @@
<li<?= (preg_match("/quarantine/i", $_SERVER['REQUEST_URI'])) ? ' class="active"' : ''; ?>><a href="/quarantine"><span class="glyphicon glyphicon-briefcase"></span> <?= $lang['header']['quarantine']; ?></a></li> <li<?= (preg_match("/quarantine/i", $_SERVER['REQUEST_URI'])) ? ' class="active"' : ''; ?>><a href="/quarantine"><span class="glyphicon glyphicon-briefcase"></span> <?= $lang['header']['quarantine']; ?></a></li>
<?php <?php
} }
if ($_SESSION['mailcow_cc_role'] == 'admin') { if ($_SESSION['mailcow_cc_role'] == 'admin' && getenv('SKIP_SOGO') != "y") {
?> ?>
<li><a href data-toggle="modal" data-container="sogo-mailcow" data-target="#RestartContainer"><span class="glyphicon glyphicon-refresh"></span> <?= $lang['header']['restart_sogo']; ?></a></li> <li><a href data-toggle="modal" data-container="sogo-mailcow" data-target="#RestartContainer"><span class="glyphicon glyphicon-refresh"></span> <?= $lang['header']['restart_sogo']; ?></a></li>
<?php <?php

View File

@ -34,6 +34,7 @@ if ($https_port === FALSE) {
$autodiscover_config = array( $autodiscover_config = array(
// General autodiscover service type: "activesync" or "imap" // General autodiscover service type: "activesync" or "imap"
// emClient uses autodiscover, but does not support ActiveSync. mailcow excludes emClient from ActiveSync. // emClient uses autodiscover, but does not support ActiveSync. mailcow excludes emClient from ActiveSync.
// With SOGo disabled, the type will always fallback to imap. CalDAV and CardDAV will be excluded, too.
'autodiscoverType' => 'activesync', 'autodiscoverType' => 'activesync',
// If autodiscoverType => activesync, also use ActiveSync (EAS) for Outlook desktop clients (>= Outlook 2013 on Windows) // If autodiscoverType => activesync, also use ActiveSync (EAS) for Outlook desktop clients (>= Outlook 2013 on Windows)
// Outlook for Mac does not support ActiveSync // Outlook for Mac does not support ActiveSync

View File

@ -34,11 +34,11 @@ $_SESSION['index_query_string'] = $_SERVER['QUERY_STRING'];
<div class="text-center mailcow-logo"><img src="<?=($main_logo = customize('get', 'main_logo')) ? $main_logo : '/img/cow_mailcow.svg';?>" alt="mailcow"></div> <div class="text-center mailcow-logo"><img src="<?=($main_logo = customize('get', 'main_logo')) ? $main_logo : '/img/cow_mailcow.svg';?>" alt="mailcow"></div>
<legend><?= isset($_SESSION['oauth2_request']) ? $lang['oauth2']['authorize_app'] : $UI_TEXTS['main_name'];?></legend> <legend><?= isset($_SESSION['oauth2_request']) ? $lang['oauth2']['authorize_app'] : $UI_TEXTS['main_name'];?></legend>
<?php <?php
if (strpos($_SESSION['index_query_string'], 'mobileconfig') !== false): if (strpos($_SESSION['index_query_string'], 'mobileconfig') !== false) {
?> ?>
<div class="alert alert-info"><?= $lang['login']['mobileconfig_info']; ?></div> <div class="alert alert-info"><?= $lang['login']['mobileconfig_info']; ?></div>
<?php <?php
endif; }
?> ?>
<form method="post" autofill="off"> <form method="post" autofill="off">
<div class="form-group"> <div class="form-group">
@ -57,55 +57,54 @@ $_SESSION['index_query_string'] = $_SERVER['QUERY_STRING'];
</div> </div>
<div class="form-group"> <div class="form-group">
<button type="submit" class="btn btn-success" value="Login"><?= $lang['login']['login']; ?></button> <button type="submit" class="btn btn-success" value="Login"><?= $lang['login']['login']; ?></button>
<?php if(!isset($_SESSION['oauth2_request'])): ?> <?php if(!isset($_SESSION['oauth2_request'])) { ?>
<div class="btn-group pull-right"> <div class="btn-group pull-right">
<button type="button" <?=(isset($_SESSION['mailcow_locale']) && count($AVAILABLE_LANGUAGES) === 1) ? 'disabled="true"' : '' ?> class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <button type="button" <?=(isset($_SESSION['mailcow_locale']) && count($AVAILABLE_LANGUAGES) === 1) ? 'disabled="true"' : '' ?> class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="lang-sm lang-lbl" lang="<?= $_SESSION['mailcow_locale']; ?>"></span> <span class="caret"></span> <span class="lang-sm lang-lbl" lang="<?= $_SESSION['mailcow_locale']; ?>"></span> <span class="caret"></span>
</button> </button>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<?php <?php
foreach ($AVAILABLE_LANGUAGES as $language): foreach ($AVAILABLE_LANGUAGES as $language) {
?> ?>
<li<?= ($_SESSION['mailcow_locale'] == $language) ? ' class="active"' : ''; ?>><a href="?<?= http_build_query(array_merge($_GET, array('lang' => $language))) ?>"><span class="lang-xs lang-lbl-full" lang="<?= $language; ?>"></span></a></li> <li<?= ($_SESSION['mailcow_locale'] == $language) ? ' class="active"' : ''; ?>><a href="?<?= http_build_query(array_merge($_GET, array('lang' => $language))) ?>"><span class="lang-xs lang-lbl-full" lang="<?= $language; ?>"></span></a></li>
<?php <?php } ?>
endforeach;
?>
</ul> </ul>
</div> </div>
<?php endif ?> <?php } ?>
</div> </div>
</form> </form>
<?php <?php
if (isset($_SESSION['ldelay']) && $_SESSION['ldelay'] != '0'): if (isset($_SESSION['ldelay']) && $_SESSION['ldelay'] != '0') {
?> ?>
<p><div class="alert alert-info"><?= sprintf($lang['login']['delayed'], $_SESSION['ldelay']); ?></b></div></p> <p><div class="alert alert-info"><?= sprintf($lang['login']['delayed'], $_SESSION['ldelay']); ?></b></div></p>
<?php } ?>
<?php if(!isset($_SESSION['oauth2_request'])) { ?>
<legend><span class="glyphicon glyphicon-link" aria-hidden="true"></span> <?=$UI_TEXTS['apps_name'];?></legend>
<?php <?php
endif; if (!empty($MAILCOW_APPS)) {
?> foreach ($MAILCOW_APPS as $app) {
<?php if(!isset($_SESSION['oauth2_request'])): ?> if (getenv('SKIP_SOGO') == "y" && preg_match('/^\/SOGo/i', $app['link'])) { continue; }
<legend><span class="glyphicon glyphicon-link" aria-hidden="true"></span> <?=$UI_TEXTS['apps_name'];?></legend> ?>
<?php <a href="<?= htmlspecialchars($app['link']); ?>" role="button" style="margin-bottom:3pt" title="<?= htmlspecialchars($app['description']); ?>" class="btn btn-primary"><?= htmlspecialchars($app['name']); ?></a>&nbsp;
foreach ($MAILCOW_APPS as $app): <?php
?> }
<a href="<?= htmlspecialchars($app['link']); ?>" role="button" style="margin-bottom:3pt" title="<?= htmlspecialchars($app['description']); ?>" class="btn btn-primary"><?= htmlspecialchars($app['name']); ?></a>&nbsp; $app_links = customize('get', 'app_links');
<?php if (!empty($app_links)) {
endforeach; foreach ($app_links as $row) {
$app_links = customize('get', 'app_links'); foreach ($row as $key => $val) {
if (!empty($app_links)) { ?>
foreach ($app_links as $row) { <a href="<?= htmlspecialchars($val); ?>" role="button" style="margin-bottom:3pt" class="btn btn-primary"><?= htmlspecialchars($key); ?></a>&nbsp;
foreach ($row as $key => $val): <?php
?> }
<a href="<?= htmlspecialchars($val); ?>" role="button" style="margin-bottom:3pt" class="btn btn-primary"><?= htmlspecialchars($key); ?></a>&nbsp; }
<?php }
endforeach;
} }
} }
endif;
?> ?>
</div> </div>
</div> </div>
</div> </div>
<?php if(!isset($_SESSION['oauth2_request'])): ?> <?php if(!isset($_SESSION['oauth2_request'])) { ?>
<div class="col-md-offset-3 col-md-6"> <div class="col-md-offset-3 col-md-6">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
@ -113,19 +112,19 @@ $_SESSION['index_query_string'] = $_SERVER['QUERY_STRING'];
</div> </div>
<div id="collapse1" class="panel-collapse collapse"> <div id="collapse1" class="panel-collapse collapse">
<div class="panel-body"> <div class="panel-body">
<?php if ($UI_TEXTS['help_text']): ?> <?php if ($UI_TEXTS['help_text']) { ?>
<p><?=$UI_TEXTS['help_text'];?></p> <p><?=$UI_TEXTS['help_text'];?></p>
<?php else: ?> <?php } else { ?>
<p><span style="border-bottom: 1px dotted #999;"><?=$UI_TEXTS['main_name'];?></span></p> <p><span style="border-bottom: 1px dotted #999;"><?=$UI_TEXTS['main_name'];?></span></p>
<p><?= $lang['start']['mailcow_panel_detail']; ?></p> <p><?= $lang['start']['mailcow_panel_detail']; ?></p>
<p><span style="border-bottom: 1px dotted #999;"><?=$UI_TEXTS['apps_name'];?></span></p> <p><span style="border-bottom: 1px dotted #999;"><?=$UI_TEXTS['apps_name'];?></span></p>
<p><?= $lang['start']['mailcow_apps_detail']; ?></p> <p><?= $lang['start']['mailcow_apps_detail']; ?></p>
<?php endif; ?> <?php } ?>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<?php endif ?> <?php } ?>
</div> </div>
</div><!-- /.container --> </div><!-- /.container -->
<?php <?php

View File

@ -8,6 +8,7 @@
"add": { "add": {
"activate_filter_warn": "All other filters will be deactivated, when active is checked.", "activate_filter_warn": "All other filters will be deactivated, when active is checked.",
"active": "Actiu", "active": "Actiu",
"add": "Afegir",
"add_domain_only": "Afegir el domini", "add_domain_only": "Afegir el domini",
"add_domain_restart": "Afegir el domini i reiniciar SOGo", "add_domain_restart": "Afegir el domini i reiniciar SOGo",
"alias_address": "Dirección/es àlies:", "alias_address": "Dirección/es àlies:",
@ -292,6 +293,7 @@
"action": "Acció", "action": "Acció",
"activate": "Activar", "activate": "Activar",
"active": "Actiu", "active": "Actiu",
"add": "Afegir",
"add_alias": "Afegir àlies", "add_alias": "Afegir àlies",
"add_bcc_entry": "Afegir BCC map", "add_bcc_entry": "Afegir BCC map",
"add_domain": "Afegir domini", "add_domain": "Afegir domini",

View File

@ -25,6 +25,7 @@
"add": { "add": {
"activate_filter_warn": "Pokud je zaškrtlá volba \"Aktivní\", budou všechny ostatní filtry deaktivovány.", "activate_filter_warn": "Pokud je zaškrtlá volba \"Aktivní\", budou všechny ostatní filtry deaktivovány.",
"active": "Aktivní", "active": "Aktivní",
"add": "Přidat",
"add_domain_only": "Přidat doménu", "add_domain_only": "Přidat doménu",
"add_domain_restart": "Přidat doménu a restartovat SOGo", "add_domain_restart": "Přidat doménu a restartovat SOGo",
"alias_address": "Adresa/y aliasů", "alias_address": "Adresa/y aliasů",
@ -526,6 +527,7 @@
"action": "Akce", "action": "Akce",
"activate": "Zapnout", "activate": "Zapnout",
"active": "Aktivní", "active": "Aktivní",
"add": "Přidat",
"add_alias": "Přidat alias", "add_alias": "Přidat alias",
"add_bcc_entry": "Přidat BCC mapu", "add_bcc_entry": "Přidat BCC mapu",
"add_domain": "Přidat doménu", "add_domain": "Přidat doménu",

View File

@ -27,6 +27,7 @@
"add": { "add": {
"activate_filter_warn": "Alle anderen Filter diesen Typs werden deaktiviert, falls dieses Script aktiv markiert wird.", "activate_filter_warn": "Alle anderen Filter diesen Typs werden deaktiviert, falls dieses Script aktiv markiert wird.",
"active": "Aktiv", "active": "Aktiv",
"add": "Hinzufügen",
"add_domain_only": "Nur Domain hinzufügen", "add_domain_only": "Nur Domain hinzufügen",
"add_domain_restart": "Domain hinzufügen und SOGo neustarten", "add_domain_restart": "Domain hinzufügen und SOGo neustarten",
"alias_address": "Alias-Adresse(n)", "alias_address": "Alias-Adresse(n)",
@ -573,6 +574,7 @@
"action": "Aktion", "action": "Aktion",
"activate": "Aktivieren", "activate": "Aktivieren",
"active": "Aktiv", "active": "Aktiv",
"add": "Hinzufügen",
"add_alias": "Alias hinzufügen", "add_alias": "Alias hinzufügen",
"add_bcc_entry": "BCC-Eintrag hinzufügen", "add_bcc_entry": "BCC-Eintrag hinzufügen",
"add_domain": "Domain hinzufügen", "add_domain": "Domain hinzufügen",

View File

@ -27,6 +27,7 @@
"add": { "add": {
"activate_filter_warn": "All other filters will be deactivated, when active is checked.", "activate_filter_warn": "All other filters will be deactivated, when active is checked.",
"active": "Active", "active": "Active",
"add": "Add",
"add_domain_only": "Add domain only", "add_domain_only": "Add domain only",
"add_domain_restart": "Add domain and restart SOGo", "add_domain_restart": "Add domain and restart SOGo",
"alias_address": "Alias address/es", "alias_address": "Alias address/es",
@ -572,6 +573,7 @@
"action": "Action", "action": "Action",
"activate": "Activate", "activate": "Activate",
"active": "Active", "active": "Active",
"add": "Add",
"add_alias": "Add alias", "add_alias": "Add alias",
"add_bcc_entry": "Add BCC map", "add_bcc_entry": "Add BCC map",
"add_domain": "Add domain", "add_domain": "Add domain",

View File

@ -23,6 +23,7 @@
"add": { "add": {
"activate_filter_warn": "Todos los demás filtros se desactivarán cuando este filtro se active.", "activate_filter_warn": "Todos los demás filtros se desactivarán cuando este filtro se active.",
"active": "Activo", "active": "Activo",
"add": "Agregar",
"add_domain_only": "Agregar dominio solamente", "add_domain_only": "Agregar dominio solamente",
"add_domain_restart": "Agregar dominio y reiniciar SOGo", "add_domain_restart": "Agregar dominio y reiniciar SOGo",
"alias_address": "Dirección(es) alias:", "alias_address": "Dirección(es) alias:",
@ -465,6 +466,7 @@
"action": "Acción", "action": "Acción",
"activate": "Activar", "activate": "Activar",
"active": "Activo", "active": "Activo",
"add": "Agregar",
"add_alias": "Agregar alias", "add_alias": "Agregar alias",
"add_bcc_entry": "Añadir regla de BCC", "add_bcc_entry": "Añadir regla de BCC",
"add_domain": "Agregar dominio", "add_domain": "Agregar dominio",

View File

@ -25,6 +25,7 @@
"add": { "add": {
"activate_filter_warn": "Kaikki muut suodattimet deaktivoidaan, kun aktiivinen on valittu.", "activate_filter_warn": "Kaikki muut suodattimet deaktivoidaan, kun aktiivinen on valittu.",
"active": "Aktiivinen", "active": "Aktiivinen",
"add": "Lisää",
"add_domain_only": "Lisää vain verkkotunnus alue", "add_domain_only": "Lisää vain verkkotunnus alue",
"add_domain_restart": "Lisää verkkotunnus alue ja käynnistä SOGo uudelleen", "add_domain_restart": "Lisää verkkotunnus alue ja käynnistä SOGo uudelleen",
"alias_address": "Alias osoite", "alias_address": "Alias osoite",
@ -526,6 +527,7 @@
"action": "Toiminnot", "action": "Toiminnot",
"activate": "Aktivoi", "activate": "Aktivoi",
"active": "Aktiivinen", "active": "Aktiivinen",
"add": "Lisää",
"add_alias": "Lisää alias", "add_alias": "Lisää alias",
"add_bcc_entry": "Lisää piilo kopio kartta", "add_bcc_entry": "Lisää piilo kopio kartta",
"add_domain": "Lisää verkkotunnus alue", "add_domain": "Lisää verkkotunnus alue",

View File

@ -4,6 +4,7 @@
}, },
"add": { "add": {
"active": "Actif", "active": "Actif",
"add": "Ajouter",
"alias_address": "Adresse(s) alias", "alias_address": "Adresse(s) alias",
"alias_address_info": "<small>Adresse de courriel complète ou @exemple.com pour recevoir tous les messages d'un domaine (séparés par de virgules). <b>Domaines mailcow seulement</b></small>", "alias_address_info": "<small>Adresse de courriel complète ou @exemple.com pour recevoir tous les messages d'un domaine (séparés par de virgules). <b>Domaines mailcow seulement</b></small>",
"alias_domain": "Alias de domaine", "alias_domain": "Alias de domaine",
@ -240,6 +241,7 @@
"action": "Action", "action": "Action",
"activate": "Activer", "activate": "Activer",
"active": "Actif", "active": "Actif",
"add": "Ajouter",
"add_alias": "Ajouter un alias", "add_alias": "Ajouter un alias",
"add_domain": "Ajouter un domaine", "add_domain": "Ajouter un domaine",
"add_domain_alias": "Ajouter un alias de domaine", "add_domain_alias": "Ajouter un alias de domaine",

View File

@ -4,6 +4,7 @@
}, },
"add": { "add": {
"active": "Attiva", "active": "Attiva",
"add": "Aggiungi",
"alias_address": "Indirizzo alias/es:", "alias_address": "Indirizzo alias/es:",
"alias_address_info": "<small>Indirizzo e-mail completo/es @example.com, per catturare tutti i messaggi di un dominio (separati da virgola). <b>solo domini mailcow</b>.</small>", "alias_address_info": "<small>Indirizzo e-mail completo/es @example.com, per catturare tutti i messaggi di un dominio (separati da virgola). <b>solo domini mailcow</b>.</small>",
"alias_domain": "Dominio alias", "alias_domain": "Dominio alias",
@ -203,6 +204,7 @@
"action": "Azione", "action": "Azione",
"activate": "Attiva", "activate": "Attiva",
"active": "Attiva", "active": "Attiva",
"add": "Aggiungi",
"add_alias": "Aggiungi alias", "add_alias": "Aggiungi alias",
"add_domain": "Aggiungi Dominio", "add_domain": "Aggiungi Dominio",
"add_domain_alias": "Aggiungi alias Dominio", "add_domain_alias": "Aggiungi alias Dominio",

View File

@ -8,6 +8,7 @@
"add": { "add": {
"activate_filter_warn": "Visi pārējie filtri tiks deaktivizēti, kad aktīvs ir atzīmēts.", "activate_filter_warn": "Visi pārējie filtri tiks deaktivizēti, kad aktīvs ir atzīmēts.",
"active": "Aktīvs", "active": "Aktīvs",
"add": "Pievienot",
"add_domain_only": "Tikai pievienot domēnu", "add_domain_only": "Tikai pievienot domēnu",
"add_domain_restart": "Pievienot domēnu un restartēt SOGo", "add_domain_restart": "Pievienot domēnu un restartēt SOGo",
"alias_address": "Alias addrese/s", "alias_address": "Alias addrese/s",
@ -295,6 +296,7 @@
"action": "Rīcība", "action": "Rīcība",
"activate": "Activate", "activate": "Activate",
"active": "Aktīvs", "active": "Aktīvs",
"add": "Pievienot",
"add_alias": "Pievienot alias", "add_alias": "Pievienot alias",
"add_bcc_entry": "Pievienot BCC karti", "add_bcc_entry": "Pievienot BCC karti",
"add_domain": "Pievienot domēnu", "add_domain": "Pievienot domēnu",

View File

@ -27,6 +27,7 @@
"add": { "add": {
"activate_filter_warn": "Alle andere filters worden gedeactiveerd zolang deze geactiveerd is.", "activate_filter_warn": "Alle andere filters worden gedeactiveerd zolang deze geactiveerd is.",
"active": "Actief", "active": "Actief",
"add": "Toevoegen",
"add_domain_only": "Voeg alleen domein toe", "add_domain_only": "Voeg alleen domein toe",
"add_domain_restart": "Voeg domein toe en herstart SOGo", "add_domain_restart": "Voeg domein toe en herstart SOGo",
"alias_address": "Aliasadres(sen)", "alias_address": "Aliasadres(sen)",
@ -570,6 +571,7 @@
"action": "Handeling", "action": "Handeling",
"activate": "Activeer", "activate": "Activeer",
"active": "Actief", "active": "Actief",
"add": "Toevoegen",
"add_alias": "Voeg alias toe", "add_alias": "Voeg alias toe",
"add_bcc_entry": "Voeg BCC-map toe", "add_bcc_entry": "Voeg BCC-map toe",
"add_domain": "Voeg domein toe", "add_domain": "Voeg domein toe",

View File

@ -5,6 +5,7 @@
}, },
"add": { "add": {
"active": "Aktywny", "active": "Aktywny",
"add": "Dodaj",
"alias_address": "Alias/y:", "alias_address": "Alias/y:",
"alias_address_info": "<small>Pełny/e adres/y email lub @example.com, aby przejąć wszystkie wiadomości dla domeny (oddzielone przecinkami). <b>tylko domeny mailcow</b>.</small>", "alias_address_info": "<small>Pełny/e adres/y email lub @example.com, aby przejąć wszystkie wiadomości dla domeny (oddzielone przecinkami). <b>tylko domeny mailcow</b>.</small>",
"alias_domain": "Alias domeny", "alias_domain": "Alias domeny",
@ -219,6 +220,7 @@
"action": "Działanie", "action": "Działanie",
"activate": "Aktywuj", "activate": "Aktywuj",
"active": "Aktywny", "active": "Aktywny",
"add": "Dodaj",
"add_alias": "Dodaj alias", "add_alias": "Dodaj alias",
"add_domain": "Dodaj domenę", "add_domain": "Dodaj domenę",
"add_domain_alias": "Dodaj alias domeny", "add_domain_alias": "Dodaj alias domeny",

View File

@ -1,6 +1,7 @@
{ {
"add": { "add": {
"active": "Ativo", "active": "Ativo",
"add": "Salvar",
"alias_address": "Apelidos:", "alias_address": "Apelidos:",
"alias_address_info": "<small>Endereço de email completo ou @example.com, para uma conta coringa -catch all. (separado por vírgula). <b>apenas domínios cadastrados</b>.</small>", "alias_address_info": "<small>Endereço de email completo ou @example.com, para uma conta coringa -catch all. (separado por vírgula). <b>apenas domínios cadastrados</b>.</small>",
"alias_domain": "Encaminhamento de Domínio", "alias_domain": "Encaminhamento de Domínio",
@ -164,6 +165,7 @@
"mailbox": { "mailbox": {
"action": "Ação", "action": "Ação",
"active": "Ativo", "active": "Ativo",
"add": "Salvar",
"add_alias": "Adicionar Apelido", "add_alias": "Adicionar Apelido",
"add_domain": "Adicionar Domínio", "add_domain": "Adicionar Domínio",
"add_domain_alias": "Adicionar Apelido de Domínio", "add_domain_alias": "Adicionar Apelido de Domínio",

View File

@ -27,6 +27,7 @@
"add": { "add": {
"activate_filter_warn": "Активация этого фильтра отключит все остальные фильтры этого типа.", "activate_filter_warn": "Активация этого фильтра отключит все остальные фильтры этого типа.",
"active": "Активный", "active": "Активный",
"add": "Добавить",
"add_domain_only": "Только добавить домен", "add_domain_only": "Только добавить домен",
"add_domain_restart": "Добавить домен и перезапустить SOGo", "add_domain_restart": "Добавить домен и перезапустить SOGo",
"alias_address": "Псевдоним/ы", "alias_address": "Псевдоним/ы",
@ -571,6 +572,7 @@
"action": "Действия", "action": "Действия",
"activate": "Включить", "activate": "Включить",
"active": "Активный", "active": "Активный",
"add": "Добавить",
"add_alias": "Добавить псевдоним", "add_alias": "Добавить псевдоним",
"add_bcc_entry": "Добавить правило BBC", "add_bcc_entry": "Добавить правило BBC",
"add_domain": "Добавить домен", "add_domain": "Добавить домен",

View File

@ -27,6 +27,7 @@
"add": { "add": {
"activate_filter_warn": "Všetky ostatné filtre budú deaktivované, ak bude zaškrtnuté pole \"Aktívny\".", "activate_filter_warn": "Všetky ostatné filtre budú deaktivované, ak bude zaškrtnuté pole \"Aktívny\".",
"active": "Aktívne", "active": "Aktívne",
"add": "Pridať",
"add_domain_only": "Pridať iba doménu", "add_domain_only": "Pridať iba doménu",
"add_domain_restart": "Pridať doménu a reštartovať SOGo", "add_domain_restart": "Pridať doménu a reštartovať SOGo",
"alias_address": "Alias adresa/y", "alias_address": "Alias adresa/y",
@ -567,6 +568,7 @@
"action": "Akcia", "action": "Akcia",
"activate": "Aktivovať", "activate": "Aktivovať",
"active": "Aktívny", "active": "Aktívny",
"add": "Pridať",
"add_alias": "Pridať alias", "add_alias": "Pridať alias",
"add_bcc_entry": "Pridať BCC mapu", "add_bcc_entry": "Pridať BCC mapu",
"add_domain": "Pridať doménu", "add_domain": "Pridať doménu",

View File

@ -27,6 +27,7 @@
"add": { "add": {
"activate_filter_warn": "Alla andra filter av den här typen kommer inaktiveras om det här skriptet markeras som aktivt.", "activate_filter_warn": "Alla andra filter av den här typen kommer inaktiveras om det här skriptet markeras som aktivt.",
"active": "Aktiv", "active": "Aktiv",
"add": "Lägg till",
"add_domain_only": "Lägg bara till domänen", "add_domain_only": "Lägg bara till domänen",
"add_domain_restart": "Lägg till domänen, och starta om SOGo", "add_domain_restart": "Lägg till domänen, och starta om SOGo",
"alias_address": "Alias-adress/adresser", "alias_address": "Alias-adress/adresser",
@ -573,6 +574,7 @@
"action": "Åtgärd", "action": "Åtgärd",
"activate": "Aktivera", "activate": "Aktivera",
"active": "Aktiv", "active": "Aktiv",
"add": "Lägg till",
"add_alias": "Lägg till alias", "add_alias": "Lägg till alias",
"add_bcc_entry": "Lägg till ny koppling", "add_bcc_entry": "Lägg till ny koppling",
"add_domain": "Lägg till domän", "add_domain": "Lägg till domän",

View File

@ -93,7 +93,7 @@ $_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
</div> </div>
</div> </div>
<?php <?php
if (preg_match("/^([yY][eE][sS]|[yY])+$/", $_ENV["ALLOW_ADMIN_EMAIL_LOGIN"])): if (preg_match("/^([yY][eE][sS]|[yY])+$/", $_ENV["ALLOW_ADMIN_EMAIL_LOGIN"]) && getenv('SKIP_SOGO') != "y"):
?> ?>
<div class="panel-body help-block"> <div class="panel-body help-block">
<?=$lang['mailbox']['sogo_allow_admin_hint'];?> <?=$lang['mailbox']['sogo_allow_admin_hint'];?>
@ -256,9 +256,16 @@ $_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
<li><a data-action="edit_selected" data-id="alias" data-api-url='edit/alias' data-api-attr='{"active":"0"}' href="#"><?=$lang['mailbox']['deactivate'];?></a></li> <li><a data-action="edit_selected" data-id="alias" data-api-url='edit/alias' data-api-attr='{"active":"0"}' href="#"><?=$lang['mailbox']['deactivate'];?></a></li>
<li role="separator" class="divider"></li> <li role="separator" class="divider"></li>
<li><a data-action="delete_selected" data-id="alias" data-api-url='delete/alias' href="#"><?=$lang['mailbox']['remove'];?></a></li> <li><a data-action="delete_selected" data-id="alias" data-api-url='delete/alias' href="#"><?=$lang['mailbox']['remove'];?></a></li>
<?php
if (getenv('SKIP_SOGO') != "y") {
?>
<li role="separator" class="divider"></li> <li role="separator" class="divider"></li>
<li><a data-action="edit_selected" data-id="alias" data-api-url='edit/alias' data-api-attr='{"sogo_visible":"1"}' href="#"><?=$lang['mailbox']['sogo_visible_y'];?></a></li> <li><a data-action="edit_selected" data-id="alias" data-api-url='edit/alias' data-api-attr='{"sogo_visible":"1"}' href="#"><?=$lang['mailbox']['sogo_visible_y'];?></a></li>
<li><a data-action="edit_selected" data-id="alias" data-api-url='edit/alias' data-api-attr='{"sogo_visible":"0"}' href="#"><?=$lang['mailbox']['sogo_visible_n'];?></a></li> <li><a data-action="edit_selected" data-id="alias" data-api-url='edit/alias' data-api-attr='{"sogo_visible":"0"}' href="#"><?=$lang['mailbox']['sogo_visible_n'];?></a></li>
<?php
}
?>
</ul> </ul>
<a class="btn btn-sm btn-success" href="#" data-toggle="modal" data-target="#addAliasModal"><span class="glyphicon glyphicon-plus"></span> <?=$lang['mailbox']['add_alias'];?></a> <a class="btn btn-sm btn-success" href="#" data-toggle="modal" data-target="#addAliasModal"><span class="glyphicon glyphicon-plus"></span> <?=$lang['mailbox']['add_alias'];?></a>
</div> </div>

View File

@ -129,6 +129,9 @@ if (!isset($_SESSION['mailcow_cc_role'])) {
<input type="number" class="form-control" name="quota" value="10240" required> <input type="number" class="form-control" name="quota" value="10240" required>
</div> </div>
</div> </div>
<?php
if (getenv('SKIP_SOGO') != "y") {
?>
<div class="form-group"> <div class="form-group">
<div class="col-sm-offset-2 col-sm-10"> <div class="col-sm-offset-2 col-sm-10">
<div class="checkbox"> <div class="checkbox">
@ -137,6 +140,9 @@ if (!isset($_SESSION['mailcow_cc_role'])) {
</div> </div>
</div> </div>
</div> </div>
<?php
}
?>
<div class="form-group"> <div class="form-group">
<div class="col-sm-offset-2 col-sm-10"> <div class="col-sm-offset-2 col-sm-10">
<div class="checkbox"> <div class="checkbox">
@ -177,11 +183,29 @@ if (!isset($_SESSION['mailcow_cc_role'])) {
<hr> <hr>
<div class="form-group"> <div class="form-group">
<div class="col-sm-offset-2 col-sm-10"> <div class="col-sm-offset-2 col-sm-10">
<?php
if (getenv('SKIP_SOGO') != "y") {
?>
<button class="btn btn-default" data-action="add_item" data-id="add_domain" data-api-url='add/domain' data-api-attr='{}' href="#"><?=$lang['add']['add_domain_only'];?></button> <button class="btn btn-default" data-action="add_item" data-id="add_domain" data-api-url='add/domain' data-api-attr='{}' href="#"><?=$lang['add']['add_domain_only'];?></button>
<button class="btn btn-default" data-action="add_item" data-id="add_domain" data-api-url='add/domain' data-api-attr='{"restart_sogo":"1"}' href="#"><?=$lang['add']['add_domain_restart'];?></button> <button class="btn btn-default" data-action="add_item" data-id="add_domain" data-api-url='add/domain' data-api-attr='{"restart_sogo":"1"}' href="#"><?=$lang['add']['add_domain_restart'];?></button>
<?php
}
else {
?>
<button class="btn btn-default" data-action="add_item" data-id="add_domain" data-api-url='add/domain' data-api-attr='{}' href="#"><?=$lang['add']['add'];?></button>
<?php
}
?>
</div> </div>
</div> </div>
<?php
// TODO: Separate SOGo-related text
if (getenv('SKIP_SOGO') != "y") {
?>
<p><span class="glyphicon glyphicon-exclamation-sign text-danger"></span> <?=$lang['add']['post_domain_add'];?></p> <p><span class="glyphicon glyphicon-exclamation-sign text-danger"></span> <?=$lang['add']['post_domain_add'];?></p>
<?php
}
?>
</form> </form>
</div> </div>
</div> </div>
@ -289,11 +313,17 @@ if (!isset($_SESSION['mailcow_cc_role'])) {
<div class="checkbox"> <div class="checkbox">
<label><input class="goto_checkbox" type="checkbox" value="1" name="goto_ham"> <?=$lang['add']['goto_ham'];?></label> <label><input class="goto_checkbox" type="checkbox" value="1" name="goto_ham"> <?=$lang['add']['goto_ham'];?></label>
</div> </div>
<?php
if (getenv('SKIP_SOGO') != "y") {
?>
<hr> <hr>
<div class="checkbox"> <div class="checkbox">
<label><input type="checkbox" value="1" name="sogo_visible" checked> <?=$lang['edit']['sogo_visible'];?></label> <label><input type="checkbox" value="1" name="sogo_visible" checked> <?=$lang['edit']['sogo_visible'];?></label>
</div> </div>
<p class="help-block"><?=$lang['edit']['sogo_visible_info'];?></p> <p class="help-block"><?=$lang['edit']['sogo_visible_info'];?></p>
<?php
}
?>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">

View File

@ -148,6 +148,7 @@ services:
- COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-mailcow-dockerized} - COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
- SKIP_SOLR=${SKIP_SOLR:-y} - SKIP_SOLR=${SKIP_SOLR:-y}
- SKIP_CLAMD=${SKIP_CLAMD:-n} - SKIP_CLAMD=${SKIP_CLAMD:-n}
- SKIP_SOGO=${SKIP_SOGO:-n}
- ALLOW_ADMIN_EMAIL_LOGIN=${ALLOW_ADMIN_EMAIL_LOGIN:-n} - ALLOW_ADMIN_EMAIL_LOGIN=${ALLOW_ADMIN_EMAIL_LOGIN:-n}
- MASTER=${MASTER:-y} - MASTER=${MASTER:-y}
restart: always restart: always
@ -157,7 +158,7 @@ services:
- phpfpm - phpfpm
sogo-mailcow: sogo-mailcow:
image: mailcow/sogo:1.73 image: mailcow/sogo:1.74
environment: environment:
- DBNAME=${DBNAME} - DBNAME=${DBNAME}
- DBUSER=${DBUSER} - DBUSER=${DBUSER}
@ -169,6 +170,7 @@ services:
- ALLOW_ADMIN_EMAIL_LOGIN=${ALLOW_ADMIN_EMAIL_LOGIN:-n} - ALLOW_ADMIN_EMAIL_LOGIN=${ALLOW_ADMIN_EMAIL_LOGIN:-n}
- IPV4_NETWORK=${IPV4_NETWORK:-172.22.1} - IPV4_NETWORK=${IPV4_NETWORK:-172.22.1}
- SOGO_EXPIRE_SESSION=${SOGO_EXPIRE_SESSION:-480} - SOGO_EXPIRE_SESSION=${SOGO_EXPIRE_SESSION:-480}
- SKIP_SOGO=${SKIP_SOGO:-n}
- MASTER=${MASTER:-y} - MASTER=${MASTER:-y}
- REDIS_SLAVEOF_IP=${REDIS_SLAVEOF_IP:-} - REDIS_SLAVEOF_IP=${REDIS_SLAVEOF_IP:-}
- REDIS_SLAVEOF_PORT=${REDIS_SLAVEOF_PORT:-} - REDIS_SLAVEOF_PORT=${REDIS_SLAVEOF_PORT:-}
@ -189,7 +191,7 @@ services:
- sogo - sogo
dovecot-mailcow: dovecot-mailcow:
image: mailcow/dovecot:1.120 image: mailcow/dovecot:1.121
depends_on: depends_on:
- mysql-mailcow - mysql-mailcow
dns: dns:
@ -394,7 +396,7 @@ services:
- /lib/modules:/lib/modules:ro - /lib/modules:/lib/modules:ro
watchdog-mailcow: watchdog-mailcow:
image: mailcow/watchdog:1.74 image: mailcow/watchdog:1.75
# Debug # Debug
#command: /watchdog.sh #command: /watchdog.sh
dns: dns:
@ -423,6 +425,7 @@ services:
- CHECK_UNBOUND=${CHECK_UNBOUND:-1} - CHECK_UNBOUND=${CHECK_UNBOUND:-1}
- SKIP_CLAMD=${SKIP_CLAMD:-n} - SKIP_CLAMD=${SKIP_CLAMD:-n}
- SKIP_LETS_ENCRYPT=${SKIP_LETS_ENCRYPT:-n} - SKIP_LETS_ENCRYPT=${SKIP_LETS_ENCRYPT:-n}
- SKIP_SOGO=${SKIP_SOGO:-n}
- HTTPS_PORT=${HTTPS_PORT:-443} - HTTPS_PORT=${HTTPS_PORT:-443}
- REDIS_SLAVEOF_IP=${REDIS_SLAVEOF_IP:-} - REDIS_SLAVEOF_IP=${REDIS_SLAVEOF_IP:-}
- REDIS_SLAVEOF_PORT=${REDIS_SLAVEOF_PORT:-} - REDIS_SLAVEOF_PORT=${REDIS_SLAVEOF_PORT:-}

View File

@ -218,6 +218,10 @@ SKIP_HTTP_VERIFICATION=n
SKIP_CLAMD=${SKIP_CLAMD} SKIP_CLAMD=${SKIP_CLAMD}
# Skip SOGo: Will disable SOGo integration and therefore webmail, DAV protocols and ActiveSync support (experimental) - y/n
SKIP_SOGO=n
# Skip Solr on low-memory systems or if you do not want to store a readable index of your mails in solr-vol-1. # Skip Solr on low-memory systems or if you do not want to store a readable index of your mails in solr-vol-1.
SKIP_SOLR=${SKIP_SOLR} SKIP_SOLR=${SKIP_SOLR}

View File

@ -169,6 +169,7 @@ if cp --help 2>&1 | head -n 1 | grep -q -i "busybox"; then echo "BusybBox cp det
CONFIG_ARRAY=( CONFIG_ARRAY=(
"SKIP_LETS_ENCRYPT" "SKIP_LETS_ENCRYPT"
"SKIP_SOGO"
"USE_WATCHDOG" "USE_WATCHDOG"
"WATCHDOG_NOTIFY_EMAIL" "WATCHDOG_NOTIFY_EMAIL"
"WATCHDOG_NOTIFY_BAN" "WATCHDOG_NOTIFY_BAN"