53 lines
4.3 KiB
Markdown
53 lines
4.3 KiB
Markdown
# PostfixAdmin → PostfixAdmin-RS: zgodność
|
||
|
||
Referencja: PostfixAdmin **4.0.5** oraz gałąź `master` (listopad 2026), schemat bazy **1857**.
|
||
Cel: zastąpienie runtime PHP przy zachowaniu bazy, map SQL Postfixa/Dovecota i skryptów
|
||
`vacation.pl` / `fetchmail.pl`.
|
||
|
||
## Logika przeniesiona 1:1
|
||
|
||
| PostfixAdmin | PostfixAdmin-RS |
|
||
|---|---|
|
||
| `list_domains_for_admin()` – admin domeny widzi tylko aktywne, nie-backupMX domeny | tak samo; rewalidacja co `session_revalidate_seconds` |
|
||
| `DomainHandler` – limity `-1/0/n`, `password_expiry` 0..36500, konflikt z `vacation_domain`, domyślne aliasy, kasowanie z `domain_admins/alias/mailbox/alias_domain/vacation/vacation_notification/quota/quota2/fetchmail/log`, blokada gdy domena jest celem domeny aliasowej | tak samo (w transakcji) |
|
||
| `alias_count` = aliasy − skrzynki | tak samo (licznik i limit) |
|
||
| `MailboxHandler::check_quota()` / `allowed_quota()` | tak samo, łącznie z komunikatem „maks. N MB” |
|
||
| `MailboxHandler` – alias skrzynki tworzony razem ze skrzynką, aktywność aliasu = aktywność skrzynki, kasowanie `fetchmail/vacation/vacation_notification/quota/quota2/alias` | tak samo (+ hasła aplikacji, wyjątki TOTP) |
|
||
| `generate_password` / `show_password` | tak samo (wygenerowane hasło pokazywane raz) |
|
||
| `mailbox_postpassword_script` – blokuje zmianę hasła przez admina, wywoływany przy tworzeniu z hasłem na stdin | tak samo (hook argv) |
|
||
| `edit_mailbox_name` (master) – użytkownik zmienia swoją nazwę, globalnie lub dla listy domen | tak samo |
|
||
| `AliasHandler` – limit aliasów, catch-all `@domena`, `@domena` → `@inna`, konto lokalne `^[a-z0-9]+$`, „alias wskazuje na siebie”, `emailcheck_localaliasonly`, `special_alias_control`, ukrywanie aliasów skrzynek na listach admina | tak samo |
|
||
| `alias_control` / `alias_control_admin` dotyczą **aliasów skrzynek** (przekierowań), `edit_alias` – użytkownika | tak samo (wcześniejsza wersja RS błędnie blokowała nimi wszystkie aliasy) |
|
||
| `gen_show_status()` – niedostarczalny/zewnętrzny w zakresie domen admina, domeny aliasowe, `recipient_delimiter` jako **zbiór znaków** (master), vacation, disabled, expired, POP/IMAP, custom | tak samo |
|
||
| `AliasdomainHandler` | tak samo + ochrona przed łańcuchami |
|
||
| `AdminHandler` – domeny + znacznik `ALL` dla superadmina | tak samo; nie można zdegradować/wyłączyć samego siebie |
|
||
| `VacationHandler` – `set_away` czyści `vacation_notification`, `remove` tylko dezaktywuje, alias transportu | tak samo; daty z godziną, `vacation_choice_of_reply` |
|
||
| `FetchmailHandler` – `src_password` zapisywane base64 (`b64p`) | tak samo (wcześniejsza wersja RS zapisywała jawny tekst) |
|
||
| `editactive.php` | `POST /api/{domains,mailboxes,aliases,alias-domains,admins}/{id}/active` |
|
||
| `list-virtual.php` – wyszukiwanie, stronicowanie, filtr aktywności, `delete-inactive.php` | tak samo |
|
||
| `viewlog.php` – „wszystkie domeny”, stronicowanie | tak samo + filtr tekstowy |
|
||
| `setup.php` / `upgrade.php` / `DatabaseIntegrityChecker` | `--init-schema [--dry-run]`, `--integrity-check` |
|
||
| `scripts/domain-dns-check.php` | `--refresh-dns` |
|
||
| logowanie admin/`users/` | jeden formularz z automatycznym wyborem (admin, potem skrzynka) lub ręcznym |
|
||
| TOTP, wyjątki TOTP, hasła aplikacji, odzyskiwanie hasła e-mailem | tak samo |
|
||
| DKIM (`dkim`, `dkim_signing`) | tak samo + opcjonalnie Rspamd |
|
||
|
||
## Świadome różnice
|
||
|
||
| Obszar | Powód |
|
||
|---|---|
|
||
| Hooki PHP (`*_struct_hook`, `maildir_name_hook`, `language_hook`) | nie wykonujemy PHP; zamiast tego `maildir_template` i hooki jako program + argumenty |
|
||
| `password_validation` z dowolnymi wyrażeniami regularnymi | typowane `min_length` / `min_letters` / `min_digits` (odpowiada domyślnej konfiguracji PA) |
|
||
| Wygląd, `theme_*`, `header_text`, `footer_*` | nowy interfejs; MOTD obsługiwane |
|
||
| Wiadomość powitalna | wysyłana w tle – brak SMTP nie blokuje tworzenia skrzynki |
|
||
|
||
## Czego brak
|
||
|
||
| Obszar | Uwagi |
|
||
|---|---|
|
||
| XML-RPC (`xmlrpc.php`) | wyłączone w typowych wdrożeniach; brak planów |
|
||
| Odzyskiwanie hasła SMS | wymaga interfejsu dostawcy SMS |
|
||
| `update-check.php` | niepotrzebne w runtime |
|
||
| CLI CRUD (`postfixadmin-cli`) | jest API JSON; CLI tylko do instalacji/utrzymania |
|
||
| Połączenie z bazą przez gniazdo Unix i certyfikaty klienta TLS | tylko host:port i TLS z weryfikacją serwera |
|