# Changelog ## 0.1.0 Logika dopasowana do PostfixAdmin 4.0.5 / master, przygotowanie do pracy produkcyjnej. ### Zgodność z PostfixAdmin - Limity domen: `-1` = wyłączone, `0` = bez limitu (wcześniej `-1` przy aliasach znaczyło „bez limitu”); licznik aliasów nie obejmuje aliasów skrzynek. - Quota skrzynek liczona jak `check_quota()`/`allowed_quota()`; formularz pokazuje dozwolone maksimum. Wyłączona funkcja quota nie nadpisuje już quota skrzynek zerem. - `alias_control`/`alias_control_admin` dotyczą wyłącznie aliasów skrzynek (przekierowań); wcześniej blokowały tworzenie wszystkich aliasów. - Alias nie może wskazywać na siebie; dozwolone konta lokalne (`root`) i `@domena` dla catch-all; listy administratora pomijają aliasy skrzynek. - Edycja skrzynki zawsze synchronizuje aktywność aliasu skrzynki; edycja częściowa nie resetuje pól (SMTP, telefon, e-mail). - Edycja domeny bez podanych limitów zachowuje dotychczasowe wartości (wcześniej przywracała domyślne). - Domena: walidacja `password_expiry` (0–36500), konflikt z `vacation_domain`, usuwanie w transakcji. - Administrator domeny widzi tylko aktywne domeny bez backup MX (`list_domains_for_admin`). - Administratorzy: zachowanie listy domen superadmina, ochrona przed odebraniem sobie uprawnień. - Autoresponder: „Wracam” dezaktywuje zamiast usuwać, czyszczenie `vacation_notification`, godziny od/do, `vacation_choice_of_reply`. - Fetchmail: hasło źródłowe zapisywane base64, jak oczekuje `fetchmail.pl`. - `recipient_delimiter` traktowany jako zbiór znaków; status POP/IMAP jak w `gen_show_status()`. - `edit_mailbox_name`: użytkownik skrzynki może zmienić własną nazwę (globalnie lub dla listy domen). - Nowe akcje: przełączanie aktywności (domeny, skrzynki, aliasy, domeny aliasowe, administratorzy), przekierowania skrzynki, wyszukiwanie globalne i w domenie, stronicowanie, filtr aktywności aliasów, dziennik ze stronicowaniem. ### Instalacja i utrzymanie - `--init-schema [--dry-run]` (odpowiednik `setup.php`/`upgrade.php`), `--create-superadmin`, `--integrity-check`, `--refresh-dns`, `--help`. - Baza developerska tworzona tym samym kodem co produkcyjny schemat. ### Bezpieczeństwo - `trusted_proxies` – poprawny adres klienta za reverse proxy (limit logowań, wyjątki TOTP). - Rewalidacja sesji, wylogowanie innych sesji po zmianie hasła, czyszczenie pamięci sesji/limitów, opcjonalny HSTS. - Logowanie z automatycznym rozpoznaniem konta (administrator, następnie skrzynka). - Wiadomość powitalna wysyłana w tle, limit czasu SMTP 15 s. ### Poprawki - PostgreSQL: logowanie i listy nie działały (`CAST(boolean AS BIGINT)`, sumy `NUMERIC`, parametry `timestamp`). - MySQL/PostgreSQL: sumy quota rzutowane na liczbę całkowitą. ### Interfejs - Nowy interfejs: adresy URL widoków (odświeżenie/zakładki/przycisk wstecz), lista wirtualna domeny, wyszukiwarka, stronicowanie, formularze z potwierdzeniem hasła i generatorem, błędy wyświetlane w oknie formularza, widok na telefonie, panel użytkownika (przekierowania, autoresponder, nazwa, 2FA). - Teksty źródłowe po angielsku, kompletne tłumaczenie polskie (łącznie z komunikatami API). ## 0.0.3 - Alias status is shown as a simple `Alias` badge; catch-all aliases follow PostfixAdmin semantics (`*` in the form, `@domain` in the database), including edit/delete compatibility and catch-all domain forwarding to `@target-domain`. - Fixed MySQL/MariaDB `TEXT`/`LONGTEXT` decoding through `sqlx::Any`; alias destinations from PostfixAdmin (`alias.goto`) now render from the real database value instead of falling back to an empty string. - Alias destination listing now normalizes `goto` through the database dialect so targets render consistently on MySQL/MariaDB, PostgreSQL and SQLite. - Static release validation no longer hard-codes the application or Rust version; it validates semantic versioning and Cargo/toolchain consistency instead. - Domain workspace now separates user aliases from technical/default aliases instead of mixing them in one table. - Alias tables keep the PostfixAdmin-RS data model (address, destination, description, delivery status, active state and actions) while using a clearer full-width layout inspired by classic PostfixAdmin. - Mailbox self-alias rows are hidden from the domain alias sections so mailbox-managed routing does not clutter the alias view. - Technical alias edit/delete controls follow the existing `special_alias_control` and global-admin permissions. - Release version bumped to 0.0.3. ## 0.0.2 - Mailbox and alias creation in a selected domain now accepts only the local part; the domain is read-only. - Admin Vacation UI now searches/selects an existing mailbox and uses the same editor as a mailbox user. - Vacation save/delete now synchronizes the PostfixAdmin autoreply transport address in `alias.goto`, so the mail transport actually receives the vacation copy. - Vacation transport destinations are hidden from alias UI and do not affect alias delivery-status badges. - Mailbox users can edit only alias destinations, Store & Forward, and Active; the backend also preserves protected fields on crafted requests. - Default technical aliases (`abuse`, `hostmaster`, `postmaster`, `webmaster`, according to config keys) are shown separately from user aliases. - Rspamd DKIM filesystem failures now report the operation and exact path instead of a generic I/O error. - Debian package includes a one-time Rspamd DKIM permission helper using a dedicated shared group; private keys stay non-world-readable. - Release version bumped to 0.0.2.