SpamSnake · 15 min read · Dec 25, 2025

Il Perfetto SpamSnake - Ubuntu Jeos 10.10 Maverick Meerkat - Pagina 4

14. KAM

vi /etc/cron.daily/kam.sh

Aggiungi il seguente contenuto e

chmod +x /etc/cron.daily/kam.sh
#!/bin/bash
   
 # Versione originale modificata da Andrew MacLachlan ([email protected])
 # Aggiunti ulteriori riavvii di MailScanner in caso di fallimento del riavvio iniziale
 # Reso lo script silenzioso per il normale (riuscito) funzionamento
 # Aumentato UPDATEMAXDELAY a 900 da 600
 
 # Inserisci un ritardo casuale fino a questo valore, per diffondere gli aggiornamenti del virus durante
 # il giorno. 1800 secondi = 30 minuti.
 # Imposta questo a 0 per disabilitarlo.
 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 Ritardo del lavoro cron fino a $UPDATEMAXDELAY secondi
 perl -e "sleep int(rand($UPDATEMAXDELAY));"
 fi
 
 # JKF Fetch KAM.cf
 #echo Recupero 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 È completato e ha recuperato qualcosa
 if ( tail -10 KAM.cf | grep -q '^#.*EOF' ); then
 # echo È riuscito quindi crea un backup
 cp -f KAM.cf KAM.cf.backup
 else
 echo ERRORE: Impossibile trovare il marcatore EOF
 cp -f KAM.cf.backup KAM.cf
 fi
 else
 echo È fallito nel completare correttamente
 cp -f KAM.cf.backup KAM.cf
 fi
 #echo Ricaricamento delle regole di configurazione di MailScanner e SpamAssassin
 /etc/init.d/mailscanner reload > /dev/null 2>&1
 if [ $? != 0 ] ; then
 echo "Il ricaricamento di MailScanner è fallito - Riprovo..."
 /etc/init.d/mailscanner force-reload
 if [ $? = 0 ] ; then
 echo "Il ricaricamento di MailScanner è riuscito."
 else
 echo "Arresto di MailScanner..."
 /etc/init.d/mailscanner stop
 echo "Attesa di un minuto..."
 perl -e "sleep 60;"
 echo "Tentativo di avviare MailScanner..."
 /etc/init.d/mailscanner start
 fi
 
 fi 

15. ScamNailer

vi /usr/sbin/update_scamnailer

e

chmod +x /usr/sbin/update_scamnailer

Nota: *Il contenuto è in scamnailer.doc.)

Aggiungilo a cron:

@daily /usr/sbin/update_scamnailer &> /dev/null #Aggiorna Scamnailer

16. Firewalling lo SpamSnake con Firehol

Introduzione

Firehol è un configuratore di firewall per il filtraggio dei pacchetti iptables a stato. È astratto, estensibile, facile e potente. Può gestire qualsiasi tipo di firewall, ma soprattutto, ti dà i mezzi per configurarlo, nello stesso modo in cui lo pensi.

Installa Firehol

apt-get install firehol

Impostazioni di Firehol:

vi /etc/default/firehol

e cambia il seguente:

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

e aggiungi il seguente:

version 5
   # Accetta tutto il traffico client su qualsiasi interfaccia
   interface any internet
   protection strong
   server "icmp ping ICMP ssh http https telnet webmin dns dcc echo smtp" accept
 client all accept

Questo filtra tutte le connessioni in arrivo che non sono correlate ai servizi sopra. Se vuoi essere meno cortese, puoi scartarle aggiungendo quanto segue dopo ‘protection strong’: policy drop

vi /usr/sbin/get-iana

