SpamSnake · 15 min read · Dec 25, 2025

Le SpamSnake Parfait - Ubuntu Jeos 10.10 Maverick Meerkat - Page 4

14. KAM

vi /etc/cron.daily/kam.sh

Ajoutez le contenu suivant et

chmod +x /etc/cron.daily/kam.sh
#!/bin/bash
   
 # Version originale modifiée par Andrew MacLachlan ([email protected])
 # Ajout de redémarrages supplémentaires de MailScanner en cas d'échec de redémarrage initial
 # Script exécuté silencieusement pour un fonctionnement normal (réussi)
 # Augmentation de UPDATEMAXDELAY à 900 au lieu de 600
 
 # Insérer un délai aléatoire jusqu'à cette valeur, pour répartir les mises à jour de virus tout au long
 # de la journée. 1800 secondes = 30 minutes.
 # Réglez ceci à 0 pour le désactiver.
 UPDATEMAXDELAY=0
 if [ -f /opt/MailScanner/var/MailScanner ] ; then
 . /opt/MailScanner/var/MailScanner
 fi
 export UPDATEMAXDELAY
 
 if [ "x$UPDATEMAXDELAY" = "x0" ]; then
 :
 else
 logger -p mail.info -t KAM.cf.sh Délai de la tâche cron jusqu'à $UPDATEMAXDELAY secondes
 perl -e "sleep int(rand($UPDATEMAXDELAY));"
 fi
 
 # JKF Récupérer KAM.cf
 #echo Récupération de KAM.cf...
 cd /etc/mail/spamassassin
 rm -f KAM.cf
 wget -O KAM.cf http://www.peregrinehw.com/downloads/SpamAssassin/contrib/KAM.cf > /dev/null 2>&1
 if [ "$?" = "0" ]; then
 #echo Cela a été complété et a récupéré quelque chose
 if ( tail -10 KAM.cf | grep -q '^#.*EOF' ); then
 # echo Cela a réussi donc faites une sauvegarde
 cp -f KAM.cf KAM.cf.backup
 else
 echo ERREUR: Impossible de trouver le marqueur EOF
 cp -f KAM.cf.backup KAM.cf
 fi
 else
 echo Cela a échoué à se compléter correctement
 cp -f KAM.cf.backup KAM.cf
 fi
 #echo Rechargement des règles de configuration de MailScanner et SpamAssassin
 /etc/init.d/mailscanner reload > /dev/null 2>&1
 if [ $? != 0 ] ; then
 echo "Le rechargement de MailScanner a échoué - Nouvelle tentative..."
 /etc/init.d/mailscanner force-reload
 if [ $? = 0 ] ; then
 echo "Le rechargement de MailScanner a réussi."
 else
 echo "Arrêt de MailScanner..."
 /etc/init.d/mailscanner stop
 echo "Attente d'une minute..."
 perl -e "sleep 60;"
 echo "Tentative de démarrer MailScanner..."
 /etc/init.d/mailscanner start
 fi
 
 fi 

15. ScamNailer

vi /usr/sbin/update_scamnailer

et

chmod +x /usr/sbin/update_scamnailer

Remarque : *Le contenu est dans scamnailer.doc.)

Ajoutez-le à cron :

@daily /usr/sbin/update_scamnailer &> /dev/null #Mettre à jour Scamnailer

16. Sécuriser le SpamSnake avec Firehol

Introduction

Firehol est un configurateur de pare-feu de filtrage de paquets iptables à état. Il est abstrait, extensible, facile et puissant. Il peut gérer n’importe quel type de pare-feu, mais surtout, il vous donne les moyens de le configurer, de la même manière que vous y pensez.

Installer Firehol

apt-get install firehol

Paramètres de Firehol :

vi /etc/default/firehol

et changez ce qui suit :

START_FIREHOL=YES
vi /etc/firehol/firehol.conf

et ajoutez ce qui suit :

version 5
   # Accepter tout le trafic client sur n'importe quelle interface
   interface any internet
   protection strong
   server "icmp ping ICMP ssh http https telnet webmin dns dcc echo smtp" accept
 client all accept

