Inhaltsverzeichnis
Postfix alterMIME
Die OpenSource-Variante von alterMIME kann zu folgenden Aktionen in Bezug auf e-Mail's genutzt werden:
- Einfügen von sog. „Disclaimern“ - e-Mail Fusszeilen bei ein- und ausgehenden e-Mails
- Einfügen von frei wählbaren „X-Header“-Angaben im e-Mail-Header
- Verändern eines oder mehreren bereits in e-Mail-Header vorhandenen „X-Header“
- Entfernen von Dateianhängen basierend auf Dateinamen, oder Dateinhalten
- Austausch von Dateianhängen basierend auf Dateinamen
Postfix alterMIME herunterladen
alterMIME kann unter folgendem Link heruntergeladen werden, dabei sollte ein RPM-Paket bevorzugt werden, deshalb soll hier auch ein Repository als Quelle eines RPM-Paktes gewählt werden und nicht die Quell-Sourcen zum selbst kompilieren!
WICHTIG - Die Installation von alterMIME kann sehr bequem über das RPMforge-Repository installiert werden, welches in den yum
-Paketmanager eingebunden werden kann!
WICHTIG - Ein detaillierte Anleitung, wie das RPMforge-Repository in CentOS eingebunden werden kann, kann unter Repository einbinden CentOS 5 nachgelesen werden!
Postfix alterMIME installieren
Die Installation von alterMIME kann dank der Einbindung des RPMforge-Repository wie folgt durchgeführt werden.
Der zur Installation benötigte Befehl lautet:
# yum install altermime Loading "priorities" plugin Loading "fastestmirror" plugin Loading mirror speeds from cached hostfile * adobe-linux-i386: linuxdownload.adobe.com * rpmforge: ftp-stud.fht-esslingen.de * tachtler: * base: mirror.silyus.net * updates: mirror.silyus.net * addons: mirror.silyus.net * extras: mirror.silyus.net 339 packages excluded due to repository priority protections Setting up Install Process Parsing package install arguments Resolving Dependencies --> Running transaction check ---> Package altermime.i386 0:0.3.7-1.el5.rf set to be updated --> Finished Dependency Resolution Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: altermime i386 0.3.7-1.el5.rf rpmforge 50 k Transaction Summary ============================================================================= Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 50 k Is this ok [y/N]: y Downloading Packages: (1/1): altermime-0.3.7-1. 100% |=========================| 50 kB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: altermime ######################### [1/1] Installed: altermime.i386 0:0.3.7-1.el5.rf Complete!
Nach erfolgreich Installation, kann der Inhalt des soeben installierten RPM-Paketes altermime
mit folgendem Befehl überprüft werden:
]# rpm -qil altermime | more Name : altermime Relocations: (not relocatable) Version : 0.3.7 Vendor: Dag Apt Repository, http://dag.wieers.com/apt/ Release : 1.el5.rf Build Date: Mon 28 Jan 2008 07:12:11 PM CET Install Date: Wed 07 Jan 2009 05:19:06 PM CET Build Host: lisse.leuven.wieers.com Group : Applications/Internet Source RPM: altermime-0.3.7-1.el5.rf.src.rpm Size : 114917 License: BSD Signature : DSA/SHA1, Mon 11 Feb 2008 03:58:25 PM CET, Key ID a20e52146b8d79e6 Packager : Dag Wieers <dag@wieers.com> URL : http://www.pldaniels.com/altermime/ Summary : Alter MIME-encoded mailpacks Description : altermime is a small program which is used to alter MIME-encoded mailpacks. altermime can insert disclaimers, insert arbitary X-headers, modify existing headers, remove attachments based on filename or content-type and replace attachments based on filename. /usr/bin/altermime /usr/share/doc/altermime-0.3.7 /usr/share/doc/altermime-0.3.7/CHANGELOG /usr/share/doc/altermime-0.3.7/LICENCE /usr/share/doc/altermime-0.3.7/README
Postfix alterMIME in AMaViS integrieren
Bevor mit der eigentlichen Konfiguration zur Integration von alterMIME in AMaViS begonnen werden soll, ist es empfehlenswert um die Übersicht nicht zu verlieren, folgendes Verzeichnis mit nachfolgendem Befehl anzuegen:
# mkdir /etc/postfix/altermime
WICHTIG - Da benutzerbezogene „Disclaimer“ verwenden werden sollen, muss für jede e-Mail-Adresse in der Konfigurationsdatei /etc/amavisd.conf
- jeweils auch eine „Disclaimer-Datei“ für PLAIN-Text und HTML-Code nach z.B. folgendem Schema angelegt werden:
disclaimer_<Benutzername>.text
disclaimer_<Benutzername>.html
Die Dateien können mit folgenden Befehlen angelegt werden:
# touch /etc/postfix/altermime/disclaimer_postmaster.text # touch /etc/postfix/altermime/disclaimer_postmaster.html
und
Abschließend muss noch der Inhalt der jeweiligen benutzerbezogenen „Disclaimer“-Datei entsprechend angepasst werden. Hier ein Beispiel für
/etc/postfix/altermime/disclaimer_postmaster.text
--------------------- Disclaimer postmaster ---------------------
Postfix alterMIME /etc/amavisd.conf
Um alterMIME in AMaViS zu integrieren, sind nachfolgende Konfigurationseinstellungen in der AMaViS-Konfigurationsdatei /etc/amavisd.conf
notwendig.
Die relevanten Änderungen gegenüber der Standard-Konfiguration, sind mit folgendem Kommentar
# Tachtler
versehen.
Anpassungen vorhandener Einstellungen in /etc/amavisd.conf
(nur relevanter Ausschnitt):
... @local_domains_maps = ( [".$mydomain"] ); # list of all local domains # Tachtler $altermime = '/usr/bin/altermime'; # a path to the program @altermime_args_defang = qw(--verbose --removeall); @altermime_args_disclaimer = qw(--disclaimer=/etc/postfix/altermime/_OPTION_.text --disclaimer-html=/etc/postfix/altermime/_OPTION_.html); @disclaimer_options_bysender_maps = ( { 'postmaster@tachtler.net' => 'disclaimer-postmaster', { 'abuse@tachtler.net' => 'disclaimer-abuse', '.' => 'disclaimer-default' }, ); $defang_maps_by_ccat{+CC_CATCHALL} = [ 'disclaimer' ]; # Tachtler # default: @mynetworks = qw( 127.0.0.0/8 [::1] [FE80::]/10 [FEC0::]/10 # default: 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 ); @mynetworks = qw( 0.0.0.0/32 127.0.0.0/8 [::1] 192.168.0.0/24 ); $unix_socketname = "$MYHOME/amavisd.sock"; # amavisd-release or amavis-milter # option(s) -p overrides $inet_socket_port and $unix_socketname $inet_socket_port = 10024; # listen on this local TCP port(s) # $inet_socket_port = [10024,10026]; # listen on multiple TCP ports $policy_bank{'MYNETS'} = { # mail originating from @mynetworks originating => 1, # is true in MYNETS by default, but let's make it explicit # Tachtler allow_disclaimers => 1, # enables disclaimer insertion if available os_fingerprint_method => undef, # don't query p0f for internal clients }; ...
WICHTIG - Falls e-Mails durch einen lokalen kleinen MUA Mail User Agent wie z.B. mutt
direkt in ein Postfach einfach auf die Festplatte geschrieben werden, ist es erforderlich auch die IP-Adresse - 0.0.0.0/32
in die Liste von
@mynetworks = qw( 0.0.0.0/32 127.0.0.0/8 [::1] 192.168.0.0/24 );
mit aufzunehmen!
WICHTIG ist auch, das Einfügen folgender Zeile
allow_disclaimers ⇒ 1, # enables disclaimer insertion if available
in den Bereich MYNETS
, da sonst der „Disclaimer“ nicht eingefügt wird!
Postfix alterMIME /etc/postfix/master.cf
Um alterMIME in AMaViS zu integrieren, sind nachfolgende Konfigurationseinstellungen in der Postfix-Konfigurationsdatei /etc/postfix/master.cf
notwendig.
Die relevanten Änderungen gegenüber der Standard-Konfiguration, sind mit folgendem Kommentar
# Tachtler
versehen.
Anpassungen vorhandener Einstellungen in /etc/postfix/master.cf
(nur relevanter Ausschnitt):
... #628 inet n - n - - qmqpd # Tachtler # AMaViS - Incoming and forward to AMaViS listen on Port 10024 pickup fifo n - n 60 1 pickup -o content_filter=smtp:[127.0.0.1]:10024 cleanup unix n - n - 0 cleanup ...
WICHTIG - Falls e-Mails durch einen lokalen kleinen MUA Mail User Agent wie z.B. mutt
direkt in ein Postfach einfach auf die Festplatte geschrieben werden, ist es erforderlich hier die Übergabe an AMaViS einzurichten.
Postfix alterMIME ohne AMaViS
Eine weitere Möglichkeit alterMIME ohne AMaViS zu betreiben, kann über die Definition einer Transport-Methode in der Postfix-Konfigurationsdatei /etc/postfix/master.cf
realisiert werden.
Postfix alterMIME konfigurieren
Zur Konfiguration von alterMIME ist es notwendig eine Systemgruppe namens altermime
mit folgendem Befehl zu erstellen:
# groupadd -r altermime
und einen Systembenutzer ebenfalls namens altermime
mit folgendem Befehl zu erstellen:
# useradd -r -c "Postfix alterMIME Filter" -d /var/spool/altermime altermime -g altermime -s /sbin/nologin -m
Zu Überprüfung, ob das erstellen einer Systemgruppe namens altermime
erfolgreich war kann folgender Befehl mit nachfolgender Ausgabe genutzt werden:
# cat /etc/group | grep altermime altermime:x:107:
Zu Überprüfung, ob das erstellen eines Systembenutzers namens altermime
ebenfalls erfolgreich war kann folgender Befehl mit nachfolgender Ausgabe genutzt werden:
# cat /etc/passwd | grep altermime altermime:x:104:107:Postfix alterMIME Filter:/var/spool/altermime:/sbin/nologin
Eine Überprüfung, ob das home
-Verzeichnis angelegt wurde, kann mit folgendem Befehl durchgeführt werden und sollte eine Ausgabe in etwa wie folgende anzeigen:
# ll -la /var/spool/altermime total 36 drwx------ 4 altermime altermime 4096 Jan 7 17:56 . drwxr-xr-x 14 root root 4096 Jan 7 17:56 .. -rw-r--r-- 1 altermime altermime 33 Jan 7 17:56 .bash_logout -rw-r--r-- 1 altermime altermime 176 Jan 7 17:56 .bash_profile -rw-r--r-- 1 altermime altermime 124 Jan 7 17:56 .bashrc drwxr-xr-x 3 altermime altermime 4096 Jan 7 17:56 .kde drwxr-xr-x 4 altermime altermime 4096 Jan 7 17:56 .mozilla -rw-r--r-- 1 altermime altermime 658 Jan 7 17:56 .zshrc
Abschließend kann das automatisch neu angelegte home
-Verzeichnis mit folgendem Befehl und nachfolgender Ausgabe von unnötigem „Balast“ bereinigt werden:
# rm /var/spool/altermime/.* -rf rm: cannot remove `.' or `..' rm: cannot remove `.' or `..'
* Die beiden Hinweise können getrost ignoriert werden!
Postfix alterMIME Aufruf-Script
Zum Aufruf von alterMIME ist ein shell
-Script erforderlich bzw. wünschenswert. Dieses shell
-Script muss neu erstellt werden, wofür am besten ein Ordner im Verzeichnis /etc/postfix
mit dem Namen altermime
angelegt wird.
Zuerst wird mit folgendem Befehl ein neues Verzeichnis mit Namen /etc/postfix/altermime
erstellt:
# mkdir /etc/postfix/altermime
Anschließend eine shell
-Script-Datei mit dem Namen altermime.sh
mit folgendem Befehl angelegt.
# touch /etc/postfix/altermime/altermime.sh
Der Inhalt des shell
-Script /etc/postfix/altermime/altermime.sh
sollte wie folgt aussehen, welches von HowtoForge - Oliver Meyer erstellt wurde, und dem ich auch noch ein paar Ergänzungen hinzugefügt habe!
#!/bin/sh # Localize these. INSPECT_DIR=/var/spool/altermime SENDMAIL=/usr/sbin/sendmail.postfix # Meyer DISCLAIMER_ADDRESSES=/etc/postfix/altermime/disclaimer_addresses # Exit codes from <sysexits.h> EX_TEMPFAIL=75 EX_UNAVAILABLE=69 # Clean up when done or when aborting. trap "rm -f in.$$" 0 1 2 3 15 # Start processing. cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; } cat >in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; } # Meyer # Obtain - ONLY - From address FROM_ADDRESSES=`grep -m 1 "From:" in.$$ | cut -d "<" -f 2 | cut -d ">" -f 1` if [ `grep -wi ^${FROM_ADDRESSES}$ ${DISCLAIMER_ADDRESSES}` ]; then /usr/bin/altermime --input=in.$$ --disclaimer=/etc/postfix/altermime/disclaimer_$FROM_ADDRESSES.text --disclaimer-html=/etc/postfix/altermime/disclaimer_$FROM_ADDRESSES.html --xheader="X-alterMIME: Please visit http://www.tachtler.net" || { echo Message content rejected; exit $EX_UNAVAILABLE; } fi $SENDMAIL "$@" <in.$$ exit $?
WICHTIG - Ein „Disclaimer“ wird nur ausgehenden e-Mails angehängt!
Um das shell
-Script ausführbar zu machen müssen die Besitzrechte wie folgt, mit folgendem Befehl gesetzt werden:
# chown root.altermime /etc/postfix/altermime/altermime.sh
und die Zugriffsrechte wie folgt, mit nachfolgendem Befehl gesetzte werden:
# chmod 750 /etc/postfix/altermime/altermime.sh
WICHTIG - Zur Steuerung für welche ausgehenden e-Mail-Absender ein „Disclaimer“ angehängt werden soll, ist noch die Konfigurationsdatei mit den e-Mail-Adressen als einfache Liste notwendig!
Mit folgendem Befehl kann die Konfigurationsdatei im Verzeichnis /etc/postfix/altermime
und mit dem Namen disclaimer_addresses
erstellt werden:
# touch /etc/postfix/altermime/disclaimer_addresses
Der Inhalt sind die e-Mail-Absenderadressen, welche mit einem „Disclaimer“ ausgehend versorgt werden sollen. Hier ein Beispiel:
postmaster@tachtler.net abuse@tachtler.net
WICHTIG - Da wir benutzerbezogene „Disclaimer“ verwenden möchten, muss für jede e-Mail-Adresse in der Konfigurationsdatei /etc/postfix/altermime/disclaimer_addresses
jeweils auch eine „Disclaimer-Datei“ für PLAIN-Text und HTML nach folgendem Schema angelegt werden:
disclaimer_<e-mail-Adresse>.text
und
disclaimer_<e-mail-Adresse>.html
Die Dateien können mit folgenden Befehlen angelegt werden:
# touch /etc/postfix/altermime/disclaimer_postmaster@tachtler.net.text # touch /etc/postfix/altermime/disclaimer_abuse@tachtler.net.text
und
# touch /etc/postfix/altermime/disclaimer_postmaster@tachtler.net.html # touch /etc/postfix/altermime/disclaimer_abuse@tachtler.net.html
Abschließend muss noch der Inhalt der jeweiligen benutzerbezogenen „Disclaimer“-Datei entsprechend angepasst werden. Hier ein Beispiel für
/etc/postfix/altermime/disclaimer_postmaster@tachtler.net.text
--------------------- Disclaimer postmaster ---------------------
Postfix alterMIME /etc/postfix/master.cf
Um alterMIME in Postfix zu integrieren, sind nachfolgende Konfigurationseinstellungen in der Postfix-Konfigurationsdatei /etc/postfix/master.cf
notwendig.
Die relevanten Änderungen gegenüber der Standard-Konfiguration, sind mit folgendem Kommentar
# Tachtler
versehen.
Anpassungen vorhandener Einstellungen in /etc/postfix/master.cf
(nur relevanter Ausschnitt):
... # Tachtler # AMaViS - Incoming and forward to AMaViS listen on Port 10024 smtp inet n - n - - smtpd -o smtpd_proxy_filter=127.0.0.1:10024 -o content_filter=altermime: ... ... ... #628 inet n - n - - qmqpd # Tachtler # AMaViS - Incoming and forward to alterMIME pickup fifo n - n 60 1 pickup -o content_filter=altermime: cleanup unix n - n - 0 cleanup ... ... ... # alterMIME altermime unix - n n - - pipe flags=Rq user=altermime argv=/etc/postfix/altermime/altermime.sh -f ${sender} -- ${recipient}
WICHTIG - Falls e-Mails durch einen lokalen kleinen MUA Mail User Agent wie z.B. mutt
direkt in ein Postfach einfach auf die Festplatte geschrieben werden, ist es erforderlich hier die Übergabe an alterMIME einzurichten.