Pular para o conteúdo principal

Referência de Configuração

Guia completo para todos os parâmetros de configuração

Visão Geral da Arquitetura

O Gateway SMPP OmniMessage é um frontend de protocolo sem estado que traduz mensagens SMPP para/de OmniMessage. Toda a lógica de negócios, decisões de roteamento e armazenamento de mensagens são gerenciados pelo OmniMessage Core - o gateway simplesmente:

  1. Recebe PDUs SMPP de operadoras e clientes
  2. Traduz para o formato OmniMessage via REST API
  3. Consulta o OmniMessage por mensagens a serem enviadas
  4. Envia PDUs SMPP para operadoras
  5. Relata o status de entrega de volta ao OmniMessage

Isso é idêntico a como outros frontends do OmniMessage (Diameter, MAP, IMS) funcionam - todos são tradutores de protocolo sem estado que delegam ao OmniMessage Core.

Localização do Arquivo de Configuração

/opt/omnimessage-smpp/config/runtime.exs

Importante: Após alterar a configuração, reinicie o gateway:

sudo systemctl restart omnimessage-smpp

Estrutura da Configuração

O arquivo de configuração usa a sintaxe Elixir. Estrutura básica:

import Config

# Configurações globais
config :omnimessage_smpp,
setting_name: value

# Bindings SMPP
config :omnimessage_smpp, :binds, [
%{
name: "bind_name",
# ... configurações de bind
}
]

Configurações Globais

API_BASE_URL

URL da plataforma OmniMessage Core

config :omnimessage_smpp,
api_base_url: "https://omnimessage-core.example.com:8443"
ParâmetroTipoRequeridoPadrão
api_base_urlString (URL)Sim-

Propósito: URL da plataforma OmniMessage Core. O gateway se comunica com o OmniMessage via REST API para todo o processamento de mensagens:

  • Enviar Mensagens: Enviar mensagens SMPP recebidas para o OmniMessage para processamento
  • Recuperar Mensagens: Consultar mensagens destinadas às operadoras SMPP
  • Relatar Status de Entrega: Atualizar o status de entrega da mensagem de volta ao OmniMessage
  • Saúde do Sistema: Verificações de saúde periódicas

Crítico: É aqui que o gateway obtém toda a sua "inteligência". O OmniMessage gerencia:

  • ✓ Validação de mensagens e verificação de formato
  • ✓ Decisões de roteamento (qual operadora usar)
  • ✓ Limitação de taxa e controle de fluxo
  • ✓ Validação de número
  • ✓ Armazenamento e persistência de mensagens
  • ✓ Lógica de tentativas de entrega
  • ✓ Rastreamento de status

O gateway simplesmente traduz o formato SMPP ↔ OmniMessage.

Exemplos:

# HTTPS com IP
api_base_url: "https://192.168.1.100:8443"

# HTTPS com nome de host
api_base_url: "https://omnimessage-core.company.com:8443"

# HTTP (não recomendado para produção)
api_base_url: "http://192.168.1.100:8080"

Requisitos de Rede:

  • O gateway deve ter acesso à rede do OmniMessage Core
  • Use HTTPS em produção (configure verify_ssl_peer)
  • O firewall deve permitir HTTPS de saída na porta especificada

SMPP_POLL_INTERVAL

Frequência de verificação da fila (milissegundos)

config :omnimessage_smpp,
smpp_poll_interval: 100
ParâmetroTipoRequeridoPadrão
smpp_poll_intervalInteiroNão100

Propósito: Com que frequência (em milissegundos) cada cliente verifica a fila de mensagens.

Diretrizes:

  • Alto volume (>100 TPS): 100-500ms
  • Volume médio (10-100 TPS): 500-1000ms
  • Baixo volume (<10 TPS): 1000-2000ms

Variável de ambiente: SMPP_POLL_INTERVAL

VERIFY_SSL_PEER

Verificação de certificado SSL

config :omnimessage_smpp,
verify_ssl_peer: false
ParâmetroTipoRequeridoPadrão
verify_ssl_peerBooleanoNãofalse

Propósito: Se deve verificar os certificados SSL ao conectar-se à API de backend.

Valores:

  • true: Verificar certificados (produção com certificados válidos)
  • false: Ignorar verificação (certificados autoassinados, teste)

Variável de ambiente: VERIFY_SSL_PEER

