Backup for mailcow — ghid

Instalare

  1. Modulul vine în mailcow Toolkit 0.7.0 sau mai nou (un pachet, câte o licență pe produs). Pe serverul mailcow, ca root, rulezi installer-ul Toolkit ca de obicei: sudo ./install.sh --mailcow-dir /opt/mailcow-dockerized --name <instanță>, sau actualizezi Toolkit-ul din Sistem → Actualizări (Toolkit). Installer-ul copiază data/web/mlw-backup/, instalează scriptul gazdei /usr/local/sbin/mlw-mailcow-backup-<instanță>, creează tabela istoricului și timer-ul mlw-mailcow-backup-<instanță>.timer (la fiecare 5 minute verifică dacă e momentul unei copii).
  2. Instalează GnuPG pe server dacă lipsește: apt install gnupg.
  3. Deschide Sistem → Copii de siguranță din meniul de administrare mailcow.

Licență

Deschide Sistem → Actualizări (Toolkit) și găsește cardul Backup for mailcow: lipești cheia și o activezi sau pornești perioada de probă de 30 de zile. Din consolă: php /web/mlw-toolkit/cli.php activate mailcow-backup <CHEIE> în php-fpm-mailcow.

Fără licență validă copiile programate și încărcările pe Google Drive se opresc. Verificarea, restaurarea și ștergerea funcționează în continuare, ca să-ți poți recupera oricând datele.

Prima configurare

  1. Setări → Folderul local: o cale absolută pe server, ideal pe alt disc decât mailcow (de exemplu /srv/backup/mailcow sau un disc montat). Se creează citibil doar de root. Lasă loc pentru circa două copii.
  2. Criptare: apeși Setează cu generată (recomandat): fraza se arată o singură dată — păstreaz-o în afara serverului (manager de parole, hârtie). Sau alegi a mea și scrii de două ori una de cel puțin 12 caractere.
  3. Fă o copie acum, din cardul Stare, face prima copie; progresul și jurnalul apar în timp real.

Program, componente și rotație

În Setări:

  • Copii programate pornite sau oprite; Orele (ora serverului, se pot pune mai multe, de ex. 03:15, 15:15) și Zilele.
  • Ce se salvează: e-mailul (vmail), cheile de criptare (crypt — necesare ca să citești e-mailul criptat), redis, rspamd, postfix, baza de date (SQL). Toate sunt bifate implicit.
  • Copii păstrate local și Copii păstrate pe Drive: rămân ultimele N; cele mai vechi se șterg după fiecare copie.
  • Fire de compresie pentru scriptul mailcow.
  • E-mail: doar la eșec (implicit), după fiecare copie sau niciodată; adresa goală = adresa de notificare a Toolkit-ului.

O copie ratată cât serverul a fost oprit se face o dată când revine. Copiile programate rulează cu prioritate scăzută de procesor și disc.

Ce este o copie

backup_and_restore.sh al mailcow scrie componentele alese; modulul le pune într-o singură arhivă și o criptează cu GnuPG (AES-256, cu verificare de integritate) cu fraza ta:

Fișier Conținut
mailcow-<gazdă>-<dată>.tar.gpg arhiva criptată (fișierele backup_*.tar.zst ale mailcow și mailcow.conf)
mailcow-<gazdă>-<dată>.json manifestul: componente și mărimi, SHA-256 al arhivei, id-ul frazei, versiunile mailcow și Toolkit

Fără mailcow: gpg -d mailcow-…tar.gpg > backup.tar cere fraza și dă înapoi folderul obișnuit de backup al mailcow.

Google Drive

Modulul folosește propriul tău client OAuth Google, deci accesul la Drive rămâne pe serverul tău:

  1. În Google Cloud Console creezi (sau alegi) un proiect și activezi Google Drive API.
  2. OAuth consent screen: tip External, adresa ta ca suport și contact; apoi Publish app („In production”). În modul de test Google oprește accesul după 7 zile.
  3. Credentials → Create credentials → OAuth client ID, tip Web application, cu adresa de întoarcere afișată în pagină: https://<gazda interfeței mailcow>/mlw-backup/oauth.php.
  4. Lipești Client ID-ul și secretul clientului la Google Drive în pagină, Salvează, apoi Conectează Google Drive și permiți accesul. Google poate avertiza că aplicația nu e verificată: e aplicația ta, continuă.
  5. În Setări pornești Urcă fiecare copie pe Google Drive și alegi numele folderului.

Scope-ul e drive.file: modulul vede doar fișierele create de el, niciodată restul Drive-ului. Încărcarea merge în bucăți de 32 MiB și continuă după o eroare de rețea. Testează listează folderul; Deconectează revocă accesul (copiile rămân pe Drive).

Verificare și restaurare

În Copii fiecare copie arată unde se află (local, Drive sau amândouă):

  • Verifică: decriptează și citește toată arhiva (descărcată de pe Drive dacă nu e locală), fără să restaureze nimic.
  • Restaurează…: bifezi componentele, scrii RESTORE, confirmi. SHA-256 al arhivei e verificat față de manifest, arhiva e decriptată și căile din ea verificate, apoi fiecare componentă e restaurată cu pașii restaurării mailcow: containerele implicate sunt oprite și pornite din nou; baza de date oprește tot mailcow-ul câteva minute și preia datele de acces SQL din mailcow.conf al copiei. Ce s-a schimbat în acele componente după data copiei se pierde. Nu se forțează resincronizarea e-mailului; dacă o cutie arată greșit după: docker exec $(docker ps -qf name=dovecot-mailcow) doveadm force-resync -A '*'.
  • Șterge: șterge copia local și de pe Drive.

Un server nou

  1. Instalezi mailcow și Toolkit-ul, activezi licența (sau restaurezi fără ea).
  2. Criptare → a mea: scrii fraza veche (pe un server care are deja una, bifezi doar pentru copii vechi).
  3. Google Drive: folosești același client OAuth Google și conectezi; copiile vechi apar (modulul vede fișierele create de clientul lui).
  4. Restaurează… cea mai nouă copie, toate componentele.

Consolă și fișiere

Scriptul gazdei se poate rula și de mână (ca root): MLW_TK_CONF=/etc/mlw-mailcow-toolkit/<instanță>.conf mlw-mailcow-backup-<instanță> backup|verify NUME|list. Progresul e în data/hooks/phpfpm/.mlw-toolkit/backup/run.json și run.log; istoricul în tabela mlw_bk_run din baza mailcow. uninstall.sh păstrează copiile locale și pe cele de pe Drive.

Descărcarea necesită o licență sau perioada de probă gratuită de 30 de zile.