KumoMTA escala horizontalmente ejecutando varios nodos independientes. No hay un clúster integrado, así que haces el sharding antes, en la capa upstream, con un hash por tenant o por campaña.
Distribución típica:
[ Application / API ]
│
shard router (HAProxy with consistent hash on header)
│
┌────┼────┬────┬────┐
[node1] [node2] [node3] [node4]
│ │ │ │
IPs IPs IPs IPs
Por qué hacer el hash por tenant: todas las colas de un tenant viven en un solo nodo → throttling y calentamiento coherentes. Si un tenant crece mucho, muévelo a un par dedicado.
Fragmento de HAProxy:
backend kumo_pool
balance hdr(X-Kumo-Tenant)
hash-type consistent
server node1 10.0.0.11:587 check
server node2 10.0.0.12:587 check
server node3 10.0.0.13:587 check
La aplicación define el encabezado X-Kumo-Tenant en el momento del SMTP (con XCLIENT o metadatos de AUTH personalizados).
Inicia sesión para llevar el registro de lo que ya leíste.