Primeiro, o panorama geral, a partir do diretório da instalação:
./draften status # version, health of both web colours and the workers, HTTPS, database dumps
Depois, com mais detalhes:
docker compose ps # are the services up, is the database healthy?
docker compose logs --tail 50 worker # the worker's last entries
docker compose run --rm worker node diag.mjs mailbox@company.com
O último faz o mesmo que Testar a conexão na interface: pega o acesso guardado para a caixa de e-mail, obtém um token, mostra as permissões dele (nunca o próprio token) e lê a Caixa de Entrada.
Erros comuns
| Sintoma | Causa | O que fazer |
|---|---|---|
set DB_PASSWORD in .env na inicialização | faltam as senhas do banco de dados | preencha o .env |
mailbox … has no access yet | a caixa de e-mail não tem registro nem conta conectada | a página da caixa de e-mail → Acesso aos e-mails |
Graph … 401 … invalid_client | client secret errado ou expirado | um novo secret no registro e, depois, o teste de conexão |
Graph … 403 … AppOnly AccessPolicy | a application access policy ainda não entrou em vigor, ou a caixa de e-mail não está no grupo | espere (às vezes horas) e repita o teste; adicione a caixa de e-mail ao grupo |
Graph … 403 … ErrorAccessDenied | falta o consentimento do administrador | no Entra, Grant admin consent no registro |
Category not added … MailboxSettings | falta a permissão MailboxSettings.ReadWrite; o marcador funciona, só que sem cor | adicione a permissão e dê o consentimento |
No active assistant in the database | o assistente está desativado, ou os dados iniciais não foram criados | ative o assistente; confira o log de inicialização |
| o assistente é pulado (“no prompts yet”) | o assistente não tem instruções escritas | conclua a configuração guiada ou escreva as instruções à mão |
Draft without signature / links outside the allowed domains | o rascunho não passou em uma verificação | examine a mensagem – pode ser uma tentativa de falsificação |
Limit reached | o limite diário ou por remetente | aumente-o só quando a enxurrada de e-mails for legítima |
Model refused to answer | o filtro de segurança do modelo | trate a mensagem à mão |
Model exhausted max_iterations | o modelo entrou em loop nas ferramentas | é repetido duas vezes; se continuar acontecendo, aprimore a instrução do tipo Tarefa |
ECONNREFUSED … 3306 | o banco de dados caiu ou ainda não subiu | docker compose ps, docker compose logs db |
| a barra “A licença expirou” ou “A instalação não tem licença”, os assistentes não escrevem nada | a licença está faltando ou expirou | carregue uma licença válida – veja A licença |
| uma atualização terminou com erro | a nova versão não ficou saudável; a anterior continua atendendo | o erro em Solicitações ou na saída de ./draften update; ./draften status |
Quando o log não mostra
- A interface: nas Configurações do assistente → Atividade (verificações de e-mails, solicitações, eventos) e a página Operação (workers, fila, erros das últimas 24 horas).
- Depois de três tentativas sem sucesso, a mensagem recebe o status com falha; o último erro está no detalhe dela.
Uma rodada manual avulsa
docker compose run --rm worker node worker.mjs --dry-run
Ela passa uma vez por todos os assistentes ativos e força o modo de teste – nada é gravado nos e-mails. Útil para conferir se tudo funciona.
Quando você precisa da nossa ajuda
./draften diagnose
grava um arquivo diagnose-<time>.tar.gz com o status da instalação, as versões, a configuração sem segredos e o final dos logs. Envie-o para nós.
Antes de enviar o arquivo, confira o conteúdo: os logs podem conter endereços e assuntos dos e-mails processados. Nada sai do servidor sozinho.