O diagnóstico mais útil
exempt_products é tráfego passando sem checagem de propósito, e é a resposta para “por que isto não
foi pego?” que nenhuma política da própria conta consegue mostrar.
Quatro interruptores, e a ordem em que resolvem
Uma mensagem é checada apenas se todos os quatro disserem que sim. Estão listados na ordem em que o gateway os resolve, que é também a ordem para consultar quando algo não está sendo aplicado.
Os três primeiros são interruptores que um operador configura; o quarto é a política em si.
conf.whitelist.enabled vem ligado por padrão, então o interruptor mestre é o que decide — um
listener precisa optar por sair. Ele existe porque os clientes raramente estão todos em um único
listener: um listener de tráfego registrado pode aplicar enforcement enquanto um interno ou de teste
não, sem que isso seja uma propriedade de cada conta.Aplica-se apenas ao SMPP. O ingress HTTP não tem listener para pendurar isso, então use o produto ou a
conta lá.Report antes de enforce
Cada um deheader_mode e content_mode é OFF, REPORT ou ENFORCE. REPORT é por que isto
não é um booleano.
1
Aprove o que você já conhece
Sender IDs e templates para a conta, ou para um produto que é checado. Veja
Sender IDs e Content templates.
2
Configure a conta para REPORT
Toda mensagem é checada, logada como
message.wouldReject em INFO, e enviada mesmo assim. Nada é
recusado.3
Leia report_only_would_reject
Ele conta o que
ENFORCE teria recusado, e é o número a observar. Deixe rodando tempo suficiente para
cobrir os dias mais lentos do cliente — um template usado uma vez por mês é invisível numa tarde.4
Aprove o que o log nomeia, e só então enforce
headerNotApproved e templateNotMatched nomeiam o que estava errado, e a conta à qual pertence.Enforcing com nada aprovado
O painel de controle recusa o save que criaria isso, contando da mesma forma que o gateway conta. Duas coisas tornam isso mais do que uma soma:- Produtos isentos não protegem nada. Um produto com
whitelist_enabled = falseresolve paraOFFantes de qualquer merge, então uma aprovação arquivada sob ele é armazenada e nunca consultada. Contá-la deixaria passar uma conta cujas aprovações são todas inertes — criando exatamente a indisponibilidade que a guarda existe para prevenir. - Tráfego sem produto é servido apenas pelo escopo da conta. Nenhuma aprovação com escopo de
produto pode alcançá-lo. Então um
ENFORCEem nível de conta com uma lista de conta vazia interrompe todo login cuja credencial não nomeia produto, por mais aprovações de produto que existam.
Aprovado não é o mesmo que aceito
O que uma recusa parece
Sobre HTTP, 403 e uma mensagem nomeando o que estava errado:submit_sm é rejeitado em vez de aceito e descartado, então o próprio cliente vê a
falha no momento do submit em vez de inferi-la de um recibo que nunca chega. Veja
Status codes.
Toda recusa é logada com um motivo — headerNotApproved, templateNotMatched — e a conta à qual
pertence. Em modo REPORT a mesma linha aparece como message.wouldReject em INFO e a mensagem sai.
Aprovar não precisa de reconexão
A whitelist é relida no poll de configuração e cada snapshot carrega uma geração, então uma sessão SMPP conectada por semanas capta um sender ID recém-aprovado sem reconectar. Isso importa porque o cliente cujo tráfego está sendo recusado geralmente está no telefone enquanto alguém aprova.Whitelisting reference
Cada propriedade, os três modos de stamping, e a checagem mandatória por-fornecedor.
Products
Isenções, e por que um produto desconhecido é checado em vez de deixado passar.