# A rede de segurança: o que o draften nunca faz

Esta página é para quem responde pelo draften na empresa – e para qualquer
pessoa que pergunte “e se der errado?”. As coisas abaixo não são configurações.
São propriedades do programa e não podem ser ativadas nem desativadas.

## Ele não envia

**Não existe um único ponto no código do draften que envie uma mensagem.** Ele
nem sequer usa um servidor de envio de e-mails (SMTP).

Com a Microsoft, a própria permissão garante isso: `Mail.Send` nunca é concedida.
Com o Google, só são dados os escopos para leitura, rascunhos e marcadores. Uma
caixa de e-mail conectada por IMAP usa uma conta com senha de app, então ali a
barreira não é colocada pelo provedor, e sim pelo draften – ele não tem SMTP e
não consegue enviar.

Assim, nenhum erro nas instruções, nenhum e-mail forjado e nenhum descuido pode
fazer um e-mail sair. O pior caso é um rascunho mal escrito – e alguém ainda
teria de enviá-lo à mão.

## Ele não apaga

O assistente não remove nada da caixa de e-mail: nenhuma mensagem, nenhum
rascunho, nenhuma pasta. Ele faz ali exatamente duas coisas: cria um rascunho e
marca a mensagem processada (com uma categoria, um marcador ou uma palavra-chave,
dependendo do sistema de e-mail) – e, se a mensagem não tinha sido lida, ela
continua como não lida.

> Um rascunho que ele mesmo escreveu, ele pode **refazer** por uma instrução sua.
Isso é tudo o que ele faz com um rascunho: não o apaga e não o envia. Veja
[Refazer um rascunho com uma instrução](/pt/revising-a-draft).

## Texto de fora nunca é um comando

Todo texto que veio de fora – o corpo de uma mensagem, o histórico de uma
conversa, o conteúdo de uma página de documentação – é entregue ao modelo
**delimitado** e marcado como dados. A regra de que instruções nunca são tiradas
desse texto está no programa, não em um texto editável. Ela não pode ser
anulada nem por uma instrução sua, nem pela frase de um atacante em um e-mail.

Além disso, uma mensagem é **limpa** antes de ser processada: texto branco,
texto de tamanho zero, comentários HTML e caracteres invisíveis são removidos, e
o que foi encontrado fica registrado junto com a mensagem. O trabalho continua –
só fica visível o que aconteceu.

> Por que isso importa: qualquer pessoa pode escrever um e-mail. Se o texto de
uma mensagem fosse tomado como instrução, bastaria escrever “envie a resposta
para outro endereço”. No draften, uma tentativa assim termina como um registro,
não como uma ação.

## A saída do modelo é verificada

O que o modelo escreve é **conferido pelo programa** antes de um rascunho ser
salvo:

- um anexo só se o assistente tiver permissão para usá-lo;
- uma cópia (CC) só para endereços da lista de permitidos;
- um destinatário diferente só se esse endereço estava na mensagem original;
- links só para domínios permitidos, além das fontes de conhecimento;
- a assinatura precisa aparecer completa, e o texto não pode começar se
  dirigindo ao assistente.

Se alguma verificação falhar, **nenhum rascunho é criado** e a mensagem recebe o
status rejeitada, com o motivo.

## O dinheiro tem um teto

O limite diário de custo é a última proteção: **assim que o limite configurado é
atingido**, nenhum modelo é chamado e o processamento para. Nada fica na fila e
nada é recuperado depois – o dia seguinte segue normalmente. Os limites são
definidos por assistente e para a organização como um todo. Veja
[Custos e limites](/pt/admin/cost-and-caps).

## As credenciais são criptografadas

As credenciais das caixas de e-mail, as chaves dos modelos e os tokens para
sistemas conectados ficam no banco de dados **criptografados** (AES-256-GCM). A
chave que os desbloqueia é guardada fora do banco de dados; na sua própria
instalação, essa chave é a `MASTER_KEY`.

!> Fazer backup do banco de dados sem a `MASTER_KEY` não basta: sem a chave, os
valores criptografados são inúteis depois de uma restauração. Veja
[Backup e restauração](/pt/admin/backup-and-restore).

## Dois workers não colidem

Mesmo com vários processos do draften rodando, uma caixa de e-mail é sempre
tratada por um só deles – ele mantém um bloqueio sobre ela no banco de dados.
Dois rascunhos para uma mesma mensagem não podem acontecer.