Cela filtre toutes les connexions entrantes qui ne sont pas liées aux services ci-dessus. Si vous souhaitez être moins poli, vous pouvez les rejeter en ajoutant ce qui suit après ‘protection strong’ : policy drop

vi /usr/sbin/get-iana

avec ce qui suit et

chmod +x /usr/sbin/get-iana
#!/bin/bash
 # $Id: get-iana.sh,v 1.13 2010/09/12 13:55:00 jcb Exp $
   #
   # $Log: get-iana.sh,v $
   # Révision 1.13 2010/09/12 13:55:00 jcb
   # Mis à jour pour le dernier format de réservations IANA.
   #
   # Révision 1.12 2008/03/17 22:08:43 ktsaou
   # Mis à jour pour le dernier format de réservations IANA.
   #
   # Révision 1.11 2007/06/13 14:40:04 ktsaou
   # * message de journal vide *
   #
   # Révision 1.10 2007/05/05 23:38:31 ktsaou
   # Ajout du support pour les définitions externes de :
   #
   # RESERVED_IPS
   # PRIVATE_IPS
   # MULTICAST_IPS
   # UNROUTABLE_IPS
   #
   # dans des fichiers sous le même nom dans /etc/firehol/.
   # Seul RESERVED_IPS est obligatoire (firehol se plaindra s'il n'est pas là,
   # mais il fonctionnera toujours sans), et c'est aussi le seul fichier que firehol
   # vérifie combien de temps il a. S'il a plus de 90 jours, firehol se plaindra à nouveau.
   #
   # Changé le script get-iana.sh fourni pour générer le fichier RESERVED_IPS.
   # FireHOL demande également à l'utilisateur d'utiliser ce script si le fichier est manquant
   # ou est trop ancien.
   #
   # Révision 1.9 2007/04/29 19:34:11 ktsaou
   # * message de journal vide *
   #
   # Révision 1.8 2005/06/02 15:48:52 ktsaou
   # Autorisé 127.0.0.1 à être dans RESERVED_IPS
   #
   # Révision 1.7 2005/05/08 23:27:23 ktsaou
   # Mis à jour RESERVED_IPS avec les réservations IANA actuelles.
   #
   # Révision 1.6 2004/01/10 18:44:39 ktsaou
   # Optimisé et réduit davantage PRIVATE_IPS en utilisant :
   # http://www.vergenet.net/linux/aggregate/
   #
   # Le get-iana.sh fourni utilise .aggregate. s'il le trouve dans le chemin.
   # (aggregate est le nom de ce programme lorsqu'il est installé sur Gentoo)
   #
   # Révision 1.5 2003/08/23 23:26:50 ktsaou
   # Bug #793889 :
   # Changer #!/bin/sh en #!/bin/bash pour permettre à FireHOL de fonctionner sur des systèmes où
   # bash n'est pas lié à /bin/sh.
   #
   # Révision 1.4 2002/10/27 12:44:42 ktsaou
   # Test CVS
   #
 #
   # Programme qui télécharge l'allocation d'espace d'adresses IPv4 par l'IANA
   # et crée une liste avec tous les espaces d'adresses réservés.
   #
 IPV4_ADDRESS_SPACE_URL="http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt"
 # Le programme va correspondre à toutes les lignes dans le fichier qui commencent par un nombre, ont une barre oblique,
   # suivie d'un autre nombre, pour lequel le motif suivant correspondra également aux
   # mêmes lignes
   IANA_RESERVED="(RESERVED|UNALLOCATED)"
 # quelles lignes qui correspondent à ce qui précède, ignorer
   # (c'est-à-dire ne pas les inclure dans RESERVED_IPS) ?
   #IANA_IGNORE="(Multicast|Private use|Loopback|Local Identification)"
   IANA_IGNORE="Multicast"
 tempfile="/tmp/iana.$$.$RANDOM"
 AGGREGATE="`which aggregate 2>/dev/null`"
   if [ -z "${AGGREGATE}" ]
   then
   AGGREGATE="`which aggregate 2>/dev/null`"
   fi
 if [ -z "${AGGREGATE}" ]
   then
   echo >&2
   echo >&2
   echo >&2 "AVERTISSEMENT"
   echo >&2 "Veuillez installer 'aggregate' pour réduire la liste des IPs."
   echo >&2
   echo >&2
   fi
 echo >&2
   echo >&2 "Récupération de l'espace d'adresses IPv4 de l'IANA, depuis :"
   echo >&2 "${IPV4_ADDRESS_SPACE_URL}"
   echo >&2
 wget -O - -proxy=off "${IPV4_ADDRESS_SPACE_URL}" |\
   egrep " *[0-9]+/[0-9]+.*${IANA_RESERVED}" |\
   egrep -vi "${IANA_IGNORE}" |\
   sed -e 's:^ *\([0-9]*/[0-9]*\).*:\1:' |\
   (
 while IFS="/" read range net
   do
   if [ ! $net -eq 8 ]
   then
   echo >&2 "Impossible de gérer les masques de réseau de $net bits  ($range/$net)"
   continue
   fi
 first=`echo $range | cut -d '-' -f 1`
   first=`expr $first + 0`
   last=`echo $range | cut -d '-' -f 2`
   last=`expr $last + 0`
 x=$first
   while [ ! $x -gt $last ]
   do
   # test $x -ne 127 && echo "$x.0.0.0/$net"
   echo "$x.0.0.0/$net"
   x=$[x + 1]
   done
   done
   ) | \
   (
   if [ ! -z "${AGGREGATE}" -a -x "${AGGREGATE}" ]
   then
   "${AGGREGATE}"
   else
   cat
   fi
   ) >"${tempfile}"
 echo >&2
   echo >&2
   echo >&2 "TROUVÉ LES PLAGES IP RÉSERVÉES SUIVANTES :"
   printf "RESERVED_IPS=\""
   i=0
   for x in `cat ${tempfile}`
   do
   i=$[i + 1]
   printf "${x} "
   done
   printf "\"\n"
 if [ $i -eq 0 ]
   then
   echo >&2
   echo >&2
   echo >&2 "Échec de la recherche d'IPs réservées."
   echo >&2 "Possiblement le format du fichier a été changé, ou je ne peux pas récupérer l'URL."
   echo >&2
 rm -f ${tempfile}
   exit 1
   fi
   echo >&2
   echo >&2
   echo >&2 "Différences entre la liste récupérée et la liste installée dans"
   echo >&2 "/etc/firehol/RESERVED_IPS:"
 echo >&2 "# diff /etc/firehol/RESERVED_IPS  ${tempfile}"
   diff /etc/firehol/RESERVED_IPS ${tempfile}
 if [ $? -eq 0 ]
   then
   echo >&2
   echo >&2 "Aucune différence trouvée."
   echo >&2
 rm -f ${tempfile}
   exit 0
   fi
 echo >&2
   echo >&2
   echo >&2 "Souhaitez-vous enregistrer cette liste dans  /etc/firehol/RESERVED_IPS"
   echo >&2 "pour que FireHOL l'utilise automatiquement à partir de maintenant ?"
   echo >&2
   while [ 1 = 1 ]
   do
   printf >&2 "oui ou non > "
   read x
 case "${x}" in
   oui) cp -f /etc/firehol/RESERVED_IPS /etc/firehol/RESERVED_IPS.old  2>/dev/null
   cat "${tempfile}" >/etc/firehol/RESERVED_IPS || exit 1
   echo >&2 "Nouveau RESERVED_IPS écrit dans  '/etc/firehol/RESERVED_IPS'."
   echo "Firehol va maintenant redémarrer"
   sleep 3
   /etc/init.d/firehol restart
   break
   ;;
 non)
   echo >&2 "Rien n'a été enregistré."
   break
   ;;
 *) echo >&2 "Impossible de comprendre '${x}'."
   ;;
 esac
   done
 rm -f ${tempfile}
