Kopie aller ausgehenden Emails

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Kopie aller ausgehenden Emails

Beitrag von scientific » 28.08.2017 16:56:07

Hi!

Ich suche eine Möglichkeit, alle ausgehenden Emails in ein Archiv kopieren zu können.
Für die eingehenden klappt das mit einem sogenannten shadow-transport schon bestens.
Nur, diese shadow-transports gibt es nicht für transports zu einem smarthost...

Lt. Anleitungen wäre für ausgehende Mails ein sogenannter system_filter einzusetzen.

Das funktioniert prinzipiell auch.

Jetzt kommt aber ein großes ABER...

Ich habe mir eine sehr spezielle Konfiguration gebaut, welche den einsatz mehrerer Smarthosts in Abhängigkeit der from-Adresse erlaubt.

Da ich bei gmail zwei Accounts, bei gmx einen mit mehreren Alias, einen Jobaccount, eine Mailserver meiner eigenen Domain mit einer zweitdomain (sci@erstwdomain.example und sci@zweitedomain.example sind der identische Mailaccount) habe, und ich in z. B. Thunderbird nur einen einzigen Mailaccount angelegt habe, der aber alle diese Mailadressen als Absenderadressen erlaubt, funktioniert das mit dem system_filter nicht.
Die beispiele, die ich gefunden habe, filtern alle nach "der" domain des Mailservers im from.
Kommt die im Absender vor, wird der Filter aktiv und legt eine Kopie ins Archiv. Kommt sie nicht vor, kein Archiv (also eingehende Emails spart der Filter aus, denn die übernimmt der shadow_transport aus local_delivery.)

Zusatzaufgabe ist noch, dass ich von einer eigenen Domain zur anderen Domain auch emails schicke. Z. B. Zur Kontrolle, ob eine Aussendung auch wirklich rausgegangen ist.
Diese soll dann einmal beim Versenden ins output-Archiv, und beim Empfang ins input-Archiv.

Der system_filter greift vor allen anderen Routern. Das bedeutet dann, dass ein auf sci@domain2.example eingehendes Mail mit from:sci@domain1.example sowohl im input, als auch output-Archiv landet. Damit ist es zweimal im output-archiv...

Außerdem soll das Mail nur ins Output-Archiv, wenn es erfolgreich per smtp beim smarthost abgeliefert wurde...

Ich vermute, ich benötige nach meinem multiaccount_multiuser router noch einen fürs output-archiv. Aber wie binde ich so einen ein? Wie hat so ein router auszusehen?

Hat hier zufällig jemand eine Idee oder überhaupt Ahnung?

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
HZB
Beiträge: 490
Registriert: 22.10.2003 11:52:15
Wohnort: Wien

Re: Kopie aller ausgehenden Emails

Beitrag von HZB » 30.08.2017 18:16:27

Nicht gerade sexy aber eine Möglichkeit:

https://support.mozilla.org/en-US/questions/1067634

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Kopie aller ausgehenden Emails

Beitrag von scientific » 30.08.2017 18:26:17

Das ist nicht der Weg, den ich Suche.

Das muss clientunabhängig am Server stattfinden. Am Server. Und nur Emails, die über einen der Smarthosts rausgehen...
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
HZB
Beiträge: 490
Registriert: 22.10.2003 11:52:15
Wohnort: Wien

Re: Kopie aller ausgehenden Emails

Beitrag von HZB » 30.08.2017 18:55:22

Achso sorry. Ich hab Thunderbird gelesen und dachte das reicht.

Bei Postfix gibt es die sender_bcc_maps bzw recipient_bcc_maps

http://www.postfix.org/postconf.5.html#sender_bcc_maps

Das sollte es dann serverseitig sein.
Allerdings hab ich das noch nie gemacht. Wegen Datenschutz wärs

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Kopie aller ausgehenden Emails

Beitrag von scientific » 30.08.2017 20:12:53

Nun... Postfix bringt mir bei exim nix.
Und es geht mir mehr um ein Konzept, wie ich ein Mailarchiv aufbauen kann, damit es im Geschäftsumfeld den Archivierungsvorschriften entspricht...

Ich möchts nur wissen ob, und wie es geht, damit ichs dann bei Gelegenheit meinem Arbeitgeber vorschlagen kann...
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
HZB
Beiträge: 490
Registriert: 22.10.2003 11:52:15
Wohnort: Wien

