diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index a0a0e39653..fc4bb35ab4 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -3376,18 +3376,8 @@ class Core { message.receipt_request = helper.getReceiptRequested(); message.receipt_to = helper.getReceiptTo(); message.bimi_selector = helper.getBimiSelector(); - - if (native_dkim && !BuildConfig.PLAY_STORE_RELEASE) { - List signers = helper.verifyDKIM(context); - message.signedby = (signers.size() == 0 ? null : TextUtils.join(",", signers)); - } - message.tls = helper.getTLS(); message.dkim = MessageHelper.getAuthentication("dkim", authentication); - if (Boolean.TRUE.equals(message.dkim) && - native_dkim && !BuildConfig.PLAY_STORE_RELEASE && - TextUtils.isEmpty(message.signedby)) - message.dkim = false; message.spf = MessageHelper.getAuthentication("spf", authentication); if (message.spf == null && helper.getSPF()) message.spf = true; @@ -3437,6 +3427,24 @@ class Core { if (MessageHelper.equalEmail(message.submitter, message.from)) message.submitter = null; + if (native_dkim && !BuildConfig.PLAY_STORE_RELEASE) { + List signers = helper.verifyDKIM(context); + message.signedby = (signers.size() == 0 ? null : TextUtils.join(",", signers)); + if (Boolean.TRUE.equals(message.dkim)) { + if (signers.size() == 0) + message.dkim = false; + } else { + if (message.from != null) + for (Address from : message.from) { + String domain = UriHelper.getEmailDomain(((InternetAddress) from).getAddress()); + if (domain != null && signers.contains(domain)) { + message.dkim = true; + break; + } + } + } + } + if (message.size == null && message.total != null) message.size = message.total; @@ -4504,18 +4512,8 @@ class Core { message.receipt_request = helper.getReceiptRequested(); message.receipt_to = helper.getReceiptTo(); message.bimi_selector = helper.getBimiSelector(); - - if (native_dkim && !BuildConfig.PLAY_STORE_RELEASE) { - List signers = helper.verifyDKIM(context); - message.signedby = (signers.size() == 0 ? null : TextUtils.join(",", signers)); - } - message.tls = helper.getTLS(); message.dkim = MessageHelper.getAuthentication("dkim", authentication); - if (Boolean.TRUE.equals(message.dkim) && - native_dkim && !BuildConfig.PLAY_STORE_RELEASE && - TextUtils.isEmpty(message.signedby)) - message.dkim = false; message.spf = MessageHelper.getAuthentication("spf", authentication); if (message.spf == null && helper.getSPF()) message.spf = true; @@ -4576,6 +4574,24 @@ class Core { if (MessageHelper.equalEmail(message.submitter, message.from)) message.submitter = null; + if (native_dkim && !BuildConfig.PLAY_STORE_RELEASE) { + List signers = helper.verifyDKIM(context); + message.signedby = (signers.size() == 0 ? null : TextUtils.join(",", signers)); + if (Boolean.TRUE.equals(message.dkim)) { + if (signers.size() == 0) + message.dkim = false; + } else { + if (message.from != null) + for (Address from : message.from) { + String domain = UriHelper.getEmailDomain(((InternetAddress) from).getAddress()); + if (domain != null && signers.contains(domain)) { + message.dkim = true; + break; + } + } + } + } + // Borrow reply name from sender name if (message.from != null && message.from.length == 1 && message.reply != null && message.reply.length == 1) {