con il seguente e

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 $
   # Revision 1.13 2010/09/12 13:55:00 jcb
   # Aggiornato per il formato più recente delle riserve IANA.
   #
   # Revision 1.12 2008/03/17 22:08:43 ktsaou
   # Aggiornato per il formato più recente delle riserve IANA.
   #
   # Revision 1.11 2007/06/13 14:40:04 ktsaou
   # * messaggio di log vuoto *
   #
   # Revision 1.10 2007/05/05 23:38:31 ktsaou
   # Aggiunta supporto per definizioni esterne di:
   #
   # RESERVED_IPS
   # PRIVATE_IPS
   # MULTICAST_IPS
   # UNROUTABLE_IPS
   #
   # in file con lo stesso nome in /etc/firehol/.
   # Solo RESERVED_IPS è obbligatorio (firehol si lamenterà se non è lì,
   # ma funzionerà comunque senza di esso), ed è anche l'unico file che firehol
   # controlla quanto è vecchio. Se ha più di 90 giorni, firehol si lamenterà
   # di nuovo.
   #
   # Cambiato lo script fornito get-iana.sh per generare il file RESERVED_IPS.
   # FireHOL istruisce anche l'utente a utilizzare questo script se il file è
   # mancante o è troppo vecchio.
   #
   # Revision 1.9 2007/04/29 19:34:11 ktsaou
   # * messaggio di log vuoto *
   #
   # Revision 1.8 2005/06/02 15:48:52 ktsaou
   # Consentito 127.0.0.1 di essere in RESERVED_IPS
   #
   # Revision 1.7 2005/05/08 23:27:23 ktsaou
   # Aggiornato RESERVED_IPS alle attuali riserve IANA.
   #
   # Revision 1.6 2004/01/10 18:44:39 ktsaou
   # Ulteriormente ottimizzato e ridotto PRIVATE_IPS utilizzando:
   # http://www.vergenet.net/linux/aggregate/
   #
   # Lo script fornito get-iana.sh utilizza .aggregate. se lo trova nel percorso.
   # (aggregate è il nome di questo programma quando installato su Gentoo)
   #
   # Revision 1.5 2003/08/23 23:26:50 ktsaou
   # Bug #793889:
   # Cambia #!/bin/sh in #!/bin/bash per consentire a FireHOL di funzionare su sistemi in cui
   # bash non è collegato a /bin/sh.
   #
   # Revision 1.4 2002/10/27 12:44:42 ktsaou
   # Test CVS
   #
 #
   # Programma che scarica l'allocazione dello spazio degli indirizzi IPv4 da IANA
   # e crea un elenco con tutti gli spazi di indirizzi riservati.
   #
 IPV4_ADDRESS_SPACE_URL="http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt"
 # Il programma corrisponderà a tutte le righe nel file che iniziano con un numero, hanno una barra,
   # seguita da un altro numero, per cui il seguente modello corrisponderà anche
   # sulle stesse righe
   IANA_RESERVED="(RESERVED|UNALLOCATED)"
 # quali righe che sono corrisposte da quanto sopra, ignorare
   # (cioè non includerle in 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 "AVVISO"
   echo >&2 "Si prega di installare 'aggregate' per ridurre l'elenco degli IP."
   echo >&2
   echo >&2
   fi
 echo >&2
   echo >&2 "Recupero IANA IPv4 Address Space, da:"
   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 "Impossibile gestire le maschere di rete di $net bit  ($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 "TROVATI I SEGUENTI INTERVALLI IP RISERVATI:"
   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 "Impossibile trovare IP riservati."
   echo >&2 "Possibilmente il formato del file è stato cambiato, o non riesco a recuperare l'URL."
   echo >&2
 rm -f ${tempfile}
   exit 1
   fi
   echo >&2
   echo >&2
   echo >&2 "Differenze tra l'elenco recuperato e l'elenco installato in"
   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 "Nessuna differenza trovata."
   echo >&2
 rm -f ${tempfile}
   exit 0
   fi
 echo >&2
   echo >&2
   echo >&2 "Vuoi salvare questo elenco in  /etc/firehol/RESERVED_IPS"
   echo >&2 "in modo che FireHOL lo utilizzi automaticamente da ora in poi?"
   echo >&2
   while [ 1 = 1 ]
   do
   printf >&2 "sì o no > "
   read x
 case "${x}" in
   yes) cp -f /etc/firehol/RESERVED_IPS /etc/firehol/RESERVED_IPS.old  2>/dev/null
   cat "${tempfile}" >/etc/firehol/RESERVED_IPS || exit 1
   echo >&2 "Nuovi RESERVED_IPS scritti in  '/etc/firehol/RESERVED_IPS'."
   echo "Firehol verrà ora riavviato"
   sleep 3
   /etc/init.d/firehol restart
   break
   ;;
 no)
   echo >&2 "Niente salvato."
   break
   ;;
 *) echo >&2 "Impossibile capire '${x}'."
   ;;
 esac
   done
 rm -f ${tempfile}
vi /usr/sbin/update-iana