Re: Kopie aller ausgehenden Emails

Beitrag von HZB » 30.08.2017 20:18:49


scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Kopie aller ausgehenden Emails

Beitrag von scientific » 30.08.2017 20:56:50

Wenn du mein Eingangsposting genau gelesen hättest, wär dir aufgefallen, dass ich diese Lösung schon entdeckt habe, aber dass sie bedingt durch mein Setup mit verschiedenen Smarthosts und mehreren unterschiedlichen Email-Accounts bei unterschiedlichen Providern (also sender_domains) nicht funktioniert...

Ich hab sehr detailreich erklärt, warum ein Systemfilter bei mir nicht geht... Warum der nicht gut ist.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
HZB
Beiträge: 490
Registriert: 22.10.2003 11:52:15
Wohnort: Wien

Re: Kopie aller ausgehenden Emails

Beitrag von HZB » 30.08.2017 22:15:37

Dann versteh ich wohl das Setup nicht ganz. Ich dachte Du hast einen Mailaccount im Thunderbird für all Deine Mailadressen. Dieser Account hat Deinen Exim als Ausgangsserver definiert. Und der Exim versendet dann an die Smarthosts.

Code: Alles auswählen

if $header_from: contains "@senderdomain.com"
then
unseen deliver "other@emailaddress"
endif 
Sollte das Problem mit der Mailserverdomain lösen.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Kopie aller ausgehenden Emails

Beitrag von scientific » 30.08.2017 23:04:13

Scheint so...

Ich versuchs noch einmal.

Ich habe bei GMX den Account ich@gmx.example.
Dieser Account hat den Alias werbinich@fundomain.invalid

Dann habe ich bei GMAIL den Account genau.ich@gmail.example
Und einen zweiten Account inetwa.ich@gmail.example

Dann habe ich bei Mailprovider "Superprovider" den Account mein.name@superprovider.example
Dieser Account hat noch den Alias office@superprovider.example
Und ich habe noch eine zweite Domain, welche aber die selben Mailaccounts nutzt nur mit der zweiten Domain
office@zweitdomain.invalid und mein.name@zweitdomain.invalid

Und dann habe ich noch den Account bei meinem Arbeitgeber vorname.nachname@arbeitgeber.invalid

Ich möchte all diese Accounts abrufen und in EINEN Mailaccount auf meinem eigenen Mailserver - nämlich scientific@localhost - zustellen. fetchmail holt also regelmäßig alle Emails aus allen diesen Accounts ab und leitet sie mit "is scientific here" an exim4 ab, der die Mails dann an Dovecot zur Weiterverarbeitung weitergibt (z.B. Sievefilterung)
Exim4 hat jetzt die Möglichkeit von diesen Emails im local_delivery-Transport (also in meinem Falle der dovecot_transport) einen sogenannten "shadow_transport" zusätzlich einzufügen, der eine Kopie der Nachricht direkt in einen definierten Ordner im IMAP-Verzeichnis ablegt. Alle eingehenden Emails werden also direkt ins Archiv kopiert.

Die ausgehenden Emails sind aber nicht ganz so trivial zu behandeln.
Ich hab mir dazu Router, ACL und Transport aufgebohrt "router/200_exim-config_primary", "transport/30_exim4-config_remote_smtp" und auch noch die ACLs...
Diese sehen in einer Konfigurationsdatei nach, ob zur Absenderadresse ein Smarthost eingetragen ist. Ist das der Fall, nimmt exim4 die ebenfalls hinterlegten Zugangsdaten zur Authentifizierung für diesen Smarthost her.
(Es erfolgt auch noch eine Prüfung ob der per TLS-geschützter Verbindung und per LOGIN oder PLAIN am SMTP-Server authentifizierte User diese Absendeadresse überhaupt nutzen darf.)

Als Smarthost verwende ich die SMTP-Server der verschiedenen Mailprovider. Das heißt, exim4 liefert die Emails dort so ab, als ob ich sie von separat konfigurierten Email-Accounts in Thunderbird aus abliefern würde.
Per Default kann man in exim ja zu einem internen Account nur einen externen Account definieren.
Und per Default kann man z.B. bei einem Smarthost nur einmal Authentifizierungsinfos hinterlegen.
Das bedeutet, ich kann zwar 10 verschiedene GMX-Accounts haben und per fetchmail abrufen, aber versenden kann ich sie nur mit einem einzigen Usernamen.

