Table of Contents

Class SenderAuthentication

Namespace
MailFathom.Domain.Emails.Authentication
Assembly
MailFathom.Domain.dll

What the receiving mail server established about one message's sender.

public sealed record SenderAuthentication : IEquatable<SenderAuthentication>
Inheritance
SenderAuthentication
Implements
Inherited Members

Remarks

Every message carries one of these, including the messages nothing could be established about: not established is a verdict here rather than a missing value, because a deployment whose provider publishes no results has to be able to tell that apart from mail whose sender was checked and failed.

Two conclusions live here and they are not the same one. Outcome answers whether an identity authenticated, which is a fact about whoever handed the message over. AuthorAuthentication answers whether the author a mail client displays authenticated, which is what an impersonation attempt exists to get wrong. A relay, a mailing list, and a delivery provider all authenticate as themselves while carrying somebody else's From, so the two disagreeing is an ordinary state of legitimate mail rather than a contradiction.

One of two readings produced this, and Source says which. The first is a header written by the one server the account trusts, which is the only party in the chain that observed the connection; everything it records was read back out of that header. The second runs only where no such statement was available, and verifies the message's own DKIM signatures against the keys their domains publish — a cryptographic identity reached from the stored bytes and one DNS lookup. Neither reading evaluates an SPF policy, computes an organizational domain, consults a public suffix list, or reasons from a Received chain.

Every domain here is personal data. No log line, metric, or exception message may carry one; the occurrence identity, Outcome, and AuthorAuthentication are what those may report.

Properties

AuthenticatedAuthorDomain

Gets the domain of the displayed author where it authenticated, or null.

AuthenticatedBy

Gets which check established AuthenticatedDomain, or none where nothing did.

AuthenticatedDomain

Gets the domain that authenticated, or null where none did.

AuthorAuthentication

Gets what was established about the author the message displays, which is a separate conclusion.

DkimDomain

Gets the domain of a DKIM signature that verified, or null where none did.

Dmarc

Gets the DMARC result the trusted header reported, or that it reported none.

FromDomain

Gets the domain the message displays as its sender, or null when it wrote no usable one.

Outcome

Gets what was established about the identity that handed the message over.

Source

Gets who reached this verdict, which decides what the rest of it is worth.

SpfDomain

Gets the envelope-sender domain of an SPF check that passed, or null where none did.

Methods

Authenticated(IReadOnlyList<SenderDomain>, IReadOnlyList<SenderDomain>, SenderDomain?, DmarcOutcome)

Records the identities the receiving server verified.

Failed(SenderDomain?, DmarcOutcome)

Records that the receiving server checked an identity and it did not hold.

LocalVerificationFailed(SenderDomain?)

Records that this deployment checked a DKIM signature itself and it did not verify.

LocalVerificationNotEstablished(SenderDomain?)

Records that this deployment verified what it could and established nothing.

LocallyVerified(IReadOnlyList<SenderDomain>, SenderDomain?)

Records that this deployment verified a DKIM signature itself, no trusted server having said anything.

NotEstablished(SenderDomain?, DmarcOutcome)

Records that nothing was established about a message's sender.