View Issue Details

IDProjectCategoryView StatusLast Update
0001385FakturamaAllgemein (General)public2026-09-04 07:51
Reporterclaude Assigned Torheydenr  
PrioritynormalSeverityminorReproducibilityN/A
Status assignedResolutionopen 
Product Version2.2.0 
Target Versiontasks_from_forum 
Summary0001385: MailService: Zertifikatsprüfung soll ausgehebelt werden, SMTP-Einstellungen landen in den System-Properties
Description

Der verschlüsselte Versand selbst ist in Ordnung: über PREFERENCES_MAIL_USESSL wird zwischen STARTTLS (Transport "smtp", mail.smtp.starttls.enable) und implizitem TLS (Transport "smtps", mail.smtp.ssl.enable) umgeschaltet. Beim Durchsehen sind aber drei Punkte in derselben Methode aufgefallen.

1) Zertifikatsprüfung

props.put("mail.smtp.ssl.trust", '*');

Gemeint ist offenbar "allen Zertifikaten vertrauen". Falls das greift, ist die Zertifikatsprüfung ausgehebelt und die TLS-Verbindung gegen Man-in-the-Middle nicht mehr geschützt - der Verschlüsselung bliebe dann nur noch die Wirkung gegen passives Mitlesen.

Vermutlich greift es allerdings gar nicht: '*' ist ein char, kein String. Angus Mail liest diese Eigenschaft über Properties.getProperty(), das bei einem Nicht-String-Wert null liefert. Nachgemessen ist das nicht.

Vorschlag: Zeile entfernen. Wird ein Vertrauensanker für selbstsignierte Zertifikate gebraucht, gehört dort eine echte Host-Liste als String hin, idealerweise aus den Einstellungen und nicht fest verdrahtet.

2) System-Properties werden verändert

final Properties props = System.getProperties();
props.put(...Host, Auth, StartTLS, SSL, Port, ssl.trust...);

Die SMTP-Einstellungen werden in die JVM-weiten System-Properties geschrieben und bleiben dort auch nach dem Versand stehen. Sie wirken damit auf die gesamte Anwendung und überdauern jeden weiteren Sendevorgang. Sauberer wäre ein frisches new Properties(), das nur an die Session übergeben wird.

3) Irreführende Port-Eigenschaft

props.put(MailServiceConstants.MAIL_SMTP_PORT, MailServiceConstants.MAIL_SMTP_DEFAULT_PORT);  // 587

Hier wird immer der Vorgabeport gesetzt, während connectTransport() den tatsächlich eingestellten Port aus MailSettings.getPort() an transport.connect() übergibt. Folgenlos, weil der Aufrufparameter gewinnt, aber beim Lesen und bei der Fehlersuche irreführend.

Der ursprüngliche Forumsbeitrag zum Thema ("EMAIL nur unverschlüsselt/ungesichert", Januar 2025) ist damit erledigt und wurde nicht als eigenes Ticket erfasst.

Additional Information

Aufgefallen bei der Durchsicht des aktuellen Codes im Zuge der Forum-Auswertung. Fundstelle: org.fakturama.connectors/src/org/fakturama/connectors/mail/MailService.java, Methode sendMail()

Tagstasks_from_forum

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2026-09-02 10:04 claude New Issue
2026-09-02 10:04 claude Tag Attached: tasks_from_forum
2026-09-04 07:32 rheydenr Status new => assigned
2026-09-04 07:32 rheydenr Assigned To => rheydenr
2026-09-04 07:49 rheydenr Target Version => tasks_from_forum
2026-09-04 07:51 rheydenr Product Version => 2.2.0