Files
LambdaMail/services/webmail/messages/pt-BR.json
T
Lucas RayanandClaude Opus 5 30014f0f41 #21: fix the DKIM, onboarding and console defects found reviewing the new work
DKIM rotation broke the domain it was run on. It retired the live key and
inserted a placeholder as ACTIVE - private_key_enc was the literal string
"dummy-encrypted-key" - so FindActiveKeys then failed for the whole
domain and outbound mail stopped being signed, with the real key already
gone. Reproduced against a database before changing anything.

The root cause runs deeper: the auth service derives its encryption key
with a plain SHA-256 of the master key while the protocols service uses
HKDF with its own info string, so nothing the auth service seals can ever
be opened by the signer. Rotation therefore moves to the protocols
service, which owns that vault and the real key generator. It retires the
previous key with a seven-day overlap in the same transaction rather than
deleting it, because mail already sent under it is still being verified.

Domain onboarding had three defects in one function. It built the alias
destination by interpolating the domain name into the SQL text, which was
injectable; it reused one placeholder for a CITEXT and a VARCHAR column,
which made the statement fail and happened to hide the injection; and it
ignored its scope argument entirely, so any DOMAIN_ADMIN could create
domains. It also provisioned postmaster, abuse and security, missing the
dmarc and tlsrpt aliases that the published records point at - PLAN.md
section 7.4b is explicit that reports bounce without them.

The TLS panel returned fixed values: acme_status "VALID" and 72 days to
expiry, whatever the process actually held. It now reads the certificate
watcher, and a compile-time assertion keeps the wiring from silently
regressing into "disabled". The audit log and the readiness scorecard were
fixtures too, and their field names did not match the API they now read.

Two tests failed and a third asserted a fabricated constant: one depended
on test order through a shared fixture that had a second factor enrolled,
one used a fixed domain name and so passed once per database, and one
expected "records: 13" from a function that never touches DNS. All three
are fixed, and the suite now passes twice in a row against one database.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 13:33:33 -03:00

148 lines
5.6 KiB
JSON