con il seguente contenuto e

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

con il seguente contenuto:

yes

Esegui lo script per aggiornare RESERVED_IPS:

/usr/sbin/update-iana

Ora il tuo server è configurato per accettare solo connessioni per i servizi che hai consentito.

Aggiungilo a cron:

@monthly /usr/sbin/update-iana &> /dev/null #Aggiorna gli ip riservati di firehol

17. Applica i destinatari di Relay

Le seguenti istruzioni sono destinate a persone che utilizzano Microsoft Exchange 2000 o Microsoft Exchange 2003.

Questa pagina descrive come configurare il tuo gateway di posta per ottenere periodicamente un elenco di indirizzi email destinatari validi dal tuo sistema Exchange. Facendo ciò, puoi configurare il tuo server per rifiutare automaticamente qualsiasi email indirizzata a indirizzi non validi. Questo ridurrà il carico sul tuo server exchange, poiché non dovrà più elaborare rapporti di mancata consegna, e ridurrà il carico sul tuo server postfix poiché non dovrà eseguire scansioni di spam e virus sul messaggio.

Installa le dipendenze

Installa il modulo perl Net::LDAP:

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

con il seguente:

#!/usr/bin/perl -T -w
   # Questo script recupererà tutti gli indirizzi SMTP degli utenti dal tuo Active Directory
   # (inclusi indirizzi email primari e secondari) e li elencherà nel
   # formato "[email protected] OK" che Postfix utilizza con relay_recipient_maps.
   # Assicurati di controllare il percorso di perl sopra.
   # Questo richiede che Net::LDAP sia installato.  Per installare Net::LDAP, in una shell
   # digita "perl -MCPAN -e shell" e poi "install Net::LDAP"
   use Net::LDAP;
   use Net::LDAP::Control::Paged;
   use Net::LDAP::Constant ( "LDAP_CONTROL_PAGED" );
   # Inserisci il percorso/file per l'output
   $VALID = "/etc/postfix/relay_recipients";
   open VALID, "> $VALID" or die "IMpossibile APRIRE $VALID $!";
   # Inserisci il FQDN dei tuoi controller di dominio Active Directory qui sotto
   $dc1="domaincontroller1.example.com";
   $dc2="domaincontroller2.example.com";
   # Inserisci il contenitore LDAP per il tuo database utenti.
   # La sintassi è CN=Users,dc=example,dc=com
   # Questo può essere trovato installando gli strumenti di supporto di Windows 2000
   # e poi eseguendo ADSI Edit.
   # In ADSI Edit, espandi il "Domain NC [domaincontroller1.example.com]" &
   # vedrai, per esempio, DC=example,DC=com (questo è il tuo base).
   # Il contenitore Utenti sarà specificato nel pannello di destra come
   # CN=Users a seconda del tuo schema (questo è il tuo contenitore).
   # Puoi controllare questo facendo clic su "Proprietà" della tua cartella utente in
   # ADSI Edit e esaminando il valore "Percorso", come:
   # LDAP://domaincontroller1.example.com/CN=Users,DC=example,DC=com
   # che sarebbe $hqbase="cn=Users,dc=example,dc=com"
   # Nota:  Puoi anche usare solo $hqbase="dc=example,dc=com"
   $hqbase="cn=Users,dc=example,dc=com";
   # Inserisci il nome utente e la password per un utente valido nel tuo Active Directory
   # con nome utente nella forma cn=username,cn=Users,dc=example,dc=com
   # Assicurati che la password dell'utente non scada.  Nota che questo utente
   # non richiede privilegi speciali.
   # Puoi controllare questo facendo clic su "Proprietà" del tuo utente in
   # ADSI Edit e esaminando il valore "Percorso", come:
   # LDAP://domaincontroller1.example.com/CN=user,CN=Users,DC=example,DC=com
   # che sarebbe $user="cn=user,cn=Users,dc=example,dc=com"
   # Nota: Puoi anche usare il login UPN: "[email protected]"
   $user="cn=user,cn=Users,dc=example,dc=com";
   $passwd="password";
   # Connessione ai controller di dominio Active Directory
   $noldapserver=0;
   $ldap = Net::LDAP->new($dc1) or
   $noldapserver=1;
   if ($noldapserver == 1)  {
   $ldap = Net::LDAP->new($dc2) or
   die "Errore di connessione ai controller di dominio specificati $@ \n";
   }
   $mesg = $ldap->bind ( dn => $user,
   password =>$passwd);
   if ( $mesg->code()) {
   die ("errore:", $mesg->error_text((),"\n"));
   }
   # Quanti risultati di query LDAP recuperare per ogni round paginato
   # Imposta sotto 1000 per Active Directory
   $page = Net::LDAP::Control::Paged->new( size => 990 );
   @args = ( base     => $hqbase,
   # Gioca con questo per recuperare oggetti come Contatti, Cartelle Pubbliche, ecc.
   # Un filtro minimo per solo utenti con email sarebbe:
   # 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) {
   # Esegui ricerca
   my $mesg = $ldap->search( @args );
   # Filtrando risultati per attributi proxyAddresses
   foreach my $entry ( $mesg->entries ) {
   my $name = $entry->get_value( "cn" );
   # Gli attributi LDAP sono multi-valore, quindi dobbiamo stampare ciascuno.
   foreach my $mail ( $entry->get_value( "proxyAddresses" ) ) {
   # Testa se la riga inizia con una delle seguenti righe:
   # proxyAddresses: [smtp|SMTP]:
   # e scarta anche questa stringa iniziale, in modo che $mail sia solo l'indirizzo senza altri caratteri...
   if ( $mail =~ s/^(smtp|SMTP)://gs ) {
   print VALID $mail." OK\n";
   }
   }
   }
   # Continua solo su LDAP_SUCCESS
   $mesg->code and last;
   # Ottieni cookie dal controllo paginato
   my($resp)  = $mesg->control( LDAP_CONTROL_PAGED ) or last;
   $cookie    = $resp->cookie or last;
   # Imposta cookie nel controllo paginato
   $page->cookie($cookie);
   }
   if ($cookie) {
   # Abbiamo avuto un'uscita anomala, quindi facciamo sapere al server che non vogliamo più
   $page->cookie($cookie);
   $page->size(0);
   $ldap->search( @args );
   # Sarebbe anche una buona idea morire infelicemente e informare OP a questo punto
   die("Query LDAP non riuscita");
   }
   # Aggiungi ulteriori restrizioni, utenti, ecc. al file di output qui sotto.
   #print VALID "[email protected] OK\n";
   #print VALID "[email protected] 550 Utente sconosciuto.\n";
   #print VALID "domain3.com 550 Utente non esiste.\n";
   close VALID;

