🔐 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
queryEndTimepeut ê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
}
]
}
]
}