Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_altermime_installieren

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.

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/postfix_altermime_installieren.txt · Zuletzt geändert: 2012/06/13 15:03 von klaus