vi /usr/sbin/update-iana

avec le contenu suivant et

chmod +x /usr/sbin/update-iana
#!/bin/sh
 /usr/sbin/get-iana  < /etc/firehol/get-iana-answerfile
vi /etc/firehol/get-iana-answerfile

avec le contenu suivant :

yes

Exécutez le script pour mettre à jour RESERVED_IPS :

/usr/sbin/update-iana

Maintenant, votre serveur est configuré pour n’accepter que les connexions pour les services que vous avez autorisés.

Ajoutez-le à cron :

@monthly /usr/sbin/update-iana &> /dev/null #Mettre à jour les ips réservées de firehol

17. Appliquer les destinataires de relais

Les instructions suivantes sont destinées aux personnes utilisant Microsoft Exchange 2000 ou Microsoft Exchange 2003.

Cette page décrit comment configurer votre passerelle de messagerie pour obtenir périodiquement une liste d’adresses e-mail de destinataires valides de votre système Exchange. En faisant cela, vous pouvez configurer votre serveur pour rejeter automatiquement tout e-mail adressé à des adresses invalides. Cela réduira la charge sur votre serveur Exchange, car il n’aura plus à traiter les rapports de non-livraison, et cela réduira la charge sur votre serveur Postfix car il n’aura pas à effectuer de filtrage de spam et de virus sur le message.

Installer les dépendances

Installez le module perl Net::LDAP :

perl -MCPAN -e shell  
install Net::LDAP
vi /usr/bin/getadsmtp.pl

avec ce qui suit :

#!/usr/bin/perl -T -w
   # Ce script va extraire toutes les adresses SMTP des utilisateurs de votre Active Directory
   # (y compris les adresses e-mail principales et secondaires) et les lister dans le
   # format "[email protected] OK" que Postfix utilise avec relay_recipient_maps.
   # Assurez-vous de vérifier le chemin vers perl ci-dessus.
   # Cela nécessite que Net::LDAP soit installé.  Pour installer Net::LDAP, dans un shell
   # tapez "perl -MCPAN -e shell" puis "install Net::LDAP"
   use Net::LDAP;
   use Net::LDAP::Control::Paged;
   use Net::LDAP::Constant ( "LDAP_CONTROL_PAGED" );
   # Entrez le chemin/fichier pour la sortie
   $VALID = "/etc/postfix/relay_recipients";
   open VALID, "> $VALID" or die "IMPOSSIBLE D'OUVRIR $VALID $!";
   # Entrez le FQDN de vos contrôleurs de domaine Active Directory ci-dessous
   $dc1="domaincontroller1.example.com";
   $dc2="domaincontroller2.example.com";
   # Entrez le conteneur LDAP pour votre base d'utilisateurs.
   # La syntaxe est CN=Users,dc=example,dc=com
   # Cela peut être trouvé en installant les outils de support Windows 2000
   # puis en exécutant ADSI Edit.
   # Dans ADSI Edit, développez le "Domain NC [domaincontroller1.example.com]" &
   # vous verrez, par exemple, DC=example,DC=com (c'est votre base).
   # Le conteneur Users sera spécifié dans le panneau de droite comme
   # CN=Users selon votre schéma (c'est votre conteneur).
   # Vous pouvez vérifier cela en cliquant sur "Propriétés" de votre dossier utilisateur
   # dans ADSI Edit et en examinant la valeur "Chemin", comme :
   # LDAP://domaincontroller1.example.com/CN=Users,DC=example,DC=com
   # ce qui serait $hqbase="cn=Users,dc=example,dc=com"
   # Remarque : Vous pouvez également utiliser juste $hqbase="dc=example,dc=com"
   $hqbase="cn=Users,dc=example,dc=com";
   # Entrez le nom d'utilisateur & mot de passe pour un utilisateur valide dans votre Active Directory
   # avec le nom d'utilisateur sous la forme cn=username,cn=Users,dc=example,dc=com
   # Assurez-vous que le mot de passe de l'utilisateur n'expire pas.  Notez que cet utilisateur
   # n'a pas besoin de privilèges spéciaux.
   # Vous pouvez vérifier cela en cliquant sur "Propriétés" de votre utilisateur dans
   # ADSI Edit et en examinant la valeur "Chemin", comme :
   # LDAP://domaincontroller1.example.com/CN=user,CN=Users,DC=example,DC=com
   # ce qui serait $user="cn=user,cn=Users,dc=example,dc=com"
   # Remarque : Vous pouvez également utiliser le login UPN : "[email protected]"
   $user="cn=user,cn=Users,dc=example,dc=com";
   $passwd="password";
   # Connexion aux contrôleurs de domaine Active Directory
   $noldapserver=0;
   $ldap = Net::LDAP->new($dc1) or
   $noldapserver=1;
   if ($noldapserver == 1)  {
   $ldap = Net::LDAP->new($dc2) or
   die "Erreur de connexion aux contrôleurs de domaine spécifiés $@ \n";
   }
   $mesg = $ldap->bind ( dn => $user,
   password =>$passwd);
   if ( $mesg->code()) {
   die ("erreur:", $mesg->error_text((),"\n"));
   }
   # Combien de résultats de requête LDAP récupérer pour chaque round paginé
   # Réglez à moins de 1000 pour Active Directory
   $page = Net::LDAP::Control::Paged->new( size => 990 );
   @args = ( base     => $hqbase,
   # Jouez avec cela pour récupérer des objets tels que Contacts, Dossiers Publics, etc.
   # Un filtre minimal pour juste les utilisateurs avec e-mail serait :
   # filter => "(&(sAMAccountName=*)(mail=*)))"
   filter => "(& (mailnickname=*) (| (&(objectCategory=person)
   (objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))
   (&(objectCategory=person)(objectClass=user)(|(homeMDB=*)
   (msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact))
   (objectCategory=group)(objectCategory=publicFolder) ))",
   control  => [ $page ],
   attrs  => "proxyAddresses",
   );
   my $cookie;
   while(1) {
   # Effectuer la recherche
   my $mesg = $ldap->search( @args );
   # Filtrage des résultats pour les attributs proxyAddresses
   foreach my $entry ( $mesg->entries ) {
   my $name = $entry->get_value( "cn" );
   # Les attributs LDAP sont multi-valués, donc nous devons imprimer chacun.
   foreach my $mail ( $entry->get_value( "proxyAddresses" ) ) {
   # Testez si la ligne commence par l'une des lignes suivantes :
   # proxyAddresses: [smtp|SMTP]:
   # et également rejeter cette chaîne de départ, de sorte que $mail soit seulement l
   # adresse sans aucun autre caractère...
   if ( $mail =~ s/^(smtp|SMTP)://gs ) {
   print VALID $mail." OK\n";
   }
   }
   }
   # Continuez uniquement sur LDAP_SUCCESS
   $mesg->code and last;
   # Obtenez le cookie du contrôle paginé
   my($resp)  = $mesg->control( LDAP_CONTROL_PAGED ) or last;
   $cookie    = $resp->cookie or last;
   # Définir le cookie dans le contrôle paginé
   $page->cookie($cookie);
   }
   if ($cookie) {
   # Nous avons eu une sortie anormale, donc faisons savoir au serveur que nous ne voulons plus
   $page->cookie($cookie);
   $page->size(0);
   $ldap->search( @args );
   # Il serait également bon de mourir malheureux et d'informer OP à ce stade
   die("Requête LDAP infructueuse");
   }
   # Ajoutez des restrictions supplémentaires, utilisateurs, etc. au fichier de sortie ci-dessous.
   #print VALID "[email protected] OK\n";
   #print VALID "[email protected] 550 Utilisateur inconnu.\n";
   #print VALID "domain3.com 550 L'utilisateur n'existe pas.\n";
   close VALID;

