From c2432ef28f784e7217e8c402cbf3a3ab3b524509 Mon Sep 17 00:00:00 2001 From: Samy Date: Tue, 8 Jan 2019 10:20:48 +0100 Subject: [PATCH 1/5] Fixed typo in lang.de.php --- data/web/lang/lang.de.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/web/lang/lang.de.php b/data/web/lang/lang.de.php index 29e870de..e4450b96 100644 --- a/data/web/lang/lang.de.php +++ b/data/web/lang/lang.de.php @@ -698,7 +698,7 @@ $lang['debug']['log_info'] = '

mailcow in-memory Logs werden in Redis L
In-memory Logs sind vergänglich und nicht zur ständigen Aufbewahrung bestimmt. Alle Anwendungen, die in-memory protokollieren, schreiben ebenso in den Docker Daemon.
Das in-memory Protokoll versteht sich als schnelle Übersicht zum Debugging eines Containers, für komplexere Protokolle sollte der Docker Daemon konsultiert werden.

Externe Logs werden via API externer Applikationen bezogen.

-

Statische Logs sind weitesgehend Aktivitätsprotokolle, die nicht in den Docker Daemon geschrieben werden, jedoch permanent verfügbar sein müssen (ausgeschloßen API Logs).

'; +

Statische Logs sind weitestgehend Aktivitätsprotokolle, die nicht in den Docker Daemon geschrieben werden, jedoch permanent verfügbar sein müssen (ausgeschloßen API Logs).

