SpamSnake · 14 min read · Dec 25, 2025
Die perfekte SpamSnake - Ubuntu Jeos 10.10 Maverick Meerkat - Seite 4
14. KAM
vi /etc/cron.daily/kam.shFügen Sie den folgenden Inhalt hinzu und
chmod +x /etc/cron.daily/kam.sh#!/bin/bash
# Originalversion modifiziert von Andrew MacLachlan ([email protected])
# Zusätzliche MailScanner-Neustarts bei anfänglichem Neustartfehler hinzugefügt
# Skript läuft im Stillen bei normalem (erfolgreichem) Betrieb
# UPDATEMAXDELAY auf 900 von 600 erhöht
# Fügen Sie eine zufällige Verzögerung bis zu diesem Wert ein, um Virusupdates über
# die Uhr zu verteilen. 1800 Sekunden = 30 Minuten.
# Setzen Sie dies auf 0, um es zu deaktivieren.
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 Verzögerung des Cron-Jobs bis zu $UPDATEMAXDELAY Sekunden
perl -e "sleep int(rand($UPDATEMAXDELAY));"
fi
# JKF Holen Sie sich KAM.cf
#echo Holen von 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 Es wurde abgeschlossen und hat etwas abgerufen
if ( tail -10 KAM.cf | grep -q '^#.*EOF' ); then
# echo Es war erfolgreich, also machen Sie ein Backup
cp -f KAM.cf KAM.cf.backup
else
echo FEHLER: EOF-Marker konnte nicht gefunden werden
cp -f KAM.cf.backup KAM.cf
fi
else
echo Es konnte nicht ordnungsgemäß abgeschlossen werden
cp -f KAM.cf.backup KAM.cf
fi
#echo Laden von MailScanner- und SpamAssassin-Konfigurationsregeln
/etc/init.d/mailscanner reload > /dev/null 2>&1
if [ $? != 0 ] ; then
echo "MailScanner-Neuladen fehlgeschlagen - Erneuter Versuch..."
/etc/init.d/mailscanner force-reload
if [ $? = 0 ] ; then
echo "MailScanner-Neuladen erfolgreich."
else
echo "Stopping MailScanner..."
/etc/init.d/mailscanner stop
echo "Warten auf eine Minute..."
perl -e "sleep 60;"
echo "Versuche, MailScanner zu starten..."
/etc/init.d/mailscanner start
fi
fi 15. ScamNailer
vi /usr/sbin/update_scamnailer
und
chmod +x /usr/sbin/update_scamnailer
Hinweis: *Inhalt befindet sich in scamnailer.doc.)
Fügen Sie es zu cron hinzu:
@daily /usr/sbin/update_scamnailer &> /dev/null #Update Scamnailer16. Firewalling der SpamSnake mit Firehol
Einführung
Firehol ist ein zustandsbehafteter iptables-Paketfilter-Firewall-Konfigurator. Es ist abstrahiert, erweiterbar, einfach und leistungsstark. Es kann jede Art von Firewall verwalten, aber am wichtigsten ist, dass es Ihnen die Mittel gibt, sie so zu konfigurieren, wie Sie es sich vorstellen.
Firehol installieren
apt-get install fireholFirehol-Einstellungen:
vi /etc/default/fireholund ändern Sie Folgendes:
START_FIREHOL=YESvi /etc/firehol/firehol.confund fügen Sie Folgendes hinzu:
version 5
# Akzeptiere gesamten Client-Verkehr an jedem Interface
interface any internet
protection strong
server "icmp ping ICMP ssh http https telnet webmin dns dcc echo smtp" accept
client all acceptDies filtert alle eingehenden Verbindungen, die nicht mit den oben genannten Diensten verbunden sind. Wenn Sie weniger höflich sein möchten, können Sie sie abweisen, indem Sie Folgendes nach ‘protection strong’ hinzufügen: policy drop
vi /usr/sbin/get-ianamit folgendem und
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
# Aktualisiert für das neueste IANA-Reservierungsformat.
#
# Revision 1.12 2008/03/17 22:08:43 ktsaou
# Aktualisiert für das neueste IANA-Reservierungsformat.
#
# Revision 1.11 2007/06/13 14:40:04 ktsaou
# * leere Protokollnachricht *
#
# Revision 1.10 2007/05/05 23:38:31 ktsaou
# Unterstützung für externe Definitionen hinzugefügt von:
#
# RESERVED_IPS
# PRIVATE_IPS
# MULTICAST_IPS
# UNROUTABLE_IPS
#
# in Dateien unter demselben Namen in /etc/firehol/.
# Nur RESERVED_IPS ist obligatorisch (firehol wird sich beschweren, wenn es nicht dort ist,
# aber es wird trotzdem ohne funktionieren), und ist auch die einzige Datei, die firehol
# überprüft, wie alt sie ist. Wenn sie älter als 90 Tage ist, wird firehol sich erneut beschweren.
#
# Das bereitgestellte get-iana.sh-Skript wurde geändert, um die RESERVED_IPS-Datei zu generieren.
# FireHOL weist den Benutzer auch an, dieses Skript zu verwenden, wenn die Datei fehlt
# oder zu alt ist.
#
# Revision 1.9 2007/04/29 19:34:11 ktsaou
# * leere Protokollnachricht *
#
# Revision 1.8 2005/06/02 15:48:52 ktsaou
# Erlaubte 127.0.0.1 in RESERVED_IPS
#
# Revision 1.7 2005/05/08 23:27:23 ktsaou
# Aktualisierte RESERVED_IPS auf die aktuellen IANA-Reservierungen.
#
# Revision 1.6 2004/01/10 18:44:39 ktsaou
# Weiter optimiert und PRIVATE_IPS reduziert mit:
# http://www.vergenet.net/linux/aggregate/
#
# Das bereitgestellte get-iana.sh verwendet .aggregate. wenn es im Pfad gefunden wird.
# (aggregate ist der Name dieses Programms, wenn es auf Gentoo installiert ist)
#
# Revision 1.5 2003/08/23 23:26:50 ktsaou
# Fehler #793889:
# Ändern Sie #!/bin/sh in #!/bin/bash, um FireHOL auf Systemen auszuführen, bei denen
# bash nicht mit /bin/sh verknüpft ist.
#
# Revision 1.4 2002/10/27 12:44:42 ktsaou
# CVS-Test
#
#
# Programm, das die IPv4-Adressraumzuweisung von IANA herunterlädt
# und eine Liste mit allen reservierten Adressräumen erstellt.
#
IPV4_ADDRESS_SPACE_URL="http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt"
# Das Programm wird alle Zeilen in der Datei abgleichen, die mit einer Zahl beginnen, einen Schrägstrich haben,
# gefolgt von einer weiteren Zahl, für die das folgende Muster auch übereinstimmt
# in denselben Zeilen
IANA_RESERVED="(RESERVED|UNALLOCATED)"
# welche Zeilen, die von oben übereinstimmen, ignoriert werden sollen
# (d.h. nicht in RESERVED_IPS einbezogen werden)?
#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 "WARNUNG"
echo >&2 "Bitte installieren Sie 'aggregate', um die Liste der IPs zu verkleinern."
echo >&2
echo >&2
fi
echo >&2
echo >&2 "Abrufen des IANA IPv4-Adressraums von:"
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 "Kann Netzwerkmasken von $net Bits nicht verarbeiten ($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 "FOLGENDE RESERVIERTE IP-BEREICHE GEFUNDEN:"
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 "Fehler beim Finden reservierter IPs."
echo >&2 "Möglicherweise wurde das Dateiformat geändert oder ich kann die URL nicht abrufen."
echo >&2
rm -f ${tempfile}
exit 1
fi
echo >&2
echo >&2
echo >&2 "Unterschiede zwischen der abgerufenen Liste und der 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 "Keine Unterschiede gefunden."
echo >&2
rm -f ${tempfile}
exit 0
fi
echo >&2
echo >&2
echo >&2 "Möchten Sie diese Liste in /etc/firehol/RESERVED_IPS speichern,"
echo >&2 "damit FireHOL sie von nun an automatisch verwendet?"
echo >&2
while [ 1 = 1 ]
do
printf >&2 "ja oder nein > "
read x
case "${x}" in
ja) cp -f /etc/firehol/RESERVED_IPS /etc/firehol/RESERVED_IPS.old 2>/dev/null
cat "${tempfile}" >/etc/firehol/RESERVED_IPS || exit 1
echo >&2 "Neue RESERVED_IPS in '/etc/firehol/RESERVED_IPS' geschrieben."
echo "Firehol wird jetzt neu gestartet"
sleep 3
/etc/init.d/firehol restart
break
;;
nein)
echo >&2 "Nichts gespeichert."
break
;;
*) echo >&2 "Kann '${x}' nicht verstehen."
;;
esac
done
rm -f ${tempfile}vi /usr/sbin/update-ianamit folgendem Inhalt und
chmod +x /usr/sbin/update-iana#!/bin/sh
/usr/sbin/get-iana < /etc/firehol/get-iana-answerfilevi /etc/firehol/get-iana-answerfilemit folgendem Inhalt:
jaFühren Sie das Skript aus, um RESERVED_IPS zu aktualisieren:
/usr/sbin/update-ianaJetzt ist Ihr Server so eingerichtet, dass er nur Verbindungen für die von Ihnen erlaubten Dienste akzeptiert.
Fügen Sie es zu cron hinzu:
@monthly /usr/sbin/update-iana &> /dev/null #Update firehol reservierte ips17. Relay-Empfänger anwenden
Die folgenden Anweisungen sind für Personen gedacht, die Microsoft Exchange 2000 oder Microsoft Exchange 2003 verwenden.
Diese Seite beschreibt, wie Sie Ihr Mail-Gateway so konfigurieren, dass es regelmäßig eine Liste gültiger Empfänger-E-Mail-Adressen von Ihrem Exchange-System abruft. Dadurch können Sie Ihren Server so konfigurieren, dass er automatisch jede E-Mail ablehnt, die an ungültige Adressen gerichtet ist. Dies reduziert die Last auf Ihrem Exchange-Server, da er keine Zustellberichte mehr verarbeiten muss, und es reduziert die Last auf Ihrem Postfix-Server, da er keine Spam- und Virenscans für die Nachricht durchführen muss.
Abhängigkeiten installieren
Installieren Sie das Perl-Modul Net::LDAP:
perl -MCPAN -e shell
install Net::LDAPvi /usr/bin/getadsmtp.plmit folgendem:
#!/usr/bin/perl -T -w
# Dieses Skript wird alle SMTP-Adressen der Benutzer aus Ihrem Active Directory abrufen
# (einschließlich primärer und sekundärer E-Mail-Adressen) und sie im
# Format "[email protected] OK" auflisten, das Postfix mit relay_recipient_maps verwendet.
# Stellen Sie sicher, dass Sie den Pfad zu Perl oben überprüfen.
# Dies erfordert, dass Net::LDAP installiert ist. Um Net::LDAP zu installieren, geben Sie in einer Shell
# "perl -MCPAN -e shell" ein und dann "install Net::LDAP"
use Net::LDAP;
use Net::LDAP::Control::Paged;
use Net::LDAP::Constant ( "LDAP_CONTROL_PAGED" );
# Geben Sie den Pfad/Datei für die Ausgabe ein
$VALID = "/etc/postfix/relay_recipients";
open VALID, "> $VALID" or die "KANN $VALID NICHT ÖFFNEN $!";
# Geben Sie die FQDN Ihrer Active Directory-Domänencontroller unten ein
$dc1="domaincontroller1.example.com";
$dc2="domaincontroller2.example.com";
# Geben Sie den LDAP-Container für Ihre Benutzerbasis ein.
# Die Syntax ist CN=Users,dc=example,dc=com
# Dies kann gefunden werden, indem Sie die Windows 2000 Support Tools installieren
# und dann ADSI Edit ausführen.
# In ADSI Edit erweitern Sie die "Domain NC [domaincontroller1.example.com]" &
# Sie sehen zum Beispiel, DC=example,DC=com (das ist Ihre Basis).
# Der Benutzercontainer wird im rechten Bereich als
# CN=Users angegeben, abhängig von Ihrem Schema (das ist Ihr Container).
# Sie können dies überprüfen, indem Sie auf "Eigenschaften" Ihres Benutzers klicken
# Ordner in ADSI Edit und den "Pfad"-Wert untersuchen, wie:
# LDAP://domaincontroller1.example.com/CN=Users,DC=example,DC=com
# was $hqbase="cn=Users,dc=example,dc=com" wäre
# Hinweis: Sie können auch einfach $hqbase="dc=example,dc=com" verwenden
$hqbase="cn=Users,dc=example,dc=com";
# Geben Sie den Benutzernamen & das Passwort für einen gültigen Benutzer in Ihrem Active Directory ein
# mit dem Benutzernamen in der Form cn=username,cn=Users,dc=example,dc=com
# Stellen Sie sicher, dass das Passwort des Benutzers nicht abläuft. Beachten Sie, dass dieser Benutzer
# keine speziellen Berechtigungen benötigt.
# Sie können dies überprüfen, indem Sie auf "Eigenschaften" Ihres Benutzers in
# ADSI Edit klicken und den "Pfad"-Wert untersuchen, wie:
# LDAP://domaincontroller1.example.com/CN=user,CN=Users,DC=example,DC=com
# was $user="cn=user,cn=Users,dc=example,dc=com" wäre
# Hinweis: Sie können auch die UPN-Anmeldung verwenden: "[email protected]"
$user="cn=user,cn=Users,dc=example,dc=com";
$passwd="password";
# Verbindung zu Active Directory-Domänencontrollern
$noldapserver=0;
$ldap = Net::LDAP->new($dc1) or
$noldapserver=1;
if ($noldapserver == 1) {
$ldap = Net::LDAP->new($dc2) or
die "Fehler beim Verbinden mit den angegebenen Domänencontrollern $@ \n";
}
$mesg = $ldap->bind ( dn => $user,
password =>$passwd);
if ( $mesg->code()) {
die ("Fehler:", $mesg->error_text((),"\n"));
}
# Wie viele LDAP-Abfrageergebnisse für jede paginierte Runde abrufen
# Setzen Sie es auf unter 1000 für Active Directory
$page = Net::LDAP::Control::Paged->new( size => 990 );
@args = ( base => $hqbase,
# Spielen Sie damit herum, um Objekte wie Kontakte, öffentliche Ordner usw. abzurufen.
# Ein minimaler Filter für nur Benutzer mit E-Mail wäre:
# 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) {
# Suche durchführen
my $mesg = $ldap->search( @args );
# Ergebnisse für proxyAddresses-Attribute filtern
foreach my $entry ( $mesg->entries ) {
my $name = $entry->get_value( "cn" );
# LDAP-Attribute sind mehrwertig, daher müssen wir jedes einzelne drucken.
foreach my $mail ( $entry->get_value( "proxyAddresses" ) ) {
# Testen Sie, ob die Zeile mit einer der folgenden Zeilen beginnt:
# proxyAddresses: [smtp|SMTP]:
# und auch diese Startzeichenfolge verwerfen, sodass $mail nur die
# Adresse ohne andere Zeichen ist...
if ( $mail =~ s/^(smtp|SMTP)://gs ) {
print VALID $mail." OK\n";
}
}
}
# Nur bei LDAP_SUCCESS fortfahren
$mesg->code and last;
# Cookie aus der paginierten Steuerung abrufen
my($resp) = $mesg->control( LDAP_CONTROL_PAGED ) or last;
$cookie = $resp->cookie or last;
# Cookie in der paginierten Steuerung setzen
$page->cookie($cookie);
}
if ($cookie) {
# Wir hatten einen abnormalen Exit, also lassen Sie den Server wissen, dass wir keine weiteren möchten
$page->cookie($cookie);
$page->size(0);
$ldap->search( @args );
# Es wäre auch eine gute Idee, an dieser Stelle unglücklich zu sterben und den OP zu informieren
die("LDAP-Abfrage nicht erfolgreich");
}
# Fügen Sie zusätzliche Einschränkungen, Benutzer usw. zur Ausgabedatei unten hinzu.
#print VALID "[email protected] OK\n";
#print VALID "[email protected] 550 Benutzer unbekannt.\n";
#print VALID "domain3.com 550 Benutzer existiert nicht.\n";
close VALID;Als nächstes setzen Sie die Berechtigungen für die Datei, damit sie ausgeführt werden kann:
chmod +x /usr/bin/getadsmtp.plBearbeiten Sie die Datei, um sie für Ihre spezifische Domain anzupassen. Da die Datei schreibgeschützt ist, müssen Sie :w! verwenden, um die Datei in vi zu speichern.
- Setzen Sie $dc1 und $dc2 auf die vollqualifizierten Domänennamen oder IP-Adressen von 2 Ihrer Domänencontroller.
- Setzen Sie $hqbase gleich dem LDAP-Pfad zum Container oder organisatorischen Einheit, die die E-Mail-Konten enthält, für die Sie die E-Mail-Adressen abrufen möchten.
- Setzen Sie $user und $passwd, um anzugeben, welches Benutzerkonto verwendet werden soll, um auf diese Informationen zuzugreifen. Dieses Konto muss nur Mitglied der Domäne sein, daher wäre es eine gute Idee, ein Konto speziell dafür einzurichten.
Versuchen Sie, das Skript auszuführen. Wenn es korrekt funktioniert, wird /etc/postfix/relay_recipients erstellt.
Beachten Sie, dass, wenn Ihr Postfix-Server durch eine Firewall von Ihren Active Directory-Controllern getrennt ist, Sie den TCP-Port 389 vom Postfix-Server zu den ADCs öffnen müssen.
getadsmtp.plAn diesem Punkt möchten Sie möglicherweise /etc/postfix/relay_recipients bearbeiten und unerwünschte E-Mail-Adressen entfernen, da dieses Skript alles importiert.
Postmap die Datei, um die Hash-db zu erstellen
postmap /etc/postfix/relay_recipients
postfix reloadSchließlich möchten Sie möglicherweise einen Cron-Job einrichten, um die Datei /etc/postfix/relay_recipients.db regelmäßig zu aktualisieren und zu erstellen. Sie können ein Skript namens /usr/bin/update-relay-recipients.sh einrichten: (Optional)
vi /usr/bin/update-relay-recipients.shmit folgendem und
chmod +x /usr/bin/update-relay_recipients.sh#!/bin/sh
/usr/bin/getadsmtp.pl
postmap /etc/postfix/relay_recipients
postfix reloadVergessen Sie nicht, sicherzustellen, dass Folgendes in Ihrer /etc/postfix/main.cf-Datei enthalten ist:
relay_recipient_maps = hash:/etc/postfix/relay_recipientsFügen Sie es zu cron hinzu:
30 2 * * * /usr/bin/update-relay-recipients.sh #Synchronisieren Sie relay_recipients mit Active Directory-Adressen:Hinweis, dass dieser Cron-Job jeden Tag um 2:30 Uhr ausgeführt wird, um die Datenbankdatei zu aktualisieren. Möglicherweise möchten Sie Ihren häufiger oder seltener ausführen, je nachdem, wie oft Sie neue E-Mail-Benutzer zu Ihrem System hinzufügen.
18. Webmin installieren (Optional):
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.deb19. Fügen Sie automatisch einen Haftungsausschluss zu ausgehenden E-Mails mit alterMIME hinzu (Optional)
Dieses Tutorial zeigt, wie man alterMIME installiert und verwendet. alterMIME ist ein Tool, das automatisch einen Haftungsausschluss zu E-Mails hinzufügen kann. In diesem Artikel werde ich erklären, wie man es als Postfix-Filter auf Ubuntu installiert.
Installieren von alterMIME:
apt-get install altermimeAls nächstes erstellen wir den Benutzerfilter mit dem Home-Verzeichnis /var/spool/filter - alterMIME wird als dieser Benutzer ausgeführt:
useradd -r -c "Postfix-Filter" -d /var/spool/filter filter
mkdir /var/spool/filter
chown filter:filter /var/spool/filter
chmod 750 /var/spool/filterAnschließend erstellen wir das Skript /etc/postfix/disclaimer, das alterMIME ausführt. Das alterMIME-Paket von Ubuntu enthält ein Beispielskript, das wir einfach nach /etc/postfix/disclaimer kopieren können:
cp /usr/share/doc/altermime/examples/postfix_filter.sh /etc/postfix/disclaimer
chgrp filter /etc/postfix/disclaimer
chmod 750 /etc/postfix/disclaimerJetzt ist das Problem mit diesem Skript, dass es nicht zwischen eingehenden und ausgehenden E-Mails unterscheidet - es fügt einfach allen E-Mails einen Haftungsausschluss hinzu. Typischerweise möchten Sie Haftungsausschlüsse nur für ausgehende E-Mails, und selbst dann nicht für alle Absenderadressen. Daher habe ich das Skript /etc/postfix/disclaimer ein wenig modifiziert - darauf kommen wir gleich zu sprechen.
Im Moment erstellen wir die Datei /etc/postfix/disclaimer_addresses, die alle Absender-E-Mail-Adressen (eine pro Zeile) enthält, für die alterMIME einen Haftungsausschluss hinzufügen soll:
vi /etc/postfix/disclaimer_addresses[email protected]
[email protected]
[email protected]Jetzt öffnen wir /etc/postfix/disclaimer und ändern es wie folgt (ich habe die Teile markiert, die ich geändert habe):
vi /etc/postfix/disclaimer#!/bin/sh
# Lokalisieren Sie diese.
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
####### Geändert vom Original-Skript #######
DISCLAIMER_ADDRESSES=/etc/postfix/disclaimer_addresses
####### Geändert vom Original-Skript ENDE #######
# Exit-Codes aus
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# Aufräumen, wenn fertig oder beim Abbrechen.
trap "rm -f in.$$" 0 1 2 3 15
# Beginnen Sie mit der Verarbeitung.
cd $INSPECT_DIR || { echo $INSPECT_DIR existiert nicht; exit
$EX_TEMPFAIL; }
cat >in.$$ || { echo Kann Mail nicht in Datei speichern; exit $EX_TEMPFAIL; }
####### Geändert vom Original-Skript #######
# Erhalten Sie die Absenderadresse
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: Bitte besuchen Sie http://www.company.com/privacy.htm" || \
{ echo Nachrichtinhalt abgelehnt; exit $EX_UNAVAILABLE; }
fi
####### Geändert vom Original-Skript ENDE #######
$SENDMAIL "$@" Als nächstes benötigen wir die Textdatei /etc/postfix/disclaimer.txt, die unseren Haftungsausschlusstext enthält. Das alterMIME-Paket von Ubuntu enthält einen Beispieltext, den wir vorerst verwenden können (natürlich können Sie ihn nach Belieben ändern):
cp /usr/share/doc/altermime/examples/disclaimer.txt /etc/postfix/disclaimer.txtSchließlich müssen wir Postfix mitteilen, dass es das Skript /etc/postfix/disclaimer verwenden soll, um Haftungsausschlüsse zu ausgehenden E-Mails hinzuzufügen. Öffnen Sie /etc/postfix/master.cf und fügen Sie -o content_filter=dfilt: zur smtp-Zeile hinzu:
vi /etc/postfix/master.cf#
# Konfigurationsdatei des Postfix-Masterprozesses. Für Details zum Format
# der Datei siehe die master(5)-Man-Seite (Befehl: "man 5 master").
#
# ==========================================================================
# Diensttyp privat unpriv chroot aufwachen maxproc Befehl + Argumente
# (ja) (ja) (ja) (nie) (100)
# ==========================================================================
smtp inet n - - - - smtpd
-o content_filter=dfilt:
[...] Am Ende derselben Datei fügen Sie die folgenden beiden Zeilen hinzu:
[...]
dfilt unix - n n - - pipe
flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient} Starten Sie Postfix danach neu:
/etc/init.d/postfix restartDas war’s! Jetzt sollte ein Haftungsausschluss zu ausgehenden E-Mails hinzugefügt werden, die von den in /etc/postfix/disclaimer_addresses aufgeführten Adressen gesendet werden.
20. Screenshots



Herzlichen Glückwunsch
Sie sollten jetzt eine vollständig funktionierende SpamSnake mit all den Leckereien haben :-)
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.