Intégration SIEM

🔐 Pré-requis

  • Une clé API fournie par Securemail

  • Un système capable d’exécuter des requêtes HTTPS (curl, Python, etc.)

  • Un outil de traitement SIEM capable d’ingérer du JSON

  • URL d’accès :
    https://logs.securemail.tech/siem/suivi.php


🔧 Étapes détaillées


1. 🔑 Récupérer votre clé API

  Accédez à votre console d'administration e-securemail, sélectionnez le domaine concerné, puis allez dans Suivi > Intégration SIEM.  

La clé API sera affichée sur la page, comme illustré dans la capture d'écran ci-dessous :

2. 🧪 Tester une requête curl

Exécute cette commande dans ton terminal (remplace <clé> par ta clé API) :

bash
curl -H "Authorization: Bearer <clé>" https://logs.securemail.tech/siem/suivi.php

3. 📅 Choisir ta méthode de récupération

Tu as 3 options pour récupérer les messages :

✅ Depuis X secondes :

bash
curl -H "Authorization: Bearer <clé>" "https://logs.securemail.tech/siem/suivi.php?sinceSeconds=3600"

Récupère les messages des 60 dernières minutes.

✅ Depuis une date précise (format ISO 8601) :

bash
curl -H "Authorization: Bearer <clé>" "https://logs.securemail.tech/siem/suivi.php?sinceTime=2024-08-06T12:00:00"

✅ Sur une période donnée :

bash
curl -H "Authorization: Bearer <clé>" "https://logs.securemail.tech/siem/suivi.php?interval=2024-08-05T15:00:00/2024-08-05T16:00:00"

4. ✅ Comprendre la structure du JSON retourné

Structure principale :

json
{ "queryEndTime": 1721259183, "data": [ ... ] }

Structure de chaque message :

json
{ "message_id": "...", "client_ip": "...", "client_name": "...", "client_country": "...", "helo_name": "...", "stamp_queue": 1721259181, "header_from": "...", "sender": "...", "subject": "...", "message_size": 87809, "recipients": [ {...} ], "message_parts": [ {...} ] }

5. 💡 Exemple de parsing en Python

Voici un petit script Python pour parser la réponse et afficher chaque sujet :

python
import requests url = "https://logs.securemail.tech/siem/suivi.php?sinceSeconds=3600" headers = { "Authorization": "Bearer <votre_clé_api>" } response = requests.get(url, headers=headers) data = response.json() for message in data["data"]: print(f"Sujet : {message['subject']}") print(f"Expéditeur : {message['sender']}") print(f"Destinataires : {[r['recipient'] for r in message['recipients']]}") print("-----")

📝 Notes importantes :

  • ⏱️ 1 heure max de données par requête

  • 🔐 Requêtes obligatoirement en HTTPS GET

  • 📛 En cas d'erreur :

    • 401 → Clé API absente ou invalide

    • 500 → Erreur serveur

  • 📅 La valeur queryEndTime peut être réutilisé dans le paramètre sinceTime

  • 🔑 Chaque requête doit contenir un en-tête HTTP appelé Authorization, avec le format suivant :

    Authorization: Bearer VOTRE_CLÉ_API