corbeau 3 KB
Newer Older
1
#! /bin/bash
2 3
# Mettre cette variable à 1 si on veut que le corbeau soit actif.
ACTIF=0
bernat's avatar
bernat committed
4

bernat's avatar
bernat committed
5 6 7
TEMP="$(mktemp)"
trap "rm -f ${TEMP}" EXIT

8 9 10 11 12 13
# On désactive spamassassin car il semble y avoir des problèmes
# (de toute façon, c'est pas super utile vu l'autre vérification)
# spamassassin -e -p /etc/spamassassin/corbeau.conf > ${TEMP}

cat > ${TEMP}

14 15 16 17 18 19 20 21 22
# Est-ce que le corbeau est actif ?
if [[ $ACTIF == 1 ]]; then

  # Est-ce du spam ?
  if [[ $? == 0 ]]; then

    # Est-ce que ça contient le mot de passe ?
    if cat ${TEMP} | egrep -q "^Mot de passe : corbeau$"; then
      # On loggue tout dans /var/log/corbeau
23 24
      DIR="/var/log/corbeau"
      FILE="corbeau_$(date +%Y_%m_%d_%H_%M_%S)";
25

26 27 28 29 30 31 32 33
      # Création d'une clef AES aléatoire de 256 bits.
      dd if=/dev/urandom bs=32 count=1 | sha256sum | head -c 32 >> ${DIR}/keys/${FILE}.key 2>> /var/log/corbeau/corbeau.err

      # Chiffrement du mail venant vers corbeau@crans.org à l'aide de la clef
      cat ${TEMP} | gpg --armour --symmetric --cipher-algo aes256 --passphrase $(cat ${DIR}/keys/${FILE}.key) >> ${DIR}/${FILE}.log 2>> /var/log/corbeau/corbeau.err

      # Cf ssss, l'idée est de finir par splitter la clef AES à l'aide de ssss-split, et d'en distribuer un bout à chaque membre du C.A., il faudrait au minimum #ca/2 bouts de la clef pour la reconstruire, et débaguer le corbeau.
 
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
      # Puis on envoit la version modifiée.
      cat ${TEMP} | egrep -v "^Mot de passe : corbeau$" | \
      formail -I "Received" \
              -I "From" \
              -I "Sender" \
              -I "DKIM-Signature" \
              -I "DomainKey-Signature" \
              -I "X-Google-Sender-Auth" \
              -I "X-Original-To" \
              -I "X-Virus-Scanned" \
              -I "X-Greylist" \
              -I "Delivered-To" \
              -I "To" \
              -I "Message-ID" \
              -I "User-Agent" \
              -I "X-Newsreader" \
              -I "Organization" \
              -I "Return-Path" \
              -A "Message-Id: $(date '+<corbeau.%s@crans.org>')" \
              -A "From: corbeau@crans.org" \
              -A "Newsgroups: crans.radio-ragots" \
              -A "Path: Corbeau" | \
       rnews 2>> /var/log/corbeau/corbeau.err

58
     # Le mail ne contient pas le mot de passe, on répond à l'expéditeur
59 60
    else
      ( cat ${TEMP} | formail -r -A "From: corbeau@crans.org" -A "Content-Type: text/plain; charset=UTF-8; format=flowed" ; cat << EOF
Michel Blockelet's avatar
Michel Blockelet committed
61 62 63 64 65
Bonjour,

Ton mail n'est pas valide car il manque la ligne suivante :
"Mot de passe : corbeau"

66 67
Pour plus d'informations :
http://wiki.crans.org/VieCrans/ForumNews/LeCorbeau
Michel Blockelet's avatar
Michel Blockelet committed
68 69 70 71 72

-- 
Le corbeau
EOF
) | /usr/sbin/sendmail -t
73
    fi
Michel Blockelet's avatar
Michel Blockelet committed
74
  fi
75 76 77 78 79 80 81 82 83 84 85 86 87 88

# Corbal inactif, on répond à l'expéditeur.
else
  ( cat ${TEMP} | formail -r -A "From: corbeau@crans.org" -A "Content-Type: text/plain; charset=UTF-8; format=flowed" ; cat << EOF
Bonjour,

Le corbeau est actuellement désactivé. Il est donc inutile d'essayer de t'en servir.

En te remerciant de ta compréhension,

-- 
Le corbeau, désactivé.
EOF
) | /usr/sbin/sendmail -t
bernat's avatar
bernat committed
89
fi