6.8 KiB
6.8 KiB
DMARQ Architecture
System Overview
DMARQ is designed as a self-contained application that processes DMARC reports, stores relevant data, and presents insights through a web interface. The architecture follows a layered approach with clear separation of concerns between components.
Core Components
Web Application (FastAPI)
- Serves the web interface
- Handles API requests
- Manages user authentication
- Coordinates background tasks
- Renders templates with Jinja2
DMARC Processing Engine
- Parses DMARC XML reports
- Extracts meaningful data from reports
- Validates report structure
- Identifies sending sources
- Calculates compliance metrics
Data Storage
- MVP Phase: In-memory storage
- Later Phases: SQLite or PostgreSQL database
- Stores domain configurations
- Maintains report history
- Tracks sender statistics
Report Acquisition
- MVP Phase: Manual file upload
- Later Phases: IMAP client for automatic retrieval
- Handles compression formats (ZIP, GZ)
- Deduplicates reports
Background Processing
- Scheduled report fetching
- Periodic DNS checks
- Alert evaluation
- Data aggregation for dashboards
Data Flow
-
Report Ingestion
- Reports arrive via upload or IMAP
- System extracts and validates XML content
- Parser processes report data
- Data is stored in appropriate format
-
Data Processing
- Raw report data is transformed into metrics
- System calculates compliance rates
- Identifies new or problematic senders
- Updates historical records
-
Presentation Layer
- Dashboard displays key metrics
- Domain details show specific report data
- Charts visualize trends
- Alerts highlight issues requiring attention
Architectural Evolution
The DMARQ architecture is designed to evolve across milestones:
Milestone 1: Minimal Architecture
- Single FastAPI service
- In-memory data storage
- Manual file upload
- Basic template rendering
┌─────────────────────────┐
│ Web Browser │
└───────────┬─────────────┘
│
┌───────────┼─────────────┐
│ FastAPI Application │
├───────────┼─────────────┤
│ DMARC Parser │ Templates │
├─────────────┬───────────┤
│ In-Memory Store │
└─────────────────────────┘
Milestone 2-3: Enhanced Architecture
- FastAPI with background tasks
- Database persistence layer
- IMAP integration
- Expanded web interface
┌─────────────────────────┐
│ Web Browser │
└───────────┬─────────────┘
│
┌───────────┼─────────────┐
│ FastAPI Application │
├─────────┬───────┬───────┤
│Templates│Parser │IMAP │
├─────────┴───────┴───────┤
│ Background Tasks │
├─────────────────────────┤
│ Database Layer │
└───────────┬─────────────┘
│
┌───────────┼─────────────┐
│ SQLite/PostgreSQL DB │
└─────────────────────────┘
Milestone 5+: Full Architecture
- Authentication layer
- DNS integration
- Alert system
- Visualization enhancements
┌───────────────────────────────────────────────┐
│ Web Browser │
└───────────────────┬───────────────────────────┘
│
┌───────────────────┼───────────────────────────┐
│ FastAPI Application │
├────────┬──────────┬──────────┬────────┬───────┤
│Auth │Templates │Parser │IMAP │Apprise│
├────────┴──────────┴──────────┴────────┴───────┤
│ Background Tasks │
├───────────────────────────────────────────────┤
│ Database Layer │
└───────────────────┬───────────────────────────┘
│
┌───────────────────┼───────────────────────────┐
│ SQLite/PostgreSQL DB │
└───────────────────────────────────────────────┘
│ │ │
┌───┴───┐ ┌─────┴────┐ ┌─────┴────┐
│DNS API│ │Notif. API│ │Email │
└───────┘ └──────────┘ └──────────┘
Technology Stack Details
Backend Framework
- FastAPI: Modern, high-performance web framework
- Pydantic: Data validation and settings management
- SQLAlchemy: ORM for database interactions
- APScheduler: Task scheduling for background jobs
Frontend
- Jinja2: Template engine for rendering HTML
- Tailwind CSS: Utility-first CSS framework
- ShadCN/UI: Reusable UI component system
- Chart.js: Lightweight charting library
External Libraries
- parsedmarc: DMARC report parsing
- Apprise: Unified notification system
- Cloudflare API (optional): DNS integration
- FastAPI Users: Authentication management
Deployment
- Docker: Containerization
- Docker Compose: Multi-container orchestration
- SQLite/PostgreSQL: Database options
Security Considerations
- Sensitive credentials are stored securely
- Authentication protects access to report data
- HTTPS recommended for production deployment
- No external APIs required for core functionality
- Self-hosted approach keeps data private