Skip to content

glennbezanson/email-security-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Email Security Analyzer

PyQt6 desktop application for unified email security monitoring and diagnostics.

Edge Solutions Python PyQt6

Overview

Combines multiple email security data sources with AI-powered analysis:

  • Abnormal Security - Threat detection, cases, abuse mailbox campaigns
  • Microsoft Graph - Mail flow, inbox rules, OAuth app monitoring
  • Claude AI - Intelligent triage and pattern detection via Azure APIM

Features

  • Real-time dashboard with threat metrics
  • Threat and case browsing with detail views
  • Built-in diagnostic engine (15+ security checks)
  • AI-powered threat analysis and batch pattern detection
  • Executive summary report generation
  • Edge Solutions branded interface

Diagnostic Rules

Category Rules
Authentication SPF PermError, DKIM missing, DMARC failures
Mail Flow Connector loops, queue delays, Enhanced Filtering
Threat Detection HTML smuggling, QR phishing, OAuth consent, inbox rules
Integration Token expiry, rate limiting, sync delays

Setup

Prerequisites

  • Python 3.11+
  • Azure AD App Registration with Graph permissions
  • Abnormal Security API key
  • Azure APIM subscription key (for Claude)

Installation

git clone https://github.com/glennbezanson/email-security-analyzer.git
cd email-security-analyzer
python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate on Windows
pip install -r requirements.txt

Configuration

cp config.example.json config.json
# Edit config.json with your credentials

Required Azure AD Permissions

Permission Type Purpose
Mail.Read Application Read mail messages
MailboxSettings.Read Application Read inbox rules
AuditLog.Read.All Application Read audit logs
Directory.Read.All Application Read user/domain info

Run

python main.py

Environment

  • Tenant: edge-solutions.com (YOUR_TENANT_ID)
  • APIM: YOUR_APIM_ENDPOINT.azure-api.net/foundry
  • AI Services: edgesol-ai

Project Structure

email-security-analyzer/
β”œβ”€β”€ main.py                   # Application entry point
β”œβ”€β”€ config.json               # User configuration (gitignored)
β”œβ”€β”€ config.example.json       # Example configuration
β”œβ”€β”€ requirements.txt          # Python dependencies
β”œβ”€β”€ core/                     # Core modules
β”‚   β”œβ”€β”€ config.py            # Configuration management
β”‚   β”œβ”€β”€ cache.py             # SQLite cache
β”‚   └── workers.py           # QThread workers
β”œβ”€β”€ api/                      # API clients
β”‚   β”œβ”€β”€ abnormal.py          # Abnormal Security
β”‚   β”œβ”€β”€ graph.py             # Microsoft Graph
β”‚   └── claude.py            # Claude AI via APIM
β”œβ”€β”€ diagnostics/              # Diagnostic engine
β”‚   β”œβ”€β”€ rules.py             # Rule definitions
β”‚   └── engine.py            # Rule evaluation
└── ui/                       # PyQt6 interface
    β”œβ”€β”€ styles.py            # Edge Solutions branding
    β”œβ”€β”€ main_window.py       # Main window
    β”œβ”€β”€ widgets/             # Reusable widgets
    β”œβ”€β”€ views/               # Application views
    └── dialogs/             # Dialog windows

API Reference

Abnormal Security

Generate API key:

  1. Go to Abnormal portal > Settings > Integrations
  2. Select REST API
  3. Generate new token

Microsoft Graph

Required scopes for application permissions:

  • Mail.Read
  • MailboxSettings.Read
  • AuditLog.Read.All
  • Directory.Read.All

Claude AI

Uses Azure APIM endpoint for Claude access:

  • Endpoint: https://YOUR_APIM_ENDPOINT.azure-api.net/foundry
  • Auth: APIM subscription key

Author

Glenn Bezanson - Edge Solutions glenn.bezanson@edge-solutions.com


Edge Solutions LLC

About

πŸ›‘οΈ Unified email security command center combining Abnormal Security, Microsoft Graph & Claude AI for intelligent threat detection

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages