EXIM4 Attachment umbenennen

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
2quarks
Beiträge: 3
Registriert: 08.10.2009 16:35:04
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Pliezhausen

EXIM4 Attachment umbenennen

Beitrag von 2quarks » 03.02.2022 13:13:14

Hallo Forum,

das Problem ist dass vermehrt Anhänge mit Sonderzeichen in der Benennung eingehen. Diese werden von einigen Mailclients nicht richtig verarbeitet.
Bsp: Die neueren Thunderbird’s, bei Einstellung öffnen mit Bsp DC-Acrobatreader liefern einen Fehler. Grund: Aus Bsp: "New Invoice: NIV021900.pdf" wird beim temporären speichern filename="New Invoice NIV021900.pdf" (Doppelpunkte werden entfernt). Daher findet dann der Reader die Datei nicht.

Nun möchte ich gerne dass EXIM alle Mails die Dateianhänge mit Sonderzeichen haben diese löscht oder durch ein Underline ersetzt.

Im Mail schaut es z.Bsp. so aus:
Content-Type: application/pdf; name="New Invoice: NIV021900.pdf"
Content-Disposition: attachment; filename="New Invoice: NIV021900.pdf"
Content-Transfer-Encoding: base64

Mein Gedankenansatz war über einen Filter welcher im „$mime_filename“ nach Sonderzeichen sucht und diese dann ersetzt.
Dann den orginalen „Content-Disposition:“ zur Sicherheit in ein z.Bsp. „Content-Disposition-Orginal:“ speichert und den „Content-Disposition:“ neu schreibt.

Könnte man die Änderung des Dateiname mit folgenden realisieren?
${sg{<subject>}{<regex>}{<replacement>}}
oder
${utf8clean:<string>}

Nun scheitert es bei mir an der Umsetzung, Zusammen&Einbau in die Konfig.
Hat jemand etwas ähnliches schon am laufen oder ist so fitt mir da zu helfen, einen Ansatz zu geben?

debmatrix
Beiträge: 63
Registriert: 12.06.2023 07:48:06

Re: EXIM4 Attachment umbenennen

Beitrag von debmatrix » 21.12.2023 20:47:21

Eine lediglich schwierig aus dem Kopf zurechtgedachte Antwort um Sonderzeichen durch ein Unterstrich zu ersetzen:

Öffne die Exim-Konfigurationsdatei. Je nach System kann dies in unterschiedlichen Dateien geschehen, aber normalerweise befindet sich die Konfigurationsdatei unter "/etc/exim/exim.conf" oder "/etc/exim4/exim.conf".

Suche nach der Sektion "acl_smtp_mime" in der Konfigurationsdatei. Diese Sektion enthält die Regeln zum Überprüfen von MIME-Informationen in den E-Mails.

Füge folgende Zeilen innerhalb der "acl_smtp_mime" Sektion hinzu:

Code: Alles auswählen

warn    condition = ${if match{$h_mime_filename:}{[^\w.-]}{1}{0}}
        add_header = X-Filename-Warning: Special characters in attachment filename detected
        add_header = Content-Disposition: attachment; filename="${sg{${lc:$h_mime_filename:}}}{[^\w.-]}{_}"
Speichere die Änderungen an der Konfigurationsdatei und starte den Exim-Dienst neu, damit die Änderungen wirksam werden. Dies kann je nach System mit dem Befehl "service exim restart" oder "systemctl restart exim" durchgeführt werden.


Nachdem du diese Änderungen vorgenommen hast, überprüft Exim jede eingehende E-Mail auf Dateianhänge mit Sonderzeichen in der Dateinamen. Wenn ein solcher Dateianhang gefunden wird, wird der Dateiname durch ein Unterstrich ersetzt und die E-Mail wird trotzdem zugestellt. Eine Warnung wird jedoch im Header der E-Mail hinzugefügt, um auf das Ersetzen hinzuweisen.

Vorsicht: Überprüfe natürlich genau ob die Änderung an der Konfigurationsdatei am Ende fehlerfrei tut was sie soll.

Antworten