Simon Wilson via users skrev den 2024-07-03 09:48:
So I guess the question is why SA is not accepting a trusted header
with a DKIM pass recorded with the same mail path through the system?
I have no AuthRes settings set specifically in local.cf.
so add it :)
ifplugin Mail::SpamAssassin::Plugin::AuthRes
authres_networks all
authres_trusted_authserv mail.simonandkate.net
describe AUTHRES_ARC_FAIL Authentication-Results: has "arc=fail"
result
describe AUTHRES_ARC_NONE Authentication-Results: has "arc=none"
result
describe AUTHRES_ARC_PASS Authentication-Results: has "arc=pass"
result
header AUTHRES_ARC_FAIL eval:check_authres_result('arc', 'fail')
header AUTHRES_ARC_NONE eval:check_authres_result('arc', 'none')
header AUTHRES_ARC_PASS eval:check_authres_result('arc', 'pass')
score AUTHRES_ARC_FAIL 1.5
score AUTHRES_ARC_NONE 0.5
score AUTHRES_ARC_PASS -1.5
describe AUTHRES_ADSP_DISCARD Authentication-Results: has
"dkim-adsp=discard" result
describe AUTHRES_ADSP_FAIL Authentication-Results: has
"dkim-adsp=fail" result
describe AUTHRES_ADSP_NONE Authentication-Results: has
"dkim-adsp=nonr" result
describe AUTHRES_ADSP_NXDOMAIN Authentication-Results: has
"dkim-adsp=nxdomain" result
describe AUTHRES_ADSP_PASS Authentication-Results: has
"dkim-adsp=pass" result
describe AUTHRES_ADSP_PERMERROR Authentication-Results: has
"dkim-adsp=permerror" result
describe AUTHRES_ADSP_TEMPERROR Authentication-Results: has
"dkim-adsp=temperror" result
describe AUTHRES_ADSP_UNKNOWN Authentication-Results: has
"dkim-adsp=unknown" result
header AUTHRES_ADSP_DISCARD eval:check_authres_result('dkim-adsp',
'discard')
header AUTHRES_ADSP_FAIL eval:check_authres_result('dkim-adsp',
'fail')
header AUTHRES_ADSP_NONE eval:check_authres_result('dkim-adsp',
'none')
header AUTHRES_ADSP_NXDOMAIN eval:check_authres_result('dkim-adsp',
'nxdomain')
header AUTHRES_ADSP_PASS eval:check_authres_result('dkim-adsp',
'pass')
header AUTHRES_ADSP_PERMERROR eval:check_authres_result('dkim-adsp',
'permerror')
header AUTHRES_ADSP_TEMPERROR eval:check_authres_result('dkim-adsp',
'temperror')
header AUTHRES_ADSP_UNKNOWN eval:check_authres_result('dkim-adsp',
'unknown')
score AUTHRES_ADSP_DISCARD 1.5
score AUTHRES_ADSP_FAIL 0.5
score AUTHRES_ADSP_NONE 0.5
score AUTHRES_ADSP_NXDOMAIN 1.5
score AUTHRES_ADSP_PASS -0.5
score AUTHRES_ADSP_PERMERROR 0.5
score AUTHRES_ADSP_TEMPERROR 0.5
score AUTHRES_ADSP_UNKNOWN 0.5
describe AUTHRES_ATPS_FAIL Authentication-Results: has
"dkim-atps=fail" result
describe AUTHRES_ATPS_NEUTRAL Authentication-Results: has
"dkim-atps=neutral" result
describe AUTHRES_ATPS_NONE Authentication-Results: has
"dkim-atps=none" result
describe AUTHRES_ATPS_PASS Authentication-Results: has
"dkim-atps=pass" result
describe AUTHRES_ATPS_PERMERROR Authentication-Results: has
"dkim-atps=permerror" result
describe AUTHRES_ATPS_TEMPERROR Authentication-Results: has
"dkim-atps=temperror" result
header AUTHRES_ATPS_FAIL eval:check_authres_result('dkim-atps',
'fail')
header AUTHRES_ATPS_NEUTRAL eval:check_authres_result('dkim-atps',
'neutral')
header AUTHRES_ATPS_NONE eval:check_authres_result('dkim-atps',
'none')
header AUTHRES_ATPS_PASS eval:check_authres_result('dkim-atps',
'pass')
header AUTHRES_ATPS_PERMERROR eval:check_authres_result('dkim-atps',
'permerror')
header AUTHRES_ATPS_TEMPERROR eval:check_authres_result('dkim-atps',
'temperror')
score AUTHRES_ATPS_FAIL 0.5
score AUTHRES_ATPS_NEUTRAL 0.5
score AUTHRES_ATPS_NONE 1.5
score AUTHRES_ATPS_PASS -1.5
score AUTHRES_ATPS_PERMERROR 0.5
score AUTHRES_ATPS_TEMPERROR 0.5
describe AUTHRES_DKIM_FAIL Authentication-Results: has "dkim=fail"
result
describe AUTHRES_DKIM_PASS Authentication-Results: has "dkim=pass"
result
describe AUTHRES_DKIM_NEUTRAL Authentication-Results: has
"dkim=neutral" result
describe AUTHRES_DKIM_NONE Authentication-Results: has "dkim=none"
result
describe AUTHRES_DKIM_POLICY Authentication-Results: has
"dkim=policy" result
describe AUTHRES_DKIM_PERMERROR Authentication-Results: has
"dkim=permerror" result
describe AUTHRES_DKIM_TEMPERROR Authentication-Results: has
"dkim=temperror" result
header AUTHRES_DKIM_FAIL eval:check_authres_result('dkim', 'fail')
header AUTHRES_DKIM_PASS eval:check_authres_result('dkim', 'pass')
header AUTHRES_DKIM_NEUTRAL eval:check_authres_result('dkim',
'neutral')
header AUTHRES_DKIM_NONE eval:check_authres_result('dkim', 'none')
header AUTHRES_DKIM_POLICY eval:check_authres_result('dkim',
'policy')
header AUTHRES_DKIM_PERMERROR eval:check_authres_result('dkim',
'permerror')
header AUTHRES_DKIM_TEMPERROR eval:check_authres_result('dkim',
'temperror')
score AUTHRES_DKIM_FAIL 0.5
score AUTHRES_DKIM_PASS -0.5
score AUTHRES_DKIM_NEUTRAL 0.5
score AUTHRES_DKIM_NONE 1.5
score AUTHRES_DKIM_POLICY -0.5
score AUTHRES_DKIM_PERMERROR 0.5
score AUTHRES_DKIM_TEMPERROR 0.5
describe AUTHRES_DMARC_BESTGUESSPASS Authentication-Results: has
"dmarc=bestguesspass" result
describe AUTHRES_DMARC_FAIL Authentication-Results: has "dmarc=fail"
result
describe AUTHRES_DMARC_PASS Authentication-Results: has "dmarc=pass"
result
describe AUTHRES_DMARC_NONE Authentication-Results: has "dmarc=none"
result
describe AUTHRES_DMARC_PERMERROR Authentication-Results: has
"dmarc=permerror" result
describe AUTHRES_DMARC_TEMPERROR Authentication-Results: has
"dmarc=temperror" result
header AUTHRES_DMARC_BESTGUESSPASS
eval:check_authres_result('dmarc', 'bestguesspass')
header AUTHRES_DMARC_FAIL eval:check_authres_result('dmarc', 'fail')
header AUTHRES_DMARC_PASS eval:check_authres_result('dmarc', 'pass')
header AUTHRES_DMARC_NONE eval:check_authres_result('dmarc', 'none')
header AUTHRES_DMARC_PERMERROR eval:check_authres_result('dmarc',
'permerror')
header AUTHRES_DMARC_TEMPERROR eval:check_authres_result('dmarc',
'temperror')
score AUTHRES_DMARC_BESTGUESSPASS -0.5
score AUTHRES_DMARC_FAIL 1.5
score AUTHRES_DMARC_PASS -0.5
score AUTHRES_DMARC_NONE 1.5
score AUTHRES_DMARC_PERMERROR 0.5
score AUTHRES_DMARC_TEMPERROR 0.5
describe AUTHRES_IPREV_FAIL Authentication-Results: has "iprev=fail"
result
describe AUTHRES_IPREV_PASS Authentication-Results: has "iprev=pass"
result
describe AUTHRES_IPREV_PERMERROR Authentication-Results: has
"iprev=permerror" result
describe AUTHRES_IPREV_TEMPERROR Authentication-Results: has
"iprev=temperror" result
header AUTHRES_IPREV_FAIL eval:check_authres_result('iprev', 'fail')
header AUTHRES_IPREV_PASS eval:check_authres_result('iprev', 'pass')
header AUTHRES_IPREV_PERMERROR eval:check_authres_result('iprev',
'permerror')
header AUTHRES_IPREV_TEMPERROR eval:check_authres_result('iprev',
'temperror')
score AUTHRES_IPREV_FAIL 1.5
score AUTHRES_IPREV_PASS -1.5
score AUTHRES_IPREV_PERMERROR 0.5
score AUTHRES_IPREV_TEMPERROR 0.5
describe AUTHRES_SPF_FAIL Authentication-Results: has "spf=fail"
result
describe AUTHRES_SPF_HARDFAIL Authentication-Results: has
"spf=hardfail" result
describe AUTHRES_SPF_NEUTRAL Authentication-Results: has
"spf=neutral" result
describe AUTHRES_SPF_NONE Authentication-Results: has "spf=none"
result
describe AUTHRES_SPF_PASS Authentication-Results: has "spf=pass"
result
describe AUTHRES_SPF_PERMERROR Authentication-Results: has
"spf=permerror" result
describe AUTHRES_SPF_POLICY Authentication-Results: has "spf=policy"
result
describe AUTHRES_SPF_SOFTFAIL Authentication-Results: has
"spf=softfail" result
describe AUTHRES_SPF_TEMPERROR Authentication-Results: has
"spf=temperror" result
header AUTHRES_SPF_FAIL eval:check_authres_result('spf', 'fail')
header AUTHRES_SPF_HARDFAIL eval:check_authres_result('spf',
'hardfail')
header AUTHRES_SPF_NEUTRAL eval:check_authres_result('spf',
'neutral')
header AUTHRES_SPF_NONE eval:check_authres_result('spf', 'none')
header AUTHRES_SPF_PASS eval:check_authres_result('spf', 'pass')
header AUTHRES_SPF_PERMERROR eval:check_authres_result('spf',
'permerror')
header AUTHRES_SPF_POLICY eval:check_authres_result('spf', 'policy')
header AUTHRES_SPF_SOFTFAIL eval:check_authres_result('spf',
'softfail')
header AUTHRES_SPF_TEMPERROR eval:check_authres_result('spf',
'temperror')
score AUTHRES_SPF_FAIL 1.5
score AUTHRES_SPF_HARDFAIL 2.5
score AUTHRES_SPF_NEUTRAL 0.5
score AUTHRES_SPF_NONE 2.5
score AUTHRES_SPF_PASS -0.5
score AUTHRES_SPF_PERMERROR 0.5
score AUTHRES_SPF_POLICY 0.5
score AUTHRES_SPF_SOFTFAIL 0.5
score AUTHRES_SPF_TEMPERROR 0.5
describe AUTHRES_VBR_FAIL Authentication-Results: has "vbr=fail"
result
describe AUTHRES_VBR_NONE Authentication-Results: has "vbr=none"
result
describe AUTHRES_VBR_PASS Authentication-Results: has "vbr=pass"
result
describe AUTHRES_VBR_PERMERROR Authentication-Results: has
"vbr=permerror" result
describe AUTHRES_VBR_TEMPERROR Authentication-Results: has
"vbr=temperror" result
header AUTHRES_VBR_FAIL eval:check_authres_result('vbr', 'fail')
header AUTHRES_VBR_NONE eval:check_authres_result('vbr', 'none')
header AUTHRES_VBR_PASS eval:check_authres_result('vbr', 'pass')
header AUTHRES_VBR_PERMERROR eval:check_authres_result('vbr',
'permerror')
header AUTHRES_VBR_TEMPERROR eval:check_authres_result('vbr',
'temperror')
score AUTHRES_VBR_FAIL 1.5
score AUTHRES_VBR_NONE 1.5
score AUTHRES_VBR_PASS -1.5
score AUTHRES_VBR_PERMERROR 0.5
score AUTHRES_VBR_TEMPERROR 0.5
describe AUTHRES_AUTH_FAIL Authentication-Results: has "auth=fail"
result
describe AUTHRES_AUTH_NONE Authentication-Results: has "auth=none"
result
describe AUTHRES_AUTH_PASS Authentication-Results: has "auth=pass"
result
describe AUTHRES_AUTH_PERMERROR Authentication-Results: has
"auth=permerror" result
describe AUTHRES_AUTH_TEMPERROR Authentication-Results: has
"auth=temperror" result
header AUTHRES_AUTH_FAIL eval:check_authres_result('auth', 'fail')
header AUTHRES_AUTH_NONE eval:check_authres_result('auth', 'none')
header AUTHRES_AUTH_PASS eval:check_authres_result('auth', 'pass')
header AUTHRES_AUTH_PERMERROR eval:check_authres_result('auth',
'permerror')
header AUTHRES_AUTH_TEMPERROR eval:check_authres_result('auth',
'temperror')
score AUTHRES_AUTH_FAIL 0.5
score AUTHRES_AUTH_NONE 0.5
score AUTHRES_AUTH_PASS -0.5
score AUTHRES_AUTH_PERMERROR 0.5
score AUTHRES_AUTH_TEMPERROR 0.5
describe AUTHRES_DNSWL_NONE Authentication-Results: has "dnswl=none"
result
describe AUTHRES_DNSWL_PASS Authentication-Results: has "dnswl=pass"
result
describe AUTHRES_DNSWL_PERMERROR Authentication-Results: has
"dnswl=permerror" result
describe AUTHRES_DNSWL_TEMPERROR Authentication-Results: has
"dnswl=temperror" result
header AUTHRES_DNSWL_NONE eval:check_authres_result('dnswl', 'none')
header AUTHRES_DNSWL_PASS eval:check_authres_result('dnswl', 'pass')
header AUTHRES_DNSWL_PERMERROR eval:check_authres_result('dnswl',
'permerror')
header AUTHRES_DNSWL_TEMPERROR eval:check_authres_result('dnswl',
'temperror')
score AUTHRES_DNSWL_NONE 1.5
score AUTHRES_DNSWL_PASS -1.5
score AUTHRES_DNSWL_PERMERROR 0.5
score AUTHRES_DNSWL_TEMPERROR 0.5
describe AUTHRES_DOMAINKEYS_FAIL Authentication-Results: has
"domainkey=fail" result
describe AUTHRES_DOMAINKEYS_NEUTRAL Authentication-Results: has
"domainkey=neutral" result
describe AUTHRES_DOMAINKEYS_NONE Authentication-Results: has
"domainkey=none" result
describe AUTHRES_DOMAINKEYS_PASS Authentication-Results: has
"domainkey=pass" result
describe AUTHRES_DOMAINKEYS_PERMERROR Authentication-Results: has
"domainkey=permerror" result
describe AUTHRES_DOMAINKEYS_POLICY Authentication-Results: has
"domainkey=policy" result
describe AUTHRES_DOMAINKEYS_TEMPERROR Authentication-Results: has
"domainkey=temperror" result
header AUTHRES_DOMAINKEYS_FAIL
eval:check_authres_result('domainkeys', 'fail')
header AUTHRES_DOMAINKEYS_NEUTRAL
eval:check_authres_result('domainkeys', 'neutral')
header AUTHRES_DOMAINKEYS_NONE
eval:check_authres_result('domainkeys', 'none')
header AUTHRES_DOMAINKEYS_PASS
eval:check_authres_result('domainkeys', 'pass')
header AUTHRES_DOMAINKEYS_PERMERROR
eval:check_authres_result('domainkeys', 'permerror')
header AUTHRES_DOMAINKEYS_POLICY
eval:check_authres_result('domainkeys', 'policy')
header AUTHRES_DOMAINKEYS_TEMPERROR
eval:check_authres_result('domainkeys', 'temperror')
score AUTHRES_DOMAINKEYS_FAIL 0.5
score AUTHRES_DOMAINKEYS_NEUTRAL 0.5
score AUTHRES_DOMAINKEYS_NONE 0.5
score AUTHRES_DOMAINKEYS_PASS -0.5
score AUTHRES_DOMAINKEYS_PERMERROR 0.5
score AUTHRES_DOMAINKEYS_POLICY 0.5
score AUTHRES_DOMAINKEYS_TEMPERROR 0.5
describe AUTHRES_RRVS_FAIL Authentication-Results: has "rrvs=fail"
result
describe AUTHRES_RRVS_NONE Authentication-Results: has "rrvs=none"
result
describe AUTHRES_RRVS_PASS Authentication-Results: has "rrvs=pass"
result
describe AUTHRES_RRVS_PERMERROR Authentication-Results: has
"rrvs=permerror" result
describe AUTHRES_RRVS_TEMPERROR Authentication-Results: has
"rrvs=temperror" result
describe AUTHRES_RRVS_UNKNOWN Authentication-Results: has
"rrvs=unknown" result
header AUTHRES_RRVS_FAIL eval:check_authres_result('rrvs', 'fail')
header AUTHRES_RRVS_NONE eval:check_authres_result('rrvs', 'none')
header AUTHRES_RRVS_PASS eval:check_authres_result('rrvs', 'pass')
header AUTHRES_RRVS_PERMERROR eval:check_authres_result('rrvs',
'permerror')
header AUTHRES_RRVS_TEMPERROR eval:check_authres_result('rrvs',
'temperror')
header AUTHRES_RRVS_UNKNOWN eval:check_authres_result('rrvs',
'unknown')
score AUTHRES_RRVS_FAIL 0.5
score AUTHRES_RRVS_NONE 0.5
score AUTHRES_RRVS_PASS -0.5
score AUTHRES_RRVS_PERMERROR 0.5
score AUTHRES_RRVS_TEMPERROR 0.5
score AUTHRES_RRVS_UNKNOWN 0.5
describe AUTHRES_SENDER_ID_FAIL Authentication-Results: has
"sender-id=fail" result
describe AUTHRES_SENDER_ID_HARDFAIL Authentication-Results: has
"sender-id=hardfail" result
describe AUTHRES_SENDER_ID_NEUTRAL Authentication-Results: has
"sender-id=neutral" result
describe AUTHRES_SENDER_ID_NONE Authentication-Results: has
"sender-id=none" result
describe AUTHRES_SENDER_ID_PASS Authentication-Results: has
"sender-id=pass" result
describe AUTHRES_SENDER_ID_PERMERROR Authentication-Results: has
"sender-id=permerror" result
describe AUTHRES_SENDER_ID_POLICY Authentication-Results: has
"sender-id=policy" result
describe AUTHRES_SENDER_ID_SOFTFAIL Authentication-Results: has
"sender-id=softfail" result
describe AUTHRES_SENDER_ID_TEMPERROR Authentication-Results: has
"sender-id=temperror" result
header AUTHRES_SENDER_ID_FAIL eval:check_authres_result('sender-id',
'fail')
header AUTHRES_SENDER_ID_HARDFAIL
eval:check_authres_result('sender-id', 'hardfail')
header AUTHRES_SENDER_ID_NEUTRAL
eval:check_authres_result('sender-id', 'neutral')
header AUTHRES_SENDER_ID_NONE eval:check_authres_result('sender-id',
'none')
header AUTHRES_SENDER_ID_PASS eval:check_authres_result('sender-id',
'pass')
header AUTHRES_SENDER_ID_PERMERROR
eval:check_authres_result('sender-id', 'permerror')
header AUTHRES_SENDER_ID_POLICY
eval:check_authres_result('sender-id', 'policy')
header AUTHRES_SENDER_ID_SOFTFAIL
eval:check_authres_result('sender-id', 'softfail')
header AUTHRES_SENDER_ID_TEMPERROR
eval:check_authres_result('sender-id', 'temperror')
score AUTHRES_SENDER_ID_FAIL 0.5
score AUTHRES_SENDER_ID_HARDFAIL 0.5
score AUTHRES_SENDER_ID_NEUTRAL 0.5
score AUTHRES_SENDER_ID_NONE 1.1
score AUTHRES_SENDER_ID_PASS -1.1
score AUTHRES_SENDER_ID_PERMERROR 0.5
score AUTHRES_SENDER_ID_POLICY 0.5
score AUTHRES_SENDER_ID_SOFTFAIL 0.5
score AUTHRES_SENDER_ID_TEMPERROR 0.5
describe AUTHRES_SMIME_FAIL Authentication-Results: has "smime=fail"
result
describe AUTHRES_SMIME_NEUTRAL Authentication-Results: has
"smime=neutral" result
describe AUTHRES_SMIME_NONE Authentication-Results: has "smime=none"
result
describe AUTHRES_SMIME_PASS Authentication-Results: has "smime=pass"
result
describe AUTHRES_SMIME_PERMERROR Authentication-Results: has
"smime=permerror" result
describe AUTHRES_SMIME_POLICY Authentication-Results: has
"smime=policy" result
describe AUTHRES_SMIME_TEMPERROR Authentication-Results: has
"smime=temperror" result
header AUTHRES_SMIME_FAIL eval:check_authres_result('smime', 'fail')
header AUTHRES_SMIME_NEUTRAL eval:check_authres_result('smime',
'neutral')
header AUTHRES_SMIME_NONE eval:check_authres_result('smime', 'none')
header AUTHRES_SMIME_PASS eval:check_authres_result('smime', 'pass')
header AUTHRES_SMIME_PERMERROR eval:check_authres_result('smime',
'permerror')
header AUTHRES_SMIME_POLICY eval:check_authres_result('smime',
'policy')
header AUTHRES_SMIME_TEMPERROR eval:check_authres_result('smime',
'temperror')
score AUTHRES_SMIME_FAIL 0.5
score AUTHRES_SMIME_NEUTRAL 0.5
score AUTHRES_SMIME_NONE 0.5
score AUTHRES_SMIME_PASS -1.5
score AUTHRES_SMIME_PERMERROR 0.5
score AUTHRES_SMIME_POLICY 0.5
score AUTHRES_SMIME_TEMPERROR 0.5
endif
hope it helps others, adjust scores as you need it
above works for me, i just have many more authres_trusted_authserv lines