release: 1.0.0, a changelog, one .env.example and the docs to match
CI / Lint de idioma (R9) (push) Successful in 5s
CI / Go (protocols) (push) Successful in 2m34s
CI / TypeScript (storage) (push) Successful in 15s
CI / Testes (webmail) (push) Successful in 51s
CI / TypeScript (auth) (push) Successful in 2m39s
CI / Trivy (dependências, segredos e Dockerfiles) (push) Successful in 9s
CI / Imagem (migrations) (push) Successful in 5s
CI / Stack completa (push) Successful in 1m11s
CI / Imagem (auth) (push) Successful in 17s
CI / Imagem (protocols) (push) Successful in 7s
CI / Imagem (rspamd) (push) Successful in 5s
CI / Imagem (storage) (push) Successful in 17s
CI / Imagem (webmail) (push) Successful in 1m52s
CI / Lint de idioma (R9) (push) Successful in 5s
CI / Go (protocols) (push) Successful in 2m34s
CI / TypeScript (storage) (push) Successful in 15s
CI / Testes (webmail) (push) Successful in 51s
CI / TypeScript (auth) (push) Successful in 2m39s
CI / Trivy (dependências, segredos e Dockerfiles) (push) Successful in 9s
CI / Imagem (migrations) (push) Successful in 5s
CI / Stack completa (push) Successful in 1m11s
CI / Imagem (auth) (push) Successful in 17s
CI / Imagem (protocols) (push) Successful in 7s
CI / Imagem (rspamd) (push) Successful in 5s
CI / Imagem (storage) (push) Successful in 17s
CI / Imagem (webmail) (push) Successful in 1m52s
- CHANGELOG.md and CHANGELOG.pt-BR.md, from the project history. - .env.example now serves development and production; scripts/init-env.sh (make env) creates .env with random secrets. .env.production.example is gone. - docs/RELEASING.md: the pipeline, how a version is cut and deployed, the runners. - DEPLOYMENT.md and both READMEs updated for Gitea and the new env flow. - Service versions set to 1.0.0. - CI: the proxy network step is idempotent and the stack is torn down always, since the runner's Docker daemon now outlives a job. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f500534ac6
commit
5bbbb85128
17 files changed
+524
-182
No files matched your search
@@ -0,0 +1,106 @@
|
||||
# Registro de mudanças
|
||||
|
||||
Tudo o que muda de relevante no LambdaMail está aqui. O formato segue o
|
||||
[Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/) e o projeto segue o
|
||||
[Versionamento Semântico](https://semver.org/lang/pt-BR/).
|
||||
|
||||
[English](CHANGELOG.md)
|
||||
|
||||
## [Não lançado]
|
||||
|
||||
## [1.0.0] - 2026-10-30
|
||||
|
||||
A primeira versão com tag. O trabalho anterior nunca foi tagueado, então esta
|
||||
entrada resume tudo desde o primeiro commit, em 2026-07-23, até a mudança para o
|
||||
Gitea. O que ainda falta está no README, em
|
||||
[O que não está pronto](README.pt-BR.md#o-que-não-está-pronto).
|
||||
|
||||
### Servidor de e-mail
|
||||
|
||||
- SMTP MX e Submission (587 STARTTLS, 465 TLS implícito), IMAP com UID, flags,
|
||||
IDLE, CONDSTORE, `SEARCH`, `EXPUNGE`, `COPY` e `MOVE`, POP3 e ManageSieve.
|
||||
- SPF, DKIM (assinatura dupla Ed25519 e RSA), DMARC, selo ARC, MTA-STS e DANE na
|
||||
entrega, e ingestão de relatórios TLS-RPT.
|
||||
- Pontuação do Rspamd com greylisting, RBLs e limite de taxa, e ClamAV.
|
||||
- Fila de saída durável no Postgres, com a escada de tentativas e devoluções RFC
|
||||
3464, retransmissão por smarthost para hosts com a porta 25 bloqueada, e termo
|
||||
SPF do relay configurável (`RELAY_SPF_INCLUDE`).
|
||||
- O e-mail endereçado a este servidor é entregue localmente, sem sair para a
|
||||
internet e voltar.
|
||||
- Toda mensagem enviada fica na pasta Enviados de quem enviou; as senhas de
|
||||
aplicativo funcionam em SMTP, IMAP e POP3.
|
||||
- Regras Sieve avaliadas na entrega, pastas próprias e resposta de ausência RFC
|
||||
5230, que responde dentro da conversa e uma vez por remetente por semana.
|
||||
|
||||
### Webmail e console
|
||||
|
||||
- Redesenho completo das duas interfaces ("Nocturne"): temas escuro e claro,
|
||||
menu de comandos em `Ctrl K` / `Cmd K`, atalhos `c` e `/`, app instalável com
|
||||
ícone próprio e um logo desenhado.
|
||||
- Conversas em cascata, com quem escreveu, quantas mensagens e se você já
|
||||
respondeu; responder, responder a todos, importantes, desfazer o envio, e
|
||||
rascunhos que substituem o salvamento automático anterior.
|
||||
- Um leitor que combina com os dois temas: mensagens simples usam as cores do
|
||||
app, as desenhadas mantêm a folha branca, o histórico citado se recolhe e as
|
||||
imagens remotas ficam bloqueadas até serem liberadas.
|
||||
- Remetentes confiáveis, guardados no servidor por caixa: o e-mail deles não vai
|
||||
para o spam e sempre mostra as imagens.
|
||||
- Sessões do webmail de 30 dias que se renovam com o uso, várias contas abertas
|
||||
ao mesmo tempo e trocáveis pela barra lateral; o console continua em 8 horas.
|
||||
- Foto de perfil com editor de recorte circular, e hospedagem e validação do
|
||||
logotipo BIMI por domínio, publicado no DNS e mantido em dia com o logo.
|
||||
- Console de administração com paginação e filtros no servidor, edição de
|
||||
usuários (papel, cota, idioma, senha, segundo fator), apelidos, uma página de
|
||||
diagnóstico e isolamento entre as superfícies de usuário e de administração.
|
||||
Administradores de domínio ficam restritos ao próprio domínio.
|
||||
- Inglês, português e espanhol, com um teste de que toda string existe nos três.
|
||||
|
||||
### DNS e TLS
|
||||
|
||||
- Reconciliação com a Cloudflare dos registros esperados de cada domínio ativo,
|
||||
idempotente, com verificação de cada registro em resolvedores públicos; um
|
||||
registro DKIM nunca é publicado com a chave vazia.
|
||||
- Um painel de TLS que mostra o digest que o registro TLSA precisa carregar, e
|
||||
passos documentados para ligar o DANE. `TLS_MODE=traefik` (padrão) ou `acme`.
|
||||
|
||||
### Segurança
|
||||
|
||||
- Login em duas etapas com TOTP e códigos de recuperação; o cadastro não
|
||||
substitui mais um segredo que o autenticador já tem, não ativa o MFA sem
|
||||
códigos de recuperação e não derruba o serviço de autenticação. O
|
||||
`make reset-mfa` recupera um cadastro quebrado.
|
||||
- A concorrência do Argon2 é limitada, então uma enxurrada de logins não derruba
|
||||
o serviço de autenticação.
|
||||
- Todos os containers de serviço rodam sem root; as imagens passam pelo Trivy e
|
||||
o build falha em achados HIGH ou CRITICAL.
|
||||
- Dependências atualizadas por dois avisos publicados: `next` 15.5.28 (execução
|
||||
remota de código sem autenticação na otimização de imagens,
|
||||
GHSA-2464-fhr4-w9xw) e `go-jose` 4.1.6 (negação de serviço).
|
||||
|
||||
### Implantação e CI
|
||||
|
||||
- O servidor de produção só puxa imagens que o CI construiu e testou; nada é
|
||||
compilado nele. O compose fixa o Traefik na rede do proxy pelo nome.
|
||||
- **Mudança para o Gitea.** O código, os workflows (`.gitea/workflows`) e as
|
||||
imagens de container agora ficam em `git.lucasrguerra.dev.br`; as imagens são
|
||||
publicadas para `linux/amd64` e `linux/arm64` em
|
||||
`git.lucasrguerra.dev.br/lucasrguerra/lambdamail/<serviço>`, e a tag `v*` cria
|
||||
uma release com notas. Veja [docs/RELEASING.md](docs/RELEASING.md).
|
||||
- O CI guarda em cache o npm, os módulos Go, o Postgres embutido, o banco do
|
||||
Trivy e as camadas das imagens.
|
||||
- Um único `.env.example` para desenvolvimento e produção, e o
|
||||
`scripts/init-env.sh` para criar o `.env` com segredos aleatórios
|
||||
(`make env`). Ele substitui o `.env.production.example`.
|
||||
|
||||
### Corrigido
|
||||
|
||||
- Healthcheck do webmail: o Next escuta só em IPv4 e o `wget` resolvia
|
||||
`localhost` para `::1`.
|
||||
- O bloqueio do administrador, o rascunho que não descartava, os contadores de
|
||||
pastas, uma resposta de ausência que não era resposta, painéis de DNS que
|
||||
diziam faltar registros já publicados e o botão de reconciliar que não criava
|
||||
nada.
|
||||
- Migrações: partição padrão para `email_messages`.
|
||||
|
||||
[Não lançado]: https://git.lucasrguerra.dev.br/lucasrguerra/LambdaMail/compare/v1.0.0...HEAD
|
||||
[1.0.0]: https://git.lucasrguerra.dev.br/lucasrguerra/LambdaMail/releases/tag/v1.0.0
|
||||
Reference in new issue
Block a user