SMSC_NAME

Identificador do gateway para registro

config :omnimessage_smpp,
smsc_name: "smpp_gateway"
ParâmetroTipoRequeridoPadrão
smsc_nameStringNão"smpp_gateway"

Propósito: Identifica esta instância de gateway no backend da fila de mensagens.

Variável de ambiente: SMSC_NAME


Configuração de Bind do Cliente SMPP

Bindings de cliente são conexões de saída onde o gateway atua como um ESME (cliente) conectando-se aos servidores SMSC da operadora. Neste modo, o gateway inicia a conexão para enviar e receber mensagens através de operadoras externas.

Exemplo Completo de Bind do Cliente

config :omnimessage_smpp, :binds, [
%{
# Identificador único para esta conexão
name: "vodafone_uk",

# Modo de conexão
mode: :client,

# Tipo de bind SMPP
bind_type: :transceiver,

# Endereço do servidor SMPP da operadora
host: "smpp.vodafone.co.uk",
port: 2775,

# Credenciais de autenticação
system_id: "your_username",
password: "your_password",

# Campos do protocolo SMPP (opcional, definir se a operadora exigir)
system_type: "",
addr_ton: 0,
addr_npi: 0,
address_range: "",

# Limitação de taxa
tps_limit: 100,

# Frequência de verificação da fila
queue_check_frequency: 1000,

# Intervalo de keepalive (segundos, 0 para desativar)
enquire_link_interval: 60,

# Cache de mensagens (opcional)
cache_enabled: false,
cache_max_size: 10000,
cache_retry_interval: 60
}
]

Parâmetros de Bind do Cliente

name

Identificador único da conexão

TipoRequeridoExemplo
StringSim"vodafone_uk"

Propósito: Identifica exclusivamente esta conexão SMPP.

  • Usado em logs e métricas
  • Deve ser único entre todos os binds
  • Use nomes descritivos (operadora, região, propósito)

Convenções de nomenclatura:

  • operadora_região: "vodafone_uk", "att_us"
  • número_propósito: "marketing_1", "alerts_primary"

mode

Tipo de conexão

TipoRequeridoValor
ÁtomoSim:client

Propósito: Define isso como uma conexão de saída onde o gateway atua como um ESME conectando-se a um SMSC externo.

Valor fixo: Sempre :client para conexões de saída.

bind_type

Tipo de sessão SMPP

TipoRequeridoValores Permitidos
ÁtomoSim:transmitter, :receiver, :transceiver

Propósito: Define a capacidade de direção da mensagem.

Opções:

  • :transmitter - Enviar mensagens apenas (submit_sm)
  • :receiver - Receber mensagens apenas (deliver_sm)
  • :transceiver - Enviar e receber (mais comum)

Recomendação: Use :transceiver a menos que a operadora exija um tipo específico.

host

Nome do host ou IP do servidor SMPP da operadora

TipoRequeridoExemplo
StringSim"smpp.carrier.com" ou "10.5.1.100"

Propósito: Endereço do servidor SMPP da operadora.

Exemplos:

host: "smpp.vodafone.co.uk"
host: "10.20.30.40"
host: "smpp-primary.carrier.net"

port

Porta do servidor SMPP

TipoRequeridoPadrãoFaixa
InteiroSim27751-65535

Propósito: Porta TCP para a conexão SMPP.

Porta padrão: 2775

Exemplos:

port: 2775  # Padrão
port: 3000 # Personalizada

system_id

Nome de usuário de autenticação

TipoRequeridoExemplo
StringSim"company_user"

Propósito: Nome de usuário fornecido pela operadora para autenticação.

Segurança: Proteja esta credencial - armazenada no arquivo de configuração.

password

Senha de autenticação

TipoRequeridoExemplo
StringSim"secret_password"

Propósito: Senha fornecida pela operadora para autenticação.

Segurança:

  • Proteja esta credencial
  • Use senhas fortes
  • Altere periodicamente

tps_limit

Limite de transações por segundo

TipoRequeridoPadrãoFaixa
InteiroSim1001-10000

Propósito: Número máximo de mensagens por segundo a serem enviadas através desta conexão.

Diretrizes:

  • Defina para 70-80% do máximo da operadora
  • Previna controle de fluxo/desconexão
  • Permite margem para recibos de entrega

Exemplos:

tps_limit: 10    # Baixo volume
tps_limit: 50 # Volume médio
tps_limit: 100 # Alto volume (mais comum)
tps_limit: 1000 # Volume muito alto

Cálculo:

Se o máximo da operadora = 100 TPS
Defina tps_limit = 70-80
Deixa 20-30 TPS de margem

queue_check_frequency

Intervalo de polling da fila de mensagens (milissegundos)

TipoRequeridoPadrãoFaixa
InteiroSim1000100-10000

Propósito: Com que frequência verificar o backend por novas mensagens a serem enviadas.

Diretrizes:

  • Alto volume (>100 TPS): 500-1000ms
  • Volume médio (10-100 TPS): 1000-2000ms
  • Baixo volume (<10 TPS): 2000-5000ms

Compensações:

  • Valor mais baixo = coleta de mensagens mais rápida, mais carga na API
  • Valor mais alto = coleta mais lenta, menos carga na API

Intervalo de keepalive SMPP (segundos)

TipoRequeridoPadrãoFaixa
InteiroNão600-3600

Propósito: Com que frequência (em segundos) enviar PDUs enquire_link SMPP para verificar se a conexão está ativa. O servidor remoto responde com enquire_link_resp.

Diretrizes:

  • Padrão (60): Adequado para a maioria das operadoras
  • Valores mais baixos (15-30): Detecção de falhas mais rápida, mais tráfego
  • Valores mais altos (120-300): Menos sobrecarga, detecção de falhas mais lenta
  • 0: Desativa completamente o enquire_link (não recomendado)

Exemplos:

enquire_link_interval: 60   # Padrão (1 minuto)
enquire_link_interval: 30 # Keepalive agressivo
enquire_link_interval: 0 # Desativado

system_type

Identificador do tipo de sistema SMPP

TipoRequeridoPadrãoExemplo
StringNão"""OTP"

Propósito: Campo do protocolo SMPP enviado durante o bind. Algumas operadoras exigem um valor específico. Deixe em branco, a menos que a operadora especifique um.

addr_ton

Tipo de Número de Endereço

TipoRequeridoPadrãoFaixa
InteiroNão00-6

Propósito: Campo do protocolo SMPP que especifica o tipo de número usado na solicitação de bind.

Valores comuns:

  • 0 - Desconhecido
  • 1 - Internacional
  • 2 - Nacional
  • 5 - Alfanumérico

Defina conforme exigido pela operadora.

addr_npi

Indicador do Plano de Numeração de Endereço

TipoRequeridoPadrãoFaixa
InteiroNão00-18

Propósito: Campo do protocolo SMPP que especifica o plano de numeração na solicitação de bind.

Valores comuns:

  • 0 - Desconhecido
  • 1 - ISDN/E.164
  • 3 - Dados/X.121
  • 9 - Privado

Defina conforme exigido pela operadora.

address_range

Faixa de endereços para bind

TipoRequeridoPadrãoExemplo
StringNão"""614*"

Propósito: Campo do protocolo SMPP que especifica a faixa de endereços que este bind manipula. Usado por algumas operadoras para filtrar quais mensagens são entregues a esta conexão. Deixe em branco, a menos que a operadora especifique um valor.

enabled

Estado de ativação do peer

TipoRequeridoPadrão
BooleanoNãotrue

Propósito: Controla se este peer está ativo. Peers desativados são mantidos na configuração, mas não estabelecem conexões. Útil para retirar temporariamente uma conexão do ar sem excluir sua configuração.

cache_enabled

Ativar cache local de mensagens

TipoRequeridoPadrão
BooleanoNãofalse

Propósito: Quando ativado, mensagens recebidas são armazenadas localmente se a API de backend estiver inacessível, e depois entregues automaticamente quando a conectividade for restaurada. Veja MESSAGE_CACHE.md para detalhes completos.

cache_max_size

Número máximo de mensagens em cache

TipoRequeridoPadrãoFaixa
InteiroNão100001-1000000

Propósito: Número máximo de mensagens a serem armazenadas em cache por bind. Quando o limite é atingido, as mensagens mais antigas são removidas (FIFO). Aplica-se apenas quando cache_enabled é true.

cache_retry_interval

Intervalo base de nova tentativa (segundos)

TipoRequeridoPadrão
InteiroNão60

