message-deferred traités + complément dans fail2ban
This commit is contained in:
parent
86c9b9dbf7
commit
7cd803942f
|
@ -0,0 +1,77 @@
|
|||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
echo "-- Debut de ".__FILE__."\n";
|
||||
|
||||
// Chemin vers le fichier de log
|
||||
$logFile = '/var/log/mail.log';
|
||||
// Chemin vers le fichier pour stocker les IDs traités
|
||||
$processedIdsFile = '/var/log/processed_ids_deferred.txt';
|
||||
|
||||
// Fonction pour lire les IDs traités à partir du fichier
|
||||
function readProcessedIds($file) {
|
||||
if (!file_exists($file)) {
|
||||
return [];
|
||||
}
|
||||
$content = file_get_contents($file);
|
||||
return $content ? explode(PHP_EOL, trim($content)) : [];
|
||||
}
|
||||
|
||||
// Fonction pour écrire les IDs traités dans le fichier
|
||||
function writeProcessedIds($file, $ids) {
|
||||
file_put_contents($file, implode(PHP_EOL, $ids) . PHP_EOL);
|
||||
}
|
||||
|
||||
// Lire les IDs déjà traités
|
||||
$processedIds = readProcessedIds($processedIdsFile);
|
||||
|
||||
// Expression régulière pour trouver les messages d'erreur spécifiques avec status=deferred et extraire l'ID du message
|
||||
$pattern = '/postfix\/smtp\[\d+\]: (\w+): .* status=deferred /';
|
||||
|
||||
// Lire le fichier de log
|
||||
$logContent = file_get_contents($logFile);
|
||||
|
||||
if ($logContent === false) {
|
||||
die("Erreur lors de la lecture du fichier de log.\n");
|
||||
}
|
||||
|
||||
// Rechercher les correspondances
|
||||
preg_match_all($pattern, $logContent, $matches);
|
||||
|
||||
// Extraire les IDs de message
|
||||
$messageIds = array_unique($matches[1]);
|
||||
|
||||
if (empty($messageIds)) {
|
||||
echo "Aucun message à supprimer de la file d'attente.\n";
|
||||
echo "-- Fin de ".__FILE__."\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Filtrer les IDs pour ne conserver que ceux qui n'ont pas encore été traités
|
||||
$newMessageIds = array_diff($messageIds, $processedIds);
|
||||
if (empty($newMessageIds)) {
|
||||
echo "Tous les messages ont déjà été traités.\n";
|
||||
echo "-- Fin de ".__FILE__."\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Supprimer les messages de la file d'attente
|
||||
foreach ($newMessageIds as $messageId) {
|
||||
$command = "postsuper -d $messageId";
|
||||
$output = [];
|
||||
$return_var = 0;
|
||||
exec($command, $output, $return_var);
|
||||
|
||||
if ($return_var === 0) {
|
||||
echo "Message $messageId supprimé de la file d'attente.\n";
|
||||
$processedIds[] = $messageId;
|
||||
} else {
|
||||
echo "Erreur lors de la suppression du message $messageId de la file d'attente.\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Mettre à jour le fichier des IDs traités
|
||||
writeProcessedIds($processedIdsFile, $processedIds);
|
||||
|
||||
echo "-- Fin de ".__FILE__."\n";
|
||||
|
|
@ -35,6 +35,34 @@ Les expressions régulières suivantes sont définies :
|
|||
- **ignoreregex** : Cette directive permet de définir des expressions régulières pour ignorer certaines lignes des journaux, même si elles correspondent à `failregex`. Dans ce cas, `ignoreregex` est vide, ce qui signifie qu'aucune ligne n'est ignorée.
|
||||
|
||||
|
||||
## Tester les règle Fail2ban
|
||||
|
||||
`fail2ban-regex` offre un moyen puissant de valider, déboguer et optimiser les filtres Fail2Ban, assurant ainsi que seules les activités malveillantes sont détectées et bloquées.
|
||||
|
||||
L'utilisation de `fail2ban-regex` implique principalement deux éléments : le fichier de journal à analyser et le fichier de filtre contenant les expressions régulières. Voici comment vous pouvez l'utiliser :
|
||||
|
||||
```sh
|
||||
fail2ban-regex [fichier_journal] [fichier_filtre]
|
||||
```
|
||||
|
||||
### Exemple Pratique
|
||||
|
||||
Supposons que vous souhaitiez tester un filtre Fail2Ban pour les tentatives d'authentification échouées de Postfix SASL. Vous avez un fichier de journal `/var/log/mail.log` et un fichier de filtre `/etc/fail2ban/filter.d/postfix-sasl.conf`.
|
||||
|
||||
```sh
|
||||
sudo fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/postfix-sasl.conf
|
||||
```
|
||||
|
||||
Cette commande analysera le fichier de journal en utilisant les expressions régulières définies dans le fichier de filtre et affichera les résultats.
|
||||
|
||||
La sortie de `fail2ban-regex` est divisée en plusieurs sections :
|
||||
|
||||
1. **Summary** : Un résumé des lignes analysées, du nombre de correspondances trouvées et des lignes ignorées.
|
||||
2. **Success, Ignored, Missed** : Montre quelles lignes de journal ont été capturées avec succès par les expressions régulières, lesquelles ont été ignorées, et lesquelles ont été manquées.
|
||||
3. **Matches** : Affiche les correspondances spécifiques trouvées dans les journaux.
|
||||
4. **Lines** : Montre les lignes de journal exactes qui correspondent ou non aux expressions régulières.
|
||||
|
||||
|
||||
|
||||
## Automatisation de l'ajout d'adresses IP malveillantes
|
||||
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
# Automatisation de la Gestion des Messages Différés de Postfix avec un Script PHP
|
||||
|
||||
L'objectif du script PHP [delete_deferred.php](_files/postfix/home/cedrix/delete_deferred.php) est de gérer automatiquement les messages de courrier électronique en attente dans la file d'attente de Postfix, spécifiquement ceux avec un statut `deferred` dans `/var/log/mail.log`. Le script identifie ces messages, les supprime de la file d'attente et garde une trace des messages dans déjà traités `/var/log/processed_ids_deferred.txt` pour éviter les traitements redondants.
|
||||
|
||||
## Fonctionnalités Principales
|
||||
|
||||
1. **Initialisation et Configuration**
|
||||
- Le script commence par définir les chemins vers le fichier de journal de Postfix et le fichier utilisé pour stocker les IDs des messages déjà traités.
|
||||
|
||||
2. **Lecture des IDs Traités**
|
||||
- Une fonction lit les IDs des messages déjà traités à partir d'un fichier de suivi, assurant que les messages ne sont pas traités plusieurs fois.
|
||||
|
||||
3. **Recherche des Messages Différés**
|
||||
- Utilise une expression régulière pour analyser le fichier de journal de Postfix et identifier les messages avec le statut `deferred`.
|
||||
|
||||
4. **Filtrage des Messages Non Traités**
|
||||
- Compare les IDs des messages trouvés dans le journal avec ceux déjà traités pour ne conserver que les nouveaux messages à traiter.
|
||||
|
||||
5. **Suppression des Messages de la File d'Attente**
|
||||
- Pour chaque nouveau message identifié, le script exécute la commande `postsuper -d` pour supprimer le message de la file d'attente.
|
||||
- Si la suppression est réussie, l'ID du message est ajouté à la liste des IDs traités.
|
||||
|
||||
6. **Mise à Jour du Fichier des IDs Traités**
|
||||
- Après avoir traité les nouveaux messages, le script met à jour le fichier de suivi avec les nouveaux IDs, garantissant qu'ils ne seront pas traités à nouveau lors de la prochaine exécution.
|
||||
|
||||
## Déroulement du Script
|
||||
|
||||
1. **Affichage de Début d'Exécution**
|
||||
- Le script commence par afficher un message indiquant son démarrage.
|
||||
|
||||
2. **Définition des Chemins des Fichiers**
|
||||
- Les variables `$logFile` et `$processedIdsFile` sont définies pour stocker les chemins vers les fichiers nécessaires.
|
||||
|
||||
3. **Fonctions de Lecture et Écriture**
|
||||
- Deux fonctions, `readProcessedIds` et `writeProcessedIds`, sont définies pour lire et écrire les IDs des messages traités.
|
||||
Le script utilise un fichier spécifique pour stocker les IDs des messages déjà traités. Ce fichier est situé à `/var/log/processed_ids_deferred.txt`.
|
||||
|
||||
4. **Lecture et Analyse du Journal**
|
||||
- Le fichier de journal de Postfix est lu, et les messages correspondant au statut `deferred` sont identifiés à l'aide d'une expression régulière.
|
||||
|
||||
5. **Traitement des Messages**
|
||||
- Les IDs des messages différés sont extraits et filtrés pour ne conserver que ceux qui n'ont pas encore été traités.
|
||||
- Pour chaque nouveau message, la commande `postsuper -d` est exécutée pour supprimer le message de la file d'attente.
|
||||
- Les IDs des messages réussis sont ajoutés à la liste des IDs traités.
|
||||
|
||||
6. **Mise à Jour des IDs Traités**
|
||||
- Le fichier des IDs traités est mis à jour avec les nouveaux IDs après le traitement.
|
||||
|
||||
7. **Affichage de Fin d'Exécution**
|
||||
- Le script affiche un message indiquant la fin de l'exécution.
|
||||
|
||||
## Avantages du Script
|
||||
|
||||
- **Automatisation** : Réduit la nécessité d'intervention manuelle pour gérer les messages différés dans Postfix.
|
||||
- **Efficacité** : Assure que les messages sont traités de manière efficace en évitant les traitements redondants.
|
||||
- **Traçabilité** : Garde une trace des messages déjà traités, ce qui facilite le suivi et la gestion des opérations.
|
||||
|
||||
## À consulter
|
||||
|
||||
- `postsuper`
|
Loading…
Reference in New Issue