Zur Zeit geistern vermehrt Warnungen vor einer Abmahnwelle durch die Presse. Grund ist eine zum 01.01.2007 gültig gewordene Erweiterung des § 125a Abs. 1 Satz 1 des EHUG.
Hier wurde die bei Geschäftsbriefen ohnehin schon bestehende Pflicht zur Angabe der Handelregisterangaben auch auf eMails ausgeweitet.
Da man zwar alle Mitarbeiter auf diesen Umstand hinweisen kann, aber noch lange nicht sicher ist, dass dieser von allen gelesen (geschweige denn auch umgesetzt) wird, haben wir uns daher entschlossen, unserem MTA Postfix diese Aufgabe anzuvertrauen.
Dieser soll nun unter alle ausgehenden eMails des Hauses die gewünschten Angaben druntertackern.
Und da nicht nur wir das Problem haben dürften, hier eine kurze Beschreibung, wie wir das umgesetzt haben:
Grundlage für die Umsetzung war das Tool “alterMIME“, das u.a. ermöglicht, MIME-kodierte Dateien um Disclaimer zu erweiteren.
Wir haben uns im Großen und Ganzen bei der Installation und Konfiguration an die dort verlinkte Anleitung zur Konfiguration von alterMIME unter Postfix gehalten:
Nach dem Herunterladen und Kompilieren von altermime mit:
$ wget http://www.pldaniels.com/altermime/altermime-0.3.7.tar.gz
$ tar xvf altermime-0.3.7.tar.gz
$ cd altermime-0.3.7
$ make
(Und nein: es fehlt beim “tar” kein Parameter “z” – Das Archiv heisst zwar so, ist aber nicht gezippt).
kommt das Programm nach /usr/local/bin und wird dort für jedermann ausführbar:
# cp altermime /usr/local/bin/
# chmod 755 /usr/local/bin/altermime
Wir lassen den Filter als User “postfix” ausführen, unter dem bei uns auch der MTA selbst läuft, halten uns aber in der Anleitung an das o.g. Vorbild und richten dafür einen extra Benutzer “filter” ein:
# useradd -r -c "Postfix Filter" -m -d /var/spool/filter filter
Und jetzt zum eigentlichen Script “/etc/postfix/disclaimer/filter”, das bei uns dafür sorgt, dass nur ausgehende Nachrichten mit dem Disclaimer versehen werden. Wir filtern das über die Absender-eMail-Adresse, die als erster Parameter an das Filter-Script übergeben wird:
#!/bin/bash
#
# Wo sind meine Sachen?
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
ALTERMIME=/usr/local/bin/altermime
#
SENDER_DOMAIN=meine-domain.de
COPYRIGHT_HEADER="Wichtiger Text"
#
# Fehlercodes:
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
#
# Aufraeumen nicht vergessen:
trap "rm -f in.$$" 0 1 2 3 15
#
# und los geht es
cd $INSPECT_DIR || { echo $INSPECT_DIR existiert nicht; exit $EX_TEMPFAIL; }
cat >in.$$ || { echo Kann eMail nicht speichern; exit $EX_TEMPFAIL; }
#
# Domain aus uebergebener Absenderadresse filtern:
DOMAIN=${2##*@}
#
if [ "$DOMAIN" == "$SENDER_DOMAIN" ]; then
$ALTERMIME --input=in.$$ \
--disclaimer=/etc/postfix/disclaimer/disclaimer.txt \
--disclaimer-html=/etc/postfix/disclaimer/disclaimer.txt \
--xheader="X-Copyrighted-Material: $COPYRIGHT_HEADER" || \
{ echo Message content rejected; exit $EX_UNAVAILABLE; }
else
$ALTERMIME --input=in.$$ \
--xheader="X-Copyrighted-Material: $COPYRIGHT_HEADER" || \
{ echo Message content rejected; exit $EX_UNAVAILABLE; }
fi
#
$SENDMAIL "$@" <in.$$
exit $?
Das Ganze muss jetzt noch für den Filter-User ausführbar gemacht werden:
# chgrp filter /etc/postfix/disclaimer/filter
# chmod 750 /etc/postfix/disclaimer/filter
Der Text, der in die eMail eingefügt werden soll, muss jetzt als /etc/postfix/disclaimer/disclamaimer.txt angelegt werden.
Jetzt fehlt noch das Wichtigste: die Einbindung von alterMIME in die Postfix-Umgebung. Dies geschieht über die Erweiterung der /etc/postfix/master.cf.
Da bei uns der Mailserver nur eine IP-Adresse hat, und zusätzlich zum alterMIME auch noch Amavis mit der Mailfilterung beschäftigt ist (es wollen ja auch noch Spams und Viren bekämpft werden), sieht unsere master.cf in den angepassten Teilen jetzt so aus (hier unsere komplette master.cf.zip):
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
-o content_filter=smtp-amavis:[127.0.0.1]:10024
#
# [...hier noch das Standardzeug ...]
#
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=dfilt:
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
dfilt unix - n n - - pipe
flags=Rq user=filter argv=/etc/postfix/disclaimer/filter -f ${sender} -- ${recipient}
Nach einem
# postfix reload
sollten die Hinweise nun in keinen ausgehenden elektronischen Nachrichten mehr fehlen, überprüfbar ist das im Mail.log über einen grep auf “dfilt”.
Exakt das hab ich Montag auch gebastelt… Auch wenn mir diese Lösung absolut nicht gefällt, sie killt zuverlässig signierte Mails… Aber sie ist mir lieber als 20mal Outlook hinterherzurennen.
Hallo,
danke für dieses sehr nützliche Skript, es ist fast unveränderbar zu übernehmen, aber achtung ein paar kleine Tippgfehler haben sich im filter-script eingeschlichen in form von leerzeichen wo keine hingehören..
An ein einer Steller beim Disclaimer haben wir noch ein problem was wohl aber mehr html ist. Die Text Mails gehen gut, wenn aber html Disclaimer angehängt werden so kommen diese dann mit teilweise umbrüchen an wo nie welche gesetzt wurde, so stehen dann im Quelltext der angekommenen Mail Umbrüche die nicht im Disclaimerquelltext sind, daher sind dann mitunter auch leerzeichen im Disclaimer der ankommenden mail. Wäre für tipps sehr dankbar. j.reichel@asklepios.com
@Joerg: eigentlich sollte das Script auch unverändert laufen, ich habe es direkt vom Server in den Beitrag einkopiert. Ansonten: könntest Du mir die Tippfehler kurz mitteilen, dann könnte ich diese im Beitrag korrigieren? Tia.
Du kannst für HTML-Mails ja auch einen eigenen Disclaimer speichern und altermime über den Parameter “-disclaimer-html” mit auf den Weg geben, dann sollte das Problem der Vergangenheit angehören.
Gruß
Stefan
Hallo,
das Leerzeichen ist in der Zeile “$SENDMAIL “$@”
seltsam. mein restlicher Kommentar ist weg? dann nochmal.
in der master.cf ist auch ein Fehler. es muss heissen:
flags=Rq user=filter argv=/etc/postfix/disclaimer/filter -f${sender} — ${recipient}
achja. ich würd den Pfad zum altermime in eine Variable stecken. der installiert sich standardmässig in /usr/local/bin/altermime
achja. und für alle die mehr als eine Domain haben kann man das über “if [ "$DOMAIN" == "$SENDER_DOMAIN" -o $DOMAIN" == "$NOCHEINE_SENDER_DOMAIN"]; then” lösen ($NOCHEINE_SENDER_DOMAIN muss natürlich oben definiert sein)
Gruss
Bernhard
Hallo!
Ich habe mal das erweiterte Script von Bernhard online gestellt. Es ist auf 3 Domains erweitert und hoffentlich fehlerfrei
http://www.mfsnet.org/linux/postfix-disclaimer/filter.zip
Gruss
Franky
Ups – da hatte ich meine Ichbastelnochdaranrum-Konfigurationen für die Erstellung des Posts benutzt *hüstel*.
Ich habe den Beitrag berichtigt und auch Altermime nach Bernhards Tipp in eine Variable geschoben.
Ich hoffe, so ist es jetzt korrekt …
Gruß
Stefan
Sehr schöne Anleitung!
Wenn man sowieso AMAVIS verwendet, dann kann man auch gleich die %local_domains verwenden:
DOMAINLIST=/etc/amavis/local_domains
DOMAIN=${1##*@}
CHECK=” `cat ${DOMAINLIST} | tr ‘\n’ ‘ ‘`”
if [ "${CHECK}" != "${CHECK/ ${DOMAIN}/}" ] ; then
## footer hinzufügen
fi
Außerdem war ich nicht in der Lage die Parameter gleich an sendmail durchzureichen.
Mein master.cf ruft das Filterscript deshalb mit
…/filter ${sender} ${receiver}
auf.
Die Zeile im Script lautet dann:
$SENDMAIL -f $1 — $2
Hallo, danke für die rege diskusion, wie gesagt bei uns läuft es nun auch nur eins ist aufgefallen wenn man in einer eigenen Signatur im Outlook ein bmp logo hat dann hängt altermime nur den Textdisclaimer an und nicht die html version. Sprich wenn der empfänger nicht auf plaintext sein outlook stellt sieht er den disclaimer nicht. hat jemand dafür eine lösung parat. Ist sehr schade da unsere Ärzte sehr gern das Asklepios logo ind er Signatur haben wollen. Und momentan erstmal die nur über ne dienstanweisung gelöst werden konnte die das verbietet. mfg
Danke, das war genau was wir gesucht haben.
Es hat zwar nicht sofort funktioniert, aber mit ein bisschen Mühe lief es dann.
Was mache ich falsch wenn E-Mails die von Outlook verschickt werden korrekt den Disclaimer enthalten, aber E-Mails welche automatisch von PHP auf dem gleichen Server mit mail() versendet werden, nicht?
@alex Du hast in deinem Skript die Debug Option gesetzt – kann ich irgendwo sehen, was altermime mit den Emails macht?
mal wieder zu schnell getippt – ich meien natürlich Frank
@Simon: Wahrscheinlich ist die Domain der Mails, die Du direkt über mail() sendest nicht als Sender-Domain in Deinem Filterscript eingetragen.
@Tobias: Leite den Output von Altermime einfach in eine Datei in ein für den Filter-User beschreibbaren Verzeichnis, also z.B.:
$ALTERMIME –input [...] >>/tmp/altermime.log
Gruß
Stefan
danke stefan – das log tut jetzt soweit. Hab jetzt die problematische Stelle gefunden – kann damit aber leider nichts anfangen.
mime_alter.c:1540:AM_add_disclaimer:DEBUG: Main Headers have been read
mime_alter.c:1578:AM_add_disclaimer:DEBUG: Inserting disclaimer into an email with no boundary
mime_alter.c:1229:AM_add_disclaimer_no_boudary:DEBUG: Inserting disclaimer into a non-boundary email
mime_alter.c:1238:AM_add_disclaimer_no_boudary:DEBUG: Conditions right for HTML disclaimer to be added
mime_alter.c:946:AM_add_disclaimer_insert_html:DEBUG: Starting to attempt to insert HTML disclaimer
WARNING: Could not insert HTML disclaimer into email
mime_alter.c:1263:AM_add_disclaimer_no_boudary:DEBUG: Done, text-inserted=0, html-inserted=0
mime_alter.c:1581:AM_add_disclaimer:DEBUG: Inserting done, txt-inserted=0 html-inserted=0
Done.
Sagt das jemandem was?
Hi Folks,
ich sehe Ihr habt jede Menge Erfahrungen gesammelt.
Ich habe bei uns auch altermime im Einsatz und es funktioniert soweit.
Mein Problem ist jetzt nur, da wir nur einen Mailserver verwenden für incoming and outgoing mail werden die disclaimer an alle mails angehängt. Also auch an die, die nur für internen gebrauch sind.
Hat jemand eine Idee wie ich disclaimer nur an mails anhängen kann die unser haus verlassen sollen?
Danke Thomas
@Thomas: lies einfach den Beitrag ganz oben …
Hallo zusammen,
vielleicht koennt ihr mir helfen:
habe nach der guten Anweisung von oben alles so eingebaut:
[master.cf]
…
smtp inet n – n – – smtpd
-o content_filter=lmtp:127.0.0.1:10030
pickup fifo n – n 60 1 pickup
-o content_filter=lmtp:127.0.0.1:10030
…
## ## Added by Kaspersky Anti-Virus Installer ##
127.0.0.1:10030 inet n n n – 20 spawn
user=kluser argv=/opt/kav/5.5/kav4mailservers/bin/smtpscanner
127.0.0.1:10031 inet n – n – – smtpd
-o content_filter=discl:
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
discl unix – n n – – pipe
flags=Rq user=discl argv=/etc/postfix/disclaimer -f ${sender} — ${recipient}
[end of master.cf]
Leider kommt Postfix mit der Fehlermeldung zurueck, mit der ich nichts so recht anfangen kann:
Feb 28 12:28:18 mail postfix/lmtp[21421]: 1A82A7EF: to=, relay=127.0.0.1[127.0.0.1], delay=0, status=bounced (host 127.0.0.1[127.0.0.1] said: 552 Error ! (in reply to end of DATA command))
WAS habe ich falsch gemacht???
Viele Gruesse & danke
-Oliver
Hi Oliver,
habe gerade nur kurz auf Deine master.cf geschaut.
<Vermutung>
Entferne einmal den Content-Filter aus der “pickup”-Zeile, Du stolperst irgendwie über den lmtp.
</Vermutung>
Gruß
Stefan
Zum Grusse,
nun bastel ich schon seit zwei tagen an dieser Disclaimer-Geschichte.
im Grunde sollte ich einfach die Signatur im Usermin für jeden User einbauen, aber ich will wissen wie es geht b.z.w. was ich falsch mache.
Problem an der Sache ist, ich hab den Server nicht eingerichtet und weiss nicht was da sonst alles noch so läuft.
Soweit ich das feststellen konnte werkelt hier ein Amavis mit Spamassasin.
Hier mal einfach die Felermeldungen aus der /var/log/mail:
Mar 1 11:57:39 haupthaus postfix/master[23748]: fatal: /etc/postfix/master.cf: line 75: bad transport type: smtp_data_done_timeout=1200
Mar 1 12:10:20 haupthaus postfix/postfix-script: fatal: the Postfix mail system is not running
Mar 1 12:11:03 haupthaus postfix/postfix-script: starting the Postfix mail system
Mar 1 12:11:03 haupthaus postfix/master[26411]: fatal: /etc/postfix/master.cf: line 76: bad transport type: disable_dns_lookups=yes
Mar 1 12:15:45 haupthaus postfix/postfix-script: starting the Postfix mail system
Mar 1 12:15:45 haupthaus postfix/master[26561]: fatal: bind 127.0.0.1 port 10025: Address already in use
Mar 1 12:21:07 haupthaus postfix/postfix-script: starting the Postfix mail system
Mar 1 12:21:07 haupthaus postfix/master[26652]: fatal: /etc/postfix/master.cf: line 78: bad transport type: content_filter=dfilt:
Mar 1 12:26:42 haupthaus postfix/postfix-script: starting the Postfix mail system
Mar 1 12:26:42 haupthaus postfix/master[26807]: fatal: /etc/postfix/master.cf: line 78: bad transport type: content_filter=dfilt:
Mar 1 12:51:27 haupthaus postfix/postfix-script: starting the Postfix mail system
Mar 1 12:51:27 haupthaus postfix/master[27267]: fatal: /etc/postfix/master.cf: line 78: bad transport type: content_filter=dfilt:
meine master.cf:
smtp inet n – n – 2 smtpd -o content_filter=smtp:[127.0.0.1]:10024
#628 inet n – n – – qmqpd
pickup fifo n – n 60 1 pickup
cleanup unix n – n – 0 cleanup
qmgr fifo n – n 300 1 qmgr
#qmgr fifo n – n 300 1 oqmgr
#tlsmgr unix – – n 1000? 1 tlsmgr
rewrite unix – – n – – trivial-rewrite
bounce unix – – n – 0 bounce
defer unix – – n – 0 bounce
trace unix – – n – 0 bounce
verify unix – – n – 1 verify
flush unix n – n 1000? 0 flush
proxymap unix – – n – – proxymap
smtp unix – – n – – smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix – – n – – smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n – n – – showq
error unix – – n – – error
discard unix – – n – – discard
local unix – n n – – local
virtual unix – n n – – virtual
lmtp unix – – n – – lmtp
anvil unix – – n – 1 anvil
#localhost:10025 inet n - n - - smtpd -o
content_filter=
#^^die hab ich auskommentiert
scache unix - - n - 1 scache
maildrop unix – n n – – pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
cyrus unix - n n - - pipe
user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender – $nexthop!rmail ($recipient)
ifmail unix – n n – – pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix – n n – – pipe
flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
procmail unix – n n – – pipe
flags=R user=nobody argv=/usr/bin/procmail -t -m /etc/procmailrc ${sender} ${recipient}
smtp unix – - n – 2 smtp
#-o smtp_data_done_timeout=1200
#-o disable_dns_lookups=yes
#^^die beiden hab ich dann auch mal auskommentiert
localhost:10025 inet n – n – - smtpd
-o content_filter=dfilt:
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
dfilt unix - n n - - pipe
flags=Rq user=filter argv=/etc/postfix/disclaimer/filter -f ${sender} — ${recipient}
Ach ja….
……
74 smtp unix – - n – 2 smtp
75 #-o smtp_data_done_timeout=1200
76 #-o disable_dns_lookups=yes
77 #^^die beiden hab ich dann auch mal auskommentiert
78 localhost:10025 inet n – n – - smtpd
79 -o content_filter=dfilt:
……
dieses Problem hab ich gelöst,^^ allerdings macht er irgendwie nix die mails werden nicht mit einem Disclaimer versehen
localhost:10025 inet n – n – - smtpd
-o content_filter=dfilt:
wenn ichs so lasse^^ bekomme ich den Fehler: Mar 2 02:56:44 haupthaus postfix/master[5943]: fatal: bind 127.0.0.1 port 10025: Address already in use
ich dachte mir ich nehm einfach den nächsten port also 10026 aber wie gesagt macht er nix
diese Konfigurationsdatei hab ich erstellt
da steht nur nix drin
wäre über Hilfe dankbar.
MFG Mathias
Hi,
hat noch jemand Probleme mit Umlauten in der Mail?
Sobald ein Umlaut in der Email ist, wird die HTML-Signatur unschön.
Ser gut zu sehen in der T-Online Weboberfläche. Es tauchen “=” auf.
Wenn ich darauf achte keine Umlaute in die Mail zu schreiben funktioniert es sehr gut?
Jemand eine Idee?
Ansonsten keine Probleme mit Umlaute.
System: Debian Sarge mit UTF-8.
MFG
Stephan
Ich habe riesige Probleme!
Das Tool funktioniert zwar grundsätzlich ABER:
1.
Wenn eine E-Mail UTF8 codiert wird (das passiert im Outlook sobald man ein Eurozeichen in die E-Mail einträgt), hängt das Tool den Disclaimer nicht dran.
2.
Noch viel schlimmer kommts wenn die E-Mail ISO codiert ist: Sobald eine E-Mail einen Punkt “.” auf einer ansonsten leeren Zeile stehen hat, schneidet das Tool die komplette E-Mail ab dort ab.
Hat jemand ähnliche Erfahrungen gemacht, oder sogar eine Lösung?
Rene
Wenn Ihr keine Umlaute in den Disclaimer schreibt (ist doof, ich weiß), sollte es funktionieren, denn in diesem Fall ändert altermime nicht die Kodierung der Original-Mail.
Das mit dem Abschneiden der Mail nach der Zeile mit dem Punkt liegt daran, dass für SMTP der DATA-Bereich und damit der eigentliche Mailtext zu Ende ist (siehe beispielsweise den untersten Code-Abschnitt in diesem Artikel: SMTP-Auth mit telnet testen).
Da fällt mir jetzt ad hoc auch keine Abhilfe ein
Hallo!
Ich habe das Script auch bei uns laufen.
Jetzt ist natürlich nur die Frage wie man es “abschalten” kann dass auch alle internen EMails den Dissclaimer kommen.
Ich hatte folgendes ausprobiert.
# Domain aus uebergebener Absenderadresse filtern:
DOMAINFROM=${2##*@}
# Domain aus uebergebener Empfaengeradresse filtern:
DOMAINTO=${4##*@}
#
if [ $DOMAINFROM == $SENDER_DOMAIN -a $DOMAINTO != $SENDER_DOMAIN ]; then
$ALTERMIME –input=in.$$ \
–disclaimer=/etc/postfix/disclaimer/disclaimer.txt \
–disclaimer-html=/etc/postfix/disclaimer/disclaimer.html \
–xheader=”Organisation: TDDK GmbH” || \
{ echo Message content rejected; exit $EX_UNAVAILABLE; }
else
$ALTERMIME –input=in.$$ \
–xheader=”x-Information: Processed by Altermime” || \
{ echo Message content rejected; exit $EX_UNAVAILABLE; }
fi
Aber wenn ich jetzt eine Mail an mehrere Adressen sende und die erste Empfängeradresse eine interne und die zweite eine externen Adresse, dann wird natürlich kein Disclaimer angehangen.
Hat jemand von euch villeicht eine Idee wie ich den Disclaimer an interne Adressen vermeide?????
Hallo,
habe es jetzt nach viel Gehirnschmalz auch bei mir laufen. Bei mir musste ich die Änderungen wie Heiko vom 7.03. geschrieben hat auch durchführen. Wird eine Mail an mehrere eMail Adresse gesendet (externe und interne gemischt), so wird bei mir der Disclaimer angehängt, das stört mich nicht weiter. Aber …
kann man das Problem mit der Leerzeile mit einem PUNKT in Griff bekommen?
Schicke ich eine Mail weg und füge noch eine Zeile mit dem Inhalt “.” ein, so wird die Mail ab dort abgebrochen. Vielleicht hat jemand einen Tipp dazu.
Viele Grüße
Jörg Peter
Hallo,
bei mir landen die Mails leider in einer Schleife, was Postfix mit “too many hops” quitiert. Ich nutze ebenfalls Amavis. Ändert sich denn die Zeile in der main.cf “content_filter = smtp-amavis:[127.0.0.1]:10024″? Ansonsten hab ich alles genau wie oben beschrieben, aber die Schleife bleibt.
Hallo Joerg Peter,
ich habe ein Lösung gefunden wie ich alle Empfänger-Domains ein einer Schleife auslese und dann vergleiche.
Damit wird der Disclaimer angehangen, wenn eine externe Adresse enthalten ist.
Leider klappt das nur bis 6 Empfäger richtig, schicke ich eine Mail an beispielsweise 7 Empfänger die alle eine interne Adresse haben wird der Disclaimer trotzdem drangehangen.
Das hat irgendetwas mit insgesamt 10 Übergabeparametern zu tun.
Jetzt bastel ich gerade an einer Version in der ich einfach eine Funktion aufrufe, an die alle Parameter übergeben werden und mit switch die Parameter ab der ersten Empfäger-Adresse immer ermittelt werden, wenn dann eine externe Adresse dabei ist, wird die Funktion mit return 1 beendet.
Den Return Wert will ich nun Prüfen und wenn er 1 ist soll der Disclaimer angehangen werden.
Das klappt aber nicht ganz….
Kann mir jemand helfen?
Ich stelle das Script morgen hier rein…
AN Joerg Peter nochmal!
Das Problem mit dem “.” wirst du nciht wegbekommen.
Das ist das Syntax von SMTP.
Du kannst einfach mal spaßeshalber eine EMail mit deinem Mail Programm schreiben.
Text:
“Hallo das ist
.
ein Test”
Du wirst sehen das selbst da nur das “Hallo das ist” ankommt.
MfG
Heiko
Habe es nun hinbekommen!
Ich übergebe einfach alle Übergabeparameter an eine Funktion.
In der Funktion gehe ich dann alle Empfänger mit Switch durch.
Sobald ein externer ermittelt wird, wird die Funktion beendet und ein Rückgabe Wert festgelegt.
Mit hilfe dessen ich dann einen Disclaimer anhänge oder nciht.
Hier das vollständige Script:
”
#!/bin/bash
#
# Deklarieren der Work Folder
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
ALTERMIME=/usr/bin/altermime
#
# Deklarieren der SENDER-Domain
SENDER_DOMAIN=test.de
#
# Fehlercodes:
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
#
# Aufraeumen nicht vergessen:
trap “rm -f in.$$” 0 1 2 3 15
#
# Uebergebe Sender Adresse ermitteln
SENDER=${2}
# Domain aus uebergebener Absenderadresse filtern:
DOMAINFROM=${2##*@}
function checkrecipients {
shift 3
PARAM=$#
for (( I=1; $I in.$$ || { echo Kann eMail nicht speichern; exit $EX_TEMPFAIL; }
#Wenn Rueckgabewertes = 10 dann wird der Disclaimer angehangen
if [ $Wert == 10 ]; then
$ALTERMIME –input=in.$$ \
–disclaimer=/etc/postfix/disclaimer/disclaimer.txt \
–disclaimer-html=/etc/postfix/disclaimer/disclaimer.html \
–xheader=”ORGANISATION: Test” || \
{ echo Message content rejected; exit $EX_UNAVAILABLE; }
fi
fi
# Weitersenden der Email
$SENDMAIL “$@”
Hier das Script, das obere ist leider unvollständig!
”
#!/bin/bash
#
# Deklarieren der Work Folder
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
ALTERMIME=/usr/bin/altermime
#
# Deklarieren der SENDER-Domain
SENDER_DOMAIN=test.de
#
# Fehlercodes:
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
#
# Aufraeumen nicht vergessen:
trap “rm -f in.$$” 0 1 2 3 15
# Domain aus uebergebener Absenderadresse filtern:
DOMAINFROM=${2##*@}
function checkrecipients {
shift 3
PARAM=$#
for (( I=1; $I in.$$ || { echo Kann eMail nicht speichern; exit $EX_TEMPFAIL; }
#Wenn Rueckgabewertes = 10 dann wird der Disclaimer angehangen
if [ $Wert == 10 ]; then
$ALTERMIME –input=in.$$ \
–disclaimer=/etc/postfix/disclaimer/disclaimer.txt \
–disclaimer-html=/etc/postfix/disclaimer/disclaimer.html \
–xheader=”ORGANISATION: Test GmbH” || \
{ echo Message content rejected; exit $EX_UNAVAILABLE; }
fi
fi
# Weitersenden der Email
$SENDMAIL “$@”
Problem mit dem Punkt auf einer einzelnen Zeile lösen:
aus
SENDMAIL=/usr/sbin/sendmail
wird
SENDMAIL=”/usr/sbin/sendmail -i”
@Marc Vieelen lieben Dank für den Hinweis, das hat mir mein Ostern gerettet
Wünsche allen frohe Feiertage!
Hallo erstmal
eine wirklich sehr gute Anleitung zur Konfiguration mit Postfix.
Auch bei uns läuft es fast reibungslos, nur HTML-E-Mails aus Outlook erhalten den Disclaimer fehlerhaft. Der Disclaimer enthält dann Leerzeichen an Stellen wo keine waren und Gleichheitszeichen. Ich habe schon jede erdenkliche Codierung getestet, immer das gleiche ergebnis.
Mails, die per Thunderbird versandt worden sind, funktionieren dagegen perfekt.
Ich hoffe jemand kann mir helfen
Naja erstelleinen disclaimer.txt und einen disclaimer.html
im Script noch anpassen und fertig
das hab ich gemacht. wie gesagt, wenn ich mit dem Thunderbird sowohl html-e-mails als auch plaintext versende erscheint der disclaimer überall tadellos. nur aus outlook heraus gibts probleme.
Bei mir klappts mit 200 clients (Outlook 2000)
Nur, wenn man die Absenderdomain nicht ausnimmt werden Besprechungsanfragen verrissen… die Erkennt er nicht mehr als Anfragen.
also ich benutze die version 0.3.3
bei dieser funktionieren die disclaimer einwandfrei
sowohl plain text / html und auch mit anhängen.
bei den anderen versionen danach funktioniert entweder der disclaimer nicht vernünftig oder er wird nicht angehangen.
@Andreas W.: In der aktuellen Development-Version sollte altermime Besprechungsanfragen richtig verarbeiten:
Ja “sollte” – Leider tut es das nicht. An den Einladungen hängt trotzdem die Signatur.
Habe vorhin extra nochmal den aktuelle Source (DEV) gezogen:
alterMIME v0.3.8 (Jan-24-2007)
Einstellungen in Outlook “alle Einladungen im iCal Format senden”
calendar=$(cat in.$$ | grep -o text/calendar)
if [ "$DOMAIN" == "$SENDER_DOMAIN" ] && [ "$calendar" != "text/calendar" ] ; then
$ALTERMIME –input=in.$$ \
–disclaimer=/etc/postfix/disclaimer/disclaimer.txt \
–disclaimer-html=/etc/postfix/disclaimer/disclaimer.html \
–xheader=”ORGANISATION: Test GmbH” || \
{ echo Message content rejected; exit $EX_UNAVAILABLE; }
fi
So gehts auch….
Eine super Idee
so bekommt man evtl. auch das Problem in den Griff, dass die Signierung von Mails zerstört wird (siehe ersten Kommentar von Thinker):
Ist noch nicht getestet, unterläuft dann auch den eigentlichen Zweck des Disclaimers, sofern geschäftliche Mails signiert werden. Aber wer seine Mails sowieso schon signiert, sollte auch dazu zu bewegen sein, die Handelsregisterangaben des Unternehmens in seine Text-Signatur mit aufzunehmen…
Naja, ist momentan ein Workaround. Ich habe erst den sauberen Weg getestet und mit dem Entwickler gesprochen. Er vermutet durch den Sprachunterschied ein Problem – konnte ich im Sourcecode nicht nachvollziehen. Hab ein Debug-Log erstellt und gemailt.
Der Nachteil dieser Lösung ist, dass nicht ein Header geprüft wird – sonder nach dem Text gesucht. Dann kann ein Mitarbeiter der das mitbekommt einfach application/pgp-signature oder text/calendar in die Mail tippen und die Pflichtsignatur ist weg.
Wenn ich ne Info habe, melde ich mich auf jeden Fall wieder
Hallo,
eigentlich habe ich gedacht, das klappt alles wunderbar bei meiner Installation
) . Im Prinzip stimmt das auch. Ich habe den ganz einfachen Fall einer Postfix konfiguration durch die nur ausgehende Mails laufen und an alle soll der disclaimer angehängt werden. Das klappt eigentlich auch hervorragend, nur mit “Text-Mails” habe ich ein Problem. Der interne Mailer mach leider aus einer Text-Mail eine MIME-Mail mit ungültiger MIME-Struktur, d.h. er packt oben einen mime-part dran, dann kommt der beginn eines weiteren mime-parts, dann der originaltext und dann ist Ende, wie bei einer ASCII-Mail – also kein schliessendes boundary.
Konsequenterweise weigert sich altermime, den footer anzufügen; ich habe schon den code angeschaut aber noch nicht gefunden, wie ich ihn so manipulieren könnte, dass er auch in diesen Fällen einen footer anfügt. Das ist im Prinzip natürlich gefährlich, aber in diesem Fall ist die Umgebung total kontrolliert und es kommen nur HTML-Mails (die sowieso korrekt verarbeitet werden) vor und eben diese pseudeo-text-mails, die immer die gleiche Struktur haben. Hat jemand eine Idee ?
Grüße,
Jakob Curdes
Es fehlt eine Prüfung auf
application/pkcs7-mime
application/x-pkcs7-signature
damit smime signierte und/oder verschlüsselte Mails diesem Verfahren nicht unterzogen werden (würde dem Sinn von Singnierung ja zuwieder laufen).
Gruß
Wie kann man einfügen von disklaimer bei weiterleitung abschalten?
Danke!
@Evgenij: Da fällt mir auf die Schnelle leider keine zufriedenstellende Lösung zu ein. Denn eine Weiterleitung lässt sich leider nicht einfach über eine Headerzeile in der Mail erkennen, und eine Durchforstung des eMail-Betreffs auf “Fwd”, “WG”, … wäre auch nicht wirklich zuverlässig.
Zum Umlaut-Problem: Ich hatte das Problem jetzt kürzlich auch auf einem Mailserver.
Gelöst hat sich das Ganze durch Zufall, beim letzten Update von Spamassassin. Hier mein Glücksgriff.
Ich hab das jetzt genau so gemacht wie angegeben. Die Text wird allerdings nicht angehängt, logfile wird keines erstellt und in /var/log/mail.log wird nichts vom Filter aufgeführt.
Ich fahre Debian Sarge und hab das ganze mit altermime-0.3.8 und 0.3.3 probiert.