Propósito: Intervalo base em segundos antes de tentar novamente a entrega de uma mensagem em cache. Combinado com backoff exponencial (nova tentativa 0: 60s, nova tentativa 1: 120s, nova tentativa 2: 240s, etc.). Aplica-se apenas quando cache_enabled é true.

Exemplo de UI Web:

Formulário de Configuração de Peer do Cliente - Adicionar ou editar conexões de operadora de saída


Configuração de Bind do Servidor SMPP

Bindings de servidor definem conexões de entrada onde o gateway atua como um SMSC (servidor) aceitando conexões de ESMEs externas (clientes). Neste modo, sistemas parceiros se conectam ao gateway para enviar e receber mensagens.

Exemplo Completo de Bind do Servidor

config :omnimessage_smpp, :server_binds, [
%{
# Identificador único para este cliente
name: "partner_acme",

# Credenciais esperadas do cliente
system_id: "acme_corp",
password: "acme_secret",

# Tipos de bind permitidos
allowed_bind_types: [:transmitter, :receiver, :transceiver],

# Restrições de IP
ip_whitelist: ["192.168.1.0/24", "10.50.1.100"],

# Restrições de endereço de origem (vazio = permitir todos)
source_address_whitelist: [],

# Limitação de taxa
tps_limit: 50,

# Frequência de verificação da fila
queue_check_frequency: 1000,

# Intervalo de keepalive (segundos, 0 para desativar)
enquire_link_interval: 60,

# Cache de mensagens (opcional)
cache_enabled: false,
cache_max_size: 10000,
cache_retry_interval: 60
}
]

Parâmetros de Bind do Servidor

name

Identificador do cliente

TipoRequeridoExemplo
StringSim"partner_acme"

Propósito: Identifica o cliente externo que está se conectando a você.

Convenções de nomenclatura: Use o nome do parceiro/cliente para fácil identificação.

system_id

Nome de usuário esperado do cliente

TipoRequeridoExemplo
StringSim"acme_corp"

Propósito: Nome de usuário que o cliente externo deve fornecer para autenticação.

Fornecer ao cliente: Compartilhe esta credencial com seu parceiro.

password

Senha esperada do cliente

TipoRequeridoExemplo
StringSim"secure_password"

Propósito: Senha que o cliente externo deve fornecer para autenticação.

Segurança:

  • Use senhas fortes
  • Única por cliente
  • Compartilhe de forma segura com o parceiro

allowed_bind_types

Tipos de sessão permitidos

TipoRequeridoPadrão
Lista de ÁtomosSim-

Propósito: Restringe quais tipos de bind o cliente pode usar.

Opções:

allowed_bind_types: [:transceiver]  # Apenas transceiver
allowed_bind_types: [:transmitter, :receiver] # TX ou RX
allowed_bind_types: [:transmitter, :receiver, :transceiver] # Qualquer

Recomendação: Permita os três, a menos que precise de restrições.

ip_whitelist

Endereços IP de cliente permitidos

TipoRequeridoPadrãoFormato
Lista de StringsSim[]IPs ou notação CIDR

Propósito: Segurança - permitir apenas conexões de IPs conhecidos.

Formatos:

  • IP único: "192.168.1.100" (automaticamente /32)
  • Sub-rede CIDR: "192.168.1.0/24", "10.0.0.0/8"
  • Mistura de ambos: ["192.168.1.0/24", "10.50.1.100"]

Exemplos:

# Permitir qualquer IP (não recomendado)
ip_whitelist: []

# IP único
ip_whitelist: ["203.0.113.50"]

# Múltiplos IPs
ip_whitelist: ["203.0.113.50", "203.0.113.51"]

# Sub-rede
ip_whitelist: ["192.168.1.0/24"]

# Misturado
ip_whitelist: ["192.168.1.0/24", "10.50.1.100", "10.60.0.0/16"]

Sub-redes comuns:

  • /32 - IP único (automático para IPs sem máscara)
  • /24 - 256 endereços (ex: 192.168.1.0-255)
  • /16 - 65.536 endereços (ex: 10.50.0.0-255.255)
  • /8 - 16.777.216 endereços (ex: 10.0.0.0-255.255.255.255)

source_address_whitelist

Endereços de origem permitidos

TipoRequeridoPadrãoFormato
Lista de StringsNão[]Padrões exatos ou curinga

Propósito: Restringe quais endereços de origem (IDs de remetente) os clientes conectados podem usar ao enviar mensagens. Lista vazia permite todos os endereços.

