Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_centos_7_-_footermilter_einsetzen_footermilter

Dies ist eine alte Version des Dokuments!


Postfix CentOS 7 - FooterMilter einbinden (footermilter)

FooterMilter ist ein Sendmail/Postfix-milter Dienst/Daemon, der vom MTA empfangene E-Mails automatisch einen Footer/Disclaimer an den body der E-Mail im entsprechenden Format (text/plain, text/html oder auch multipart) anhängt, bevor die Nachricht weiter an den/die Empfänger weitergeleitet wird.

FooterMilter ist ein von Klaus Tachtler (;-) mir) in Java geschriebener Milter, welcher auf der großartigen Arbeit von Dmitry basiert, welche ebenfalls als eigenes Projekt unter GitHub - nightcode/jmilter verfügbar ist.

GitHub - nightcode/jmilter is an Open Source implementation of the Sendmail milter protocol, for implementing milters in Java that can interface with the Sendmail or Postfix MTA. Java implementation of the Sendmail Milter protocol based on the project of org.nightcode.jmilter from dmitry@nightcode.org

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Voraussetzungen

Da der FooterMilter in Java geschrieben ist, ist es erforderlich Java zu installieren, damit der FooterMilter lauffähig ist. Dazu kann das für die meisten Betriebssysteme verfügbare OpenJDK ab Version 1.8 installiert werden.

Als einzige Voraussetzung für die Installation von FooterMilter ist somit nur folgende Komponente erforderlich:

:!: WICHTIG - Nachfolgende Abhängigkeiten zu anderen Java-Archivdateien sind in dem zu herunterladendem

bereits enthalten!

:!: HINWEIS - Nachfolgende Abhängigkeiten müssen NICHT separat heruntergeladen werden (Auflistung der Vollständigkeit halber)!

Es gibt zwei verschiedene Möglichkeiten FooterMilter zum Einsatz zu bringen.

  1. Herunterladen der bereits vorhandenen ausführbaren Java - FooterMilter.jar-Archivdatei und deren Abhängigkeiten als Paket.
  2. Umwandlung und Erstellung der ausführbaren Java - FooterMilter.jar-Archivdatei aus den Quellen unter Einbeziehung der benötigten Abhängigkeiten als Paket.

Nachfolgend werden beide Möglichkeiten beschrieben.

Herunterladen

Unter nachfolgendem externen Link, kann die ausführbare Java - FooterMilter.jar-Archivdatei und die benötigten Abhängigkeiten als Paket heruntergeladen werden:

Unter nachfolgendem externen Link, können die Quellen der ausführbaren Java - FooterMilter.jar-Archivdatei und die benötigten Abhängigkeiten als Paket ebenfalls heruntergeladen werden:

Installation: Java

Da der FooterMilter in Java geschrieben ist, ist es erforderlich Java zu installieren, damit der FooterMilter lauffähig ist. Dazu kann das für die meisten Betriebssysteme verfügbare OpenJDK ab Version 1.8 installiert werden.

JRE (Fertige JAR-Datei)

Falls der FooterMilter als (Fertige JAR-Datei) installiert werden soll wird nur die Java Runtime Environment (Java-Laufzeitumgebung) benötigt.

