Ob ein Disclaimer sinnvoll ist oder nicht, das kann ich noch nicht einmal genau sagen. In dem Buch von Peer Heinlein ist zu lesen, dass er keine Rechtskraft hat. Er hat in seinem Postfix Buch auch nichts über einen Disclaimer geschrieben. Trotzdem ist es so, dass es sich in den Firmen irgendwie durchgesetzt hat dass man sowas haben muss.

Die Qual der Wahl

Sucht man im Internet nach einem Programm für Postfix um einen Disclaimer in Mails einzufügen, so wird man im Prinzip nur einen Treffer erhalten: altermime. Altermime übergibt man einfach ausgedrückt zwei Dateien. Eine einfache Textdatei und eine HTML Datei. Diese beiden werden von altermime jeweils am Ende des Text, bzw. des HTML Blocks in die eMail eingefügt.

Ganz toll, aber

Um altermime herum wird quasi ein Wrapper Script gebaut, welches die Parameter zusammensetzt und ein paar Checks im vorhinein macht. Dieses Script kann in der Basisversion einfach nur immer einen Disclaimer einfügen.

Nun ist man ja verwöhnt und Manager sehr kreativ. Was nun, wenn ich verschiedene Domains auf einem Server betreibe? Ich benötige dann auch verschiedene Disclaimer. Was nun, wenn ich nur für ausgehende eMails Disclaimer möchte? (dafür gibt es ein paar Beispiele im Internet). Und was, wenn ich für einen oder bestimmte Benutzer vielleicht gar keinen Disclaimer einfügen darf?

So geht das

Ich habe kurzerhand das Script ein wenig erweitert. Die Basis bildet dabei natürlich das Standard Script. Auf die eigentliche Installation gehe ich nicht ein, ich zeige Euch hier nur das erweiterte Wrapper Script.

Funktionen:

  • Disclaimer per Domain
  • Default Disclaimer (für alle, für die es keinen Domain Disclaimer gibt)
  • Disclaimer nur für ausgehende Domains (bzw. für alle, die nicht im Script hinterlegt sind)
  • Disclaimer kann für einzelne Mailboxen (Sender eMailadressen) ausgeschaltet werden

Hier nun das Script:

#!/bin/bash
#
# Advanced Disclaimer
# - Disclaimer per Domain
# - Default Disclaimer
# - Disclaimer for outbound [y|n]
# - disable Disclaimer for named sender addresses
#
# For each Domain there "should/could" be two files in
# $DISCLAIMERS_PATH named like the Domain in .txt and .html
# ex: localdomain.com.txt and localdomain.com.html
#
# Files for the default Domain Parameter must exist.
#
# Uses altermime
#
# THIS SCRIPT NEEDS Bash > 4 to work !!!
# - Thanks to Olaf
#
# Ronny Becker, 09.2010 - 05.2011
#
#
# to configure
# Domains that are not required to have disclaimer
EXCLUDE_REC_DOMAINS="-localdomain.com-"
# Users that should not have a disclaimer
EXCLUDE_SENDER="nodisclaimer@localdomain.com"
# default disclaimer
# (in DISCLAIMERS_PATH as $DEFAULT_DISCLAIMER.txt and $DEFAULT_DISCLAIMER.html)
DEFAULT_DISCLAIMER="localdomain.com"
# --
DISCLAIMERS_PATH="/etc/postfix/disclaimerfiles"
INSPECT_DIR=/var/spool/altermime
SENDMAIL=/usr/sbin/sendmail

# Exit codes from 
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# Clean up when done or when aborting.
trap "rm -f in.$" 0 1 2 3 15
# Start processing.
# get recipients domain
REC_DOMAIN=${4##*@}
# get senders domain
S_DOMAIN=${2##*@}
# checks
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
# save temp file
cat >in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }
# check if mail matches exclude domains or (send-)users, then send without
if [[ $EXCLUDE_REC_DOMAINS =~ -${REC_DOMAIN}- ]] || [[ $EXCLUDE_SENDER =~ $2 ]]; then
$SENDMAIL -i "$@"

Achtung Zeichensatz!

Die .html Datei sollte dem HTML Standard entsprechen. Das bedeutet, dass Umlaute im HTML Format in der Datei stehen.

Die Textdatei muss in der Codierung vorliegen, in der auch die eMails verschickt werden. So ist auf vielen Linux Systemen (Server) der Standard Zeichensatz UTF-8. Mails werden allerdings meist in ISO-8859-8/15 verschickt. So muss man also darauf achten, dass der Disclaimer in der Textversion im ISO Format vorliegt.

Doppelte Disclaimer?

Nein. Altermime ist so intelligent, dass er erkennt wenn der Disclaimer bereits eingefügt ist. Dadurch kann man dann auch die beliebten Frage & Antwort Spielchen per Mail betreiben, ohne 20x den Disclaimer durch die Welt zu schicken.