Wenn Sie EuropeanMX sowohl für die Filterung eingehender als auch ausgehender E-Mails verwenden (mit Hilfe des Smarthost-Setups), wird die gesamte externe SMTP-Kommunikation automatisch als Teil der Domain archiviert, für die die Archivierung aktiviert ist. Allerdings leitet Postfix die interne Kommunikation nicht über den ausgehenden Smarthost weiter, daher wird die interne Kommunikation standardmäßig nicht archiviert.
Die interne Kommunikation über EuropeanMX zu archivieren ist jedoch recht einfach und kann mit wenigen Schritten aktiviert werden. Das Journaling-System ermöglicht es Postfix, automatisch eine Kopie der gesamten internen Kommunikation an eine externe E-Mail-Adresse zu senden. Solange Sie die externe E-Mail-Adresse mit EuropeanMX zur Archivierung eingerichtet haben, verarbeitet der EuropeanMX-Eingangsfilter die Nachricht und archiviert sie. Konfigurieren Sie die Zieladresse, an die die Journaling-Berichte geschickt werden, als Empfänger in der Zulassungsliste. D. h. für die empfangenen Nachrichten findet keine Filterung statt.
Es gibt zwei Möglichkeiten, das Journaling mit Postfix zu konfigurieren:
meinedomain.de, und Sie entscheiden sich für die Verwendung von europeanmxjournal@meinedomain.de. 12h66634-2fg6-8f49-bd81-3b7c11b692dc-meinedomain.de@mx1.europeanmx.eu. Bevor Sie das Journaling mit der globalen oder einer lokalen Journaling-Adresse einrichten, müssen Sie sicherstellen, dass die Archivierung in EuropeanMX aktiviert ist. Eine Anleitung zur Aktivierung finden Sie in unserem FAQ "Wie kann ich die Archivfunktion für meine Domain einrichten?".
Die Einrichtung des Journalings mit einer lokalen Journaling-Adresse erfolgt in drei Schritten:
Die folgende Konfiguration wurde auf Ubuntu 14.04.5 LTS getestet, andere Distributionen können andere Dateispeicherorte verwenden. Stellen Sie sicher, dass Ihre Postfix-Konfigurationsdateien in
/etc/postfix/ gespeichert sind.
Fügen Sie die folgenden Zeilen in die Postfix-Transporttabelle ein - z. B. /etc/postfix/transport - und ersetzen Sie die Platzhalterwerte durch die entsprechenden Werte für Ihre Einrichtung (Bitte entfernen Sie die spitzen Klammern):
<ma-journal-address@meinedomain.de> smtp:smtp.antispamcloud.com:587
<internal-journal-address@meinedomain.de> external-pipe
Um die Transportdatenbank zu erstellen, führen Sie den folgenden Befehl als root aus:
postmap /etc/posfix/transport
Stellen Sie sicher, dass die Zeile transport_map in /etc/postfix/main.cf so eingestellt ist, dass die Transport-Map-Datenbank verwendet wird:
transport_maps = hash:/etc/postfix/transport
Fügen Sie nun die folgenden Zeilen in /etc/postfix/master.cf ein (es ist erforderlich, dass die zweite Zeile eingerückt wird):
external-pipe unix - n n - - pipe
flags=DRhu user=dovecot:dovecot argv=/etc/postfix/journal.sh {-f $sender} {-j <external journal address>} {-d <yourdomain>}
Das Skript muss als Nicht-Root-Benutzer (in diesem Beispiel dovecot) und nicht als Postfix ausgeführt werden. Dies dient der Vermeidung potenzieller Gefahren durch Skriptinjektion.
Mit dem folgenden Skript erhalten Sie eine Grundlage für Ihr eigenes Skript. Bitte passen Sie es an Ihre eigene Umgebung an. Speichern Sie das Skript als etc/postfix/journal.sh (wenn Sie es an anderer Stelle speichern, müssen Sie die Datei master.cf anpassen, damit die Änderung berücksichtigt wird).
#!/bin/bash
################
#
# Takes three parameters: -f <the from address> -j <journaling address> -d <the local domain>
#
###############
while getopts f:d:j: option
do
case "${option}"
in
f) FROM_ADDRESS=${OPTARG# };;
j) JOURNAL_ADDRESS=${OPTARG# };;
d) LOCAL_DOMAIN=${OPTARG# };;
esac
done
TO_ADDRESS="unset"
TO_DOMAIN=
FROM_DOMAIN=
#Create a temp file
OUTFILE="$(mktemp)"
#Cleanup on errors
trap "rm -f $OUTFILE; exit 1" 0 1 2 3 13 15 # Exit, HUP, INT, QUIT, PIPE, TERM
#Write the email to temp file and also read it to find the to and from addresses
tee $OUTFILE |
{
while read -r LINE
do
if [[ "$TO_ADDRESS" == "unset" ]] ; then
#Read this line and see if it is the To: line, if it is then strip out the email address
THIS_LINE=`echo $LINE | grep -E "^(To:)" | grep -E -o "(\S)*@(\S)*" | sed 's/<//;s/>//'`
If the address hasn't already been captured, store it into TO_ADDRESS
if [[ $THIS_LINE ]] ; then
TO_ADDRESS=$THIS_LINE
break
fi
done
#Strip the domain from the to and from email addresses
TO_DOMAIN=$(echo $TO_ADDRESS | sed 's/.*@//')
FROM_DOMAIN=$(echo $FROM_ADDRESS | sed 's/.*@//')
#If the domains match then go ahead and send it to the journaling address
if [[ "$TO_DOMAIN" == "$LOCAL_DOMAIN" && "$LOCAL_DOMAIN" == "$FROM_DOMAIN" ]]; then
cat $OUTFILE | /usr/sbin/sendmail -f $FROM_ADDRESS -t $JOURNAL_ADDRESS
fi
}
#Cleanup
rm -f $OUTFILE
trap 0
exit $exit_status
Stellen Sie sicher, dass das Skript von der in
master.cf festgelegten BenutzerID ausgeführt werden kann.
Nachdem Sie die Schritte 1 - 3 durchgeführt haben, sollten Sie den Postfix neustarten.
Die globale Jounaladresse können Sie unter Archivierung > Status finden. Stellen Sie sicher, dass die Archivierung aktiviert ist.
Wenn die Adresse auf @MX-record-hostname endet, verwenden Sie bitte stattdessen @mx1.europeanmx.eu.
Bei den nachfolgenden Anweisungen gehen wir davon aus, dass Procmail noch nicht verwendet wird. Wenn Sie bereits Procmail einsetzen, beginnen Sie bitte mit Schritt 3.
Installieren Sie Procmail mit der Paketverwaltungslösung Ihrer Distribution, z. B:
sudo apt install procmailsudo yum install procmailBearbeiten Sie die Datei /etc/postfix/main.cf und fügen Sie die folgende Zeile hinzu:
mailbox_command = /usr/bin/procmail -a "$EXTENSION"
Bearbeiten Sie die Datei /etc/procmailrc und fügen Sie die folgende Zeile hinzu:
:0c:
To:\W?.*@(?<domain>.*)(?=(?:From: ?.*@(\k<domain>)))
!<12h66634-2fg6-8f49-bd81-3b7c11b692dc-meinedomain.de@mx1.europeanmx.eu>
$DEFAULT
Tauschen Sie 12h66634-2fg6-8f49-bd81-3b7c11b692dc-meinedomain.de@mx1.europeanmx.eu gegen Ihre globale Jounal-Adresse aus EuropeanMX aus.
Starten Sie Postfix neu.
sudo postfix reload
WICHTIG: Die auf dieser Seite beschriebenen Einstellungen haben sich in unserer Testumgebung bewährt, sollten aber in Ihrer eigenen Konfiguration überprüft werden.