Ensuite, définissez les permissions sur le fichier pour lui permettre d’être exécuté :

chmod +x /usr/bin/getadsmtp.pl

Modifiez le fichier pour le personnaliser pour votre domaine spécifique. Puisque le fichier est en lecture seule, vous devrez utiliser :w! pour enregistrer le fichier dans vi.

  1. Définissez $dc1 et $dc2 sur les noms de domaine entièrement qualifiés ou les adresses IP de 2 de vos contrôleurs de domaine.
  2. Définissez $hqbase égal au chemin LDAP vers le conteneur ou l’unité organisationnelle qui contient les comptes e-mail pour lesquels vous souhaitez obtenir les adresses e-mail.
  3. Définissez $user et $passwd pour indiquer quel compte utilisateur doit être utilisé pour accéder à ces informations. Ce compte n’a besoin d’être qu’un membre du domaine, donc il serait bon de configurer un compte spécifiquement pour cela.

Essayez d’exécuter le script. S’il fonctionne correctement, il créera /etc/postfix/relay_recipients.

Notez que si votre serveur Postfix est séparé de vos contrôleurs Active Directory par un pare-feu, vous devrez ouvrir le port TCP 389 du serveur Postfix vers les ADC.

getadsmtp.pl

À ce stade, vous voudrez peut-être modifier /etc/postfix/relay_recipients et supprimer les adresses e-mail indésirables car ce script importe tout.