Successivamente imposta i permessi sul file per consentirne l’esecuzione:

chmod +x /usr/bin/getadsmtp.pl

Modifica il file per personalizzarlo per il tuo dominio specifico. Poiché il file è di sola lettura, dovrai usare :w! per salvare il file in vi.

  1. Imposta $dc1 e $dc2 sui nomi di dominio completamente qualificati o sugli indirizzi IP di 2 dei tuoi controller di dominio.
  2. Imposta $hqbase uguale al percorso LDAP per il contenitore o l’unità organizzativa che contiene gli account email per i quali desideri ottenere gli indirizzi email.
  3. Imposta $user e $passwd per indicare quale account utente dovrebbe essere utilizzato per accedere a queste informazioni. Questo account deve solo essere un membro del dominio, quindi sarebbe una buona idea impostare un account specificamente per questo.

Prova a eseguire lo script. Se funziona correttamente, creerà /etc/postfix/relay_recipients.

Nota che se il tuo server postfix è separato dai tuoi controller di Active Directory da un firewall, dovrai aprire la porta TCP 389 dal server postfix agli ADC.

getadsmtp.pl

A questo punto, potresti voler modificare /etc/postfix/relay_recipients e rimuovere eventuali indirizzi email indesiderati poiché questo script importa tutto.

Postmap il file per creare il db hash

postmap /etc/postfix/relay_recipients  
postfix reload

Infine, potresti voler impostare un lavoro cron per aggiornare periodicamente e costruire il file /etc/postfix/relay_recipients.db. Puoi impostare uno script chiamato /usr/bin/update-relay-recipients.sh: (Opzionale)

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

con il seguente e

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

Non dimenticare di assicurarti che quanto segue sia nel tuo file /etc/postfix/main.cf:

relay_recipient_maps = hash:/etc/postfix/relay_recipients

Aggiungilo a cron:

30 2 * * * /usr/bin/update-relay-recipients.sh #sincronizza relay_recipients con indirizzi Active Directory

