From 3a7af8a57ca4a7e4b4ea20d2952d0a5595ca22cb Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 12 Jan 2022 20:06:58 +0100 Subject: [PATCH] Check for qmail / Postfix in first added received header only --- FAQ.md | 4 ++-- app/src/main/java/eu/faircode/email/HtmlHelper.java | 2 +- .../main/java/eu/faircode/email/MessageHelper.java | 13 +++++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/FAQ.md b/FAQ.md index 10e3bf5419..2084606235 100644 --- a/FAQ.md +++ b/FAQ.md @@ -4479,8 +4479,8 @@ To show shields, the option *Show authentication status indicator* in the displa A message will be consired safely transported if *every* [Received](https://datatracker.ietf.org/doc/html/rfc2821#section-4.4) header: * contains the phrase 'using TLS', 'via HTTP', 'version=TLS' -* contains the phrase '(qmail invoked by uid )' -* contains the phrase '(Postfix, from userid nnn)' +* contains the phrase '(qmail invoked by uid )' in the first added header +* contains the phrase '(Postfix, from userid nnn)' in the first added header * has a *by* with a local address * has a *by* xxx.google.com * has a *from* with a local address diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 4ab739816a..80f8be8c23 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -2471,7 +2471,7 @@ public class HtmlHelper { j++; } - Boolean tls = MessageHelper.isTLS(h); + Boolean tls = MessageHelper.isTLS(h, i == received.length - 1); ssb.append(" TLS="); int t = ssb.length(); ssb.append(tls == null ? "?" : Boolean.toString(tls)); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index eb223e7b19..269eaf5bbc 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -2076,10 +2076,10 @@ public class MessageHelper { // First header is last added header Log.i("======="); - for (String r : received) { - String header = MimeUtility.unfold(r); + for (int i = 0; i < received.length; i++) { + String header = MimeUtility.unfold(received[i]); Log.i("--- header=" + header); - Boolean tls = isTLS(header); + Boolean tls = isTLS(header, i == received.length - 1); if (!Boolean.TRUE.equals(tls)) return tls; } @@ -2087,7 +2087,7 @@ public class MessageHelper { return true; } - static Boolean isTLS(String header) { + static Boolean isTLS(String header, boolean first) { // Strip date int semi = header.lastIndexOf(';'); if (semi > 0) @@ -2102,8 +2102,9 @@ public class MessageHelper { // (qmail nnn invoked by uid nnn); 1 Jan 2022 00:00:00 -0000 // by (Postfix, from userid nnn) - if (header.matches(".*\\(qmail \\d+ invoked by uid \\d+\\).*") || - header.matches(".*\\(Postfix, from userid \\d+\\).*")) { + if (first && + (header.matches(".*\\(qmail \\d+ invoked by uid \\d+\\).*") || + header.matches(".*\\(Postfix, from userid \\d+\\).*"))) { Log.i("--- phrase"); return true; }