Tipos de padrões:

  • Correspondência exata: "MyBrand" corresponde apenas a "MyBrand"
  • Sufixo curinga: "614*" corresponde a qualquer endereço que comece com "614"

Exemplos:

# Permitir qualquer endereço de origem
source_address_whitelist: []

# Apenas endereços específicos
source_address_whitelist: ["MyBrand", "AlertService"]

# Correspondência de prefixo curinga
source_address_whitelist: ["614*", "+61*"]

# Misturado
source_address_whitelist: ["MyBrand", "614*", "+61400000001"]

Mensagens com endereços de origem não permitidos são rejeitadas com ESME_RINVSRCADR. Veja SOURCE_ADDRESS_WHITELIST.md para detalhes completos.

tps_limit

Limite de mensagens por segundo

Igual ao tps_limit do bind do cliente - controla a taxa de deliver_sm para os clientes conectados.

queue_check_frequency

Intervalo de polling da fila

Igual ao queue_check_frequency do bind do cliente - com que frequência verificar mensagens a serem entregues a este cliente.

Intervalo de keepalive SMPP (segundos)

Igual ao enquire_link_interval do bind do cliente. Controla com que frequência o servidor envia PDUs enquire_link para os clientes conectados para verificar se eles ainda estão ativos.

enabled

Estado de ativação do peer

Igual ao enabled do bind do cliente. Peers de servidor desativados não aceitam conex��es de entrada.

cache_enabled

Ativar cache local de mensagens

Igual ao cache_enabled do bind do cliente. Veja MESSAGE_CACHE.md.

cache_max_size

Número máximo de mensagens em cache

Igual ao cache_max_size do bind do cliente.

cache_retry_interval

Intervalo base de nova tentativa (segundos)

Igual ao cache_retry_interval do bind do cliente.

Exemplo de UI Web:

Formulário de Configuração de Peer do Servidor - Adicionar ou editar conexões de parceiro de entrada


Configuração de Escuta do Servidor

Quando os binds do servidor estão configurados, o gateway escuta por conexões de entrada.

Exemplo Completo de Escuta

config :omnimessage_smpp, :listen, %{
host: "0.0.0.0",
port: 2775,
max_connections: 100
}

Parâmetros de Escuta

host

Endereço IP para vincular

TipoRequeridoPadrãoValores Comuns
StringNão"0.0.0.0""0.0.0.0", "127.0.0.1"

Propósito: Em qual interface de rede escutar.

Valores:

  • "0.0.0.0" - Escutar em todas as interfaces (recomendado)
  • "127.0.0.1" - Escutar apenas no localhost (teste)
  • "192.168.1.10" - Escutar em IP específico

port

Porta TCP para escutar

TipoRequeridoPadrãoFaixa
InteiroNão27751-65535

Propósito: Porta para conexões SMPP de entrada.

Padrão: 2775

max_connections

Número máximo de conexões simultâneas

TipoRequeridoPadrãoFaixa
InteiroNão1001-10000

Propósito: Limita o número total de conexões de cliente simultâneas.

Diretrizes:

  • Defina com base nos clientes esperados
  • Valores mais altos usam mais memória
  • Típico: 10-100 conexões

Exemplos Completos de Configuração

Exemplo 1: Conexão de Operadora Única

import Config

config :omnimessage_smpp,
api_base_url: "https://smsc.company.com:8443",
verify_ssl_peer: true,
smsc_name: "smpp_prod"

config :omnimessage_smpp, :binds, [
%{
name: "att_primary",
mode: :client,
bind_type: :transceiver,
host: "smpp.att.com",
port: 2775,
system_id: "company_user",
password: "secure_pass_123",
tps_limit: 100,
queue_check_frequency: 1000
}
]

Exemplo 2: Múltiplas Operadoras

import Config

config :omnimessage_smpp,
api_base_url: "https://smsc.company.com:8443"

config :omnimessage_smpp, :binds, [
# América do Norte
%{
name: "att_us",
mode: :client,
bind_type: :transceiver,
host: "smpp.att.com",
port: 2775,
system_id: "att_username",
password: "att_password",
tps_limit: 100,
queue_check_frequency: 1000
},

# Europa
%{
name: "vodafone_uk",
mode: :client,
bind_type: :transceiver,
host: "smpp.vodafone.co.uk",
port: 2775,
system_id: "voda_username",
password: "voda_password",
tps_limit: 50,
queue_check_frequency: 1000
}
]