Postmap le fichier pour créer la base de données hash

postmap /etc/postfix/relay_recipients  
postfix reload

Enfin, vous voudrez peut-être configurer un job cron pour mettre à jour et construire périodiquement le fichier /etc/postfix/relay_recipients.db. Vous pouvez configurer un script appelé /usr/bin/update-relay-recipients.sh : (Optionnel)

vi /usr/bin/update-relay-recipients.sh

avec ce qui suit et

chmod +x /usr/bin/update-relay_recipients.sh
#!/bin/sh
/usr/bin/getadsmtp.pl
postmap /etc/postfix/relay_recipients
postfix reload

N’oubliez pas de vous assurer que ce qui suit est dans votre fichier /etc/postfix/main.cf :

relay_recipient_maps = hash:/etc/postfix/relay_recipients

Ajoutez-le à cron :

30 2 * * * /usr/bin/update-relay-recipients.sh #synchroniser relay_recipients avec les adresses Active Directory

:Notez que ce job cron s’exécutera tous les jours à 2h30 pour mettre à jour le fichier de base de données. Vous voudrez peut-être exécuter le vôtre plus fréquemment ou non selon la fréquence à laquelle vous ajoutez de nouveaux utilisateurs e-mail à votre système.

18. Installer Webmin (Optionnel) :

apt-get install perl libnet-ssleay-perl libauthen-pam-perl libio-pty-perl apt-show-versions  
cd /tmp && wget http://mirrors.kernel.org/ubuntu/pool/universe/libm/libmd5-perl/libmd5-perl_2.03-1_all.deb  
dpkg -i libmd5-perl_2.03-1_all.deb  
wget http://downloads.sourceforge.net/project/webadmin/webmin/1.520/webmin_1.520_all.deb  
dpkg --install webmin_1.520_all.deb

19. Ajouter automatiquement un avertissement aux e-mails sortants avec alterMIME (Optionnel)

Ce tutoriel montre comment installer et utiliser alterMIME. alterMIME est un outil qui peut ajouter automatiquement un avertissement aux e-mails. Dans cet article, je vais expliquer comment l’installer en tant que filtre Postfix sur Ubuntu.

Installation de alterMIME :

apt-get install altermime

Ensuite, nous créons le filtre utilisateur avec le répertoire personnel /var/spool/filter - alterMIME sera exécuté en tant que cet utilisateur :

useradd -r -c "Filtres Postfix" -d /var/spool/filter filter  
mkdir /var/spool/filter  
chown filter:filter /var/spool/filter  
chmod 750 /var/spool/filter

Ensuite, nous créons le script /etc/postfix/disclaimer qui exécute alterMIME. Le package alterMIME d’Ubuntu est livré avec un script d’exemple que nous pouvons simplement copier dans /etc/postfix/disclaimer :

cp /usr/share/doc/altermime/examples/postfix_filter.sh /etc/postfix/disclaimer  
chgrp filter /etc/postfix/disclaimer  
chmod 750 /etc/postfix/disclaimer

