Portão de Segurança para Outreach via Cron
O envio automatizado falha de quatro maneiras caras: identidade de remetente errada (incompatibilidade SPF/DKIM → pasta de spam), público errado (pessoas que já disseram não), sem limite de taxa (loop descontrolado → domínio queimado) e crons zumbis (enviando após o fim da campanha). Este portão detecta todos os quatro em dez minutos.
O portão (todos os cinco devem passar)
- Identidade: endereço do remetente + nome de exibição válidos para ESTA campanha? Verifique:
- Cabeçalho From RFC-5322-válido — um nome de exibição contendo vírgula DEVE estar entre aspas duplas (
"Sobrenome, Nome" <email>), ou a API retornará 422. - O domínio de envio possui SPF/DKIM alinhado para o provedor escolhido.
User-Agentpersonalizado nas chamadas de API (os padrões do urllib/requests são bloqueados como bots, ex. Cloudflare 1010 — leia o corpo, não presuma falha de autenticação).
- Cabeçalho From RFC-5322-válido — um nome de exibição contendo vírgula DEVE estar entre aspas duplas (
- Audiência: lista construída apenas a partir de OPT-IN ou contexto profissional público; exclui qualquer pessoa que tenha optado anteriormente; sem listas compradas; sem números de telefone a menos que a campanha seja explicitamente de SMS.
- Limite: limite máximo por execução (máximo de envios), limite máximo por hora e um interruptor geral (um arquivo/env que o cron verifica antes de cada envio). Sem limite = não ativar.
- Conteúdo: sem alegações enganosas, sem urgência falsa, caminho de cancelamento/opt-out funcional e a mensagem identifica a organização remetente.
- Ciclo de vida: a campanha tem uma data de término; o cron se desativa automaticamente ou o calendário do operador tem uma revisão; o estado "pausado" é REAL (verificado no agendador, não presumido a partir de uma flag).
Bandeiras vermelhas que significam PARE
- "Vamos reenviar para quem não abriu até que respondam."
- A lista veio de um diretório extraído com intenção de coleta de contatos.
- Ninguém sabe quem aprovou o conteúdo.
- O cron envia a partir de um endereço pessoal.
Não para
- E-mails transacionais (recibos, notificações de entrega para clientes existentes).
- Campanhas com humano no loop onde uma pessoa aperta o botão de enviar.
Exemplo
Pergunta: "Reative o cron de outreach de terça-feira após a mudança." Antes: ligar e descobrir 400 envios para uma lista desatualizada, incluindo 30 opt-outs. Depois: o portão detecta 2/5 — a lista de audiência está desatualizada (opt-outs presentes) e o interruptor geral não está definido. Corrija ambos (reconstrua a lista, adicione o interruptor geral de env), DEPOIS ative.
Versão
1.0.0 — Série inicial DDG (de operar crons de outreach do jeito difícil).