Backup mailcow criptat pe Google Drive: programare, verificare și restaurare

Transformă scriptul manual backup_and_restore.sh din mailcow într-un serviciu programat, criptat cu GnuPG, cu copii locale și pe Google Drive, verificare fără restaurare și restaurare pe componente din pagina de administrare.

mailcow vine cu un script de backup solid, dar este o comandă pe care o rulezi manual. Nimic nu îl programează, nimic nu îl criptează, nimic nu copiază arhiva în afara serverului, iar restaurarea înseamnă să răspunzi la întrebările lui din shell. Funcționează până în ziua în care ai cu adevărat nevoie de el, de obicei în cel mai nepotrivit moment.

Acest tutorial arată cum transformi acel script într-un serviciu pe care îl configurezi o singură dată în System → Backup: rulări programate cu backup_and_restore.sh din mailcow, criptare GnuPG (AES-256, cu verificare de integritate) înainte ca ceva să ajungă pe disc, o copie locală plus opțional o copie pe Google Drive, verificare fără restaurare și restaurare pe componente din pagină. Produsul este Backup for mailcow; referința completă este în ghidul de utilizare.

Înainte să începi

  • mailcow-dockerized pe Linux, cu docker compose și systemd.
  • mailcow Toolkit 0.7.0 sau mai nou de la MediaLab Works — acest modul este unul dintre produsele sale, cu licență proprie.
  • Acces root pe host pentru a rula installerul Toolkit și acces HTTPS ieșire către medialab.works pentru verificarea licenței.
  • GnuPG pe host. Dacă lipsește: apt install gnupg.
  • Spațiu liber pe disc în folderul local pentru aproximativ două copii — una se construiește în timp ce cele anterioare sunt păstrate.
  • Opțional, pentru Google Drive: un cont Google și un client OAuth propriu în Google Cloud.

Pasul 1 — Instalează modulul

Pe hostul mailcow, ca root, rulează installerul Toolkit ca de obicei:

sudo ./install.sh --mailcow-dir /opt/mailcow-dockerized --name <instance>

Dacă Toolkit este deja instalat, actualizează-l din System → Updates (Toolkit). Installerul copiază data/web/mlw-backup/, instalează scriptul de host /usr/local/sbin/mlw-mailcow-backup-<instance>, creează tabelul de istoric și instalează timerul mlw-mailcow-backup-<instance>.timer, care verifică la fiecare 5 minute dacă este momentul unei copii. Apoi deschide System → Backup în meniul de administrare mailcow.

Pasul 2 — Activează licența

Deschide System → Updates (Toolkit) și găsește cardul Backup for mailcow: lipește cheia și activează-o, sau începe perioada de probă de 30 de zile. Din shell poți face același lucru cu php /web/mlw-toolkit/cli.php activate mailcow-backup <KEY> în interiorul php-fpm-mailcow.

De știut: fără o licență validă copiile programate și încărcările pe Google Drive se opresc, dar verificarea, restaurarea și ștergerea funcționează în continuare. Datele tale nu sunt niciodată ținute ostatice.

Pasul 3 — Alege folderul local

În Settings → Local folder, introdu un path absolut pe host, ideal pe alt disc decât mailcow — de exemplu /srv/backup/mailcow sau un disc montat. Folderul este creat astfel încât să fie citibil doar de root. Lasă loc pentru aproximativ două copii.

Pasul 4 — Setează fraza de criptare

În Encryption, apasă Set cu generated (recommended). Fraza este afișată o singură dată: păstreaz-o în afara serverului, într-un password manager sau pe hârtie. Sau alege my own și scrie de două ori o frază de cel puțin 12 caractere.

Fiecare copie devine un fișier .tar.gpg plus un manifest JSON (componente, dimensiuni, SHA-256, id-ul frazei, versiunile mailcow și Toolkit). Se decriptează și cu gpg simplu, fără mailcow: gpg -d mailcow-…tar.gpg > backup.tar cere fraza și returnează folderul obișnuit de backup al mailcow.

Pasul 5 — Programare, componente și rotație

Tot în Settings:

  • Scheduled backups pornit sau oprit, cu Times în ora serverului (se pot pune mai multe, de exemplu 03:15, 15:15) și Days. O copie ratată cât timp serverul a fost oprit se face o dată când acesta revine, iar rulările programate folosesc o prioritate scăzută la CPU și disc.
  • What is backed up: mail (vmail), chei de criptare (crypt — necesare pentru a citi mailul criptat), redis, rspamd, postfix și baza de date (SQL). Toate sunt pornite implicit; alege ce ai nevoie.
  • Local copies kept și Copies kept on Drive: cele mai noi N rămân, cele mai vechi sunt șterse după fiecare copie.
  • Compression threads pentru scriptul mailcow.
  • E-mail: doar la eșec (implicit), după fiecare copie sau niciodată. O adresă goală înseamnă adresa de notificare a Toolkit-ului.

