feat(webmail,auth): leitor estilo Outlook, responder a todos, importantes e isolamento do admin de dominio

Webmail
- Leitor de mensagem em componente proprio, com barra de comandos fixa,
  cabecalho compacto, faixa de imagens bloqueadas e chips de anexo.
- Divisor arrastavel entre lista e leitor (mouse, setas, duplo clique),
  largura persistida e limites que preservam os dois paineis.
- Destinatarios em chips (Para, Cc, Cco): aceita nomes com virgula,
  colagem de listas, validacao e bloqueio de envio com endereco invalido.
- Responder a todos, sem o proprio endereco e sem repetidos; In-Reply-To
  e References nas respostas; prefixo Re:/Fwd: sem repeticao.
- Marcar como importante (estrela, filtro, linha da lista) e enviar com
  alta importancia (Importance/X-Priority), com etiqueta no leitor.
- Sanitizador: a regexp de URI customizada descartava todo atributo que nao
  fosse link (width, colspan, bgcolor...), o que desmontava tabelas de
  e-mail; imagens de fundo agora sao bloqueadas de forma reversivel.

Protocols
- POST /api/v1/mail/flagged (\Flagged) com bump de modseq para IMAP.
- Renderizacao expoe message_id, in_reply_to e important.
- Cabecalhos de resposta validados contra injecao.

Auth
- As views do admin de dominio eram globais: dashboard, fila de saida,
  DMARC, preflight e diagnostico mostravam dados de todos os dominios.
  Agora todas respeitam o escopo da sessao; super admin segue vendo tudo.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Lucas RayanandClaude Sonnet 5.5 committed 2026-10-13 10:09:55 -03:00
1 parent b5baf33a63
commit 50a67531ba
30 files changed
+1810 -348

No files matched your search

+15
View File
@@ -209,6 +209,21 @@
"junk": "Spam",
"reports": "Relatórios",
"loadImages": "Carregar imagens",
"messageActions": "Ações da mensagem",
"showFewerRecipients": "Mostrar menos",
"replyAll": "Responder a todos",
"markImportant": "Marcar como importante",
"unmarkImportant": "Remover importância",
"markedImportant": "Marcada como importante",
"importantFilter": "Importantes",
"highImportance": "Alta importância",
"highImportanceHint": "Envia a mensagem marcada como prioritária",
"highImportanceBadge": "Alta importância",
"noRecipients": "Adicione pelo menos um destinatário.",
"fixRecipients": "Corrija os endereços destacados em vermelho antes de enviar.",
"invalidAddress": "Este endereço não parece válido",
"removeRecipient": "Remover {name}",
"resizeList": "Redimensionar a lista de mensagens",
"markRead": "Marcar como lida",
"markUnread": "Marcar como não lida",
"messagesInFolder": "{count} mensagens",