#!/bin/bash
# Lodewijk.FRL - proefmatrix voor de Rspamd/Exim-blokkade (https://lodewijk.frl/da-rspamd, 24-10-2026).
# Elke regel speelt met "exim -bh" een SMTP-sessie na: er wordt niets afgeleverd en niets verstuurd.
# Draait tegen een proefkopie van exim.conf, zodat een fout nooit je echte mail raakt (zie het artikel).
# De gevallen gaan uit van de openbare lijsten van lodewijk.frl. Pas RCPT, EIGEN_IP en EIGEN_DOMEIN aan:
#   RCPT=info@jouwdomein.nl EIGEN_IP=203.0.113.10 EIGEN_DOMEIN=jouwdomein.nl bash proef.sh
CONF=${CONF:-/etc/exim-proef/exim.conf}
RCPT=${RCPT:-info@jouwdomein.nl}
EIGEN_IP=${EIGEN_IP:-203.0.113.10}
EIGEN_DOMEIN=${EIGEN_DOMEIN:-jouwdomein.nl}
G=209.85.220.69; GH=mail-sor-f69.google.com     # gewone Gmail-server
geval() { # naam ip helo mailfrom fromheader replyto verwacht(BLOK|DOOR) [verwachte regel]
  local naam=$1 ip=$2 helo=$3 mf=$4 fh=$5 rt=$6 verwacht=$7 regel_verwacht=${8:-}
  local hdr="From: $fh"; [ -n "$rt" ] && hdr="$hdr"$'\r\n'"Reply-To: $rt"
  local uit
  uit=$(printf 'EHLO %s\r\nMAIL FROM:<%s>\r\nRCPT TO:<%s>\r\nDATA\r\n%s\r\nTo: <%s>\r\nSubject: Vraag over onderhoud\r\nDate: %s\r\nMessage-ID: <proef-%s@%s>\r\n\r\nGoedemiddag, kunt u mij bellen over het onderhoud van mijn ketel? Met vriendelijke groet.\r\n.\r\nQUIT\r\n' "$helo" "$mf" "$RCPT" "$hdr" "$RCPT" "$(date -R)" "$RANDOM" "$helo" | exim -C "$CONF" -bh "$ip" 2>&1)
  local blok=nee; echo "$uit" | grep -q "^550[ -]5.7.1 Uw bericht is geweigerd" && blok=ja
  local reden; reden=$(echo "$uit" | grep -o "LODEWIJK_BLOKKADE [a-z-]*" | head -1 | cut -d' ' -f2)
  local andere; andere=$(echo "$uit" | grep -E "^[45][0-9][0-9] " | grep -v "Uw bericht\|^221\|^250\|^354" | head -1 | cut -c1-70)
  local ok=FOUT
  { [ "$verwacht" = BLOK ] && [ $blok = ja ] && { [ -z "$regel_verwacht" ] || [ "$reden" = "$regel_verwacht" ]; }; } && ok=goed
  { [ "$verwacht" = DOOR ] && [ $blok = nee ]; } && ok=goed
  echo "$uit" | grep -q "failed to expand\|Temporary local problem" && ok="FOUT(451)"
  printf '%-9s %-38s %-4s %-16s %s\n' "$ok" "$naam" "$verwacht" "${reden:--}" "$andere"
}
geval "gmail gewoon"                 $G $GH iemand.proef@gmail.com  "Iemand <iemand.proef@gmail.com>" ""  DOOR
geval "ip geblokkeerd"               143.246.223.105 mx.voorbeeld.nl info@voorbeeld.nl "<info@voorbeeld.nl>" "" BLOK ip
geval "ip geblokkeerd, bounce"       143.246.223.105 mx.voorbeeld.nl "" "<mailer-daemon@voorbeeld.nl>" "" BLOK ip
geval "domein envelope"              85.17.200.10 mx.engine-shop.beauty sales@engine-shop.beauty "<sales@x.nl>" "" BLOK domein
geval "domein hoofdletters"          85.17.200.10 mx.engine-shop.beauty Sales@ENGINE-SHOP.Beauty "<sales@x.nl>" "" BLOK domein
geval "adres envelope"               $G $GH news@googleusercontent.com "<a@b.nl>" "" BLOK adres
geval "adres envelope +tag"          $G $GH news+x@googleusercontent.com "<a@b.nl>" "" BLOK adres
geval "ander adres zelfde domein"    $G $GH noreply@googleusercontent.com "<noreply@googleusercontent.com>" "" DOOR
geval "extensie .ru envelope"        85.17.200.10 mx.spam.ru a@spam.ru "<a@spam.ru>" "" BLOK extensie
geval "from-header domein"           $G $GH iemand.proef@gmail.com "Shop <sales@engine-shop.beauty>" "" BLOK from-domein
geval "from twee adressen, 2e fout"  $G $GH iemand.proef@gmail.com "Nice <ok@gmail.com>, Shop <sales@engine-shop.beauty>" "" BLOK from-domein
geval "from komma in naam"           $G $GH iemand.proef@gmail.com "\"Shop, verkoop\" <sales@engine-shop.beauty>" "" BLOK from-domein
geval "from-adres geblokkeerd"       $G $GH iemand.proef@gmail.com "News <news@googleusercontent.com>" "" BLOK from-adres
geval "from-header extensie"         $G $GH iemand.proef@gmail.com "Shop <x@bla.ru>" "" BLOK from-extensie
geval "reply-to caroptions"          $G $GH iemand.proef@gmail.com "Iemand <iemand.proef@gmail.com>" "verkoop@caroptions.nl" BLOK
geval "reply-to twee, 2e caroptions" $G $GH iemand.proef@gmail.com "Iemand <iemand.proef@gmail.com>" "a@gmail.com, Verkoop <x@CarOptions.NL>" BLOK
geval "reply-to exacte lijst"        $G $GH iemand.proef@gmail.com "Iemand <iemand.proef@gmail.com>" "x@falconsaeinv.com" BLOK reply-to
geval "from-naam CarOptions"         $G $GH iemand.proef@gmail.com "\"CarOptions B.V.\" <iemand.proef@gmail.com>" "" BLOK from-naam
geval "bounce orange.fr (extensie)"  80.12.242.131 smtp-out.orange.fr "" "Mail Delivery System <MAILER-DAEMON@smtp-out.orange.fr>" "" DOOR
geval "bounce, geblokkeerd domein"   $G $GH "" "Shop <sales@engine-shop.beauty>" "" BLOK from-domein
geval "lokaal 127.0.0.1"             127.0.0.1 "$(hostname -f)" sales@engine-shop.beauty "<sales@engine-shop.beauty>" "" DOOR
geval "eigen IP, webformulier"         "$EIGEN_IP" "$(hostname -f)" "website@$EIGEN_DOMEIN" "Bezoeker <bezoeker.proef@voorbeeld.ru>" "" DOOR
geval "from-naam onzichtbaar teken"  $G $GH iemand.proef@gmail.com "$(printf "Theo\xe2\x80\x8bx") <iemand.proef@gmail.com>" "" BLOK from-naam
geval "from-naam cyrillisch gemengd" $G $GH iemand.proef@gmail.com "$(printf "N\xd0\xb0tionale Postcode") <iemand.proef@gmail.com>" "" BLOK from-naam
geval "from-naam russisch echt"      $G $GH iemand.proef@gmail.com "$(printf "\xd0\x98\xd0\xb2\xd0\xb0\xd0\xbd") <iemand.proef@gmail.com>" "" DOOR
geval "from-naam nep-ANWB"           $G $GH iemand.proef@gmail.com "ANWB Ledenservice <iemand.proef@gmail.com>" "" BLOK from-naam
geval "from-naam ANWB Mobiliteit"    $G $GH iemand.proef@gmail.com "ANWB Mobiliteitskaart <iemand.proef@gmail.com>" "" DOOR
