p=none por mesesLa mayoría de organizaciones no tienen visibilidad sobre qué fuentes envían correo en nombre de su dominio. Sin datos, no hay enforcement. Sin enforcement, el dominio queda expuesto a spoofing, phishing y abuso de entregabilidad indefinidamente.
eMate procesa reportes DMARC en tiempo real, enriquece cada fuente con GeoIP / ASN / reputación, y guía al administrador desde p=none hasta p=reject con seguridad y trazabilidad completa.
phish+{token}@). Pipeline de neutralización + awareness campaign automática./executive. TopoJSON world-atlas + paleta rotativa + drill-down por fuente.audit.events → PostgreSQL append-only + S3 Object Lock (WORM). Ningún servicio escribe directo al log.Cada worker es un contenedor Python independiente con su propio consumer group en Kafka. Falla uno, los demás siguen operando. Escala por motor según la carga real.
| Capa | Tecnología |
|---|---|
| API Backend | Python 3.12 + FastAPI + asyncpg — async de punta a punta |
| Dashboard | React 18 + TypeScript + Vite + Tailwind CSS — SPA API-first |
| Streaming | Apache Kafka (3 brokers) + Confluent Schema Registry (Avro BACKWARD_TRANSITIVE) |
| Analytics | ClickHouse 24.x — append-only, particionado por tenant + mes |
| Base relacional | PostgreSQL 16 — RLS en todas las tablas, SET LOCAL app.tenant_id por query |
| Cache | Redis 7 — rate limiting sliding-window + MFA challenge tokens |
| Object Storage | MinIO (dev) / AWS S3 (prod) — mismo binario, STORAGE_ENDPOINT por variable de entorno |
| Observabilidad | Prometheus + Grafana + CloudWatch — métricas, dashboards, alertas activas |
| Seguridad auth | JWT HS256 (15 min TTL) + MFA obligatorio + API Keys (X-API-Key header) |
| Workers | 25+ microservicios Python — BaseKafkaWorker + WorkerSupervisor (auto-restart en kafka loop dead) + DLQ + Prometheus :8080 + healthcheck Kafka-aware (/health/live con grace 60s) + PgConnectionManager (reconnect en InterfaceError) |
| Email transaccional | AWS SES (DKIM 2048-bit + SNS bounces/complaints) + SendGrid fallback (Event Webhook ECDSA-P256) |
| Reverse Proxy | Traefik v3.3 (file provider) — TLS terminación, routing por host, ACME challenge auto-renewal |
| CDN | CloudFront (website estático) + ACM cert wildcard us-east-1 — Origin Access Control firmado al S3 |
| Infra producción | AWS EC2 · EBS 150 GB encrypted (KMS) · Backups S3 diarios · Lambda EBS snapshots + CloudTrail + AWS Health |
super_admin > platform_support > mssp_admin > mssp_analysttenant_admin > analyst = auditor > api
FORCE ROW LEVEL SECURITY. SET LOCAL app.tenant_id + smoke smoke_rls_isolation.sh 18×4 escenarios = 18/18 PASS. Gate CI lint-rls-coverage impide tablas nuevas sin policy declarada.write_audit helper escribe a audit_outbox en la MISMA transacción del cambio. Exporter desacoplado a Kafka audit.events → S3 Object Lock (WORM).dns_config_key (Fernet AES-128). Rotación con runbook.monitor-credentials.sh + Slack alert -30d.