Since the AH can comprise multiple lines, parse each line individually until we found all data.
The parsing is complicated, but naïve field splitting leads to incorrect results.
Generally, scan up to the next dkim= part, extract the state (which is the value) and then look for the reason, which might or might not be parenthesis-enclosed or start with a reason= key or both.
All other data up to the next dkim= part or end of the line or semicolon will be treated as extrainfo and shown if the preference has been enabled.
Since the
AH
can comprise multiple lines, parse each line individually until we found all data.The parsing is complicated, but naïve field splitting leads to incorrect results.
Generally, scan up to the next
dkim=
part, extract the state (which is the value) and then look for the reason, which might or might not be parenthesis-enclosed or start with areason=
key or both.All other data up to the next
dkim=
part or end of the line or semicolon will be treated asextrainfo
and shown if the preference has been enabled.We handle
spf=
parts in about the same way.Depends on #36.