'; $lang['debug']['in_memory_logs'] = 'In-memory Logs'; $lang['debug']['external_logs'] = 'Externe Logs'; From be44ca019d55ae7767b7ef8572b9a6e21a8343ee Mon Sep 17 00:00:00 2001 From: James Smith Date: Thu, 17 Jan 2019 21:23:24 +0000 Subject: [PATCH 2/5] Fix hard-coded SKIP_CLAMD --- generate_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generate_config.sh b/generate_config.sh index bb121554..0820816d 100755 --- a/generate_config.sh +++ b/generate_config.sh @@ -181,7 +181,7 @@ SKIP_IP_CHECK=n # Skip ClamAV (clamd-mailcow) anti-virus (Rspamd will auto-detect a missing ClamAV container) - y/n -SKIP_CLAMD=n +SKIP_CLAMD=${SKIP_CLAMD} # Skip Solr on low-memory systems SKIP_SOLR=${SKIP_SOLR} From 630bce5f299862a1bb6cef42c4155daddc035093 Mon Sep 17 00:00:00 2001 From: Dirk Weise Date: Fri, 18 Jan 2019 17:36:30 +0100 Subject: [PATCH 3/5] imapsync: Connect to database via socket MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make the imapsync script connect to mysql via socket and not tcp like all other services do. Reasoning: consistency. 🤓 And in my case the database does not listen on tcp; just on the socket. --- data/Dockerfiles/dovecot/imapsync_cron.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/Dockerfiles/dovecot/imapsync_cron.pl b/data/Dockerfiles/dovecot/imapsync_cron.pl index 1976f8ec..1ce46c4c 100755 --- a/data/Dockerfiles/dovecot/imapsync_cron.pl +++ b/data/Dockerfiles/dovecot/imapsync_cron.pl @@ -31,7 +31,7 @@ $DBUSER = ''; $DBPASS = ''; $run_dir="/tmp"; -$dsn = "DBI:mysql:database=" . $DBNAME . ";host=mysql"; +$dsn = "DBI:mysql:database=" . $DBNAME . ";mysql_socket=/var/run/mysqld/mysqld.sock"; $lock_file = $run_dir . "/imapsync_busy"; $lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 1); $lockmgr->lock($lock_file) || die "can't lock ${lock_file}"; From 77111353ba7449f35798f2e2b6d28ee06a0d52e8 Mon Sep 17 00:00:00 2001 From: Geitenijs <40541903+Geitenijs@users.noreply.github.com> Date: Fri, 18 Jan 2019 18:06:19 +0100 Subject: [PATCH 4/5] Update lang.nl.php --- data/web/lang/lang.nl.php | 58 +++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/data/web/lang/lang.nl.php b/data/web/lang/lang.nl.php index 240fcab5..9c9fd6b0 100644 --- a/data/web/lang/lang.nl.php +++ b/data/web/lang/lang.nl.php @@ -33,6 +33,11 @@ $lang['success']['verified_u2f_login'] = "U2F succesvol geverifieerd"; $lang['success']['verified_yotp_login'] = "Yubico OTP succesvol geverifieerd"; $lang['danger']['yotp_verification_failed'] = "Yubico OTP-verificatie mislukt: %s"; $lang['danger']['ip_list_empty'] = "Lijst met toegestane IP-adressen dient ingevuld te worden"; +$lang['danger']['invalid_destination'] = "Formaat van bestemming is ongeldig"; +$lang['danger']['invalid_nexthop'] = "Formaat van nexthop is ongeldig"; +$lang['danger']['invalid_nexthop_authenticated'] = "Er bestaat al een nexthop met andere inloggegevens. Pas deze gegevens voor de reeds bestaande nexthop eerst aan."; +$lang['danger']['next_hop_interferes'] = "%s interfereert met nexthop %s"; +$lang['danger']['next_hop_interferes_any'] = "Een bestaande nexthop interfereert met %s"; $lang['danger']['rspamd_ui_pw_length'] = "Rspamd-wachtwoord moet minstens 6 tekens lang zijn"; $lang['success']['rspamd_ui_pw_set'] = "Rspamd-wachtwoord succesvol ingesteld"; $lang['success']['queue_command_success'] = "Opdracht succesvol voltooid"; @@ -69,7 +74,7 @@ $lang['success']['settings_map_added'] = "Instellingen toegevoegd"; $lang['danger']['settings_map_invalid'] = "Instellingen ongeldig"; $lang['danger']['settings_map_removed'] = "Instellingen verwijderd: %s"; $lang['danger']['invalid_host'] = "Ongeldige host gespecificeerd: %s"; -$lang['danger']['relayhost_invalid'] = "Relayhost %s is ongeldig"; +$lang['danger']['relayhost_invalid'] = "Invoer %s is ongeldig"; $lang['success']['saved_settings'] = "Instellingen opgeslagen"; $lang['success']['db_init_complete'] = "Database-initialisatie voltooid"; @@ -257,7 +262,7 @@ $lang['header']['user_settings'] = 'Gebruikersinstellingen'; $lang['header']['quarantine'] = "Quarantaine"; $lang['header']['debug'] = "Systeeminformatie"; $lang['quarantine']['disabled_by_config'] = "De huidige systeemconfiguratie deactiveert de quarantainefunctionaliteit."; -$lang['mailbox']['tls_policy_maps'] = 'Versleutelingsbeleid'; +$lang['mailbox']['tls_policy_maps'] = 'Globaal versleutelingsbeleid'; $lang['mailbox']['tls_policy_maps_long'] = 'Uitgaand versleutelingsbeleid'; $lang['mailbox']['tls_policy_maps_info'] = 'Deze opties worden verkozen boven de gebruikersinstellingen voor het versleutelingsbeleid
Bekijk de documentatie voor meer informatie.'; $lang['mailbox']['tls_enforce_in'] = 'Forceer inkomende versleuteling'; @@ -344,6 +349,8 @@ $lang['edit']['max_mailboxes'] = 'Maximale aantal postvakken'; $lang['edit']['title'] = 'Wijzig object'; $lang['edit']['target_address'] = 'Doeladres(sen) (kommagescheiden)'; $lang['edit']['active'] = 'Actief'; +$lang['edit']['gal'] = 'Globale adreslijst'; +$lang['edit']['gal_info'] = 'De globale adreslijst bevat alle objecten van een domein, deze kunnen door geen enkele gebruiker worden bewerkt. Herstart SOGo om wijzigingen door te voeren.'; $lang['edit']['force_pw_update'] = 'Vereis nieuw wachtwoord bij eerstvolgende login'; $lang['edit']['force_pw_update_info'] = 'Deze gebruiker kan hierdoor enkel inloggen op Mailcow UI, totdat de procedure succesvol doorlopen is.'; $lang['edit']['sogo_access'] = 'Geef toegang to SOGo'; @@ -376,6 +383,7 @@ $lang['edit']['dont_check_sender_acl'] = "Schakel verzendcontrole uit voor domei $lang['edit']['multiple_bookings'] = 'Meerdere boekingen'; $lang['edit']['kind'] = 'Soort'; $lang['edit']['resource'] = 'Hulpbron'; +$lang['edit']['relayhost'] = 'Afzender-afhankelijke transportkaarten'; $lang['acl']['spam_alias'] = 'Tijdelijke aliassen'; $lang['acl']['tls_policy'] = 'Versleutelingsbeleid'; @@ -396,7 +404,11 @@ $lang['acl']['prohibited'] = 'Geweigerd door ACL'; $lang['add']['generate'] = 'genereer'; $lang['add']['syncjob'] = 'Voeg een nieuwe synchronisatietaak toe'; -$lang['add']['syncjob_hint'] = 'Wees ervan bewust dat wachtwoorden onversleuteld worden opgeslagen!'; +$lang['add']['syncjob_hint'] = 'Wees ervan bewust dat de authenticatiedata onversleuteld wordt opgeslagen!'; +$lang['add']['hostname'] = 'Host'; +$lang['add']['destination'] = 'Bestemming'; +$lang['add']['nexthop'] = 'Nexthop'; +$lang['edit']['nexthop'] = 'Nexthop'; $lang['add']['hostname'] = 'Hostname'; $lang['add']['port'] = 'Poort'; $lang['add']['username'] = 'Gebruikersnaam'; @@ -568,24 +580,41 @@ $lang['admin']['no_record'] = 'Geen vermelding'; $lang['admin']['filter_table'] = 'Filtertabel'; $lang['admin']['empty'] = 'Geen resultaten'; $lang['admin']['time'] = 'Tijd'; +$lang['admin']['last_applied'] = 'Voor het laatst toegepast'; +$lang['admin']['reset_limit'] = 'Verwijder hash'; +$lang['admin']['hash_remove_info'] = 'Het verwijderen van een ratelimit-hash, indien nog aanwezig, zal zijn teller volledig herstellen.
Elke hash wordt aangeduid met een aparte kleur.'; +$lang['warning']['hash_not_found'] = 'Hash niet gevonden'; +$lang['success']['hash_deleted'] = 'Hash verwijderd'; +$lang['admin']['authed_user'] = 'Geauthenticeerde gebruiker'; $lang['admin']['priority'] = 'Prioriteit'; $lang['admin']['message'] = 'Bericht'; +$lang['admin']['rate_name'] = 'Rate-naam'; $lang['admin']['refresh'] = 'Ververs'; $lang['admin']['to_top'] = 'Naar boven'; $lang['admin']['in_use_by'] = 'In gebruik door'; $lang['admin']['forwarding_hosts'] = 'Doorstuurhosts'; $lang['admin']['forwarding_hosts_hint'] = 'Inkomende berichten worden onvoorwaardelijk geaccepteerd vanaf iedere host hieronder vermeld. Deze hosts worden hierdoor niet gecontroleerd op DNSBLs, en deze zullen de greylisting omzeilen. Spam wordt daarentegen zoals gebruikelijk in de spamfolder geplaatst. Dit wordt vaak gebruikt om mailservers te specificeren die mails doorsturen naar deze Mailcow-server.'; $lang['admin']['forwarding_hosts_add_hint'] = 'Het is mogelijk om IPv4- of IPv6-adressen, netwerken in CIDR-notatie, hostnames (worden omgezet naar IP-adressen) of domeinnamen (worden tevens omgezet naar IP-adressen of, bij gebrek daaraan, MX-records) op te geven.'; -$lang['admin']['relayhosts_hint'] = 'Stel relayhosts in om deze te kunnen gebruiken voor een domein.'; -$lang['admin']['add_relayhost_add_hint'] = 'Wees ervan bewust dat de authenticatiedata onversleuteld wordt opgeslagen!'; +$lang['admin']['relayhosts_hint'] = 'Stel afzender-afhankelijke transportkaarten in om deze te kunnen gebruiken bij de configuratie van een domein.
De transportservice is altijd "smtp:". Er wordt rekening gehouden met het uitgaande versleutelingsbeleid van individuele gebruikers.'; +$lang['admin']['transports_hint'] = 'Een transportkaart overruletHet uitgaande versleutelingsbeleid van individuele gebruikers wordt genegeerd en kan enkel worden gehandhaafd doormiddel van globaal versleutelingsbeleid. De transportservice is altijd "smtp:".
Om de inloggegevens van een (voorbeeld) nexthop "[host]:25" te bepalen, zoekt Postfix altijd naar "nexthop" voodat er wordt gekeken naar "[nexthop]:25". Dit maakt het onmogelijk om "nexthop" en "[nexthop]:25" tegelijkertijd te gebruiken.'; +$lang['admin']['add_relayhost_hint'] = 'Wees ervan bewust dat de authenticatiedata onversleuteld wordt opgeslagen!'; +$lang['admin']['add_transports_hint'] = 'Wees ervan bewust dat de authenticatiedata onversleuteld wordt opgeslagen!'; $lang['admin']['host'] = 'Host'; $lang['admin']['source'] = 'Bron'; $lang['admin']['add_forwarding_host'] = 'Voeg doorstuurhost toe'; $lang['admin']['add_relayhost'] = 'Voeg relayhost toe'; +$lang['admin']['add_transport'] = 'Voeg transport toe'; +$lang['admin']['relayhosts'] = 'Afzender-afhankelijke transportkaarten'; +$lang['admin']['transport_maps'] = 'Transportkaarten'; +$lang['admin']['routing'] = 'Routing'; +$lang['admin']['credentials_transport_warning'] = 'Waarschuwing: Bij het toevoegen van een nieuwe transportkaart zullen de inloggegevens voor alle items met een overeenkomende nexthop-kolom worden overgeschreven.'; + +$lang['admin']['destination'] = 'Bestemming'; +$lang['admin']['nexthop'] = 'Nexthop'; $lang['success']['forwarding_host_removed'] = "Doorstuurhost %s is verwijderd"; $lang['success']['forwarding_host_added'] = "Doorstuurhost %s is toegevoegd"; -$lang['success']['relayhost_removed'] = "Relayhost %s is verwijderd"; -$lang['success']['relayhost_added'] = "Relayhost %s is toegevoegd"; +$lang['success']['relayhost_removed'] = "Invoer %s is verwijderd"; +$lang['success']['relayhost_added'] = "Invoer %s is toegevoegd"; $lang['diagnostics']['dns_records'] = 'DNS-vermeldingen'; $lang['diagnostics']['dns_records_24hours'] = 'Houd er rekening mee dat veranderingen aan DNS tot wel 24 uur in beslag kunnen nemen voordat ze op deze pagina worden weergegeven. Deze informatie is bedoeld om gemakkelijk in te zien of de DNS-vermeldingen correct zijn geconfigureerd.'; $lang['diagnostics']['dns_records_name'] = 'Naam'; @@ -620,11 +649,11 @@ $lang['admin']['title_name'] = '"Mailcow UI" website-titel'; $lang['admin']['main_name'] = '"Mailcow UI" naam'; $lang['admin']['apps_name'] = '"Mailcow Apps" naam'; -$lang['admin']['customize'] = "Uiterlijk aanpassen"; -$lang['admin']['change_logo'] = "Verander logo"; +$lang['admin']['customize'] = "Uiterlijk"; +$lang['admin']['change_logo'] = "Logo"; $lang['admin']['logo_info'] = "Het plaatje zal worden geschaald naar een hoogte van 40px voor de navigatiebar, en naar een breedte van 250px voor de startpagina."; $lang['admin']['upload'] = "Upload"; -$lang['admin']['app_links'] = "App links"; +$lang['admin']['app_links'] = "Applicatielinks"; $lang['admin']['app_name'] = "Naam"; $lang['admin']['link'] = "Link"; $lang['admin']['remove_row'] = "Verwijder rij"; @@ -676,12 +705,19 @@ $lang['success']['qlearn_spam'] = "Bericht %s werd als spam gemarkeerd en is ver $lang['debug']['system_containers'] = 'Systeem & containers'; +$lang['debug']['solr_status'] = 'Status van Solr'; +$lang['debug']['solr_dead'] = 'Solr is uitgeschakeld, uitgevallen of nog bezig met opstarten.'; $lang['debug']['logs'] = 'Logs'; $lang['debug']['log_info'] = '

Mailcows geheugenlogs worden elke minuut afgesneden naar maximaal %d regels om de stabiliteit te garanderen.
Geheugenlogs zijn niet bedoeld om opgeslagen te worden. Alle applicaties die geheugenlogs verzamelen, worden ook naar het Docker-proces gelogd.
De geheugenlogs kunnen gebruikt worden voor het oplossen van kleine problemen met specifieke containers.

Externe logs worden verzameld doormiddel van de API van deze applicaties.

Statische logs zijn activiteitenlogs. Deze worden niet naar het Docker-proces gestuurd.

'; $lang['debug']['in_memory_logs'] = 'Geheugenlogs'; $lang['debug']['external_logs'] = 'Externe logs'; $lang['debug']['static_logs'] = 'Statische logs'; +$lang['debug']['solr_uptime'] = 'Uptime'; +$lang['debug']['solr_started_at'] = 'Opgestart op'; +$lang['debug']['solr_last_modified'] = 'Laatst bewerkt op'; +$lang['debug']['solr_size'] = 'Grootte'; +$lang['debug']['solr_docs'] = 'Documenten'; $lang['debug']['disk_usage'] = 'Schijfgebruik'; $lang['debug']['containers_info'] = "Containerinformatie"; @@ -707,7 +743,7 @@ $lang['mailbox']['bcc_to_sender'] = "Schakel over naar afzenderkaarten"; $lang['mailbox']['bcc_to_rcpt'] = "Schakel over naar ontvangerkaarten"; $lang['mailbox']['add_bcc_entry'] = "Voeg BCC-kaart toe"; $lang['mailbox']['add_tls_policy_map'] = "Voeg versleutelingsbeleid toe"; -$lang['mailbox']['bcc_info'] = "BCC-kaarten worden gebruikt om kopieën van alle berichten naar een ander adres door te sturen.
Wees er wel van bewust dat er geen melding wordt gedaan van een mislukte aflevering."; +$lang['mailbox']['bcc_info'] = "BCC-kaarten worden gebruikt om kopieën van alle berichten naar een ander adres door te sturen.
Wees er van bewust dat er geen melding wordt gedaan van een mislukte aflevering."; $lang['mailbox']['address_rewriting'] = 'Adres omleiden'; $lang['mailbox']['recipient_maps'] = 'Ontvangerkaarten'; $lang['mailbox']['recipient_map'] = 'Ontvangerkaart'; From 23c2249fa708823555108368672facba3c2ff689 Mon Sep 17 00:00:00 2001 From: Dirk Weise Date: Fri, 18 Jan 2019 18:25:43 +0100 Subject: [PATCH 5/5] Log imapsync cronjob errors Errors from the imap sync cronbjob are currently dropped silently. --- data/Dockerfiles/dovecot/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/Dockerfiles/dovecot/Dockerfile b/data/Dockerfiles/dovecot/Dockerfile index c0ddc998..38687379 100644 --- a/data/Dockerfiles/dovecot/Dockerfile +++ b/data/Dockerfiles/dovecot/Dockerfile @@ -92,7 +92,7 @@ RUN curl https://www.dovecot.org/releases/2.3/dovecot-$DOVECOT_VERSION.tar.gz | && rm -rf dovecot-2.3-pigeonhole-$PIGEONHOLE_VERSION RUN cpanm Data::Uniqid Mail::IMAPClient String::Util -RUN echo '* * * * * root /usr/local/bin/imapsync_cron.pl' > /etc/cron.d/imapsync +RUN echo '* * * * * root /usr/local/bin/imapsync_cron.pl 2>&1 | /usr/bin/logger' > /etc/cron.d/imapsync RUN echo '30 3 * * * vmail /usr/local/bin/doveadm quota recalc -A' > /etc/cron.d/dovecot-sync RUN echo '* * * * * vmail /usr/local/bin/trim_logs.sh >> /dev/console 2>&1' > /etc/cron.d/trim_logs RUN echo '25 * * * * vmail /usr/local/bin/maildir_gc.sh >> /dev/console 2>&1' > /etc/cron.d/maildir_gc