Skip to content

24 – Email (Beta)

Email is the most common way into an organisation for fraud. The test checks whether the domain is configured so that others can send mail in your name, and whether mail to you is protected in transit.

Beta

The test is marked beta in the tool. The checks work, but more may be added and the assessment may be adjusted.

What is tested?

SPF

States which servers may send email for the domain. The test checks that a record exists, that it's correctly formed, and that it doesn't require more DNS lookups than the standard allows.

DKIM

Signing of outgoing mail, so the recipient can verify it wasn't altered in transit.

DMARC

Rules for what the recipient should do with mail that fails SPF or DKIM. The test audits the record in detail. It checks the policy and subpolicy, and the percentage the policy applies to. It also checks the alignment settings for SPF and DKIM, the report format and the reporting interval. Common faults it catches are a policy set to none, a pct below 100, and failure reports being requested without an address to send them to.

MTA-STS

Requires email to the domain to be delivered encrypted. The test checks both the DNS record and the policy file, including that it uses the right line breaks and a valid mode.

Transport

Connections to the domain's mail servers over IPv4 and IPv6.

How it affects the score

Missing records lower the score most. Malformed records are judged more harshly than absent ones, because they tend to give false confidence.

Running the test

python default.py -u https://example.com -t 24 -r

Settings

Setting Default Meaning
tests.email.support.port25 false Allow connections on port 25
tests.email.support.ipv6 false Run the checks over IPv6 as well

Both are off by default because the environments the test usually runs in lack the support: consumer broadband blocks port 25 and GitHub Actions has no IPv6. Running locally with both available gives you more checks:

python default.py -u https://example.com -t 24 -r \
  --setting tests.email.support.port25=true \
  --setting tests.email.support.ipv6=true

See also