runv-server

server tooling for runv.club
Log | Files | Refs | README

review-email-aliases-signoff.md (3670B)


      1 # Revisão: aliases de email (Parte 2)
      2 
      3 [← Índice](README.md)
      4 
      5 Registo da revisão de código e validação. Atualizar a secção **VPS** após correr o smoke test no servidor.
      6 
      7 | Campo | Valor |
      8 |-------|--------|
      9 | Data | 2026-05-19 |
     10 | Commit | `e357e93` (ajustar após `git rev-parse HEAD` no deploy) |
     11 | Revisor | Automatizado + checklist manual |
     12 
     13 ## Fase 1 — Estática (Windows / clone)
     14 
     15 | Item | Resultado | Notas |
     16 |------|-----------|--------|
     17 | 1.1 Sem Mailgun/Postfix/DNS no código `tools/` | **PASS** | Grep sem matches |
     18 | 1.1 Alias fixo `username@domínio` | **PASS** | `alias_address()` |
     19 | 1.1 Usernames reservados | **PASS** | `ALIAS_RESERVED_USERNAMES` completo |
     20 | 1.1 Validação destino | **PASS** | Script Python com 6 casos |
     21 | 1.1 `O_EXCL` em pedidos | **PASS** | `create_pending_request()` |
     22 | 1.1 Arquivo sem apagar | **PASS** | `archive_request()` |
     23 | 1.1 Admin root | **PASS** | `require_root()` após `parse_args` |
     24 | 1.1 Lock + escrita atómica | **PASS** | `approve_pending()` |
     25 | 1.1 Setup idempotente | **PASS** | `setup_email_aliases.py` |
     26 | 1.2 Sem leitura `users.json` nos bins membro | **PASS** | Só setup `--add-existing-users` |
     27 | 1.3 `compileall` | **PASS** | |
     28 | 1.3 `--help` (3 entrypoints) | **PASS** | |
     29 | 1.3 `setup --dry-run` | **PASS** | |
     30 
     31 ### Correcções aplicadas na revisão
     32 
     33 - Re-validação de `destination` em `approve_pending()` antes de gravar alias activo.
     34 - Rejeição de `--reason` vazio em `runv-admin-email-alias reject`.
     35 - Script [`scripts/admin/smoke_test_email_aliases.py`](../scripts/admin/smoke_test_email_aliases.py) para VPS/WSL.
     36 - Secção em [14-smoke-tests-and-validation.md](14-smoke-tests-and-validation.md).
     37 
     38 ## Fase 2 — VPS Linux
     39 
     40 ### 2.3–2.5 Lógica (WSL, modo direct, temp dir)
     41 
     42 | Secção | Resultado | Notas |
     43 |--------|-----------|--------|
     44 | 2.3 E2E request → approve → list | **PASS** | `smoke_test_email_aliases.py --user pablo` em WSL |
     45 | 2.4 Validações / cancel / reject | **PASS** | mesmo script |
     46 | 2.5 Alteração destino | **PASS** | `created_at` preservado |
     47 
     48 ### 2.2 / bins instalados (executar na VPS)
     49 
     50 ```bash
     51 cd /caminho/para/runv-server
     52 git pull
     53 COMMIT=$(git rev-parse --short HEAD)
     54 echo "Testando commit $COMMIT"
     55 
     56 sudo python3 scripts/admin/setup_email_aliases.py --verbose
     57 sudo python3 scripts/admin/setup_email_aliases.py --add-existing-users
     58 cd tools && sudo python3 tools.py --verbose
     59 
     60 sudo python3 scripts/admin/smoke_test_email_aliases.py --user SEU_MEMBRO_TESTE
     61 ```
     62 
     63 | Secção | Resultado | Data / notas |
     64 |--------|-----------|----------------|
     65 | 2.2 Setup + instalação | _pendente VPS_ | `which`, `ls -la /var/lib/runv/email-*` |
     66 | 2.2 Smoke subprocess (bins reais) | _pendente VPS_ | sem `--direct`; exige `sudo` |
     67 | 2.6 Regressão Parte 1 | _pendente VPS_ | `runv-profile`, `runv-who`, etc. |
     68 | 2.7 Docs vs saída real | **PASS** | revisão estática 08 + 17 |
     69 
     70 ### Permissões esperadas (2.2)
     71 
     72 ```text
     73 /var/lib/runv/email-aliases.json      640 root:runv-members
     74 /var/lib/runv/email-aliases.lock      660 root:runv-members
     75 /var/lib/runv/email-alias-queue/      2770 root:runv-members
     76 ```
     77 
     78 ## Critérios finais
     79 
     80 - [x] Fase 1 sem bloqueantes
     81 - [x] Fase 2.3–2.5 lógica validada (WSL + smoke script)
     82 - [ ] Fase 2.2 + smoke **subprocess** na VPS Debian (operador)
     83 - [x] Nenhum código envia email ou configura Mailgun/DNS para aliases
     84 - [x] Documentação 08 + 17 alinhada com implementação
     85 - [ ] Operador confirmou passo manual pós-`approve` no provedor real
     86 
     87 ## Comando único recomendado na VPS
     88 
     89 ```bash
     90 sudo python3 scripts/admin/smoke_test_email_aliases.py --user MEMBRO
     91 ```
     92 
     93 Saída esperada final: `Smoke test aliases de email: PASS`