Istoric versiuni Sign-up for mailcow

Toate versiunile publicate, cea mai nouă prima. Descărcările sunt în cont; abonamentele și perioada de probă primesc mereu ultima versiune, licențele lifetime primesc actualizări în fereastra lor de actualizări.

0.7.1

Ultima
  • Produsele sunt doar pentru administratorul platformei: toate paginile de administrare ale pachetului (Toolkit, Sign-up, Cashier, Mailbox API, Security, Backup) refuză acum și cheile API mailcow (mailcow dă rolul de admin oricărei cereri API, inclusiv cheilor doar de citire); adminii de domenii și utilizatorii cutiilor poștale, inclusiv un administrator conectat ca unul dintre ei, sunt trimiși înapoi în zona lor, ca până acum.
  • Butonul „SOGo ca această cutie, într-un tab nou” e acum doar pentru administratorul platformei; adminii de domenii păstrează butonul SOGo al mailcow.
  • Un test verifică faptul că fiecare pagină a pachetului e publică intenționat, doar pentru linia de comandă sau protejată de verificarea de administrator.
  • Nou: Backup for mailcow (licență proprie, Sistem > Copii de siguranță): copii de siguranță programate și criptate ale mailcow, într-un folder local și pe Google Drive, cu rotație, verificare și restaurare din pagina de administrare.
  • Copiile folosesc scriptul de backup al mailcow (e-mail, chei de criptare, redis, rspamd, postfix, baza de date — la alegere), puse într-o singură arhivă și criptate pe server cu GnuPG (AES-256, cu verificare de integritate) cu fraza ta, înainte să ajungă în folderul local sau pe Google Drive. Fiecare copie are un manifest (componente, mărimi, SHA-256, id-ul frazei, versiuni). Arhivele se decriptează și cu gpg simplu.
  • Program: orele și zilele alese (ora serverului); o copie ratată se face o dată când serverul revine. Rotație: ultimele N copii local și ultimele N pe Google Drive. E-mail la eșec sau după fiecare copie.
  • Google Drive cu propriul tău client OAuth Google (scope drive.file: modulul vede doar fișierele create de el), încărcare reluabilă pe bucăți de 32 MiB care continuă după o eroare de rețea, token criptat pe disc.
  • Restaurare din pagină, locală sau de pe Google Drive, pe componente (confirmare scrisă): se verifică SHA-256, se decriptează arhiva și se restaurează componentele cu aceiași pași ca restaurarea mailcow, fără întrebările ei; restaurarea bazei de date oprește mailcow câteva minute. Secretele modulului rezistă unei restaurări redis. Verificarea decriptează și citește o copie întreagă fără s-o restaureze.
  • Mai multe fraze: una nouă se aplică copiilor următoare, cele vechi se restaurează cu fraza lor; pe un server nou adaugi fraza veche și conectezi același client Google.
  • Fără licență validă copiile programate și încărcările se opresc; verificarea, restaurarea și ștergerea funcționează în continuare, ca datele să poată fi recuperate oricând.
  • Nou: Security for mailcow (licență proprie, Sistem > Securitate): detectarea atacurilor cu istoric, blocări prin fail2ban-ul mailcow (netfilter) și opțional Cloudflare, protecția conturilor și alerte.
  • Citește la fiecare minut ce înregistrează deja mailcow (dovecot, postfix, SOGo și netfilter din redis-ul mailcow; jurnalul serverului web și autentificările eșuate în interfața / API-ul mailcow prin agentul gazdei). Evenimentele se păstrează pe minut în baza mailcow (implicit 90 de zile), deci istoricul rezistă tăierii logurilor de către mailcow; prima rulare importă ce mai păstrează mailcow.
  • 13 reguli pentru ce scapă fail2ban-ului mailcow: forță brută lentă, password spraying, recidiviști (adrese blocate iar și iar de fail2ban), forță brută pe login web (SOGo, interfața mailcow, API), scanări de exploit-uri web și 404, testare de relay, scanări de protocol, valuri de spam, cutii țintite (atacuri distribuite), valuri de trimiteri, autentificări de la multe adrese și autentificări după eșecuri (o parolă ghicită). Pragul, fereastra, acțiunea și durata blocării se schimbă per regulă.
  • Implicit doar monitorizare: incidentele spun ce s-ar fi făcut. Cu acțiunile automate pornite, adresele sunt blocate în denylist-ul fail2ban al mailcow (și, la alegere, ca reguli IP Access Cloudflare pentru gazdele web din spatele proxy-ului) pe durata regulii; regulile pe cont pot limita trimiterea sau opri autentificarea. Adresele private, cele de pe listele de excepții (a modulului și a mailcow), adresele serverului și adresele de pe care s-a intrat cu succes recent într-o cutie nu sunt blocate niciodată automat.
  • Pagina: panou (totaluri pe 24 de ore, grafic pe 14 zile, cele mai active adrese, cutii țintite, incidente active), incidente (văzut, rezolvat, fals pozitiv cu excepție), căutare în evenimente, blocări (ale modulului, blocările temporare ale mailcow, denylist, istoric), o adresă (PTR, linkuri de căutare, blocare / excepție) și o cutie (autentificări pe adrese, eșecuri, trimiteri; oprirea autentificării, închiderea sesiunilor IMAP / POP3, schimbarea obligatorie a parolei, limita de trimitere), reguli, setări și jurnalul tuturor acțiunilor. Un scut roșu lângă meniul Sistem arată incidentele deschise ridicate / critice.
  • Alerte pe e-mail și Telegram de la o severitate aleasă, cu limită pe oră, și un rezumat zilnic opțional. O blocare ștearsă din pagina Fail2ban a mailcow contează ca ridicată; blocările expirate se ridică și fără licență, iar uninstall.sh le ridică pe toate.
  • Corectat: pagina de administrare Mailbox API apela o funcție din Sign-up pe care nu o încărca și cerea mailcow să adauge un script care nu există.
  • Securitate, Mailbox API: linkurile de atașamente sunt legate de cheia API care are voie să citească cutia (revocarea cheii sau scoaterea dreptului oprește linkurile) și expiră după 1 oră, nu după 7 zile.
  • Securitate, Mailbox API: țintele webhook trebuie să fie gazde HTTPS publice (loopback, private, link-local și rezervate sunt refuzate, inclusiv prin DNS), redirectările nu sunt urmărite, iar răspunsul are limită de mărime.
  • Corectat: API-ul întoarce un mesaj generic de eroare; detaliile rămân în jurnalul serverului. Descărcarea atașamentelor trimite Cache-Control: no-store și nosniff.
  • Nou: Mailbox API for mailcow (licență proprie, System > Mailbox API): API REST per cutie poștală, cu chei făcute din pagina de administrare (drepturi: citire, trimitere, organizare; fiecare cheie limitată la cutiile alese). Listează foldere și mesaje, caută, citește mesajul complet cu atașamente, marchează citit/necitit, mută, șterge și trimite ca acea cutie (o copie merge în Sent). Cheile se păstrează doar ca SHA-256; fiecare apel se jurnalizează.
  • Webhook-uri pentru mail nou: per cutie, o adresă de webhook și un secret; fiecare mesaj nou din folderul monitorizat pleacă în JSON (de la, către, cc, subiect, dată, message id, text, HTML, antete, atașamente cu nume, tip, mărime, sha256 și linkuri semnate de descărcare), semnat cu X-MLW-Signature (HMAC-SHA256, ca la Stripe), cu reîncercări și jurnal de livrări în pagina de administrare.
  • Notificări Telegram: un token de bot (criptat pe disc) și un chat per cutie monitorizată, cu buton de test.
  • API-ul citește poșta prin login-ul master al dovecot, în rețeaua mailcow (același mecanism pe care mailcow îl folosește pentru imapsync); nimic nu pleacă spre medialab.works. Conținutul mesajelor rămâne pe serverul tău; linkurile semnate expiră după 7 zile.
  • Cron-ul rulează la fiecare minut din agentul Toolkit; fără licență validă API-ul și notificările se opresc, iar nimic nu se șterge.
  • Cashier: un abonament nou putea apărea cu „Plătit 0,00” deși prima plată fusese primită. Stripe trimite plata finalizată și factura plătită aproape în același moment, iar plata finalizată suprascria plata înregistrată între timp. Reparat, cu un test automat care reproduce situația.
  • Pagina clientului nu mai arată o etichetă verde „Activ” lângă „Plată restantă”: eticheta contului arată acum starea reală (plată restantă sau în curs de activare cu galben, suspendat cu roșu), și în lista de clienți a administratorului.
  • Paginile Sign-up și Cashier sunt traduse complet în română: stările înregistrărilor („done” este acum „Cont creat”), tipurile de cont, stările abonamentelor și cele din Stripe („past_due”), stările evenimentelor webhook („processed”), tipurile de suplimente, numele planurilor (numele în română al planului), prețurile pe lună / an („4,99 lei / lună”) și sumele în formatul românesc.
  • Coduri de invitație: coloana „Legat de” arată o etichetă clară („Pachet de domenii: Domeniu S”) în locul numelui lipit de id-ul planului; data de expirare se scrie și se afișează în formatul paginii (31.12.2026 în română, 2026-12-31 în engleză, se înțeleg și alte forme obișnuite; datele imposibile sau din trecut sunt refuzate cu un mesaj clar).
  • Datele și orele de pe paginile Sign-up, Cashier, Toolkit și DNS urmează limba mailcow, nu pe cea a browserului.
  • System > Actualizări (Toolkit) în română: starea ultimei actualizări mailcow și a actualizării Toolkit-ului („done”, „Updated: …”) și erorile verificării de actualizări sunt traduse. Pagina DNS: motivele pentru care asistentul de domenii noi a sărit o adresă și motivele copiilor Cloudflare sunt traduse.
  • Eroarea din setările Sign-up numește câmpurile, nu cheile interne.
  • Produs nou în pachet: Sign-up for mailcow (licență proprie). O pagină publică de înregistrare (/mlw-signup/) pe numele de gazdă al interfeței mailcow și al webmail-ului, cu link pe pagina de conectare mailcow. Vizitatorii primesc o cutie poștală pe unul dintre domeniile tale sau un cont de administrator de domeniu pentru propriile domenii. Confirmarea adresei (cod, link sau ambele), aprobarea administratorului (opțional), coduri de invitație (de unică folosință sau multiple, cu expirare, legate de un tip de cont sau de un plan), protecție împotriva abuzului (câmp ascuns, timp minim de completare, înregistrări pe adresă de rețea pe zi, domenii de e-mail permise / blocate, adrese temporare cu lista MediaLab Works), nume rezervate, regulile de parolă mailcow, e-mail de bun venit, conectare automată.
  • Domenii proprii: clientul își adaugă domeniul din pagina lui, îl dovedește cu o înregistrare TXT (verificată la cerere și la fiecare 10 minute), iar domeniul se adaugă cu limitele pachetului (domenii, cutii poștale, aliasuri, spațiu) și i se arată înregistrările DNS. Asistentul pentru domenii noi din Toolkit trimite adresele de rol către client; domeniile clienților nu intră în configurarea automată Cloudflare a contului tău.
  • Produs nou în pachet: Cashier for mailcow (licență proprie, are nevoie de Sign-up). Planuri plătite cu propriul tău cont Stripe (cheie restricționată, webhook înregistrat din pagină, cu semnătură verificată și fără dubluri, versiune API fixată): planuri pentru cutii poștale și pachete de domenii, prețuri lunare / anuale, zile de probă, planuri ascunse cu link direct; suplimente (cutii poștale în plus pe domeniu, spațiu în plus) cumpărate cu o cantitate. Schimbările de plan și suplimentele se aplică imediat în mailcow; un pachet mai mic decât ce se folosește acum este refuzat (nu se șterge nimic).
  • Plată eșuată → perioadă de grație (0–90 de zile) → contul se suspendă (implicit „fără conectare”: e-mailurile se primesc în continuare, nimeni nu se conectează; sau inactiv); plata îl reactivează imediat. La anulare totul funcționează până la sfârșitul perioadei plătite. Nu se șterge niciodată nimic. E-mailuri către abonați (engleză / română), portalul de client Stripe, pagină publică pentru plata unei facturi restante, lista abonaților cu venitul lunar, planuri oferite gratuit.
  • Licențiere: câte o licență pentru fiecare produs (Toolkit, Sign-up, Cashier) în aceeași instalare, fiecare cu starea, perioada de probă și amprenta ei (data/web/mlw-toolkit, mlw-signup, mlw-cashier); System > Actualizări (Toolkit) arată câte un card de licență pentru fiecare produs. cli.php activate PRODUS CHEIE.
  • Un temporizator la fiecare 5 minute rulează sarcinile Sign-up și Cashier. Dezinstalarea păstrează conturile și tabelele modulelor.
  • SOGo și domeniile noi: SOGo își citește domeniile doar la pornire, așa că cutiile poștale ale unui domeniu adăugat mai târziu nu se puteau conecta în SOGo. Toolkit-ul repornește acum singur SOGo (și golește memcached) în circa 10 minute de la un domeniu nou, o dată pentru mai multe domenii și cel mult o dată la 10 minute; un buton „Repornește SOGo” și un avertisment pe pagina DNS.
  • Pagina DNS și Cloudflare reproiectată: un selector de domenii cu starea fiecăruia (critic / avertisment / în regulă, cele mai grave primele), pentru fiecare domeniu lista problemelor și cum se repară, fișierul de zonă și acțiunile Cloudflare ale domeniului (Cloudflare doar când datele de acces salvate pot modifica acea zonă, altfel motivul) și setările pentru toate domeniile în secțiuni pliabile. Stările se reîmprospătează în fundal la fiecare 10 minute.