Skip to content

danielcraft57/MailPilot

Repository files navigation

MailPilot - Assistant Email Intelligent

Système de gestion et réponse automatique aux emails avec IA, enrichissement OSINT et contexte marketing commercial.

🚀 Vue d'ensemble

MailPilot surveille les emails entrants sur node12.lan, les enrichit avec des outils OSINT installés sur node15.lan, et génère des réponses automatiques via Ollama en utilisant le contenu marketing de danielcraft.fr comme source d'information.

✨ Fonctionnalités

  • Réception temps réel : IMAP IDLE pour notifications instantanées
  • Classification intelligente : Détection automatique humain/robot, commercial, entreprise (basée sur le premier email de la conversation)
  • Enrichissement OSINT : Utilisation des outils installés sur node15.lan (uniquement pour les humains, pas pour les robots)
  • Génération IA : Réponses générées via Ollama (node15.lan:11434)
  • Templates marketing : Système de templates d'emails commerciaux
  • Contexte danielcraft.fr : Utilisation du contenu de danielcraft.fr pour les réponses
  • Threading intelligent : Suivi des conversations par thread
  • Interface temps réel : WebSocket pour mises à jour en direct avec labels de classification
  • Interface type Gmail : Historique complet du fil, réponses inline, mode sombre, fuseau Europe/Paris pour les dates
  • Réponses inline : Boîte de réponse qui se ferme pendant l'envoi ; en cas d'erreur, réouverture avec le texte conservé (pas de bloc "Réponse envoyée" dupliqué, seul le message "Vous (envoyé par vous)" dans le fil)
  • Traitement asynchrone : Celery pour traitement en arrière-plan
  • Contacts : Carnet d'adresses intégré (CRUD, recherche, export vCard/CardDAV), enrichi automatiquement par OSINT et classification (badges humain/robot, commercial, entreprise, fuites, profils)
  • Nouveau message : Envoi d'emails depuis l'interface (À, Cc, Bcc, Objet, corps) avec création/mise à jour des contacts destinataires
  • Interface unifiée : Headers de page homogènes (titre + barre d'outils ou recherche) sur toutes les vues (Boîte de réception, Envoyés, Spams, Corbeille, Statistiques, Contacts, OSINT email, Paramètres)
  • Page OSINT : Saisie d'une adresse email dans le header et lancement d'une analyse OSINT manuelle (Kali/WSL)
  • Page Paramètres : Sections formulaires (Apparence, Règles d'auto-réponse, OSINT) avec affichage du thème actuel et chemins de configuration

🏗️ Architecture

node12.lan (Serveur Mail)
    ↓ IMAP IDLE
MailPilot (node15.lan)
    ↓
├── Classification (humain/robot, commercial, entreprise)
│   └── Si robot → OSINT ignoré (optimisation)
├── Enrichissement OSINT (theharvester, sherlock, maigret, holehe, socialscan)
│   └── Utilise email + display_name pour meilleurs résultats
├── Génération réponse (Ollama node15.lan:11434)
├── Application template marketing
└── Envoi réponse (SMTP node12.lan)

📁 Structure du Projet

MailPilot/
├── app/
│   ├── services/
│   │   ├── imap_monitor.py        # IMAP IDLE - réception temps réel
│   │   ├── mail_service.py        # IMAP/SMTP - lecture/envoi
│   │   ├── ollama_service.py       # Génération réponses via Ollama
│   │   ├── osint_service.py       # Enrichissement OSINT
│   │   ├── email_classification_service.py  # Classification (humain/robot, commercial, entreprise)
│   │   ├── template_service.py    # Gestion templates marketing
│   │   ├── danielcraft_content_service.py   # Extraction contenu danielcraft.fr
│   │   ├── conversation_service.py # Threading et historique
│   │   └── contact_service.py       # Gestion contacts (CRUD, export vCard)
│   ├── tasks/
│   │   ├── email_tasks.py         # Tâches Celery traitement emails
│   │   ├── osint_tasks.py         # Tâches OSINT asynchrones
│   │   └── contact_tasks.py       # Création/mise à jour contacts (réception, envoi, OSINT)
│   ├── models/
│   │   ├── email.py               # Modèles email/conversation
│   │   ├── email_classification.py # Modèle classification (lié à Conversation)
│   │   ├── identity.py            # Modèle identités normalisées
│   │   ├── osint.py               # Modèle enrichissement OSINT (lié à Identity)
│   │   ├── contact.py             # Modèle Contact (carnet d'adresses)
│   │   └── response.py            # Modèles réponses
│   ├── api/
│   │   ├── routes.py              # Endpoints REST
│   │   └── websocket.py           # Handlers WebSocket
│   ├── utils/
│   │   └── datetime_utils.py      # Heure Europe/Paris (now_paris) pour dates créées par l'app
│   ├── templates/                 # Templates HTML interface
│   ├── static/css/                # Feuilles de style (main.css)
│   ├── static/js/                 # Logique frontend (app.js)
│   └── email_templates/           # Templates emails marketing
├── config/
│   ├── config.yaml                # Configuration principale
│   └── email_templates.yaml       # Configuration templates
├── docs/                          # Documentation complète
├── celery_app.py                  # Configuration Celery
├── app.py                         # Application Flask principale
├── requirements.txt               # Dépendances Python
└── README.md                      # Ce fichier

🛠️ Installation

Prérequis

  • Python 3.9+
  • Redis (pour Celery)
  • Accès IMAP/SMTP à node12.lan
  • Ollama sur node15.lan:11434
  • Outils OSINT installés (via install_osint_tools_trixie.sh)
  • WSL (optionnel, pour développement Windows avec OSINT)

Installation rapide

Développement (Windows)

# Configuration automatique
.\scripts\setup-dev.ps1

# Éditer la configuration
notepad config\config.yaml

# Installer les dépendances (sans lxml pour éviter les problèmes de compilation)
pip install Flask Flask-SocketIO python-socketio celery redis SQLAlchemy PyYAML loguru beautifulsoup4 requests email-validator python-dotenv

# Démarrer Redis (via WSL ou Docker)
wsl redis-server
# ou
docker run -d -p 6379:6379 redis

# Démarrer tout l'environnement (dans un seul terminal)
.\scripts\start-dev.ps1

# Ou séparément :
# Terminal 1 : Celery
.\scripts\start-celery.ps1

# Terminal 2 : Application
python app.py

Note : lxml est optionnel. BeautifulSoup fonctionne avec le parser HTML natif. Voir INSTALLATION_WINDOWS.md pour plus de détails.

Développement (Linux/Mac)

# Créer environnement virtuel
python3 -m venv venv
source venv/bin/activate

# Installer les dépendances
# Sur Windows, utiliser requirements-windows.txt pour éviter les problèmes de compilation
pip install -r requirements-windows.txt  # Windows
# ou
pip install -r requirements.txt  # Linux/Mac

# Copier la configuration dev
cp config/config.dev.yaml config/config.yaml

# Éditer la configuration
nano config/config.yaml

# Initialiser la base de données
python -c "from app.models.email import Base; from app.models.response import Base as ResponseBase; from sqlalchemy import create_engine; import yaml; config = yaml.safe_load(open('config/config.yaml')); engine = create_engine(config['database']['url']); Base.metadata.create_all(engine); ResponseBase.metadata.create_all(engine)"

Production

Voir scripts/README.md pour le déploiement complet.

Configuration

Éditer config/config.yaml :

mail:
  imap_host: node12.lan
  imap_port: 993
  smtp_host: node12.lan
  smtp_port: 587
  username: ton_email@danielcraft.fr
  password: ton_mot_de_passe

ollama:
  base_url: http://node15.lan:11434
  model: gemma-2b-chat
  timeout: 60

osint:
  tools_path: /usr/local/bin  # Chemin vers outils OSINT

danielcraft:
  base_url: https://danielcraft.fr  # URL du site danielcraft.fr

🚀 Démarrage

1. Démarrer Redis

redis-server

2. Démarrer Celery Worker

celery -A celery_app worker --loglevel=info --pool=threads --concurrency=4

3. Démarrer l'application Flask

python app.py

L'application sera accessible sur http://localhost:5000

📚 Documentation

🔧 Technologies

  • Backend : Flask, Celery, Flask-SocketIO
  • Mail : imaplib, smtplib (IMAP IDLE)
  • IA : Ollama API
  • OSINT : Intégration outils système (theharvester, sherlock, maigret, holehe, socialscan) avec utilisation de display_name
  • Frontend : HTML/CSS/JavaScript vanilla + WebSocket
  • Base de données : SQLite (peut migrer vers PostgreSQL)

📝 License

© 2026 Loïc DANIEL - Tous droits réservés

👤 Auteur

Loïc DANIEL

About

MailPilot - Assistant Email Intelligent

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors