Ce dépôt contient un script PowerShell interactif dédié à la soumission de contenu RAW d’e-mails et de domaines malveillants vers l’API Spamhaus Submission Portal, ainsi qu'à la consultation du compteur et de la liste des soumissions récentes.
- Fonctionnalités
- Prérequis
- Limitations réseau et contournements
- Limitations de l’API Spamhaus
- Vérifications implémentées dans le script
- Structure du script
- Usage
-
Soumission d’un e-mail RAW
- Lecture d’un fichier
.emlcomplet en UTF-8 - Nettoyage pour n’envoyer que la chaîne brute (texte complet du mail)
- Sélection du type de menace
type=emailvia menu numérique (fallback surspam) - Retry automatique (3 tentatives) en cas d’échec réseau ou timeout API
- Lecture d’un fichier
-
Soumission d’un domaine malveillant
- Saisie manuelle du nom de domaine
- Sélection du type de menace
type=domainvia menu numérique (fallback surphish) - Validation format (domaine et non URL) et champ non vide
- Envoi direct (1 tentative) via
/submissions/add/domain - Gestion explicite des codes d’erreur HTTP 200, 208, 400 et exceptions réseau
-
Consultation du compteur de soumissions
- Nombre total de soumissions et nombre de correspondances trouvées (sur les 30 derniers jours)
-
Affichage de la liste des soumissions
- Pagination configurable avec les paramètres
itemsetpage - Détails affichés : ID, type de menace, raison, date, statut dans les datasets
- Pagination configurable avec les paramètres
- PowerShell (Windows 10+ recommandé)
- Aucune dépendance externe requise
- Clé API valide (à insérer dans la variable
$API_TOKENdu script)- Récupérable depuis votre profil Spamhaus : https://auth.spamhaus.org/account/
-
Politique d’exécution PowerShell : exécuter en bypass
powershell.exe -ExecutionPolicy Bypass -File .\spamhaus_submission.ps1 -
Test TCP initial : connectivité obligatoire à
submit.spamhaus.org:443avec timeout à 5 secondes -
Connexion forcée : désactivation de
KeepAlive(HttpWebRequest.KeepAlive = $false) -
Retry : 3 tentatives avec délais croissants (5 s, 10 s, 15 s) sur appels API réseau (emails uniquement)
- Contenu RAW email : taille maximale de 150 Ko au format JSON UTF-8
- Soumission de domaine : taille de payload négligeable mais toujours ≤ 150 Ko
- Champ Reason : maximum 255 caractères
- Counter & List : données restreintes aux 30 derniers jours
- Pagination Liste :
itemsmaximal à 10 000 par page
- Connectivité réseau
- Test initial TCP sur
submit.spamhaus.org:443(timeout 5 s)
- Récupération des types de menaces
- Filtrage sur le type (
emailoudomain) selon l’action - Tentatives retry 3× (timeout 5 s)
- Déduplication des codes recevables
- Soumission e-mail RAW
- Lecture via
Get-Content -Raw -Encoding UTF8 - Validation taille ≤ 150 000 octets
- Retry 3× avec délai progressif
- Soumission domaine
- Validation champ non vide
- Construction du payload
- Timeout fixe de 10 s, pas de retry
- Gestion des retours d’API
- Codes gérés : 200, 208, 400 + gestion des exceptions
[System.Net.WebException]
- Si fichier e-mail non trouvé à cause d'un caractère spécial
- Liste et sélection interactive parmi tous les fichiers
*.emldu dossier
Test-Port: vérifie la connectivité TCP initialeGet-ThreatTypes: récupère et déduplique la liste des types de menaces disponiblesSubmit-Email: soumet un e-mail RAW au format JSONSubmit-Domain: soumet un domaine malveillant au format JSONGet-SubmissionsCounter: affiche le compteur des soumissions sur 30 joursGet-SubmissionsList: affiche une liste paginée des soumissionsShow-Menu+ boucle principale interactive
- Cloner ce dépôt
- Ouvrir le script et définir la variable
$API_TOKENavec votre clé API personnelle - Lancer le script avec :
powershell.exe -ExecutionPolicy Bypass -File .\spamhaus_submission.ps1 - Choisir l’option du menu :
- 1 : Soumettre un e-mail RAW
- 2 : Soumettre un domaine malveillant
- 3 : Consulter le compteur des soumissions
- 4 : Afficher la liste paginée des soumissions
- 5 : Quitter le script
Ce script se concentre exclusivement sur la soumission d’e-mails et de domaines malveillants et la consultation rapide des résultats.
Il utilise uniquement les cmdlets PowerShell natives, sans dépendances tierces.