{
"common": {
"appName": "LambdaMail",
"userPortal": "Webmail",
"adminPortal": "Console de Gestão",
"loading": "Carregando...",
"save": "Salvar Alterações",
"cancel": "Cancelar",
"delete": "Excluir",
"confirm": "Confirmar",
"search": "Buscar",
"status": "Status",
"actions": "Ações",
"refresh": "Atualizar",
"logout": "Sair"
},
"auth": {
"userLoginTitle": "Entrar no Webmail",
"adminLoginTitle": "Entrar no Console Admin",
"emailLabel": "Endereço de E-mail",
"passwordLabel": "Senha",
"signInButton": "Entrar",
"totpCodeLabel": "Código do Autenticador (6 dígitos)",
"verifyCodeButton": "Verificar Código",
"invalidCredentials": "E-mail ou senha inválidos",
"mfaRequired": "Código de autenticação em dois fatores obrigatório"
},
"mail": {
"inbox": "Caixa de Entrada",
"sent": "Enviados",
"drafts": "Rascunhos",
"trash": "Lixeira",
"junk": "Spam",
"archive": "Arquivo",
"compose": "Escrever E-mail",
"noMessages": "Nenhuma mensagem nesta pasta",
"unreadCount": "{count, plural, =0 {Nenhuma mensagem não lida} one {# mensagem não lida} other {# mensagens não lidas}}",
"loadImages": "Carregar Imagens Remotas",
"reply": "Responder",
"forward": "Encaminhar",
"undoSend": "Desfazer Envio ({seconds}s restantes)"
},
"settings": {
"title": "Configurações da Conta",
"security": "Segurança e 2FA",
"appPasswords": "Senhas de Aplicativo",
"sessions": "Sessões Ativas",
"mfaStatus": "Status da Autenticação em Dois Fatores",
"mfaEnabled": "2FA está Ativo",
"mfaDisabled": "2FA está Desativado",
"enableMfa": "Ativar 2FA",
"generateAppPassword": "Gerar Senha de Aplicativo",
"recoveryCodesTitle": "Códigos de Recuperação",
"saveRecoveryCodes": "Guarde estes códigos de recuperação em local seguro. Eles não serão exibidos novamente.",
"language": "Idioma",
"signOut": "Sair",
"langEn": "Inglês",
"langPtBR": "Português (Brasil)",
"langEs": "Espanhol"
},
"admin": {
"dashboardTitle": "Painel do Sistema",
"domainsTitle": "Domínios e DNS (13 Registros)",
"mailboxesTitle": "Caixas Postais e Contas",
"aliasesTitle": "Aliases e Roteamento",
"queueTitle": "Fila de Entrega de Saída",
"dmarcTitle": "Análise DMARC",
"securityTitle": "Segurança e Log de Auditoria",
"preflightTitle": "Diagnóstico Preflight",
"reconcileDns": "Reconciliar Registros DNS",
"dnsStatusVerified": "VERIFICADO",
"dnsStatusDrift": "DESVIO DETECTADO",
"dnsStatusPartial": "PARCIAL",
"retryJob": "Tentar Entrega Novamente",
"cancelJob": "Cancelar Trabalho",
"freezeDomain": "Congelar Destino"
},
"errors": {
"unauthorized": "Sessão expirada ou não autorizada",
"forbidden": "Acesso proibido para esta superfície de conta",
"serverError": "Ocorreu um erro interno no servidor"
},
"ui": {
"accountStatus": "Situacao da conta",
"actions": "Acoes",
"active": "ATIVA",
"activeSessions": "Sessoes ativas do webmail",
"actor": "Autor / conta",
"actualRecord": "Registro DNS atual (Cloudflare)",
"allChecksPassed": "TODAS AS CHECAGENS PASSARAM",
"appPasswordGenerated": "Senha de aplicativo gerada:",
"appPasswordsSection": "Senhas de aplicativo (clientes IMAP / SMTP)",
"attempts": "Tentativas",
"clientIp": "IP do cliente",
"copyPasswordNow": "Copie esta senha agora. Ela nao sera exibida novamente.",
"coreInfra": "Estado da infraestrutura",
"currentSession": "Sessao atual deste navegador",
"daneVerified": "DANE / MTA-STS verificado",
"destination": "Destino",
"diskUsed": "Uso de disco",
"dkimResult": "Resultado DKIM",
"dkimAlignment": "Alinhamento da assinatura DKIM",
"dmarcEnforcement": "Aplicacao da politica DMARC",
"domainVerification": "Estado da verificacao do dominio",
"emailAddress": "Endereco de e-mail",
"eventAction": "Acao registrada",
"expectedValue": "Valor esperado pela especificacao",
"healthy": "SAUDAVEL",
"imapEngine": "Servidor IMAP (143/993)",
"inboundVolume": "Volume de entrada (24h)",
"jobId": "ID do trabalho",
"lastError": "Ultimo erro",
"liveMetrics": "Metricas operacionais do no de e-mail.",
"localDisk": "Armazenamento em disco local",
"preflightTitle": "Diagnostico de preflight do servidor",
"messageBody": "Corpo da mensagem",
"messageVolume": "Volume de mensagens",
"noAppPasswords": "Nenhuma senha de aplicativo gerada ainda.",
"online": "ONLINE",
"outboundDelivered": "Entregues na saida (24h)",
"queueDepth": "Profundidade da fila",
"postgresRunner": "Executor de tarefas Postgres ativo",
"provisionMailbox": "Criar nova caixa postal",
"recipient": "Destinatario",
"recordName": "Nome do registro",
"reportingOrg": "Organizacao que reportou",
"scanners": "Rspamd (antispam) e ClamAV",
"sender": "Remetente",
"smtpListener": "Servidor SMTP (25/587/465)",
"sourceIp": "IP de origem",
"spfRatio": "Taxa de alinhamento SPF",
"spfResult": "Resultado SPF",
"storageQuota": "Cota de armazenamento",
"subject": "Assunto",
"targetObject": "Objeto alvo",
"timestamp": "Data e hora",
"toRecipients": "Para (destinatarios)",
"totalEvaluated": "Total de mensagens avaliadas",
"twoFactorSection": "Autenticacao em dois fatores (TOTP RFC 6238)",
"watching": "OBSERVANDO",
"passwordChanged": "Senha alterada",
"signOutOthers": "Encerrar as outras sessoes",
"changePassword": "Alterar senha",
"currentPassword": "Senha atual",
"newPassword": "Nova senha (min. 12 caracteres)"
}
}