Bis auf die Tatsache, dass sich mein Thunderbird seltsam verhält (Fehlermeldung & sofortige Speicherung in gesendeten Objekten⁈), wenn der Postfix dahinter aufgrund von Fehlern nicht erreichbar ist, ist besonders das XCLIENT-Feature für dovecot-submissiond sehr praktisch.
220 example.net ESMTP Postfix
EHLO example.net
250-example.net
[…]
250-XCLIENT NAME ADDR PROTO HELO REVERSE_NAME PORT LOGIN DESTADDR DESTPORT
[…]
XCLIENT ADDR=IPV6:2001:db8::1 PORT=54321 LOGIN=username
220 example.net ESMTP Postfix
[…]
Dadurch funktionieren sogar Spielereien wie smtpd_sasl_authenticated_header=yes noch. (Den Header empfehle ich nicht, war nur ein Test!)
Sogar reject_sender_login_mismatch/smtpd_sender_login_maps scheint noch zu laufen. Dafür muss man allerdings tricksen, da Postfix ohne smtpd_sasl_auth_enable=yes trotz XCLIENT nicht weitermachen möchte. Könnte man eigentlich als Bug melden…
Beim Empfänger sieht das dann z.B. so aus: (IP-Stripping kommt in der finalen Konfiguration natürlich noch!)
Received: from example.net (localhost [IPV6:2001:db8::1])
(Authenticated sender: username)
by example.net (Postfix) with ESMTPA id A7508227D3
for <foobar@example.org>; Thu, 26 Jul 2018 18:58:16 +0200 (CEST)
Received: from [IPv6:2001:db8::1] ([2001:db8::1])
by example.net with ESMTPSA
id 1ZuXJqj9WVvJTgAAqAMVow
(envelope-from <username@example.net>)
for <foobar@example.org>; Thu, 26 Jul 2018 18:58:16 +0200
Einziger Schönheitsfehler: Derzeit gibt es keine Möglichkeit, Details über den verwendeten TLS-Cipher im Header zu hinterlegen. Dovecot selbst kann es noch nicht und Postfix weiß nichts davon, was Dovecot vorher ausgehandelt hat.
Wenn das stabil läuft, sehe ich trotzdem keinen Grund mehr, für Postfix mehr als Port 25 nach außen zu öffnen.