In meiner Konfigurations(-Erweiterung) kann ich zu jeder verwendeten externen Email-Adresse einen separaten Smarthost mit dazupassenden Credentials definieren. (Und eine Liste an internen Usern, welche diesen Account nutzen dürfen)

Da ist also nix mit Filtern auf "@meinedomain.example". Ich müsste auf jede einzelne gesamte Email-Adresse filtern, die im Config-File für den smarthost-Versand definiert ist, ob diese im from: steht, und wenn ja, den von dir zitierten (und von mir natürlich auch schon entdeckten) system_filter werken lassen, um dieses Mail in aus Ausgangs-Archiv zu kopieren.
Was mache ich aber dann mit Emails, die von einer meiner "externen Mailadressen" an eine andere meiner eigenen externen Mailadressen geht? (Z.B. als Kontrolladresse, ob ein Email an mehrere Empfänger auch wirklich rausgegangen ist). Dieses Email landet beim Versenden im Ausgangs-Archiv - so wie es soll. inetwa.ich@gmail.example ist ja im From-Feld.
Dann rufe ich die Emails ab, dieses Email kommt über den shadow_transport ins Eingangs-Archiv.
Bevor die Router aber überhaupt ausgeführt werden, kommt ein systemd_filter zum Einsatz - sofern er definiert ist, was er ja bei mir dann ist.
Dieser systemfilter checkt, ob die from-Adresse in meinem Config-File für den Smarthostversand enthalten ist. Ist es! -> Das email landet beim Eingang ein zweites Mal auch im Ausgangsfilter... Daher ist der Ansatz mit dem System_filter nicht brauchbar.

Warum mache ich das so kompliziert? Weil sich im Laufe der Jahre unzählige Email-Accounts bei mir angesammelt haben. In Thunderbird müsste ich für jeden Account einen eigenen Account definieren. Die Emails landen dann nur in den jeweiligen Accounts und allfällige zusammenhängende Konversationen über verschiedene Emailadressen hinweg sind dann in mehreren Konten aufgeteilt... Leider passiert das immer wieder, dass Zusammengehörige Emails an verschiedene mir gehörende Konten kommen.

Außerdem muss ich in Thunderbird bei meinem Setup nur einen einzigen Account mit Username, Passwort, IMAP- und SMTP-Server konfigurieren und habe Zugriff auf ALLE Emails von allen meinen externen Email-Accounts... in einer einzigen Ordnerstruktur in einem einzigen Thunderbird-Konto. Sieve-Filter brauche ich nur ein einziges Mal in einem Account zu definieren, Login-Credentials fürs Abholen sind ein einziges Mal in fetchmailrc und die zum Versenden in einer einzigen Datei nur einmal im exim4-Verzeichnis gespeichert.
Ich kann also auf einem neuen Rechner einen neuen Thunderbird starten, verbinde mich mit einem einzigen Email-Account mit einem Usernamen und einem Passwort auf meinem eigenen Mailserver und kann so alle meine Emails von allen meinen Accounts wieder lesen.
Will ich ein Email von einer der externen Adressen wegschicken (auch von den Alias-Adressen) sodass diese Adresse im From und Env-From steht, so lege ich in Thunderbird zu diesem einen Mailkonto bloß eine weitere Identität mit der entsprechenden Mail-Adresse an, und kann ohne zusätzliche Login-Credentials über Gmail, gmx, superprovider oder arbeitgeber.invalid meine Emails versenden.
Der Empfänger merkt gar nix, dass ich alle Accounts an einem Ort versammelt habe, und mir macht es das Leben viel viel Leichter.

... bis auf den Umstand, dass ich nicht einfach trivial mit einem system_filter ausgehende Emails in ein Archiv kopieren kann.
Denn das geht nicht, da ein shadow_transport wie bei local_delivery erlaubt und möglich ist, bei remote_delivery in exim4 nicht erlaubt ist. Und daher auch meine Frage hier, ob jemand noch eine Idee zu dem Thema hat.
Wenn es nicht geht, geht es halt nicht. Aber das dachte ich zuerst bei meinem Setup auch... und dann hab ich's doch geschafft :)

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten