Updated DKIM requirements

pull/207/head
M66B 3 years ago
parent 53b20dcf9d
commit 6488d19f8a

@ -1836,6 +1836,7 @@ public class MessageHelper {
boolean checkDKIMRequirements() throws MessagingException { boolean checkDKIMRequirements() throws MessagingException {
ensureHeaders(); ensureHeaders();
// https://datatracker.ietf.org/doc/html/rfc6376/
String[] headers = imessage.getHeader("DKIM-Signature"); String[] headers = imessage.getHeader("DKIM-Signature");
if (headers == null || headers.length < 1) if (headers == null || headers.length < 1)
return false; return false;
@ -1843,6 +1844,12 @@ public class MessageHelper {
for (String header : headers) { for (String header : headers) {
Map<String, String> kv = getKeyValues(MimeUtility.unfold(header)); Map<String, String> kv = getKeyValues(MimeUtility.unfold(header));
// Algorithm
// https://tools.ietf.org/id/draft-ietf-dcrup-dkim-usage-03.html#rfc.section.4.3
String a = kv.get("a");
if ("rsa-sha1".equals(a))
return false;
// Hashed body length // Hashed body length
Integer l = Helper.parseInt(kv.get("l")); Integer l = Helper.parseInt(kv.get("l"));
if (l != null && l == 0) { if (l != null && l == 0) {
@ -1856,15 +1863,6 @@ public class MessageHelper {
Log.w("DKIM header fields missing"); Log.w("DKIM header fields missing");
return false; return false;
} }
String[] hs = h
.toLowerCase(Locale.ROOT)
.replaceAll("\\s+", "")
.split(":");
if (!Arrays.asList(hs).contains("from")) {
Log.i("DKIM headers fields missing 'from' fields=" + h);
return false;
}
} }
return true; return true;

Loading…
Cancel
Save