Apasă Back up now în cardul Status pentru a face prima copie; progresul și logul se afișează în timp real.

Pasul 6 — Adaugă Google Drive (opțional)

Modulul folosește propriul tău client Google OAuth, astfel încât accesul la Drive-ul tău rămâne pe serverul tău:

  1. În Google Cloud Console, creează sau alege un proiect și activează Google Drive API.
  2. OAuth consent screen: tip External, e-mailul tău ca support și developer contact, apoi Publish app ("In production"). În modul testing Google expiră accesul după 7 zile.
  3. Credentials → Create credentials → OAuth client ID, tip Web application, cu redirect URI afișat pe pagină: https://<your mailcow UI host>/mlw-backup/oauth.php.
  4. Lipește Client ID și client secret în Google Drive pe pagină, Save, apoi Connect Google Drive și permite accesul. Google poate avertiza că aplicația nu este verificată — este propria ta aplicație, continuă.
  5. În Settings, pornește Upload every backup to Google Drive și alege numele folderului.

Scope-ul este drive.file: modulul vede doar fișierele pe care le-a creat, niciodată restul Drive-ului tău. Încărcările merg în părți de 32 MiB și continuă după o eroare de rețea. Test listează folderul; Disconnect revocă accesul, iar copiile rămân pe Drive.

Pasul 7 — Verifică fără restaurare

În Backups, fiecare copie arată unde se află (local, Drive sau ambele). Verify decriptează și citește întreaga arhivă — descărcând-o de pe Drive dacă nu este locală — fără să restaureze nimic. Rulează verificarea după prima copie și apoi periodic: este cea mai ieftină cale de a afla că o frază de criptare sau o încărcare a mers greșit.

Pasul 8 — Restaurează pe componente

Restore… îți permite să bifezi componentele de care ai nevoie, să scrii RESTORE și să confirmi. SHA-256 al arhivei este comparat cu manifestul, arhiva este decriptată și căile ei sunt verificate, apoi fiecare componentă este restaurată cu pașii restaurării proprii mailcow: containerele vizate sunt oprite și pornite din nou. Baza de date oprește tot mailcow-ul pentru câteva minute și preia credențialele SQL din mailcow.conf al copiei. Ce s-a schimbat în acele componente după data copiei se pierde. Nu se rulează o resincronizare forțată a mailului; dacă o cutie poștală arată greșit după aceea:

docker exec $(docker ps -qf name=dovecot-mailcow) doveadm force-resync -A '*'

Mutarea pe un server nou

  1. Instalează mailcow și Toolkit-ul, apoi activează licența (sau restaurează fără ea).
  2. Encryption → my own: scrie vechea frază. Pe un server care are deja una, bifează for older backups only — o frază nouă se aplică următoarelor copii, iar cele vechi rămân restaurabile.
  3. Google Drive: folosește același client OAuth și conectează-te; copiile vechi apar, pentru că modulul vede fișierele create de clientul său.
  4. Restore… cea mai nouă copie, toate componentele.

Sfaturi și depanare

  • Ține fraza de criptare în afara serverului. Fără ea, o copie nu poate fi restaurată pe alt server. Secretele proprii ale modulului (fraza, accesul Google) supraviețuiesc restaurării redis, dar un server pierdut le ia cu el.
  • Confidențialitate: copiile conțin tot mailul tău. Ele părăsesc serverul doar criptate și doar către contul Google Drive pe care îl conectezi; nimic nu este trimis către medialab.works în afara verificării licenței.
  • Google expiră aplicațiile în modul testing după 7 zile — publică aplicația așa cum este descris mai sus.
  • Verifică istoricul și logurile: istoricul complet al copiilor, încărcărilor, verificărilor și restaurărilor este pe pagină și în tabelul mlw_bk_run; progresul în timp real este în data/hooks/phpfpm/.mlw-toolkit/backup/run.json și run.log.
  • Manual, ca root: MLW_TK_CONF=/etc/mlw-mailcow-toolkit/<instance>.conf mlw-mailcow-backup-<instance> backup|verify NAME|list.
  • Dezinstalarea cu uninstall.sh păstrează copiile locale și pe cele de pe Drive.

În încheiere

Setează o dată folderul și fraza, alege orele și rotația, conectează Drive dacă vrei o copie off-site și lasă timerul să facă restul. Verifică din când în când, iar când ai nevoie de o restaurare vei bifa componente pe o pagină în loc să răspunzi la întrebări într-un shell. Mai multe în ghidul de utilizare și în changelog; întrebările sunt binevenite prin contact sau pe baza de cunoștințe.

Postarea a fost scrisă cu ajutorul AI pe baza documentației produselor noastre sau a surselor indicate și verificată automat înainte de publicare.

Citește și

Ai un server Emby, Jellyfin sau Nextcloud?

Plugin-urile și aplicațiile noastre adaugă Live TV, subtitrări, înregistrare și securitate pe serverul tău, cu probă gratuită.