:Nota che questo lavoro cron verrà eseguito ogni giorno alle 2:30 AM per aggiornare il file del database. Potresti voler eseguire il tuo più frequentemente o meno a seconda di quanto spesso aggiungi nuovi utenti email al tuo sistema.

18. Installa Webmin (Opzionale):

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. Aggiungi automaticamente un disclaimer alle email in uscita con alterMIME (Opzionale)

Questo tutorial mostra come installare e utilizzare alterMIME. alterMIME è uno strumento che può aggiungere automaticamente un disclaimer alle email. In questo articolo spiegherò come installarlo come filtro Postfix su Ubuntu.

Installazione di alterMIME:

apt-get install altermime

Successivamente creiamo il filtro utente con la home directory /var/spool/filter - alterMIME verrà eseguito come quell’utente:

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

Dopo creiamo lo script /etc/postfix/disclaimer che esegue alterMIME. Il pacchetto alterMIME di Ubuntu viene fornito con uno script di esempio che possiamo semplicemente copiare in /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

Ora il problema con questo script è che non distingue tra email in arrivo e in uscita - aggiunge semplicemente un disclaimer a tutte le email. Tipicamente vuoi disclaimer solo per le email in uscita, e anche allora non per tutti gli indirizzi del mittente. Pertanto ho modificato un po’ lo script /etc/postfix/disclaimer - ci arriveremo tra un minuto.

In questo momento, creiamo il file /etc/postfix/disclaimer_addresses che contiene tutti gli indirizzi email del mittente (uno per riga) per i quali alterMIME dovrebbe aggiungere un disclaimer:

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

Ora apriamo /etc/postfix/disclaimer e lo modifichiamo come segue (ho contrassegnato le parti che ho cambiato):

vi /etc/postfix/disclaimer
#!/bin/sh
# Localizza questi.
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
####### Cambiato Dallo Script Originale #######
DISCLAIMER_ADDRESSES=/etc/postfix/disclaimer_addresses
####### Cambiato Dallo Script Originale FINE #######
# Codici di uscita da 
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# Pulisci quando hai finito o quando abortisci.
trap "rm -f in.$$" 0 1 2 3 15
# Inizia l'elaborazione.
cd $INSPECT_DIR || { echo $INSPECT_DIR non esiste; exit
$EX_TEMPFAIL; }
cat >in.$$ || { echo Impossibile salvare la posta nel file; exit $EX_TEMPFAIL; }
####### Cambiato Dallo Script Originale #######
# ottieni l'indirizzo del mittente
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: Si prega di visitare http://www.company.com/privacy.htm" || \
                    { echo Contenuto del messaggio rifiutato; exit $EX_UNAVAILABLE; }
fi
####### Cambiato Dallo Script Originale FINE #######
$SENDMAIL "$@" 

Successivamente abbiamo bisogno del file di testo /etc/postfix/disclaimer.txt che contiene il nostro testo di disclaimer. Il pacchetto alterMIME di Ubuntu viene fornito con un testo di esempio che possiamo usare per ora (ovviamente, puoi modificarlo se vuoi):

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

Infine dobbiamo dire a Postfix che dovrebbe utilizzare lo script /etc/postfix/disclaimer per aggiungere disclaimer alle email in uscita. Apri /etc/postfix/master.cf e aggiungi -o content_filter=dfilt: alla riga smtp:

vi /etc/postfix/master.cf
#
# File di configurazione del processo master di Postfix.  Per dettagli sul formato
# del file, vedere la pagina man master(5) (comando: "man 5 master").
#
# ========================================================================== 
# tipo di servizio  privato non privilegiato  chroot  risveglio  maxproc comando + argomenti
#               (sì)   (sì)   (sì)   (mai) (100)
# ========================================================================== 
smtp      inet  n       -       -       -       -       smtpd
   -o content_filter=dfilt:
[...] 

Alla fine dello stesso file, aggiungi le seguenti due righe:

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

Riavvia Postfix successivamente:

/etc/init.d/postfix restart

Ecco fatto! Ora un disclaimer dovrebbe essere aggiunto alle email in uscita inviate dagli indirizzi elencati in /etc/postfix/disclaimer_addresses.

20. Screenshot

Congratulazioni

Ora dovresti avere un completo SpamSnake funzionante con tutte le novità :-)

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.