# HG changeset patch # User Carl Byington # Date 1484599124 28800 # Node ID bcfbffe254edba65b013ce0ec93a735805f111c7 # Parent 07b88307d90ae581c935672c094d10895917e182 check whitelisted dkim signers before dkim_from restrictions diff -r 07b88307d90a -r bcfbffe254ed src/context.cpp --- a/src/context.cpp Mon Jan 16 11:17:16 2017 -0800 +++ b/src/context.cpp Mon Jan 16 12:38:44 2017 -0800 @@ -1123,6 +1123,16 @@ const char *CONTEXT::acceptable_content(recorder &memory, int score, int bulk, const char *queueid, string_set &signers, const char *from, string& msg) { DKIMP dk = find_dkim_from(from); + + for (string_set::iterator s=signers.begin(); s!=signers.end(); s++) { + const char *st = find_dkim_signer(*s); + // signed by a white listed signer + if (st == token_white) { + log(queueid, "whitelisted dkim signer %s", *s); + return token_white; + } + } + if (dk) { const char *st = dk->action; for (string_set::iterator s=signers.begin(); s!=signers.end(); s++) { @@ -1154,15 +1164,6 @@ for (string_set::iterator s=signers.begin(); s!=signers.end(); s++) { const char *st = find_dkim_signer(*s); - // signed by a white listed signer - if (st == token_white) { - log(queueid, "whitelisted dkim signer %s", *s); - return token_white; - } - } - - for (string_set::iterator s=signers.begin(); s!=signers.end(); s++) { - const char *st = find_dkim_signer(*s); // signed by a black listed signer if (st == token_black) { char buf[maxlen];