Function deltachat::authres::update_authservid_candidates
source · async fn update_authservid_candidates(
context: &Context,
authres: &Vec<(String, DkimResult)>,
) -> Result<()>
Expand description
§About authserv-ids
After having checked DKIM, our email server adds an Authentication-Results header.
Now, an attacker could just add an Authentication-Results header that says dkim=pass in order to make us think that DKIM was correct in their From-forged email.
In order to prevent this, each email server adds its authserv-id to the
Authentication-Results header, e.g. Testrun’s authserv-id is testrun.org
, Gmail’s
is mx.google.com
. When Testrun gets a mail delivered from outside, it will then
remove any Authentication-Results headers whose authserv-id is also testrun.org
.
We need to somehow find out the authserv-id(s) of our email server, so that we can use the Authentication-Results with the right authserv-id.
§What this function does
When receiving an email, this function is called and updates the candidates for our server’s authserv-id, i.e. what we think our server’s authserv-id is.
Usually, every incoming email has Authentication-Results with our server’s authserv-id, so, the intersection of the existing authserv-ids and the incoming authserv-ids for our server’s authserv-id is a good guess for our server’s authserv-id. When this intersection is empty, we assume that the authserv-id has changed and start over with the new authserv-ids.
See handle_authres
.