# yum install java-1.8.0-openjdk
Loaded plugins: changelog, priorities
325 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.191.b12-0.el7_5 will be installed
--> Processing Dependency: java-1.8.0-openjdk-headless(x86-64) = 1:1.8.0.191.b12-0.el7_5 for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: xorg-x11-fonts-Type1 for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libpng15.so.15(PNG15_0)(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libjvm.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libjpeg.so.62(LIBJPEG_6.2)(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libjava.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: fontconfig(x86-64) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libpng15.so.15()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libjvm.so()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libjpeg.so.62()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libjava.so()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libgif.so.4()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libXtst.so.6()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libXrender.so.1()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libXi.so.6()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libXext.so.6()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libXcomposite.so.1()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: libX11.so.6()(64bit) for package: 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
--> Running transaction check
---> Package fontconfig.x86_64 0:2.10.95-11.el7 will be installed
--> Processing Dependency: fontpackages-filesystem for package: fontconfig-2.10.95-11.el7.x86_64
--> Processing Dependency: font(:lang=en) for package: fontconfig-2.10.95-11.el7.x86_64
---> Package giflib.x86_64 0:4.1.6-9.el7 will be installed
--> Processing Dependency: libSM.so.6()(64bit) for package: giflib-4.1.6-9.el7.x86_64
--> Processing Dependency: libICE.so.6()(64bit) for package: giflib-4.1.6-9.el7.x86_64
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.191.b12-0.el7_5 will be installed
--> Processing Dependency: tzdata-java >= 2015d for package: 1:java-1.8.0-openjdk-headless-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: copy-jdk-configs >= 2.2 for package: 1:java-1.8.0-openjdk-headless-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: lksctp-tools(x86-64) for package: 1:java-1.8.0-openjdk-headless-1.8.0.191.b12-0.el7_5.x86_64
--> Processing Dependency: jpackage-utils for package: 1:java-1.8.0-openjdk-headless-1.8.0.191.b12-0.el7_5.x86_64
---> Package libX11.x86_64 0:1.6.5-1.el7 will be installed
--> Processing Dependency: libX11-common >= 1.6.5-1.el7 for package: libX11-1.6.5-1.el7.x86_64
--> Processing Dependency: libxcb.so.1()(64bit) for package: libX11-1.6.5-1.el7.x86_64
---> Package libXcomposite.x86_64 0:0.4.4-4.1.el7 will be installed
---> Package libXext.x86_64 0:1.3.3-3.el7 will be installed
---> Package libXi.x86_64 0:1.7.9-1.el7 will be installed
---> Package libXrender.x86_64 0:0.9.10-1.el7 will be installed
---> Package libXtst.x86_64 0:1.2.3-1.el7 will be installed
---> Package libjpeg-turbo.x86_64 0:1.2.90-5.el7 will be installed
---> Package libpng.x86_64 2:1.5.13-7.el7_2 will be installed
---> Package xorg-x11-fonts-Type1.noarch 0:7.5-9.el7 will be installed
--> Processing Dependency: ttmkfdir for package: xorg-x11-fonts-Type1-7.5-9.el7.noarch
--> Processing Dependency: ttmkfdir for package: xorg-x11-fonts-Type1-7.5-9.el7.noarch
--> Processing Dependency: mkfontdir for package: xorg-x11-fonts-Type1-7.5-9.el7.noarch
--> Processing Dependency: mkfontdir for package: xorg-x11-fonts-Type1-7.5-9.el7.noarch
--> Running transaction check
---> Package copy-jdk-configs.noarch 0:3.3-10.el7_5 will be installed
---> Package fontpackages-filesystem.noarch 0:1.44-8.el7 will be installed
---> Package javapackages-tools.noarch 0:3.4.1-11.el7 will be installed
--> Processing Dependency: python-javapackages = 3.4.1-11.el7 for package: javapackages-tools-3.4.1-11.el7.noarch
--> Processing Dependency: libxslt for package: javapackages-tools-3.4.1-11.el7.noarch
---> Package libICE.x86_64 0:1.0.9-9.el7 will be installed
---> Package libSM.x86_64 0:1.2.2-2.el7 will be installed
---> Package libX11-common.noarch 0:1.6.5-1.el7 will be installed
---> Package libxcb.x86_64 0:1.12-1.el7 will be installed
--> Processing Dependency: libXau.so.6()(64bit) for package: libxcb-1.12-1.el7.x86_64
---> Package lksctp-tools.x86_64 0:1.0.17-2.el7 will be installed
---> Package lyx-fonts.noarch 0:2.2.3-1.el7 will be installed
---> Package ttmkfdir.x86_64 0:3.0.9-42.el7 will be installed
---> Package tzdata-java.noarch 0:2018f-2.el7 will be installed
---> Package xorg-x11-font-utils.x86_64 1:7.5-20.el7 will be installed
--> Processing Dependency: libfontenc.so.1()(64bit) for package: 1:xorg-x11-font-utils-7.5-20.el7.x86_64
--> Processing Dependency: libXfont.so.1()(64bit) for package: 1:xorg-x11-font-utils-7.5-20.el7.x86_64
--> Running transaction check
---> Package libXau.x86_64 0:1.0.8-2.1.el7 will be installed
---> Package libXfont.x86_64 0:1.5.2-1.el7 will be installed
---> Package libfontenc.x86_64 0:1.1.3-3.el7 will be installed
---> Package libxslt.x86_64 0:1.1.28-5.el7 will be installed
---> Package python-javapackages.noarch 0:3.4.1-11.el7 will be installed
--> Processing Dependency: python-lxml for package: python-javapackages-3.4.1-11.el7.noarch
--> Running transaction check
---> Package python-lxml.x86_64 0:3.2.1-4.el7 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package                      Arch    Version                    Repository
                                                                           Size
================================================================================
Installing:
 java-1.8.0-openjdk           x86_64  1:1.8.0.191.b12-0.el7_5    updates  252 k
Installing for dependencies:
 copy-jdk-configs             noarch  3.3-10.el7_5               updates   21 k
 fontconfig                   x86_64  2.10.95-11.el7             base     229 k
 fontpackages-filesystem      noarch  1.44-8.el7                 base     9.9 k
 giflib                       x86_64  4.1.6-9.el7                base      40 k
 java-1.8.0-openjdk-headless  x86_64  1:1.8.0.191.b12-0.el7_5    updates   32 M
 javapackages-tools           noarch  3.4.1-11.el7               base      73 k
 libICE                       x86_64  1.0.9-9.el7                base      66 k
 libSM                        x86_64  1.2.2-2.el7                base      39 k
 libX11                       x86_64  1.6.5-1.el7                base     606 k
 libX11-common                noarch  1.6.5-1.el7                base     164 k
 libXau                       x86_64  1.0.8-2.1.el7              base      29 k
 libXcomposite                x86_64  0.4.4-4.1.el7              base      22 k
 libXext                      x86_64  1.3.3-3.el7                base      39 k
 libXfont                     x86_64  1.5.2-1.el7                base     152 k
 libXi                        x86_64  1.7.9-1.el7                base      40 k
 libXrender                   x86_64  0.9.10-1.el7               base      26 k
 libXtst                      x86_64  1.2.3-1.el7                base      20 k
 libfontenc                   x86_64  1.1.3-3.el7                base      31 k
 libjpeg-turbo                x86_64  1.2.90-5.el7               base     134 k
 libpng                       x86_64  2:1.5.13-7.el7_2           base     213 k
 libxcb                       x86_64  1.12-1.el7                 base     211 k
 libxslt                      x86_64  1.1.28-5.el7               base     242 k
 lksctp-tools                 x86_64  1.0.17-2.el7               base      88 k
 lyx-fonts                    noarch  2.2.3-1.el7                epel     159 k
 python-javapackages          noarch  3.4.1-11.el7               base      31 k
 python-lxml                  x86_64  3.2.1-4.el7                base     758 k
 ttmkfdir                     x86_64  3.0.9-42.el7               base      48 k
 tzdata-java                  noarch  2018f-2.el7                updates  186 k
 xorg-x11-font-utils          x86_64  1:7.5-20.el7               base      87 k
 xorg-x11-fonts-Type1         noarch  7.5-9.el7                  base     521 k

Transaction Summary
================================================================================
Install  1 Package (+30 Dependent packages)

Total download size: 36 M
Installed size: 116 M
Is this ok [y/d/N]: y
Downloading packages:
(1/31): copy-jdk-configs-3.3-10.el7_5.noarch.rpm           |  21 kB   00:00     
(2/31): fontconfig-2.10.95-11.el7.x86_64.rpm               | 229 kB   00:00     
(3/31): fontpackages-filesystem-1.44-8.el7.noarch.rpm      | 9.9 kB   00:00     
(4/31): giflib-4.1.6-9.el7.x86_64.rpm                      |  40 kB   00:00     
(5/31): javapackages-tools-3.4.1-11.el7.noarch.rpm         |  73 kB   00:00     
(6/31): libSM-1.2.2-2.el7.x86_64.rpm                       |  39 kB   00:00     
(7/31): libX11-1.6.5-1.el7.x86_64.rpm                      | 606 kB   00:00     
(8/31): java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64.rp | 252 kB   00:00     
(9/31): libICE-1.0.9-9.el7.x86_64.rpm                      |  66 kB   00:00     
(10/31): libX11-common-1.6.5-1.el7.noarch.rpm              | 164 kB   00:00     
(11/31): libXau-1.0.8-2.1.el7.x86_64.rpm                   |  29 kB   00:00     
(12/31): libXcomposite-0.4.4-4.1.el7.x86_64.rpm            |  22 kB   00:00     
(13/31): libXext-1.3.3-3.el7.x86_64.rpm                    |  39 kB   00:00     
(14/31): libXfont-1.5.2-1.el7.x86_64.rpm                   | 152 kB   00:00     
(15/31): java-1.8.0-openjdk-headless-1.8.0.191.b12-0.el7_5 |  32 MB   00:01     
(16/31): libXi-1.7.9-1.el7.x86_64.rpm                      |  40 kB   00:00     
(17/31): libXrender-0.9.10-1.el7.x86_64.rpm                |  26 kB   00:00     
(18/31): libXtst-1.2.3-1.el7.x86_64.rpm                    |  20 kB   00:00     
(19/31): libjpeg-turbo-1.2.90-5.el7.x86_64.rpm             | 134 kB   00:00     
(20/31): libpng-1.5.13-7.el7_2.x86_64.rpm                  | 213 kB   00:00     
(21/31): libfontenc-1.1.3-3.el7.x86_64.rpm                 |  31 kB   00:00     
(22/31): libxcb-1.12-1.el7.x86_64.rpm                      | 211 kB   00:00     
(23/31): libxslt-1.1.28-5.el7.x86_64.rpm                   | 242 kB   00:00     
(24/31): lksctp-tools-1.0.17-2.el7.x86_64.rpm              |  88 kB   00:00     
(25/31): python-javapackages-3.4.1-11.el7.noarch.rpm       |  31 kB   00:00     
(26/31): ttmkfdir-3.0.9-42.el7.x86_64.rpm                  |  48 kB   00:00     
(27/31): python-lxml-3.2.1-4.el7.x86_64.rpm                | 758 kB   00:00     
(28/31): xorg-x11-font-utils-7.5-20.el7.x86_64.rpm         |  87 kB   00:00     
(29/31): lyx-fonts-2.2.3-1.el7.noarch.rpm                  | 159 kB   00:00     
(30/31): tzdata-java-2018f-2.el7.noarch.rpm                | 186 kB   00:00     
(31/31): xorg-x11-fonts-Type1-7.5-9.el7.noarch.rpm         | 521 kB   00:00     
--------------------------------------------------------------------------------
Total                                               17 MB/s |  36 MB  00:02     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libfontenc-1.1.3-3.el7.x86_64                               1/31 
  Installing : libxslt-1.1.28-5.el7.x86_64                                 2/31 
  Installing : fontpackages-filesystem-1.44-8.el7.noarch                   3/31 
  Installing : libjpeg-turbo-1.2.90-5.el7.x86_64                           4/31 
  Installing : libICE-1.0.9-9.el7.x86_64                                   5/31 
  Installing : libSM-1.2.2-2.el7.x86_64                                    6/31 
  Installing : lyx-fonts-2.2.3-1.el7.noarch                                7/31 
  Installing : fontconfig-2.10.95-11.el7.x86_64                            8/31 
  Installing : python-lxml-3.2.1-4.el7.x86_64                              9/31 
  Installing : python-javapackages-3.4.1-11.el7.noarch                    10/31 
  Installing : javapackages-tools-3.4.1-11.el7.noarch                     11/31 
  Installing : libXfont-1.5.2-1.el7.x86_64                                12/31 
  Installing : 1:xorg-x11-font-utils-7.5-20.el7.x86_64                    13/31 
  Installing : libXau-1.0.8-2.1.el7.x86_64                                14/31 
  Installing : libxcb-1.12-1.el7.x86_64                                   15/31 
  Installing : libX11-common-1.6.5-1.el7.noarch                           16/31 
  Installing : libX11-1.6.5-1.el7.x86_64                                  17/31 
  Installing : libXext-1.3.3-3.el7.x86_64                                 18/31 
  Installing : libXi-1.7.9-1.el7.x86_64                                   19/31 
  Installing : libXtst-1.2.3-1.el7.x86_64                                 20/31 
  Installing : giflib-4.1.6-9.el7.x86_64                                  21/31 
  Installing : libXrender-0.9.10-1.el7.x86_64                             22/31 
  Installing : libXcomposite-0.4.4-4.1.el7.x86_64                         23/31 
  Installing : lksctp-tools-1.0.17-2.el7.x86_64                           24/31 
  Installing : tzdata-java-2018f-2.el7.noarch                             25/31 
  Installing : copy-jdk-configs-3.3-10.el7_5.noarch                       26/31 
  Installing : 1:java-1.8.0-openjdk-headless-1.8.0.191.b12-0.el7_5.x86_   27/31 
  Installing : ttmkfdir-3.0.9-42.el7.x86_64                               28/31 
  Installing : xorg-x11-fonts-Type1-7.5-9.el7.noarch                      29/31 
  Installing : 2:libpng-1.5.13-7.el7_2.x86_64                             30/31 
  Installing : 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64          31/31 
  Verifying  : libXext-1.3.3-3.el7.x86_64                                  1/31 
  Verifying  : libX11-1.6.5-1.el7.x86_64                                   2/31 
  Verifying  : libXi-1.7.9-1.el7.x86_64                                    3/31 
  Verifying  : libICE-1.0.9-9.el7.x86_64                                   4/31 
  Verifying  : giflib-4.1.6-9.el7.x86_64                                   5/31 
  Verifying  : libjpeg-turbo-1.2.90-5.el7.x86_64                           6/31 
  Verifying  : libXrender-0.9.10-1.el7.x86_64                              7/31 
  Verifying  : lyx-fonts-2.2.3-1.el7.noarch                                8/31 
  Verifying  : libXfont-1.5.2-1.el7.x86_64                                 9/31 
  Verifying  : python-lxml-3.2.1-4.el7.x86_64                             10/31 
  Verifying  : 2:libpng-1.5.13-7.el7_2.x86_64                             11/31 
  Verifying  : fontpackages-filesystem-1.44-8.el7.noarch                  12/31 
  Verifying  : ttmkfdir-3.0.9-42.el7.x86_64                               13/31 
  Verifying  : 1:java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64          14/31 
  Verifying  : copy-jdk-configs-3.3-10.el7_5.noarch                       15/31 
  Verifying  : python-javapackages-3.4.1-11.el7.noarch                    16/31 
  Verifying  : 1:java-1.8.0-openjdk-headless-1.8.0.191.b12-0.el7_5.x86_   17/31 
  Verifying  : libXcomposite-0.4.4-4.1.el7.x86_64                         18/31 
  Verifying  : libXtst-1.2.3-1.el7.x86_64                                 19/31 
  Verifying  : tzdata-java-2018f-2.el7.noarch                             20/31 
  Verifying  : lksctp-tools-1.0.17-2.el7.x86_64                           21/31 
  Verifying  : libxcb-1.12-1.el7.x86_64                                   22/31 
  Verifying  : xorg-x11-fonts-Type1-7.5-9.el7.noarch                      23/31 
  Verifying  : libxslt-1.1.28-5.el7.x86_64                                24/31 
  Verifying  : javapackages-tools-3.4.1-11.el7.noarch                     25/31 
  Verifying  : libX11-common-1.6.5-1.el7.noarch                           26/31 
  Verifying  : libXau-1.0.8-2.1.el7.x86_64                                27/31 
  Verifying  : libSM-1.2.2-2.el7.x86_64                                   28/31 
  Verifying  : fontconfig-2.10.95-11.el7.x86_64                           29/31 
  Verifying  : libfontenc-1.1.3-3.el7.x86_64                              30/31 
  Verifying  : 1:xorg-x11-font-utils-7.5-20.el7.x86_64                    31/31 

Installed:
  java-1.8.0-openjdk.x86_64 1:1.8.0.191.b12-0.el7_5                             

Dependency Installed:
  copy-jdk-configs.noarch 0:3.3-10.el7_5                                        
  fontconfig.x86_64 0:2.10.95-11.el7                                            
  fontpackages-filesystem.noarch 0:1.44-8.el7                                   
  giflib.x86_64 0:4.1.6-9.el7                                                   
  java-1.8.0-openjdk-headless.x86_64 1:1.8.0.191.b12-0.el7_5                    
  javapackages-tools.noarch 0:3.4.1-11.el7                                      
  libICE.x86_64 0:1.0.9-9.el7                                                   
  libSM.x86_64 0:1.2.2-2.el7                                                    
  libX11.x86_64 0:1.6.5-1.el7                                                   
  libX11-common.noarch 0:1.6.5-1.el7                                            
  libXau.x86_64 0:1.0.8-2.1.el7                                                 
  libXcomposite.x86_64 0:0.4.4-4.1.el7                                          
  libXext.x86_64 0:1.3.3-3.el7                                                  
  libXfont.x86_64 0:1.5.2-1.el7                                                 
  libXi.x86_64 0:1.7.9-1.el7                                                    
  libXrender.x86_64 0:0.9.10-1.el7                                              
  libXtst.x86_64 0:1.2.3-1.el7                                                  
  libfontenc.x86_64 0:1.1.3-3.el7                                               
  libjpeg-turbo.x86_64 0:1.2.90-5.el7                                           
  libpng.x86_64 2:1.5.13-7.el7_2                                                
  libxcb.x86_64 0:1.12-1.el7                                                    
  libxslt.x86_64 0:1.1.28-5.el7                                                 
  lksctp-tools.x86_64 0:1.0.17-2.el7                                            
  lyx-fonts.noarch 0:2.2.3-1.el7                                                
  python-javapackages.noarch 0:3.4.1-11.el7                                     
  python-lxml.x86_64 0:3.2.1-4.el7                                              
  ttmkfdir.x86_64 0:3.0.9-42.el7                                                
  tzdata-java.noarch 0:2018f-2.el7                                              
  xorg-x11-font-utils.x86_64 1:7.5-20.el7                                       
  xorg-x11-fonts-Type1.noarch 0:7.5-9.el7                                       

Complete!

Ob das Installieren der Java Runtime Environment (Java-Laufzeitumgebung) wirklich erfolgreich durchgeführt wurde, kann mit nachfolgendem Befehl getestet werden:

# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

JDK (Quellen)

Falls der FooterMilter aus den (Quellen) übersetzt werden soll wird zusätzlich zur der Java Runtime Environment (Java-Laufzeitumgebung), auch die Java Development Kit (Java-Entwicklerwerkzeuge) benötigt.

# yum install java-1.8.0-openjdk-devel

Ob das Installieren der Java Development Kit (Java-Entwicklerwerkzeuge) ebenfalls wirklich erfolgreich durchgeführt wurde, kann mit nachfolgendem Befehl getestet werden:

# javac -version
javac 1.8.0_191

Installation: FooterMilter.jar (Fertige JAR-Datei)

Herunterladen Paket-Datei

Bevor die Ausführung der ausführbaren Java - FooterMilter.jar-Archivdatei gestartet werden kann, muss das fertige Paket mit nachfolgendem Befehl heruntergeladen werden:

# wget -P /tmp https://github.com/tachtler/FooterMilter/archive/master.zip
--2022-04-21 20:36:28--  https://github.com/tachtler/FooterMilter/archive/master.zip
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving github.com (github.com)... 140.82.121.3
Connecting to github.com (github.com)|140.82.121.3|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/tachtler/FooterMilter/zip/refs/heads/master [following]
--2022-04-21 20:36:29--  https://codeload.github.com/tachtler/FooterMilter/zip/refs/heads/master
Resolving codeload.github.com (codeload.github.com)... 140.82.121.10
Connecting to codeload.github.com (codeload.github.com)|140.82.121.10|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘/tmp/master.zip’

master.zip                        [                 <=>                            ]  11.28M  3.43MB/s    in 3.4s    

2022-04-21 20:36:33 (3.32 MB/s) - ‘/tmp/master.zip’ saved [11828710]

Entpacken Paket-Datei

Dazu wird mit nachfolgendem Befehl in das Verzeichnis /tmp/ gewechselt:

# cd /tmp/

Anschließend kann nun mit nachfolgendem Befehl die zuvor heruntergeladene Datei /tmp/master.zip entpackt werden:

# unzip /tmp/master.zip
Archive:  master.zip
1cc1df4d0a3dbf38324c1acf425bd13d7912bb09
   creating: FooterMilter-master/
 extracting: FooterMilter-master/FooterMilter.jar  
  inflating: FooterMilter-master/LICENSE  
   creating: FooterMilter-master/META-INF/
  inflating: FooterMilter-master/META-INF/MANIFEST.MF  
  inflating: FooterMilter-master/README.md  
   creating: FooterMilter-master/doc/
  inflating: FooterMilter-master/doc/FooterMilter.adoc  
  inflating: FooterMilter-master/doc/FooterMilter.html  
  inflating: FooterMilter-master/doc/FooterMilter.jar.1  
  inflating: FooterMilter-master/footermilter.ini  
  inflating: FooterMilter-master/footermilter.service  
   creating: FooterMilter-master/lib/
  inflating: FooterMilter-master/lib/apache-mime4j-core-0.8.2.jar  
  inflating: FooterMilter-master/lib/apache-mime4j-dom-0.8.2.jar  
  inflating: FooterMilter-master/lib/apache-mime4j-storage-0.8.2.jar  
  inflating: FooterMilter-master/lib/commons-cli-1.5.0.jar  
  inflating: FooterMilter-master/lib/commons-codec-1.15.jar  
  inflating: FooterMilter-master/lib/commons-io-2.11.0.jar  
  inflating: FooterMilter-master/lib/commons-lang3-3.12.0.jar  
  inflating: FooterMilter-master/lib/commons-logging-1.2.jar  
  inflating: FooterMilter-master/lib/ini4j-0.5.4.jar  
  inflating: FooterMilter-master/lib/javax.inject.jar  
  inflating: FooterMilter-master/lib/jmilter-0.3.6.jar  
  inflating: FooterMilter-master/lib/jsr305-3.0.2.jar  
  inflating: FooterMilter-master/lib/log4j-api-2.17.2.jar  
  inflating: FooterMilter-master/lib/log4j-core-2.17.2.jar  
  inflating: FooterMilter-master/lib/netty-buffer-4.1.76.Final.jar  
  inflating: FooterMilter-master/lib/netty-codec-4.1.76.Final.jar  
  inflating: FooterMilter-master/lib/netty-common-4.1.76.Final.jar  
  inflating: FooterMilter-master/lib/netty-handler-4.1.76.Final.jar  
  inflating: FooterMilter-master/lib/netty-transport-4.1.76.Final.jar  
  inflating: FooterMilter-master/lib/yaranga-0.11.jar  
  inflating: FooterMilter-master/log4j2.xml  
   creating: FooterMilter-master/net/
   creating: FooterMilter-master/net/tachtler/
   creating: FooterMilter-master/net/tachtler/jmilter/
   creating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilter.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterCLIArgsParser.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterException.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterHandler.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterInitBean.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterUtilities.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/package-info.java

wodurch die folgende Verzeichnisstruktur entsteht, welche mit nachfolgendem Befehl aufgelistet werden kann:

# ls -l /tmp/FooterMilter-master/
total 5812
drwxr-xr-x 2 root root      82 Apr 21 19:25 doc
-rw-r--r-- 1 root root    5028 Apr 21 19:25 footermilter.ini
-rw-r--r-- 1 root root 5897131 Apr 21 19:25 FooterMilter.jar
-rw-r--r-- 1 root root     311 Apr 21 19:25 footermilter.service
drwxr-xr-x 2 root root    4096 Apr 21 19:25 lib
-rw-r--r-- 1 root root   11357 Apr 21 19:25 LICENSE
-rw-r--r-- 1 root root    1676 Apr 21 19:25 log4j2.xml
drwxr-xr-x 2 root root      25 Apr 21 19:25 META-INF
drwxr-xr-x 3 root root      22 Apr 21 19:25 net
-rw-r--r-- 1 root root   20456 Apr 21 19:25 README.md

Löschen der nicht benötigten Quelldateien

Die nicht benötigten Quelldateien unter

  • /tmp/FooterMilter-master/net
  • /tmp/FooterMilter-master/META-INF

und unterhalb dieser Verzeichnisse, können mit nachfolgendem Befehl gelöscht werden:

# rm -rf /tmp/FooterMilter-master/{META-INF,net}

Test von FooterMilter.jar

Ob die heruntergeladene Java - FooterMilter.jar-Archivdatei ausführbar ist, kann mit nachfolgendem Befehl getestet werden und sollte eine Ausgabe wie die nachfolgende erzeugen:

# java -jar /tmp/FooterMilter-master/FooterMilter.jar -h
usage: /path/to/java -jar /path/to/FooterMilter.jar
       [-c <path and name of the config file>] [-h] [-v] [-d]

FooterMilter for Sendmail or Postfix to insert a footer at the end of the body.

 -c,--config <arg>   [REQUIRED] Path and name of the config file
 -d,--debug          DEBUG mode with runtime output
 -h,--help           Print this usage information
 -v,--version        Version of the program

Copyright (c) 2022 Klaus Tachtler, <klaus@tachtler.net>.
All Rights Reserved.
Version 1.1.

:!: WICHTIG - Die FooterMilter.jar-Archivdatei kann NUR ausgeführt werden, wenn auch die weiteren Dateien in der nachfolgend dargestellten Verzeichnisstruktur vorhanden sind, insbesondere das Verzeichnis lib und dessen Inhalt !!!

# ls -l /tmp/FooterMilter-master/
total 5812
drwxr-xr-x 2 root root      82 Apr 21 19:25 doc
-rw-r--r-- 1 root root    5028 Apr 21 19:25 footermilter.ini
-rw-r--r-- 1 root root 5897131 Apr 21 19:25 FooterMilter.jar
-rw-r--r-- 1 root root     311 Apr 21 19:25 footermilter.service
drwxr-xr-x 2 root root    4096 Apr 21 19:25 lib
-rw-r--r-- 1 root root   11357 Apr 21 19:25 LICENSE
-rw-r--r-- 1 root root    1676 Apr 21 19:25 log4j2.xml
-rw-r--r-- 1 root root   20456 Apr 21 19:25 README.md

:!: HINWEIS - Das Verzeichnis /tmp/FooterMilter-master/ kann selbstverständlich

  • umbenannt oder auch
  • verschoben werden

solange die Verzeichnisstruktur innerhalb, in dem die FooterMilter.jar-Archivdatei liegt, komplett erhalten bleibt !!!

Installation: FooterMilter.jar (Quellen)

Herunterladen des Quellcodes

Bevor mit der Umwandlung des Java - Quellcodes und Erstellung der ausführbaren Java - FooterMilter.jar-Archivdatei begonnen werden kann, müssen die Quellen unter nachfolgendem externen Link heruntergeladen werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# wget -P /tmp https://github.com/tachtler/FooterMilter/archive/master.zip
--2022-04-21 20:36:28--  https://github.com/tachtler/FooterMilter/archive/master.zip
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving github.com (github.com)... 140.82.121.3
Connecting to github.com (github.com)|140.82.121.3|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/tachtler/FooterMilter/zip/refs/heads/master [following]
--2022-04-21 20:36:29--  https://codeload.github.com/tachtler/FooterMilter/zip/refs/heads/master
Resolving codeload.github.com (codeload.github.com)... 140.82.121.10
Connecting to codeload.github.com (codeload.github.com)|140.82.121.10|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘/tmp/master.zip’

master.zip                        [                 <=>                            ]  11.28M  3.43MB/s    in 3.4s    

2022-04-21 20:36:33 (3.32 MB/s) - ‘/tmp/master.zip’ saved [11828710]

Entpacken des Quellencodes

Dazu wird mit nachfolgendem Befehl in das Verzeichnis /tmp/ gewechselt:

# cd /tmp/

Anschließend kann nun mit nachfolgendem Befehl die zuvor heruntergeladene Datei /tmp/master.zip entpackt werden:

# unzip /tmp/master.zip
Archive:  /tmp/master.zip
1cc1df4d0a3dbf38324c1acf425bd13d7912bb09
   creating: FooterMilter-master/
 extracting: FooterMilter-master/FooterMilter.jar  
  inflating: FooterMilter-master/LICENSE  
   creating: FooterMilter-master/META-INF/
  inflating: FooterMilter-master/META-INF/MANIFEST.MF  
  inflating: FooterMilter-master/README.md  
   creating: FooterMilter-master/doc/
  inflating: FooterMilter-master/doc/FooterMilter.adoc  
  inflating: FooterMilter-master/doc/FooterMilter.html  
  inflating: FooterMilter-master/doc/FooterMilter.jar.1  
  inflating: FooterMilter-master/footermilter.ini  
  inflating: FooterMilter-master/footermilter.service  
   creating: FooterMilter-master/lib/
  inflating: FooterMilter-master/lib/apache-mime4j-core-0.8.2.jar  
  inflating: FooterMilter-master/lib/apache-mime4j-dom-0.8.2.jar  
  inflating: FooterMilter-master/lib/apache-mime4j-storage-0.8.2.jar  
  inflating: FooterMilter-master/lib/commons-cli-1.5.0.jar  
  inflating: FooterMilter-master/lib/commons-codec-1.15.jar  
  inflating: FooterMilter-master/lib/commons-io-2.11.0.jar  
  inflating: FooterMilter-master/lib/commons-lang3-3.12.0.jar  
  inflating: FooterMilter-master/lib/commons-logging-1.2.jar  
  inflating: FooterMilter-master/lib/ini4j-0.5.4.jar  
  inflating: FooterMilter-master/lib/javax.inject.jar  
  inflating: FooterMilter-master/lib/jmilter-0.3.6.jar  
  inflating: FooterMilter-master/lib/jsr305-3.0.2.jar  
  inflating: FooterMilter-master/lib/log4j-api-2.17.2.jar  
  inflating: FooterMilter-master/lib/log4j-core-2.17.2.jar  
  inflating: FooterMilter-master/lib/netty-buffer-4.1.76.Final.jar  
  inflating: FooterMilter-master/lib/netty-codec-4.1.76.Final.jar  
  inflating: FooterMilter-master/lib/netty-common-4.1.76.Final.jar  
  inflating: FooterMilter-master/lib/netty-handler-4.1.76.Final.jar  
  inflating: FooterMilter-master/lib/netty-transport-4.1.76.Final.jar  
  inflating: FooterMilter-master/lib/yaranga-0.11.jar  
  inflating: FooterMilter-master/log4j2.xml  
   creating: FooterMilter-master/net/
   creating: FooterMilter-master/net/tachtler/
   creating: FooterMilter-master/net/tachtler/jmilter/
   creating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilter.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterCLIArgsParser.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterException.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterHandler.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterInitBean.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterUtilities.java  
  inflating: FooterMilter-master/net/tachtler/jmilter/FooterMilter/package-info.java

wodurch die folgende Verzeichnisstruktur entsteht, welche mit nachfolgendem Befehl aufgelistet werden kann:

# ls -l /tmp/FooterMilter-master/
total 5812
drwxr-xr-x 2 root root      82 Apr 21 19:25 doc
-rw-r--r-- 1 root root    5028 Apr 21 19:25 footermilter.ini
-rw-r--r-- 1 root root 5897131 Apr 21 19:25 FooterMilter.jar
-rw-r--r-- 1 root root     311 Apr 21 19:25 footermilter.service
drwxr-xr-x 2 root root    4096 Apr 21 19:25 lib
-rw-r--r-- 1 root root   11357 Apr 21 19:25 LICENSE
-rw-r--r-- 1 root root    1676 Apr 21 19:25 log4j2.xml
drwxr-xr-x 2 root root      25 Apr 21 19:25 META-INF
drwxr-xr-x 3 root root      22 Apr 21 19:25 net
-rw-r--r-- 1 root root   20456 Apr 21 19:25 README.md

Umwandeln der *.java-Dateien

Dazu wird mit nachfolgendem Befehl in das Verzeichnis /tmp/FooterMilter-master/ gewechselt:

# cd /tmp/FooterMilter-master/

:!: HINWEIS - Die bereits enthaltene und mit heruntergeladene Java - FooterMilter.jar-Archivdatei, kann mit nachfolgendem Befehl gelöscht werden:

# rm -f /tmp/FooterMilter-master/FooterMilter.jar

Damit nun aus dem Quellcode mit der

  • Dateiendung .java

nun der sogenannte Byte-Code mit der

  • Dateiendung .class

von Java wird, ist nachfolgender Befehl auszuführen:

# javac -g:none -target 1.8 -cp ./lib/*:* /tmp/FooterMilter-master/net/tachtler/jmilter/FooterMilter/*.java

:!: HINWEIS - KEINE Ausgabe bedeutet auch KEINE Fehler!

Ob die Umwandlung des Quellcodes mit der Dateiendung .java in den sogenannte Byte-Code mit der Dateiendung .class von Java erfolgreich durchgeführt wurde, kann nachfolgender Befehl die so neu erstellten .class-Dateien auflisten:

# find /tmp/FooterMilter-master/net/tachtler/jmilter/FooterMilter/ -name *.class
/tmp/FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterCLIArgsParser.class
/tmp/FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterInitBean.class
/tmp/FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterException.class
/tmp/FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterHandler.class
/tmp/FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilter.class
/tmp/FooterMilter-master/net/tachtler/jmilter/FooterMilter/FooterMilterUtilities.class

Erzeugen des FooterMilter.jar

Nachfolgender Befehl erstellt nun die ausführbare Java - FooterMilter.jar-Archivdatei:

# jar cvfm FooterMilter.jar META-INF/MANIFEST.MF net/tachtler/jmilter/FooterMilter/*.class
added manifest
adding: net/tachtler/jmilter/FooterMilter/FooterMilter.class(in = 2800) (out= 1191)(deflated 57%)
adding: net/tachtler/jmilter/FooterMilter/FooterMilterCLIArgsParser.class(in = 9565) (out= 4097)(deflated 57%)
adding: net/tachtler/jmilter/FooterMilter/FooterMilterException.class(in = 2189) (out= 903)(deflated 58%)
adding: net/tachtler/jmilter/FooterMilter/FooterMilterHandler.class(in = 25457) (out= 8129)(deflated 68%)
adding: net/tachtler/jmilter/FooterMilter/FooterMilterInitBean.class(in = 1821) (out= 752)(deflated 58%)
adding: net/tachtler/jmilter/FooterMilter/FooterMilterUtilities.class(in = 4964) (out= 2063)(deflated 58%)

:!: WICHTIG - Bitte nur vorsichtig Veränderungen an der Konfigurationsdatei META-INF/MANIFEST.MF durchführen !!!

Der Aufbau der Konfigurationsdatei META-INF/MANIFEST.MF muss entsprechend genau so bleiben - :!: WICHTIG :!: ist hierbei, das bei jeder Zeile in der eine lib (Bibliothek im JAR-Format) (JavaArchive) am Anfang und Ende ein [LEERZEICHEN] vorhanden ist.

Ausnahme ist hier NUR die erste Zeile: Manifest-Version: 1.0

Die Zeilen:

  • Class-Path: .
  • Main-Class: net.tachtler.jmilter.FooterMilter.FooterMilter

müssen NUR am Ende der jeweiligen Zeile ein [LEERZEICHEN] enthalten !

FooterMilter.jar - META-INF/MENIFEST-MF

* _ = Leerezeichen, $ = Zeilenende ==== Ausführung FooterMilter.jar ==== Ob die soeben erzeugte Java - FooterMilter.jar-Archivdatei auch ausführbar ist, kann mit nachfolgendem Befehl getestet werden und sollte eine Ausgabe wie die nachfolgende erzeugen: <code> # java -jar FooterMilter.jar -h usage: /path/to/java -jar /path/to/FooterMilter.jar [-c <path and name of the config file>] [-h] [-v] [-d] FooterMilter for Sendmail or Postfix to insert a footer at the end of the body. -c,–config <arg> [REQUIRED] Path and name of the config file -d,–debug DEBUG mode with runtime output -h,–help Print this usage information -v,–version Version of the program Copyright © 2022 Klaus Tachtler, klaus@tachtler.net. All Rights Reserved. Version 1.1. </code> :!: WICHTIG - Die FooterMilter.jar-Archivdatei kann NUR ausgeführt werden, wenn auch die weiteren Dateien in der nachfolgend dargestellten Verzeichnisstruktur vorhanden sind, insbesondere das Verzeichnis lib und dessen Inhalt !!! <code> # ls -l /tmp/FooterMilter-master/ total 72 drwxr-xr-x 2 root root 82 Apr 21 19:25 doc -rw-r–r– 1 root root 5028 Apr 21 19:25 footermilter.ini -rw-r–r– 1 root root 19006 Apr 21 20:38 FooterMilter.jar -rw-r–r– 1 root root 311 Apr 21 19:25 footermilter.service drwxr-xr-x 2 root root 4096 Apr 21 19:25 lib -rw-r–r– 1 root root 11357 Apr 21 19:25 LICENSE -rw-r–r– 1 root root 1676 Apr 21 19:25 log4j2.xml drwxr-xr-x 2 root root 25 Apr 21 19:25 META-INF drwxr-xr-x 3 root root 22 Apr 21 19:25 net -rw-r–r– 1 root root 20456 Apr 21 19:25 README.md </code> :!: HINWEIS - Das Verzeichnis /tmp/FooterMilter-master/ kann selbstverständlich * umbenannt oder auch * verschoben werden solange die Verzeichnisstruktur innerhalb, in dem die FooterMilter.jar-Archivdatei liegt, komplett erhalten bleibt !!! ===== Konfiguration: FooterMilter ===== Nachdem nun der FooterMilter lauffähig zur Verfügung stehen sollte, kann mit der Konfiguration begonnen werden. ==== Zielverzeichnis: /opt ==== Zur Dateisystemhygiene sollte das komplette Verzeichnis in dem der FooterMilter ausgeführt wird, aus dem /tmp-Verzeichnis in einen zur dauerhaften Speicherung besser geeigneten Ort, hier: /opt kopiert werden und dabei soll auch gleichzeitig der Name angepasst werden, was mit nachfolgendem Befehl durchgeführt werden kann: :!: WICHTIG - - Falls ein anderes Zielverzeichnis als /opt verwendet werden soll, - oder der Verzeichnisname nicht FooterMilter genannt werden soll, muss die Datei * footermilter.service ebenfalls angepasst werden !!! <code> # mv /tmp/FooterMilter-master /opt/FooterMilter </code> ==== footermilter.service: Dienst/Deamon-Start einrichten ==== Bevor mit der inhaltlichen Konfiguration begonnen werden soll, kann mit Hilfe des im Paket enthaltenen Start/Stopp/Restart-Skripts mit der Bezeichnung * footermilter.service der automatische Start/Stopp/Restart des FooterMilter unter Systemd eingerichtet werden. Dazu muss zuerst des Start/Stopp/Restart-Skripts mit nachfolgendem Befehl in das Verzeichnis * /usr/lib/systemd/system verschoben werden: <code> # mv /opt/FooterMilter/footermilter.service /usr/lib/systemd/system/footermilter.service </code> Anschliessend muss nachfolgender Befehl dazu verwendet werden dem systemd das neue Skript bekannt zu geben: <code> # systemctl daemon-reload </code> Um FooterMilter, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann: <code> # systemctl enable footermilter.service Created symlink from /etc/systemd/system/multi-user.target.wants/footermilter.service to /usr/lib/systemd/system/footermilter.service. </code> Eine Überprüfung, ob beim Neustart des Server der footermilter.service-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben: <code> # systemctl list-unit-files –type=service | grep -e footermilter.service footermilter.service enabled </code> bzw. <code> # systemctl is-enabled footermilter.service enabled </code> ==== log4j2.xml - Log-Verzeichnis: /var/log/FooterMilter ==== Der Inhalt der Konfigurationsdatei /opt/FooterMilter/log4j2.xml bestimmt, in welches Verzeichnis ggf. LOG-Daten geschrieben werden sollen. Standardmässig werden die Log-Daten nach: /var/log/FooterMilter geschrieben. Diese und weitere Einstellungen können in dieser Datei zum Thema Logging vorgenommen werden. Siehe auch den externen Link: * Log4j - Configuration Log4j 2 - Apache Log4j 2 Nachfolgend die komplette standard log4j2.xml-Konfigurationsdatei, welche mit nachfolgendem Befehl zu Anzeige gebracht werden kann: <code xml> # cat log4j2.xml <?xml version=„1.0“ encoding=„UTF-8“?> <Configuration> <Properties> <Property name=„baseDir“>/var/log/FooterMilter</Property> </Properties> <Appenders> <Console name=„Console“ target=„SYSTEM_OUT“> <PatternLayout pattern=„%d{DEFAULT} [%-5p] [%-40C{1}] [%-40M] %m%n“ /> </Console> <RollingFile name=„RollingFile“ fileName=„${baseDir}/FooterMilter.log“ filePattern=„${baseDir}/$${date:yyyy-MM}/FooterMilter-%d{MM-dd-yyyy}-%i.log.gz“> <PatternLayout pattern=„%d{DEFAULT} [%-5p] [%-40C{1}] [%-40M] %m%n“ /> <Policies> <OnStartupTriggeringPolicy /> <TimeBasedTriggeringPolicy /> <CronTriggeringPolicy schedule=„0 0 * * * ?“ /> </Policies> <DefaultRolloverStrategy> <Delete basePath=„${baseDir}“ maxDepth=„3“> <IfFileName glob=„*/FooterMilter-*.log.gz“ /> <IfLastModified age=„31d“ /> </Delete> </DefaultRolloverStrategy> </RollingFile> </Appenders> <Loggers> <Root level=„info“> <AppenderRef ref=„Console“ /> <AppenderRef ref=„RollingFile“ /> </Root> </Loggers> </Configuration> </code> ==== Hauptkonfigurationsdatei: footermilter.ini ==== :!: WICHTIG - Die Konfigurationsdatei liegt standardmässig unter /opt/FooterMilter/footermilter.ini :!: WICHTIG - - Falls ein anderes Verzeichnis als /opt/FooterMilter/footermilter.ini verwendet werden soll, - oder der Datei- oder Verzeichnisname abgeändert werden soll, muss die Datei * footermilter.service ebenfalls angepasst werden !!! Die Hauptkonfigurationsdatei des FooterMilter - footermilter.ini beinhaltet alle Einstellungen für * den Start und dessen Startparameter - Sektion [server] * die Konfiguration der anzuwendenden Footer - Sektion [footer] === Sektion: [service] === Nachfolgende Parameter können in der Sektion [server] gesetzt werden: ^ Parameter ^ Standardwert ^ Beschreibung ^ | listen | 127.0.0.1 | IPv4-Adresse oder Hostname auf den der Dienst/Daemon erreichbar sein soll | | port | 10099 | Port auf dem der Dienst/Daemon erreichbar sein soll | :!: HINWEIS - Falls zu Zwecken der Fehlersuche ein DEBUG Logging gewünscht ist, ist dies mit dem Parameter -d im Start-Skript oder bei einem manuellen Start zu erreichen. === Sektion: [footer] === In der/den [footer] Sektion(en) sind Mehrfachkonfigurationen möglich und erwünscht, nachfolgend ist jedoch nachfolgendes zu beachten: - Jede Sektion [footer] muss mit dem Wort: footer beginnen. - Jede Sektion [footer] muss eine eindeutig Bezeichnung haben. Beispiele: * [footer: default] * [footer: localpart@domain.tld] * [footer: 001] * [footer-default] * [footer] Nachfolgende Parameter können in der/den Sektion(en) [footer] gesetzt werden: ^ Parameter ^ Standardwert ^ Beschreibung ^ | enabled | true | Soll diese [footer]-Sektion aktiv sein | | from | user@example.com oder
@example.com | E-Mail-Adresse oder
Domäne mit vorangestelltem \'@\'-Zeichen | | text | | Footer für den Content-Type - text/plain | | html | | Footer für den Content-Type - text/html | Nachfolgende Besonderheit gibt es beim * Parameter: from Falls hier @Domain.tld anstelle einer vollständigen E-Mail-Adresse angegeben wird, wird dieser Footer angehängt, falls keine E-Mail-Adresse auf weitere Footer zutrifft. :!: HINWEIS - @Domain.tld ist der Standard-Footer für diese Domäne! Beispiele: * user@example.com - E-Mail-Adresse * @example.com - Standard für diese Domäne, falls keine E-Mail-Adresse trifft. * @sub.example.com - Standard für diese Unter-Domäne, falls keine E-Mail-Adresse trifft. Nachfolgende Besonderheit gibt es bei dem * Parameter: text und * Parameter: html Zu besseren Lesbarkeit bei der Konfiguration der Parameter text und html kann z.B. jeweils ein * \ (backslash) am Ende einer Zeile angebracht werden. Darüber hinaus können nachfolgende weitere „Escape“ Sequenzen genutzt werden, um die Lesbarkeit bei der Konfiguration des jeweiligen Footer zu erhöhen. ^ Escape sequence ^ Beschreibung ^ | \t | Fügen an dieser Stelle einen Tabulator in den Text ein. | | \b | Fügen an dieser Stelle einen „Backspace“ in den Text ein. | | \n | IFügen an dieser Stelle eine neue Zeile in den Text ein. | | \r | Fügen an dieser Stelle einen Wagenrücklaufcode in den Text ein. | | \f | Fügen an dieser Stelle einen Formfeed in den Text ein. | | \' | Fügen an dieser Stelle ein einfaches Anführungszeichen in den Text ein. | | \„ | Fügen an dieser Stelle ein doppeltes Anführungszeichen in den Text ein. | | \\ | Fügen an dieser Stelle ein „Backslash“-Zeichen in den Text ein. | Beispiele: text/plain <code ini> – \ \n\ \n\ ——————————————–\n\ Footer default\n\ ——————————————–\n\ \n </code> text/html <code html> <br\>\n\ <br\>\n\ <span style=\“font-family:monospace; color:#000000\„>–&nbsp;</span><br>\n\ <br\>\n\ <span style=\“font-family:monospace; color:#000000\„>Footer default</span><br>\n\ <br\>\n\n </code> Abschliessend als Beispiel eine komplette Konfigurationsdatei: <code bash> ################################################################################ # JMilter Server for connections from an MTA to add a footer. # # JMilter is an Open Source implementation of the Sendmail milter protocol, for # implementing milters in Java that can interface with the Sendmail or Postfix # MTA. # # Java implementation of the Sendmail Milter protocol based on the project of # org.nightcode.jmilter from dmitry@nightcode.org. # # @author Klaus Tachtler. klaus@tachtler.net # # Homepage : http://www.tachtler.net # # Licensed under the Apache License, Version 2.0 (the „License“); you # may not use this file except in compliance with the License. You may # obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an „AS IS“ BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. See the License for the specific language governing # permissions and limitations under the License.. # # Copyright © 2022 Klaus Tachtler. All Rights Reserved. # Klaus Tachtler. klaus@tachtler.net # http://www.tachtler.net # ################################################################################ ################################################################################ # [server] section - Start configuration for the server. ################################################################################ [server] # IPv4 address or hostname to listen. listen = 127.0.0.1 # Port to listen. port = 10099 ################################################################################ # [footer] section - Configuration of the footers to be used. ################################################################################ # # !IMPORTANT: Every section # a.) must start with the word: footer # b.) must have an unique name # # EXAMPLES: [footer: default], [footer: localpart@domain.tld], [footer: 001] # # ============================================================================== # # from field: If inside a [footer]-section the from field was defined with the # following syntax: @domain.tld → NO localpart! ← # this will be used as DEFAULT for the domain, if no email address # will match! # # EXAMPLE: from = @example.com # # ============================================================================== # # text/html : For a better configuration view for the text and html fields, it's # possible to use a single \ (backslash) at the end of the line! # # EXAMPLE: text = – \ # first word \ # second word \ # last word. # # SAME AS: text = – first word second word last word. # # ============================================================================== # # escape's : Some escape sequences can be used, for more well formatted output! # Escape sequences description: # # \t Insert a tab in the text at this point. # \b Insert a backspace in the text at this point. # \n Insert a newline in the text at this point. # \r Insert a carriage return in the text at this point. # \f Insert a formfeed in the text at this point. # \' Insert a single quote character in the text at this point. # \“ Insert a double quote character in the text at this point. #
Insert a backslash character in the text at this point. # ################################################################################ [footer: @example.com] # Enable this footer. enabled = true # Email „mail from:“ for generating the footer. from = @example.com # Footer for text/plain. text = – \ \n\ \n\ ——————————————–\n\ Footer default\n\ ——————————————–\n\ \n # Footer for text/html. html = <br\>\n\ <br\>\n\ <span style=\„font-family:monospace; color:#000000\“>–&nbsp;</span><br>\n\ <br\>\n\ <span style=\„font-family:monospace; color:#000000\“>Footer default</span><br>\n\ <br\>\n\n ################################################################################ [footer: user@example.com] # Enable this footer. enabled = true # Email „mail from:“ for generating the footer. from = user@example.com # Footer for text/plain. text = – \n\n——————————————–\nFooter user\n——————————————–\n\n # Footer for text/html. html = <br\>\n<br\>\n<span style=\„font-family:monospace; color:#000000\“>–&nbsp;</span><br>\n<br\>\n<span style=\„font-family:monospace; color:#000000\“>Footer user</span><br>\n<br\>\n\n ################################################################################ </code> ===== footerMilter: Erster Start ===== Der FooterMilter-Dienst/Daemon kann mit nachfolgendem Befehle gestartet werden: <code> # systemctl start footermilter.service </code> Mit nachfolgendem Befehl kann der Status des FooterMilter-Dienst/Daemon abgefragt werden: <code> # systemctl status footermilter.service ● footermilter.service - FooterMilter Java Service Loaded: loaded (/usr/lib/systemd/system/footermilter.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2022-04-21 19:46:28 CEST; 55min ago Main PID: 4198 (java) CGroup: /system.slice/footermilter.service └─4198 /usr/bin/java -jar FooterMilter.jar -c footermilter.ini Apr 21 19:46:28 server70.idmz.tachtler.net systemd[1]: Stopped FooterMilter J… Apr 21 19:46:28 server70.idmz.tachtler.net systemd[1]: Started FooterMilter J… Apr 21 19:46:30 server70.idmz.tachtler.net java[4198]: Apr 21, 2022 7:46:30 P… Apr 21 19:46:30 server70.idmz.tachtler.net java[4198]: INFO: [MilterGatewayMa… Hint: Some lines were ellipsized, use -l to show in full. </code> Nachfolgende Abfrage zeigt, auf welcher IPv4-Adresse und Port der lauscht: <code> # netstat -tulpen | grep java tcp 0 0 192.168.0.70:10099 0.0.0.0:* LISTEN 0 56485375 12118/java </code> * Konfiguriert wurde hier das Lauschen auf der IPv4-Adresse 192.168.0.70 und Port 10099 ===== Konfiguration: Postfix ===== Nachfolgende Konfigurationen müssen mindestens durchgeführt werden, um aus Postfix heraus den FooterMilter-Dienst/Daemon ansprechen zu können. :!: WICHTIG - Bitte immer VOR z.B. DKIM einbinden, da sonst die SIGNATUR kaputt geht! ==== /etc/postfix/main.cf ==== Nachfolgende Änderung muss an der Postfix-Konfigurationsdatei * /etc/postfix/main.cf durchgeführt werden: (Nur relevanter Ausschnitt): <code ini> # ——————————————————————————– # New - http://www.postfix.org/MILTER_README.html # MILTER CONFIGURATIONS # ——————————————————————————– # FooterMilter (footer_milter) footer_milter = inet:192.168.0.70:10099 </code> ==== /etc/postfix/master.cf ==== Nachfolgende Änderung muss an der Postfix-Konfigurationsdatei * /etc/postfix/master.cf durchgeführt werden: (Nur relevanter Ausschnitt): <code ini> # # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: „man 5 master“). # # Do not forget to execute „postfix reload“ after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - n - - smtpd # FooterMilter -o smtpd_milters=${footer_milter} </code> ===== Ergebnisse ===== Nachfolgende Ergebnisse verdeutlichen, wie die Veränderungen jeweils durchgeführt werden. ==== E-Mail: multipart (text/plain & text/html) ==== Nachfolgend die E-Mail im Editor vor dem Absenden, hier z.B. Mozilla Thunderbird: FooterMilter - Test E-Mail - multipart (text/plain & text/html) und der dazugehörige Quelltext der empfangenen E-Mail (Nur header und body der E-Mail): <code bash> To: klaus@example.com From: „Klaus Tachtler (127.0.0.1)“ klaus@example.com Subject: Test email - multipart (text/plain and test/html) Message-ID: 719f9aff-e1f5-5b2e-dea9-113b201b3783@example.com Date: Sat, 1 Dec 2018 09:28:08 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary=„————6CC6B6965C0013F5ACCB0379“ Content-Language: en-US X-FooterMilter-Modified: Mail body modified (using footer) by mx.example.com for klaus@example.com This is a multi-part message in MIME format. ————–6CC6B6965C0013F5ACCB0379 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hello, this is a test email. Greetings Klaus. – ——————————————– Footer user ——————————————– ————–6CC6B6965C0013F5ACCB0379 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 7bit <html> <head> <meta http-equiv=„content-type“ content=„text/html; charset=utf-8“> </head> <body text=„#000000“ bgcolor=„#FFFFFF“> <p>Hello,</p> <p>this is a <font color=„#009900“>test email</font>.</p> <p>Greetings<br> Klaus.<br> </p> <br> <br <span style=„font-family:monospace; color:#000000“>–&nbsp;</span><br> <br> <span style=„font-family:monospace; color:#000000“>Footer user</span><br> <br> </body> </html> ————–6CC6B6965C0013F5ACCB0379– </code> Und das anschließende Ergebnis beim Empfänger der E-Mail: FooterMilter - Test E-Mail - multipart (text/plain & text/html) - Ergebnis ==== E-Mail: text/plain ==== Nachfolgend die E-Mail im Editor vor dem Absenden, hier z.B. Mozilla Thunderbird: FooterMilter - Test E-Mail - text/plain und der dazugehörige Quelltext der empfangenen E-Mail (Nur header und body der E-Mail): <code bash> To: klaus@example.com From: „Klaus Tachtler (127.0.0.1)“ klaus@example.com Subject: Test email - text (text/plain) Message-ID: df683f65-3acb-e7fc-9dea-f948a612f526@example.com Date: Sat, 1 Dec 2018 09:33:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-FooterMilter-Modified: Mail body modified (using footer) by mx.example.com for klaus@example.com Hello, this is a test email. Greetings Klaus. – ——————————————– Footer user ——————————————– </code> Und das anschließende Ergebnis beim Empfänger der E-Mail: FooterMilter - Test E-Mail - text/plain - Ergebnis ==== E-Mail: text/html ==== Nachfolgend die E-Mail im Editor vor dem Absenden, hier z.B. Mozilla Thunderbird: FooterMilter - Test E-Mail - text/html und der dazugehörige Quelltext der empfangenen E-Mail (Nur header und body der E-Mail): <code bash> To: klaus@example.com From: „Klaus Tachtler (127.0.0.1)“ klaus@example.com Subject: Test email - text (text/html) Message-ID: 44895c01-179a-2f83-99ca-2945e5358812@example.com Date: Sat, 1 Dec 2018 09:37:38 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: text/html; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-FooterMilter-Modified: Mail body modified (using footer) by mx.example.com for klaus@example.com <html> <head> <meta http-equiv=„content-type“ content=„text/html; charset=utf-8“> </head> <body text=„#000000“ bgcolor=„#FFFFFF“> <p>Hello, <br> <br> this is a <font color=„#009900“>test email</font>. <br> <br> Greetings <br> Klaus. </p> <br> <br> <span style=„font-family:monospace; color:#000000“>–&nbsp;</span><br> <br> <span style=„font-family:monospace; color:#000000“>Footer user</span><br> <br> </body> </html> </code> Und das anschließende Ergebnis beim Empfänger der E-Mail: FooterMilter - Test E-Mail - text/html - Ergebnis

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/postfix_centos_7_-_footermilter_einsetzen_footermilter.1650567394.txt.gz · Zuletzt geändert: 2022/04/21 20:56 von klaus