Problem beim senden von emails mit Umlauten im Dateianhang

Futurematic

Member
Jul 19, 2021
6
1
23
58
Hallo,
wir haben ein Problem beim senden von emails mit Umlauten im Dateianhang.
Dieses Problem ist nach dem Upgrade von PMG 7 auf 9.04 zum ersten mal aufgetreten.
User sendet email aus Kopano heraus mit Dateianhang mit Umlaut, z.B. 'ä.pdf'.
Diese mail verlässt pmg nicht sonder landet in der Queueue mit folgender Fehlermeldung (aus syslog)

Feb 25 10:22:32 pmg postfix/lmtp[9443]: 56F3CE045F: to=<mailclient@company.de>, relay=127.0.0.1[127.0.0.1]:10023, delay=168055, delays=168055/0.02/0.05/0.11, dsn=4.4.0, status=deferred (host 127.0.0.1[127.0.0.1] said: 451 4.4.0 detected undelivered mail to <mailclient@company.de> (in reply to end of DATA command))

Per default wird erst nach 4 Stunden der Sender benachrichtigt das seine mail nicht gesendet wurde.
Gibt es eine Möglichkeit den Sender umgehend zu benachrichtigen ?

Weiterer Test zeigt das eine email mit obigen Anhang, gesendet aus Thunderbird Client, dieses Problem nicht hat.
 
Last edited:

Ab Postfix 3.5.x ist der Parameter smtputf8_enable standardmäßig auf "yes" gesetzt. Ätere Versionen (≤ 3.1) auf no.

Das führt zu zwei Symptomen:

1. Ausgehende Mails werden rejected:
Mit smtputf8_enable = yes verlangt Postfix, dass nicht-ASCII-Adressinformationen in UTF-8 kodiert sind, und lehnt andere Kodierungen wie ISO-8859 ab. Viele Gegenstellen (Exchange, ältere MTAs) unterstützen SMTPUTF8 aber nicht,
--> Fehlermeldung: SMTPUTF8 is required, but was not offered by host.

b) Umlaut-Anhängernamen werden korrupt:
Das eigentliche MIME-Problem bei Dateinamen mit "öäü" liegt in der Kodierung. RFC 2047 Encoding ist eigentlich nur für Text in Subject-Headers gedacht, nicht für Attachment-Dateinamen. Dateinamen-Encoding ist in RFC 2231 spezifiziert, wird aber nicht überall korrekt implementiert.

Code:
# /etc/postfix/main.cf

# SMTPUTF8 deaktivieren, wenn Gegenstellen kein UTF8 sprechen:
smtputf8_enable = no

# Oder: nur für bestimmte Klassen aktivieren (z.B. nur lokale sendmail-Aufrufe):
smtputf8_enable = yes
smtputf8_autodetect_classes = sendmail
```

Mit `smtputf8_enable = no` behandelt Postfix E-Mails mit Nicht-ASCII in Adress-Localparts wie gehabt.
die überwiegende Mehrheit der E-Mail-Software kommt damit zurecht, auch wenn Pre-SMTPUTF8-Standards das formal nicht abdecken.

---

### 4. Wenn das Problem beim Sender liegt (z.B. PHP-App, Python, etc.)

Der Dateiname muss korrekt RFC 2231-kodiert werden:
```
Content-Disposition: attachment; filename*=UTF-8''Sch%C3%B6ne%20Datei.pdf
```

oder RFC 2047-Fallback (breiter kompatibel):
```
Content-Disposition: attachment; filename="=?UTF-8?B?U2Now7ZuZSBEYXRlaS5wZGY=?="


Für Scripting verwende mutt statt sendmail, oder btx_lib_mail aber dafür gibt es vermutlich hunderte kleine Mailer ....