diff --git a/data/web/lang/lang.ro.json b/data/web/lang/lang.ro.json index 317bf7e2..21af2911 100644 --- a/data/web/lang/lang.ro.json +++ b/data/web/lang/lang.ro.json @@ -9,12 +9,15 @@ "filters": "Filtre", "login_as": "Conectează-te ca utilizator al cutiei poștale", "prohibited": "Interzis de ACL", + "protocol_access": "Schimbați protocolul de acces", "pushover": "Pushover", "quarantine": "Acțiuni de carantină", "quarantine_attachments": "Atașamente de carantină", "quarantine_notification": "Notificări de carantină", + "quarantine_category": "Schimbați categoria notificărilor despre carantină", "ratelimit": "Rata limită", "recipient_maps": "Hărți recipient", + "smtp_ip_access": "Schimbați gazdele permise pentru SMTP", "sogo_access": "Permiteți gestionarea accesului SOGo", "sogo_profile_reset": "Resetează profilul SOGo", "spam_alias": "Aliasuri temporare", @@ -22,7 +25,8 @@ "spam_score": "Scor spam", "syncjobs": "Lucrări de sincronizare", "tls_policy": "Politică TLS", - "unlimited_quota": "Cota nelimitată pentru cutiile poștale" + "unlimited_quota": "Cota nelimitată pentru cutiile poștale", + "domain_desc": "Schimbați descrierea domeniului" }, "add": { "activate_filter_warn": "Toate celelalte filtre vor fi dezactivate, când este bifată opțiunea activă.", @@ -135,6 +139,7 @@ "ban_list_info": "Vezi mai jos o listă de adrese IP interzise: rețea (timp de interdicție rămas) - [acțiuni].
IP-urile în așteptare pentru a fi scoase din interdicție vor fi eliminate din lista de interdicții active în câteva secunde.
Etichetele roșii indică interzicerea activă permanentă prin punerea pe lista neagră.", "change_logo": "Schimbă logo", "configuration": "Configurație", + "convert_html_to_text": "Convertiți HTML în text simplu", "credentials_transport_warning": "Avertisment: Adăugarea unei noi intrări hartă de transport va actualiza datele de acreditare pentru toate intrările cu o coloană nexthop corespunzătoare.", "customer_id": "ID client", "customize": "Personalizează", @@ -150,10 +155,12 @@ "dkim_key_unused": "Cheie neutilizată", "dkim_key_valid": "Cheie validă", "dkim_keys": "Chei ARC/DKIM", + "dkim_overwrite_key": "Suprascrieți cheia DKIM existentă", "dkim_private_key": "Cheie privată", "dkim_to": "Către", "dkim_to_title": "Domeniul/ile țintă - va/vor fi suprascris/e", "domain": "Domeniu", + "domain_admin": "Administrator de domeniu", "domain_admins": "Administratori de domenii", "domain_s": "Domeniu/i", "duplicate": "Duplică", @@ -163,11 +170,13 @@ "excludes": "Exclude acești destinatari", "f2b_ban_time": "Timp interdicție (s)", "f2b_blacklist": "Rețele/gazde pe lista neagră", + "f2b_filter": "Filtre regex", "f2b_list_info": "O gazdă sau o rețea pe lista neagră va depăși întotdeauna o entitate pe lista albă. Înregistrările din lista neagră sunt create la data încărcării containerului. Înregistrările din lista albă sunt citite de fiecare dată când se va aplica o interdicție.", "f2b_max_attempts": "Număr maxim încercări", "f2b_netban_ipv4": "Dimensiunea subrețelei IPv4 pentru a aplica interdicția (8-32)", "f2b_netban_ipv6": "Dimensiunea subrețelei IPv6 pentru a aplica interdicția (8-128)", "f2b_parameters": "Parametrii fail2ban", + "f2b_regex_info": "Jurnalele luate în considerare: SOGo, Postfix, Dovecot, PHP-FPM.", "f2b_retry_window": "Reîncercați fereastra (ele) pentru max. încercări", "f2b_whitelist": "Rețele/gazde pe lista albă", "filter_table": "Tabel filtre", @@ -182,6 +191,7 @@ "hash_remove_info": "Eliminarea unui hash de limită a ratei (dacă există încă) îi va reseta complet contorul.
\n Fiecare hash este indicat de o culoare individuală.", "help_text": "Suprascrie textul de ajutor de sub masca de conectare (HTML permis)", "host": "Gazdă", + "html": "HTML", "import": "Importă", "import_private_key": "Importă cheia privată", "in_use_by": "În utilizare de către", @@ -210,6 +220,7 @@ "oauth2_redirect_uri": "URI redirect", "oauth2_renew_secret": "Generează nou secret client", "oauth2_revoke_tokens": "Revocă toate jetoanele clientului", + "optional": "optional", "password": "Parolă", "password_repeat": "Parola de confirmare (repetă)", "priority": "Prioritate", @@ -219,9 +230,11 @@ "quarantine_exclude_domains": "Exclude domeniile și domeniile-alias", "quarantine_max_age": "Vechimea maximă în zile
Valoarea trebuie să fie egală sau mai mare de o zi.", "quarantine_max_size": "Dimensiunea maximă în MiB (elementele mai mari sunt eliminate):
0 nu indică nelimitat.", + "quarantine_max_score": "Renunțați la notificare dacă scorul de spam al unui e-mail este mai mare decât această valoare:
Valori implicite la 9999.0", "quarantine_notification_html": "Șablon email de notificare:
Se lasă gol pentru a restabili șablonul implicit.", "quarantine_notification_sender": "Expeditor email de notificare", "quarantine_notification_subject": "Subiect email de notificare", + "quarantine_redirect": "Redirecționați toate notificările către acest destinatar:
Lăsați gol pentru a dezactiva. E-mail nesemnat, nebifat. Trebuie livrat numai intern.", "quarantine_release_format": "Formatul articolelor eliberate", "quarantine_release_format_att": "Ca atașament", "quarantine_release_format_raw": "Original nemodificat", @@ -324,6 +337,7 @@ "comment_too_long": "Comentariu prea lung, sunt permise maximum 160 de caractere", "defquota_empty": "Cota implicită per cutie poștală nu trebuie să fie 0.", "description_invalid": "Descrierea resursei pentru %s este invalidă", + "dkim_domain_or_sel_exists": "O cheie DKIM pentru \"%s\" există și nu va fi suprascrisă", "dkim_domain_or_sel_invalid": "Domeniul sau selectorul DKIM invalid: %s", "domain_cannot_match_hostname": "Domeniul nu se poate potrivi cu numele de gazdă", "domain_exists": "Domeniul %s există deja", @@ -393,6 +407,7 @@ "redis_error": "Eroare Redis: %s", "relayhost_invalid": "Intrarea hărții %s este invalidă", "release_send_failed": "Mesajul nu a putut fi eliberat: %s", + "reset_f2b_regex": "Filtrul regex nu a putut fi resetat la timp, încercați din nou sau așteptați câteva secunde și reîncărcați pagina.", "resource_invalid": "Numele de resurse %s este invalid", "rl_timeframe": "Rata limită pentru intervalul de timp este incorectă", "rspamd_ui_pw_length": "Parola Rspamd UI ar trebui să aibă cel puțin 6 caractere", @@ -408,12 +423,14 @@ "targetd_relay_domain": "Domeniul țintă %s este un domeniu releu", "temp_error": "Eroare temporară", "text_empty": "Textul nu trebuie să fie gol", + "tfa_token_invalid": "Jeton TFA invalid", "tls_policy_map_dest_invalid": "Destinația politicii este invalidă", "tls_policy_map_entry_exists": "O intrare a hărții politicii TLS \"%s\" există", "tls_policy_map_parameter_invalid": "Parametrul politicii este invalid", "totp_verification_failed": "Verificarea TOTP a eșuat", "transport_dest_exists": "Destinația transportului \"%s\" există", "u2f_verification_failed": "Verificarea U2F a eșuat: %s", + "fido2_verification_failed": "Verificarea FIDO2 a eșuat: %s", "unknown": "A apărut o eroare necunoscută", "unknown_tfa_method": "Metodă TFA necunoscută", "unlimited_quota_acl": "Cota nelimitată interzisă de ACL", @@ -423,9 +440,11 @@ "yotp_verification_failed": "Verificarea Yubico OTP a eșuat: %s" }, "debug": { + "chart_this_server": "Grafic (acest server)", "containers_info": "Informaţii container", "disk_usage": "Utilizare disc", "external_logs": "Jurnale externe", + "history_all_servers": "Istoric (toate serverele)", "in_memory_logs": "Jurnale din memorie", "jvm_memory_solr": "Memorie utilizată de JVM", "log_info": "

jurnalele din memorie pentru mailcow sunt colectate în listele Redis și trimise la LOG_LINES (%d) în fiecare minut pentru a reduce ciocnirea.\n
Jurnalele din memorie nu sunt menite a fi persistente. Toate aplicațiile care înregistrează jurnale în memorie, înregistrează de asemenea jurnale în daemonul Docker și, prin urmare, în driverul de jurnale implicit.\n
Tipul de jurnal din memorie trebuie utilizat pentru depanarea problemelor minore cu containerele.

\n

Jurnalele externe sunt colectate prin API-ul aplicației respective.

\n

Jurnalele statice sunt, în majoritate, jurnale de activitate care nu sunt înregistrate în Docker, dar trebuie să fie persistente (cu excepția jurnalelor API).

", @@ -456,6 +475,9 @@ "active": "Activ", "advanced_settings": "Setări avansate", "alias": "Editează alias", + "allow_from_smtp": "Permiteți acestor adrese IP să utilizeze numai SMTP", + "allow_from_smtp_info": "Lăsați gol pentru a permite tuturor expeditorilor.
Adrese și rețele IPv4/IPv6.", + "allowed_protocols": "Protocoale permise", "app_name": "Nume aplicație", "app_passwd": "Parolă apicație", "automap": "Încearcă maparea automată a folderelor (\"Obiecte trimise\", \"Trimise\" => \"Trimise\" etc.)", @@ -582,8 +604,10 @@ }, "login": { "delayed": "Conectarea a fost întârziată cu %s secunde.", + "fido2_webauthn": "FIDO2/WebAuthn", "login": "Autentificare", "mobileconfig_info": "Autentificați-vă cu adresa de email pentru a descărca profilul de conexiune Apple.", + "other_logins": "Autentificare cu cheie", "password": "Parolă", "username": "Nume de utilizator" }, @@ -607,6 +631,9 @@ "alias_domain_alias_hint": "Aliasurile nu sunt aplicate automat pe domeniile alias. O adresă alias aliasul-meu@domeniu nu acoperă adresa aliasul-meu@domeniu-alias (unde \"domeniu-alias\" este un domeniu alias imaginar pentru \"domeniu\").
Vă rugăm să utilizați un filtru sită pentru a redirecționa poșta către o căsuță poștală externă (consultați zona \"Filtre\" sau utilizați SOGo -> Redirecționare).", "alias_domain_backupmx": "Alias domeniu inactiv pentru domeniu releu", "aliases": "Aliasuri", + "allow_from_smtp": "Permiteți acestor adrese IP să utilizeze numai SMTP", + "allow_from_smtp_info": "Lăsați gol pentru a permite tuturor expeditorilor.
Adrese și rețele IPv4/IPv6.", + "allowed_protocols": "Protocoale permise", "backup_mx": "Backup MX", "bcc": "BCC", "bcc_destination": "Destinație BCC", @@ -656,6 +683,8 @@ "mailbox_defquota": "Cota implicită a căsuței poștale", "mailbox_quota": "Dimensiunea maximă a unei cutii poștale", "mailboxes": "Cutii poștale", + "mailbox_defaults": "Setări implicite", + "mailbox_defaults_info": "Definiți setările implicite pentru cutiile poștale noi.", "mins_interval": "Interval (min)", "msg_num": "Mesaj #", "multiple_bookings": "Rezervări multiple", @@ -666,7 +695,11 @@ "owner": "Proprietar", "private_comment": "Comentariu privat", "public_comment": "Comentariu public", + "q_add_header": "Dosarul nedorit", + "q_all": "Toate categoriile", + "q_reject": "Respins", "quarantine_notification": "Notificări de carantină", + "quarantine_category": "Categoria notificărilor despre carantină", "quick_actions": "Acţiuni", "recipient_map": "Hartă destinatar", "recipient_map_info": "Hărțile destinatarilor sunt folosite pentru a înlocui adresa de destinație a unui mesaj înainte de a fi livrat.", @@ -688,6 +721,7 @@ "sieve_preset_5": "Răspuns automat (vacanță)", "sieve_preset_6": "Respinge mail cu răspuns", "sieve_preset_7": "Redirecționează și păstrează/aruncă", + "sieve_preset_8": "Renunțați la mesajul trimis la o adresă alias din care face parte expeditorul", "sieve_preset_header": "Vedeți exemplul de presetări de mai jos. Pentru mai multe detalii accesați Wikipedia.", "sogo_allow_admin_hint": "Conectările SOGo administrative sunt disponibile numai pentru căsuțele poștale cu un profil SOGo existent. Un utilizator trebuie să se fi fost conectat la SOGo cel puțin o dată.", "sogo_visible": "Aliasul este vizibil în SOGo", @@ -731,12 +765,16 @@ "action": "Acţiune", "atts": "Atașamente", "check_hash": "Caută hash-ul fișierului @ VT", + "confirm": "Confirmați", "confirm_delete": "Confirmă ștergerea acestui element.", "danger": "Pericol", + "deliver_inbox": "Livrați în căsuța de e-mail", "disabled_by_config": "Configurația actuală a sistemului dezactivează funcția de carantină.", "download_eml": "Descarcă (.eml)", "empty": "Nici un rezultat", "high_danger": "Ridicat", + "info": "Informații", + "junk_folder": "Dosar nedorit", "learn_spam_delete": "Învață ca spam și șterge", "low_danger": "Pericol scăzut", "medium_danger": "Pericol mediu", @@ -744,6 +782,7 @@ "notified": "Notificat", "qhandler_success": "Solicitare trimisă cu succes la sistem. Acum poți închide fereastra.", "qid": "Rspamd QID", + "qinfo": "Sistemul de carantină va salva e-mailurile respinse în baza de date (expeditorului nu i se va da impresia unui e-mail livrat), precum și e-mailul, care este livrat ca copie în dosarul Junk al unei cutii poștale.\r\n
\"Învățați ca spam și ștergeți\" va învăța un mesaj ca spam prin intermediul teoremei Bayesiene și, de asemenea, va calcula hash-uri fuzzy pentru a refuza mesajele similare în viitor.\r\n
Vă rugăm să rețineți că învățarea multiplă mesajele pot fi - în funcție de sistemul dvs. - consumatoare de timp.
Elementele din lista neagră sunt excluse din carantină.", "qitem": "Pune în carantină elementul", "quarantine": "Carantină", "quick_actions": "Acţiuni", @@ -751,13 +790,21 @@ "received": "Primit", "recipients": "Destinatari", "refresh": "Reînnoiește", + "rejected": "Respins", "release": "Eliberează", "release_body": "Am atașat mesajul tău ca fișier eml la acest mesaj.", "release_subject": "Element în carantină potențial dăunător %s", "remove": "Elimină", + "rewrite_subject": "Rescrie subiectul", "rspamd_result": "Rezultat Rspamd", "sender": "Expeditor (SMTP)", + "sender_header": "Expeditor (antetul \"De la\")", + "type": "Tip", + "quick_release_link": "Deschide linkul de lansare rapidă", + "quick_delete_link": "Deschide linkul de ștergere rapidă", + "quick_info_link": "Deschide linkul de informații", "show_item": "Afișează elementul", + "spam": "Spam", "spam_score": "Scor", "subj": "Subiect", "table_size": "Mărime tabel", @@ -845,6 +892,7 @@ "upload_success": "Fișier încărcat cu succes", "verified_totp_login": "Autentificarea TOTP verificată", "verified_u2f_login": "Autentificarea U2F verificată", + "verified_fido2_login": "Conectare FIDO2 verificată", "verified_yotp_login": "Autentificarea Yubico OTP verificată" }, "tfa": { @@ -865,12 +913,27 @@ "set_tfa": "Setează metoda de autentificare cu doi factori", "start_u2f_validation": "Începi validarea", "tfa": "Autentificare cu doi factori", + "tfa_token_invalid": "Jeton TFA invalid", "totp": "OTP pe bază de timp (Google Authenticator etc.)", "u2f": "Autentificare U2F", "waiting_usb_auth": "În așteptarea dispozitivului USB...

Apasă acum butonul de pe dispozitivul tău USB U2F.", "waiting_usb_register": "În așteptarea dispozitivului USB...

Introdu parola ta mai sus și confirmă înregistrarea ta U2F atingând butonul de pe dispozitivul tău USB U2F.", "yubi_otp": "Autentificare Yubico OTP" }, + "fido2": { + "set_fn": "Setați un nume prietenos", + "fn": "Nume prietenos", + "rename": "redenumiți", + "confirm": "Confirmați", + "register_status": "Starea înregistrării", + "known_ids": "ID-uri cunoscute", + "none": "Dezactivat", + "set_fido2": "Înregistrați dispozitivul FIDO2", + "start_fido2_validation": "Începeți validarea FIDO2", + "fido2_auth": "Conectați-vă cu FIDO2", + "fido2_success": "Dispozitivul a fost înregistrat cu succes", + "fido2_validation_failed": "Validarea a esuat" + }, "user": { "action": "Acțiune", "active": "Activ", @@ -942,8 +1005,13 @@ "pushover_title": "Titlu notificare", "pushover_vars": "Când nu este definit niciun filtru pentru expeditor, toate mailurile vor fi luate în considerare.
Filtrele regex, precum și verificările exacte ale expeditorului pot fi definite individual și vor fi luate în considerare secvențial. Ele nu depind unul de celălalt.
Variabile utilizabile pentru text și titlu (vă rugăm să luați nota de politicile de protecție a datelor)", "pushover_verify": "Verifică credențialele", + "q_add_header": "Dosarul nedorit", + "q_all": "Toate categoriile", + "q_reject": "Respins", "quarantine_notification": "Notificări de carantină", + "quarantine_category": "Schimbați categoria notificărilor despre carantină", "quarantine_notification_info": "Odată ce o notificare a fost trimisă, elementele vor fi marcate ca fiind \"notificate\" și nu vor fi trimise alte notificări pentru acest articol.", + "quarantine_category_info": "Categoria de notificări \"Respins\" include e-mailurile care au fost respinse, în timp ce \"Dosarul nedorit\" va notifica un utilizator despre mesajele care au fost introduse în dosarul nedorit.", "remove": "Șterge", "running": "Funcţionare", "save": "Salvează modificările", diff --git a/generate_config.sh b/generate_config.sh index f1cf9a82..16a040c7 100755 --- a/generate_config.sh +++ b/generate_config.sh @@ -170,6 +170,8 @@ SOLR_PORT=127.0.0.1:18983 REDIS_PORT=127.0.0.1:7654 # Your timezone +# See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for a list of timezones +# Use the row named 'TZ database name' + pay attention for 'Notes' row TZ=${MAILCOW_TZ} diff --git a/helper-scripts/backup_and_restore.sh b/helper-scripts/backup_and_restore.sh index 14e21810..45098cc9 100755 --- a/helper-scripts/backup_and_restore.sh +++ b/helper-scripts/backup_and_restore.sh @@ -85,33 +85,33 @@ function backup() { case "$1" in vmail|all) docker run --name mailcow-backup --rm \ - -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_vmail-vol-1):/vmail:ro \ + -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_vmail-vol-1):/vmail:ro,z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable" -Pcvpf /backup/backup_vmail.tar.gz /vmail ;;& crypt|all) docker run --name mailcow-backup --rm \ - -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_crypt-vol-1):/crypt:ro \ + -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_crypt-vol-1):/crypt:ro,z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable" -Pcvpf /backup/backup_crypt.tar.gz /crypt ;;& redis|all) docker exec $(docker ps -qf name=redis-mailcow) redis-cli save docker run --name mailcow-backup --rm \ - -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_redis-vol-1):/redis:ro \ + -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_redis-vol-1):/redis:ro,z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable" -Pcvpf /backup/backup_redis.tar.gz /redis ;;& rspamd|all) docker run --name mailcow-backup --rm \ - -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_rspamd-vol-1):/rspamd:ro \ + -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_rspamd-vol-1):/rspamd:ro,z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable" -Pcvpf /backup/backup_rspamd.tar.gz /rspamd ;;& postfix|all) docker run --name mailcow-backup --rm \ - -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_postfix-vol-1):/postfix:ro \ + -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_postfix-vol-1):/postfix:ro,z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable" -Pcvpf /backup/backup_postfix.tar.gz /postfix ;;& mysql|all) @@ -124,9 +124,9 @@ function backup() { echo "Using SQL image ${SQLIMAGE}, starting..." docker run --name mailcow-backup --rm \ --network $(docker network ls -qf name=${CMPS_PRJ}_mailcow-network) \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/:ro \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/:ro,z \ --entrypoint= \ - -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \ + -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ ${SQLIMAGE} /bin/sh -c "mariabackup --host mysql --user root --password ${DBROOT} --backup --rsync --target-dir=/backup_mariadb ; \ mariabackup --prepare --target-dir=/backup_mariadb ; \ chown -R 999:999 /backup_mariadb ; \ @@ -158,8 +158,8 @@ function restore() { vmail) docker stop $(docker ps -qf name=dovecot-mailcow) docker run -it --name mailcow-backup --rm \ - -v ${RESTORE_LOCATION}:/backup \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_vmail-vol-1):/vmail \ + -v ${RESTORE_LOCATION}:/backup:z \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_vmail-vol-1):/vmail:z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_vmail.tar.gz docker start $(docker ps -aqf name=dovecot-mailcow) echo @@ -177,32 +177,32 @@ function restore() { redis) docker stop $(docker ps -qf name=redis-mailcow) docker run -it --name mailcow-backup --rm \ - -v ${RESTORE_LOCATION}:/backup \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_redis-vol-1):/redis \ + -v ${RESTORE_LOCATION}:/backup:z \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_redis-vol-1):/redis:z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_redis.tar.gz docker start $(docker ps -aqf name=redis-mailcow) ;; crypt) docker stop $(docker ps -qf name=dovecot-mailcow) docker run -it --name mailcow-backup --rm \ - -v ${RESTORE_LOCATION}:/backup \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_crypt-vol-1):/crypt \ + -v ${RESTORE_LOCATION}:/backup:z \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_crypt-vol-1):/crypt:z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_crypt.tar.gz docker start $(docker ps -aqf name=dovecot-mailcow) ;; rspamd) docker stop $(docker ps -qf name=rspamd-mailcow) docker run -it --name mailcow-backup --rm \ - -v ${RESTORE_LOCATION}:/backup \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_rspamd-vol-1):/rspamd \ + -v ${RESTORE_LOCATION}:/backup:z \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_rspamd-vol-1):/rspamd:z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_rspamd.tar.gz docker start $(docker ps -aqf name=rspamd-mailcow) ;; postfix) docker stop $(docker ps -qf name=postfix-mailcow) docker run -it --name mailcow-backup --rm \ - -v ${RESTORE_LOCATION}:/backup \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_postfix-vol-1):/postfix \ + -v ${RESTORE_LOCATION}:/backup:z \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_postfix-vol-1):/postfix:z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_postfix.tar.gz docker start $(docker ps -aqf name=postfix-mailcow) ;; @@ -230,17 +230,17 @@ function restore() { #docker stop $(docker ps -qf name=mysql-mailcow) if [[ -d "${RESTORE_LOCATION}/mysql" ]]; then docker run --name mailcow-backup --rm \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/:rw \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/:rw,z \ --entrypoint= \ - -v ${RESTORE_LOCATION}/mysql:/backup \ + -v ${RESTORE_LOCATION}/mysql:/backup:z \ ${SQLIMAGE} /bin/bash -c "shopt -s dotglob ; /bin/rm -rf /var/lib/mysql/* ; rsync -avh --usermap=root:mysql --groupmap=root:mysql /backup/ /var/lib/mysql/" elif [[ -f "${RESTORE_LOCATION}/backup_mysql.gz" ]]; then docker run \ -it --name mailcow-backup --rm \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/ \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/:z \ --entrypoint= \ -u mysql \ - -v ${RESTORE_LOCATION}:/backup \ + -v ${RESTORE_LOCATION}:/backup:z \ ${SQLIMAGE} /bin/sh -c "mysqld --skip-grant-tables & \ until mysqladmin ping; do sleep 3; done && \ echo Restoring... && \ @@ -248,9 +248,9 @@ function restore() { mysql -uroot -e SHUTDOWN;" elif [[ -f "${RESTORE_LOCATION}/backup_mariadb.tar.gz" ]]; then docker run --name mailcow-backup --rm \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/backup_mariadb/:rw \ + -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/backup_mariadb/:rw,z \ --entrypoint= \ - -v ${RESTORE_LOCATION}:/backup \ + -v ${RESTORE_LOCATION}:/backup:z \ ${SQLIMAGE} /bin/bash -c "shopt -s dotglob ; \ /bin/rm -rf /backup_mariadb/* ; \ /bin/tar -Pxvzf /backup/backup_mariadb.tar.gz"