filtrage soumet GTUBE ; edge interroge chaque exposition en local. Sans serveur par defaut, un nom inconnu recevait Keycloak : 000-defaut.conf (444, rejet TLS). Garde test_sondes_syntaxe : chaque gabarit de sonde se rend en bash valide. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
2 KiB
Django/Jinja
34 lines
2 KiB
Django/Jinja
#!/bin/bash
|
|
# GENERE par Set-OPS (role serveur_rspamd). Ne pas editer a la main.
|
|
#
|
|
# SONDE « filtrage » — Le filtrage du courrier repond-il, et ANALYSE-T-IL vraiment ?
|
|
#
|
|
# UN FILTRE MUET NE BLOQUE PAS LE COURRIER — IL LE LAISSE PASSER. Postfix qui n'obtient
|
|
# pas de verdict de rspamd delivre sans filtrer, ou differe : dans les deux cas le service
|
|
# de courriel a l'air sain pendant que le pourriel entre ou que la file grossit.
|
|
#
|
|
# REPONDRE N'EST PAS FILTRER (2026-09-28). Cette sonde s'arretait a `/ping` — la meme
|
|
# question que celle qui a laisse `tableaux` au vert pendant que Grafana n'affichait rien.
|
|
# Un rspamd dont les regles ne se chargent plus, ou dont le moteur d'analyse est tombe,
|
|
# repond encore `pong`. On lui fait donc ANALYSER un message : GTUBE, le message de test
|
|
# standard que tout filtre doit rejeter (score maximal, action `reject`). Rien n'est envoye,
|
|
# rien n'est livre : rspamc soumet le texte au moteur et lit le verdict.
|
|
#
|
|
# Mise en defaut PAR PARAMETRE : `serveur_rspamd_sonde_attendu` (chaine introuvable) pour
|
|
# la premiere etape, `serveur_rspamd_sonde_action` pour la seconde.
|
|
set -uo pipefail
|
|
|
|
ping=$(curl -s --max-time 8 http://127.0.0.1:11334/ping 2>/dev/null | tr -d '[:space:]')
|
|
[[ "${ping}" == "{{ serveur_rspamd_sonde_attendu }}" ]] \
|
|
|| { echo "rspamd ne repond pas a /ping (${ping:-rien}) — le courrier passe sans filtre, ou attend."; exit 2; }
|
|
|
|
GTUBE='XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X'
|
|
verdict=$(printf 'Subject: sonde Set-OPS\n\n%s\n' "${GTUBE}" | timeout 10 rspamc 2>&1)
|
|
action=$(printf '%s' "${verdict}" | awk -F': ' '/^Action:/{print $2; exit}')
|
|
score=$(printf '%s' "${verdict}" | awk -F': ' '/^Score:/{print $2; exit}')
|
|
if [[ "${action}" != "{{ serveur_rspamd_sonde_action }}" ]]; then
|
|
echo "rspamd repond, mais N'ANALYSE PLUS : le message de test GTUBE rend « ${action:-aucun verdict} » au lieu de « {{ serveur_rspamd_sonde_action }} » — le pourriel entrerait. ${verdict:0:80}"
|
|
exit 2
|
|
fi
|
|
echo "Filtrage actif : le message de test GTUBE est rejete (score ${score})."
|
|
exit 0
|