p=none for monthsMost organizations have no visibility into which sources send email on behalf of their domain. Without data, no enforcement. Without enforcement, the domain stays exposed to spoofing, phishing and deliverability abuse indefinitely.
eMate processes DMARC reports in real time, enriches every source with GeoIP / ASN / reputation, and walks the administrator from p=none to p=reject safely and with full traceability.
phish+{token}@). Neutralization pipeline + automatic awareness campaign./executive dashboard. TopoJSON world-atlas + rotating palette + drill-down by source.audit.events → PostgreSQL append-only + S3 Object Lock (WORM). No service writes directly to the log.Each worker is an independent Python container with its own Kafka consumer group. If one fails, the others keep running. Scale per engine based on real load.
| Layer | Technology |
|---|---|
| API Backend | Python 3.12 + FastAPI + asyncpg — async end-to-end |
| Dashboard | React 18 + TypeScript + Vite + Tailwind CSS — API-first SPA |
| Streaming | Apache Kafka (3 brokers) + Confluent Schema Registry (Avro BACKWARD_TRANSITIVE) |
| Analytics | ClickHouse 24.x — append-only, partitioned by tenant + month |
| Relational DB | PostgreSQL 16 — RLS on all tables, SET LOCAL app.tenant_id per query |
| Cache | Redis 7 — sliding-window rate limiting + MFA challenge tokens |
| Object Storage | MinIO (dev) / AWS S3 (prod) — same binary, STORAGE_ENDPOINT via env var |
| Observability | Prometheus + Grafana + CloudWatch — metrics, dashboards, active alerting |
| Auth Security | JWT HS256 (15 min TTL) + mandatory MFA + API Keys (X-API-Key header) |
| Workers | 25+ independent Python microservices — BaseKafkaWorker + WorkerSupervisor (auto-restart on dead kafka loop) + DLQ + Prometheus :8080 + Kafka-aware healthcheck (/health/live with 60s grace) + PgConnectionManager (reconnect on InterfaceError) |
| Transactional Email | AWS SES (DKIM 2048-bit + SNS bounces/complaints) + SendGrid fallback (Event Webhook ECDSA-P256) |
| Reverse Proxy | Traefik v3.3 (file provider) — TLS termination, host-based routing, ACME challenge auto-renewal |
| CDN | CloudFront (static website) + ACM wildcard cert us-east-1 — Origin Access Control signed to S3 |
| Production Infra | AWS EC2 · EBS 150 GB encrypted (KMS) · daily S3 backups · 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 scenarios = 18/18 PASS. CI gate lint-rls-coverage blocks new tables without a declared policy.write_audit helper writes to audit_outbox in the SAME transaction as the change. Exporter decoupled to Kafka audit.events → S3 Object Lock (WORM).dns_config_key (Fernet AES-128). Rotation via runbook.monitor-credentials.sh + Slack alert -30d.