Inhaltsverzeichnis
Postfix CentOS 7 - alterMIME einsetzen
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
Herunterladen
Nachfolgende Beschreibung bindet das Drittanbieter-Repository von EPEL ein, damit darüber die Installation erfolgen kann.
- Siehe nachfolgenden internen Link: EPEL CentOS 7
Installation
Nachfolgendes rpm
-Paket ist zur Installation erforderlich:
Die Installation von altermime
, kann durch ausführen des nachfolgenden Befehls durchgeführt werden:
# yum info altermime Loaded plugins: changelog, priorities [root@vml70060 ~]# yum install altermime Loaded plugins: changelog, priorities 387 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package altermime.x86_64 0:0.3.10-10.el7 will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: altermime x86_64 0.3.10-10.el7 epel 57 k Transaction Summary ================================================================================ Install 1 Package Total download size: 57 k Installed size: 131 k Is this ok [y/d/N]: y Downloading packages: altermime-0.3.10-10.el7.x86_64.rpm | 57 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : altermime-0.3.10-10.el7.x86_64 1/1 Verifying : altermime-0.3.10-10.el7.x86_64 1/1 Installed: altermime.x86_64 0:0.3.10-10.el7 Complete!
Die Installation von altermime
, kann durch ausführen des nachfolgenden Befehls durchgeführt werden:
# rpm -qil altermime Name : altermime Version : 0.3.10 Release : 10.el7 Architecture: x86_64 Install Date: Fri 28 Apr 2017 08:28:38 AM CEST Group : Applications/Internet Size : 133763 License : BSD Signature : RSA/SHA256, Sat 19 Jul 2014 05:31:35 AM CEST, Key ID 6a2faea2352c64e5 Source RPM : altermime-0.3.10-10.el7.src.rpm Build Date : Wed 16 Jul 2014 06:00:49 PM CEST Build Host : buildvm-02.phx2.fedoraproject.org Relocations : (not relocatable) Packager : Fedora Project Vendor : Fedora Project 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 * Replace attachments based on filename /usr/bin/altermime /usr/share/doc/altermime-0.3.10 /usr/share/doc/altermime-0.3.10/CHANGELOG /usr/share/doc/altermime-0.3.10/LICENCE /usr/share/doc/altermime-0.3.10/README
Konfiguration
Postfix alterMIME Aufruf-Script
Zur Konfiguration von alterMIME ist es notwendig eine Systemgruppe namens altermime
mit folgendem Befehl zu erstellen:
# groupadd -g 107 -r altermime
und einen Systembenutzer ebenfalls namens altermime
mit folgendem Befehl zu erstellen:
# useradd -c "Postfix alterMIME Filter" -d /var/spool/altermime -g altermime -m -r -s /sbin/nologin -u 107 altermime
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:107: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 16 drwx------ 2 altermime altermime 59 Apr 28 10:18 . drwxr-xr-x. 11 root root 4096 Apr 28 10:18 .. -rw-r--r-- 1 altermime altermime 18 Dec 7 00:19 .bash_logout -rw-r--r-- 1 altermime altermime 193 Dec 7 00:19 .bash_profile -rw-r--r-- 1 altermime altermime 231 Dec 7 00:19 .bashrc
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/.* -f rm: cannot remove ‘/var/spool/altermime/.’: Is a directory rm: cannot remove ‘/var/spool/altermime/..’: Is a directory
* Die beiden Hinweise können getrost ignoriert werden!
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. ALTERMIME_EXE=/usr/bin/altermime INSPECT_DIR=/var/spool/altermime SENDMAIL="/usr/sbin/sendmail.postfix -G -i" 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; } # 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 $ALTERMIME_EXE --input=$INSPECT_DIR/in.$$ \ --disclaimer=/etc/postfix/altermime/disclaimer_$FROM_ADDRESSES.text \ --disclaimer-html=/etc/postfix/altermime/disclaimer_$FROM_ADDRESSES.html \ --force-for-bad-html \ --xheader="X-alterMIME: Mail body modified (using disclaimer) - `hostname`" \ || { echo Message content rejected; exit $EX_UNAVAILABLE; } else $ALTERMIME_EXE --input=$INSPECT_DIR/in.$$ \ --disclaimer=/etc/postfix/altermime/disclaimer_default.text \ --disclaimer-html=/etc/postfix/altermime/disclaimer_default.html \ --force-for-bad-html \ --xheader="X-alterMIME: Mail body modified (using disclaimer) - `hostname`" \ || { 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
Postfix alterMIME Standard Disclaimer
WICHTIG - Zur Steuerung das bei ausgehenden e-Mails ein „Disclaimer“ angehängt werden soll, ist noch eine Standard „Disclaimer-Datei“ für PLAIN-Text und HTML nach folgendem Schema angelegt werden:
disclaimer_default.text
und
disclaimer_default.html
Die Dateien können mit folgenden Befehlen angelegt werden:
# touch /etc/postfix/altermime/disclaimer_default.text
und
# touch /etc/postfix/altermime/disclaimer_default.html
Abschließend muss noch der Inhalt der Standard „Disclaimer“-Datei entsprechend angepasst werden. Hier ein Beispiel für
/etc/postfix/altermime/disclaimer_default.text
-- ------------------------------------------ e-Mail : postmaster@tachtler.net Homepage: http://www.tachtler.net ------------------------------------------
HINWEIS - Nach dem Trennzeichen
--
sollte noch ein Leerzeichen folgen, da sonst einige Clients den „Disclaimer“ nicht richtig vom „Body“ der e-Mail separieren können!
* Danke für den Hinweis von Juri Haberland
und
/etc/postfix/altermime/disclaimer_default.html
<br> <span style="font-family:monospace; color:#000000">-- </span><br> <br> <span style="font-family:monospace; color:#000000">------------------------------------------</span><br> <span style="font-family:monospace; color:#000000">e-Mail : postmaster@tachtler.net</span><br> <span style="font-family:monospace; color:#000000">Homepage: http://www.tachtler.net</span><br> <span style="font-family:monospace; color:#000000">------------------------------------------</span><br> <br>
HINWEIS - Nach dem Trennzeichen
--
sollte noch ein Leerzeichen (
) folgen, da sonst einige Clients den „Disclaimer“ nicht richtig vom „Body“ der e-Mail separieren können!
* Danke für den Hinweis von Juri Haberland
Postfix alterMIME Individuelle Disclaimer
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
-- ------------------------------------------ e-Mail : postmaster@tachtler.net Homepage: http://www.tachtler.net ------------------------------------------
HINWEIS - Nach dem Trennzeichen
--
sollte noch ein Leerzeichen folgen, da sonst einige Clients den „Disclaimer“ nicht richtig vom „Body“ der e-Mail separieren können!
* Danke für den Hinweis von Juri Haberland
und
/etc/postfix/altermime/disclaimer_postmaster@tachtler.net.html
<br> <span style="font-family:monospace; color:#000000">-- </span><br> <br> <span style="font-family:monospace; color:#000000">------------------------------------------</span><br> <span style="font-family:monospace; color:#000000">e-Mail : postmaster@tachtler.net</span><br> <span style="font-family:monospace; color:#000000">Homepage: http://www.tachtler.net</span><br> <span style="font-family:monospace; color:#000000">------------------------------------------</span><br> <br>
HINWEIS - Nach dem Trennzeichen
--
sollte noch ein Leerzeichen (
) folgen, da sonst einige Clients den „Disclaimer“ nicht richtig vom „Body“ der e-Mail separieren können!
* Danke für den Hinweis von Juri Haberland
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 - alterMIME
versehen.
Anpassungen vorhandener Einstellungen in /etc/postfix/master.cf
(nur relevanter Ausschnitt):
(Nur relevanter Ausschnitt):
# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== ... ... ... # Tachtler - new - # Outgoing traffic from trusted networks, with amavisd-new (altermime). 192.168.1.60:smtp inet n - n - - smtpd -o content_filter= -o smtpd_proxy_filter=192.168.0.70:10024 -o smtpd_client_connection_count_limit=4 -o smtpd_proxy_options=speed_adjust 192.168.0.60:smtp inet n - n - - smtpd -o content_filter= -o smtpd_proxy_filter=192.168.0.70:10024 -o smtpd_client_connection_count_limit=4 -o smtpd_proxy_options=speed_adjust 127.0.0.1:smtp inet n - n - - smtpd -o content_filter= -o smtpd_proxy_filter=192.168.0.70:10024 -o smtpd_client_connection_count_limit=4 -o smtpd_proxy_options=speed_adjust # Tachtler - new - # Outgoing traffic, BACK from amavisd-new from smtpd_proxy_filter. 192.168.0.60:10025 inet n - n - - smtpd -o content_filter= -o smtpd_proxy_filter= -o smtpd_milters= -o smtpd_authorized_xforward_hosts=127.0.0.0/8,192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,88.217.171.167/32 -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_relay_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions= -o mynetworks=0.0.0.0/32,127.0.0.0/8,192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,88.217.171.167/32 -o receive_override_options=no_unknown_recipient_checks # Tachtler - new - # Outgoing traffic, BACK from amavisd-new from content_filter. 192.168.0.60:10027 inet n - n - - smtpd -o content_filter= -o smtpd_proxy_filter= -o smtpd_milters= -o smtpd_authorized_xforward_hosts=127.0.0.0/8,192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,88.217.171.167/32 -o smtpd_delay_reject=no -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_relay_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o smtpd_restriction_classes= -o mynetworks=0.0.0.0/32,127.0.0.0/8,192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,88.217.171.167/32 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters -o local_header_rewrite_clients= ... ... ... # Tachtler - enabled - submission inet n - n - - smtpd -o syslog_name=postfix/submission # Tachtler - alterMIME -o content_filter=altermime: -o lmtp_use_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING ... ... ... pickup unix n - n 60 1 pickup -o content_filter=lmtp:[192.168.0.70]:10026 -o lmtp_use_tls=yes ... ... ... # Tachtler - alterMIME altermime unix - n n - 4 pipe flags=Rq user=altermime null_sender= argv=/etc/postfix/altermime/altermime.sh -f ${sender} -- ${recipient}