🔐 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
📝 Notes importantes :
⏱️ 1 heure max de données par requête
🔐 Requêtes obligatoirement en HTTPS GET
-
📛 Codes retour HTTP :
401
→ Clé API absente ou invalide500
→ Erreur serveur200
→ Tout va bien
📅 La valeur
queryEndTime
peut être réutilisé dans le paramètresinceTime
-
🔑 Chaque requête doit contenir un en-tête HTTP appelé
Authorization
, avec le format suivant :Authorization: Bearer VOTRE_CLÉ_API
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écutez cette commande dans votre terminal (remplacez <clé>
par votre clé API) :
curl -H "Authorization: Bearer <clé>" https://logs.securemail.tech/siem/suivi.php
3. 📅 Choisir votre méthode de récupération
Vous avez 3 options pour récupérer les messages :
Paramètre sinceSeconds
-
Description : Permet de récupérer les données à partir d’un nombre de secondes dans le passé, par rapport au moment actuel.
-
Type : Entier (secondes)
-
Exemple :
/siem/suivi.php?sinceSeconds=3600👉 Données récupérées depuis 1 heure en arrière (3600 secondes).
Paramètre sinceTime
-
Description : Définit une date/heure précise à partir de laquelle les données doivent être récupérées.
-
Type :
-
Date au format ISO 8601 (
YYYY-MM-DDTHH:MM:SSZ
) -
Ou timestamp Unix (secondes depuis Epoch)
-
-
Exemples :
/siem/suivi.php?sinceTime=2024-06-01T12:00:00Z/siem/suivi.php?sinceTime=1726869600
👉 Données récupérées à partir du 1er juin 2024 à 12h00 UTC (même date dans les deux formats).
Paramètre interval
-
Description : Permet de spécifier un intervalle de temps complet (début et fin).
-
Format : Deux dates/timestamps séparés par un
/
. -
Type :
-
Dates au format ISO 8601
-
Ou timestamps Unix
-
-
Exemples :
/siem/suivi.php?interval=2024-08-20T15:30:00/2024-08-20T16:00:00/siem/suivi.php?interval=1727136000/1727139600
👉 Données récupérées entre 15h30 et 16h00 le 20 août 2024.
4. ✅ Comprendre la structure du JSON retourné
STRUCTURE D'UN MESSAGE :
Champ | Type | Description |
---|---|---|
message_id | texte | Identifiant unique du message |
client_ip | adresse IP | IP du serveur d'émission |
client_name | texte | Nom (PTR) de l'IP d'émission |
client_country | 2 lettres | Pays d'émission |
helo_name | texte | HELO utilisé par le serveur d'émission |
stamp_queue | timestamp | Date de réception du message (avant analyse) |
header_from | texte | Expéditeur dans l'entête From |
sender | texte | Expéditeur SMTP |
subject | texte | Sujet |
message_size | nombre | Taille en octet |
recipients | tableau | Une entrée par destinataire |
message_parts | tableau | Une entrée par partie du message |
Champ | Type | Description |
---|---|---|
queryEndTime | timestamp | date fin de la requête, à utiliser à nouveau dans le paramètre sinceTime
|
data | tableau | une entrée par email. si le tableau est vide alors aucun message n'a été filtré durant la période demandé |
Champ | Type | Description |
---|---|---|
name | texte | Nom du ficher ou vide si partie text / html |
placement | nombre | numéro de la part |
sha1 | texte | |
size | nombre | Taille en octet |
content_type | texte | type MIME |
qrcode | bool | Indique si la part contient un QR Code |
5. 🎯 Résultats
Exemple de sortie JSON sans message
{ "queryEndTime": 1727259183, "data": [] }
queryEndTime
timestamp de la fin des données
data
tableau contenant un élément par email.
Exemple de sortie avec message
{ "queryEndTime": 1727259183, "data": [ { "message_id": "23e0.64facee0.bc601.0", "client_ip": "161.38.205.161", "client_name": "m205-161.eu.mailgun.net", "client_country": "US", "helo_name": "m205-161.eu.mailgun.net", "stamp_queued": 1727254241, "header_from": "actualites@e.artisanparfumeur.com", "sender": "bounce+2ba51a.211f8-marie.fini=pur-mail.net@e.artisanparfumeur.com", "subject": "Signatures intemporelles", "message_size": 87879, "recipients": [ { "recipient": "marie.fini@pur-mail.net", "stamp_filter": 1727254241, "verdict": "tagged", "action": "pass", "stamp_delivery": 1727254244, "delivery_to_ip": "172.16.240.194", "delivery_to_name": "mails.security-mail.net", "delivery_status": "sent", "delivery_info": "250 2113927973 message accepted for delivery", "filter_info": "DKIM_SIGNED=0.1, DKIM_VALID=-0.5, DKIM_VALID_AU=-0.5, DMARC_PASS=-0.5, HEAD_NEWS=-0.5, SPF_PASS=-0.1, S_ENVFROM_LONG_40=0.5, S_FROM_GREY_MINUS_1=-1, T_REMOTE_IMAGE=0.42, URIBL_SECURITYMAIL=10", "antispam_score": 7.914 } ], "message_parts": [ { "name": "", "placement": 1, "sha1": "2aa02691eeb412a8ef371a312177bba525c1ee33", "size": 18528, "content_type": "text/plain", "qrcode": false }, { "name": "", "placement": 2, "sha1": "240171907cc95ab46cd2b4549ebd81dd48ac5d12", "size": 60556, "content_type": "text/html", "qrcode": false }, { "name": "image001.png", "placement": 3, "sha1": "bb238282b1a443121271a0d4c71c5efbdd8fbb07", "size": 15473, "content_type": "image/png", "qrcode": false } ] } ] }