Maintenant, le problème avec ce script est qu’il ne fait pas de distinction entre les e-mails entrants et sortants - il ajoute simplement un avertissement à tous les e-mails. Typiquement, vous voulez des avertissements uniquement pour les e-mails sortants, et même alors pas pour toutes les adresses d’expéditeur. Par conséquent, j’ai modifié un peu le script /etc/postfix/disclaimer - nous y viendrons dans un instant.

En ce moment, nous créons le fichier /etc/postfix/disclaimer_addresses qui contient toutes les adresses e-mail des expéditeurs (une par ligne) pour lesquelles alterMIME devrait ajouter un avertissement :

vi /etc/postfix/disclaimer_addresses
[email protected]
[email protected]
[email protected]

Maintenant, nous ouvrons /etc/postfix/disclaimer et le modifions comme suit (j’ai marqué les parties que j’ai changées) :

vi /etc/postfix/disclaimer
#!/bin/sh
# Localisez ceci.
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
####### Changé du script original #######
DISCLAIMER_ADDRESSES=/etc/postfix/disclaimer_addresses
####### Changé du script original FIN #######
# Codes de sortie de 
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# Nettoyez lorsque vous avez terminé ou lorsque vous abandonnez.
trap "rm -f in.$$" 0 1 2 3 15
# Commencez le traitement.
cd $INSPECT_DIR || { echo $INSPECT_DIR n'existe pas; exit
$EX_TEMPFAIL; }
cat >in.$$ || { echo Impossible d'enregistrer le mail dans le fichier; exit $EX_TEMPFAIL; }
####### Changé du script original #######
# obtenir l'adresse From
from_address=`grep -m 1 "From:" in.$$ | cut -d "<" -f 2 | cut -d ">" -f 1`
if [ `grep -wi ^${from_address}$ ${DISCLAIMER_ADDRESSES}` ]; then
  /usr/bin/altermime --input=in.$$ \
                   --disclaimer=/etc/postfix/disclaimer.txt \
                   --disclaimer-html=/etc/postfix/disclaimer.txt \
                   --xheader="X-Copyrighted-Material: Veuillez visiter http://www.company.com/privacy.htm" || \
                    { echo Contenu du message rejeté; exit $EX_UNAVAILABLE; }
fi
####### Changé du script original FIN #######
$SENDMAIL "$@" 

Ensuite, nous avons besoin du fichier texte /etc/postfix/disclaimer.txt qui contient notre texte d’avertissement. Le package alterMIME d’Ubuntu est livré avec un texte d’exemple que nous pouvons utiliser pour l’instant (bien sûr, vous pouvez le modifier si vous le souhaitez) :

cp /usr/share/doc/altermime/examples/disclaimer.txt /etc/postfix/disclaimer.txt

Enfin, nous devons dire à Postfix qu’il doit utiliser le script /etc/postfix/disclaimer pour ajouter des avertissements aux e-mails sortants. Ouvrez /etc/postfix/master.cf et ajoutez -o content_filter=dfilt: à la ligne smtp :

vi /etc/postfix/master.cf
#
# Fichier de configuration du processus maître Postfix.  Pour des détails sur le format
# du fichier, voir la page de manuel master(5) (commande : "man 5 master").
#
# ========================================================================== 
# type de service  privé non privilégié  chroot  réveil  maxproc commande + args
#               (oui)   (oui)   (oui)   (jamais) (100)
# ========================================================================== 
smtp      inet  n       -       -       -       -       smtpd
   -o content_filter=dfilt:
[...] 

À la fin du même fichier, ajoutez les deux lignes suivantes :

[...] 
dfilt     unix    -       n       n       -       -       pipe
    flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient} 

Redémarrez Postfix ensuite :

/etc/init.d/postfix restart

C’est tout ! Maintenant, un avertissement devrait être ajouté aux e-mails sortants envoyés depuis les adresses répertoriées dans /etc/postfix/disclaimer_addresses.

20. Captures d’écran

Félicitations

Vous devriez maintenant avoir un SpamSnake complet et fonctionnel avec toutes les fonctionnalités :-)

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.