Exemplo 3: Gateway com Binds de Servidor

import Config

config :omnimessage_smpp,
api_base_url: "https://smsc.company.com:8443"

# Conexões de saída
config :omnimessage_smpp, :binds, [
%{
name: "upstream_carrier",
mode: :client,
bind_type: :transceiver,
host: "smpp.carrier.com",
port: 2775,
system_id: "my_username",
password: "my_password",
tps_limit: 100,
queue_check_frequency: 1000
}
]

# Definições de clientes de entrada
config :omnimessage_smpp, :server_binds, [
%{
name: "partner_alpha",
system_id: "alpha_corp",
password: "alpha_secret",
allowed_bind_types: [:transmitter, :receiver, :transceiver],
ip_whitelist: ["203.0.113.0/24"],
tps_limit: 50,
queue_check_frequency: 1000
},
%{
name: "partner_beta",
system_id: "beta_inc",
password: "beta_password",
allowed_bind_types: [:transceiver],
ip_whitelist: ["198.51.100.50"],
tps_limit: 25,
queue_check_frequency: 2000
}
]

# Escuta do servidor
config :omnimessage_smpp, :listen, %{
host: "0.0.0.0",
port: 2775,
max_connections: 100
}

Validação da Configuração

Após editar a configuração, valide antes de reiniciar:

Verificação de Sintaxe

# Verifique a sintaxe Elixir
/opt/omnimessage-smpp/bin/omnimessage-smpp eval "File.read!('config/runtime.exs')"

Se a sintaxe for inválida, você verá um erro. Corrija antes de reiniciar.

Testar Configuração

# Reinicie em primeiro plano para ver erros
sudo -u omnimessage-smpp /opt/omnimessage-smpp/bin/omnimessage-smpp console

Pressione Ctrl+C duas vezes para sair.


Variáveis de Ambiente

Todas as configurações globais podem ser substituídas por variáveis de ambiente. Defina estas em seu arquivo de unidade systemd ou ambiente de shell antes de iniciar o gateway.

Variável de AmbienteChave de ConfiguraçãoPadrãoDescrição
API_BASE_URLapi_base_url"https://10.179.3.219:8443"URL da plataforma OmniMessage Core
SMSC_NAMEsmsc_name"smpp_gateway"Identificador do gateway para registro no frontend
SMPP_POLL_INTERVALsmpp_poll_interval100Frequência de verificação da fila (milissegundos)
VERIFY_SSL_PEERverify_ssl_peerfalseVerificação de certificado SSL (true/false)
CACHE_FLUSH_INTERVALcache_flush_interval10000Intervalo de polling do trabalhador de limpeza de cache (milissegundos)
CACHE_MAX_RETRY_ATTEMPTScache_max_retry_attempts10Máximo de tentativas antes de marcar mensagem em cache como permanentemente falhada
CACHE_BACKOFF_MULTIPLIERcache_backoff_multiplier2Multiplicador de backoff exponencial para tentativas de cache
MNESIA_STORAGE_TYPEmnesia_storage_typedisc_copiesTipo de armazenamento do banco de dados (disc_copies ou ram_copies)

Exemplo de substituição systemd:

sudo systemctl edit omnimessage-smpp
[Service]
Environment="API_BASE_URL=https://omnimessage-core.company.com:8443"
Environment="SMSC_NAME=smpp_prod_01"
Environment="VERIFY_SSL_PEER=true"

Melhores Práticas de Segurança

  1. Proteja o arquivo de configuração:

    sudo chmod 600 /opt/omnimessage-smpp/config/runtime.exs
    sudo chown omnimessage-smpp:omnimessage-smpp /opt/omnimessage-smpp/config/runtime.exs
  2. Use senhas fortes:

    • Mínimo de 12 caracteres
    • Misture letras, números, símbolos
    • Única por conexão
  3. Use listas brancas de IP:

    • Sempre configure ip_whitelist para binds de servidor
    • Nunca use lista vazia [] em produção
  4. Ative a verificação SSL:

    • Defina verify_ssl_peer: true com certificados válidos
  5. Rotação regular de credenciais:

    • Altere senhas trimestralmente
    • Coordene com operadoras/parceiros

Próximos Passos