python.org

python.org · Last checked 2026-10-04 02:16 UTC

python.org

Needs work, with 3 things to fix

python.org scored 69/100 (grade C). The main issues are DMARC policy is none and DKIM key shorter than 2048 bits, plus 1 more. Detected senders: Google Workspace and Mailgun.

Checked 2026-10-04 02:16 UTC · fresh check

1 passed3 need attention0 failing4 for informationDetected senders: Google Workspace, Mailgun
Fix this firstThe change with the biggest effect

Reduce SPF DNS lookups

Evaluating SPF for python.org takes 8 DNS lookups including nested includes; receivers stop at 10 and fail SPF. No detected sending service accounts for these includes; remove each one you no longer send through: stspg-customer.com. Changes: Replaced ~all with -all so mail from servers not listed is rejected.

TypeTXT
Name / Host
python.org

Some DNS providers want “@” here instead of the full domain.

Value
v=spf1 mx ip4:188.166.95.178/32 ip6:2a03:b0c0:2:d0::71:1 include:stspg-customer.com include:_spf.google.com include:mailgun.org -all
Replaces
v=spf1 mx ip4:188.166.95.178/32 ip6:2a03:b0c0:2:d0::71:1 include:stspg-customer.com include:_spf.google.com include:mailgun.org ~all

How to apply it

  1. Sign in where your domain’s DNS is managed. This is often where you bought the domain, such as Cloudflare, GoDaddy or Namecheap.
  2. Find the existing TXT record with that name and replace its value.
  3. Save, then come back and re-check. DNS changes can take up to a few hours to show.

All checks

MXCan servers find your inbox?Only one MX hostInfo
  • Info: Only one MX host

    All mail for python.org goes to mail.python.org. Most hosted providers make that one name highly available; if you run your own server, consider a backup MX.

SPFWho may send as you?SPF is close to the 10-lookup limitNeeds attention
  • Warning: SPF is close to the 10-lookup limit

    Evaluating the SPF record for python.org needs 8 of the 10 allowed DNS lookups. Adding one more service, or a provider growing its own record, will break SPF.

    How to fix this
  • Info: SPF ends in softfail (~all)

    "~all" is common and works well with DMARC. "-all" is stricter; switch when you are sure every sender is listed.

DKIMAre your emails signed?DKIM key shorter than 2048 bitsNeeds attention
  • Warning: DKIM key shorter than 2048 bits

    google (1024-bit) uses an RSA key below 2048 bits. Short keys can be factored and some receivers treat them as weak. Rotate to a 2048-bit key at your sending provider.

  • Pass: DKIM key published

    python.org publishes a DKIM key under google, k2, k3.

DMARCWhat happens to fakes?DMARC policy is noneNeeds attention
  • Warning: DMARC policy is none

    A none policy only monitors: mail that fails DMARC is still delivered, so anyone can spoof the domain. Once reports show your legitimate senders pass, move to quarantine and then reject.

    How to fix this
AlignmentDoes it match your From?No issues foundPass

Nothing to report.

BIMICan inboxes show your logo?No BIMI recordInfo
  • Info: No BIMI record

    No BIMI record at default._bimi.python.org. BIMI is optional: it shows your logo next to your mail in supporting inboxes once DMARC is enforced.

    How to fix this
MTA-STSIs mail to you encrypted?No MTA-STS recordInfo
  • Info: No MTA-STS record

    No MTA-STS record at _mta-sts.python.org. MTA-STS (RFC 8461) makes sending servers require TLS and a valid certificate when delivering to you, which blocks downgrade attacks.

    How to fix this
TLS-RPTWill you hear about failures?No TLS-RPT recordInfo
  • Info: No TLS-RPT record

    No TLS reporting record at _smtp._tls.python.org. TLS-RPT (RFC 8460) tells senders where to send daily reports about failed encrypted deliveries to you.

    How to fix this

Other fixes

Strengthen the DMARC policyTXT

Quarantines 25% of mail that fails DMARC, a safe first step: check the reports for legitimate senders that fail before going further. Changes: Subdomains move one step, from sp=none to the domain policy (p=quarantine).

TypeTXT
Name / Host
_dmarc.python.org

Some DNS providers want just “_dmarc” here.

Value
v=DMARC1; p=quarantine; pct=25; rua=mailto:re+shb8ybr70a3@dmarc.postmarkapp.com; adkim=r; aspf=r
Replaces
v=DMARC1; p=none; pct=100; rua=mailto:re+shb8ybr70a3@dmarc.postmarkapp.com; sp=none; aspf=r;

Publish the MTA-STS recordTXT

Tells sending servers that python.org publishes an MTA-STS policy at https://mta-sts.python.org/.well-known/mta-sts.txt. Change the id whenever the policy file changes.

TypeTXT
Name / Host
_mta-sts.python.org

Some DNS providers want just “_mta-sts” here.

Value
v=STSv1; id=202610040216

Host the MTA-STS policy filepolicy-file

Serve this file over HTTPS with a valid certificate for mta-sts.python.org. It lists your MX hosts and starts in testing mode; switch to mode: enforce once TLS-RPT reports show no failures.

Location
https://mta-sts.python.org/.well-known/mta-sts.txt
Contents
version: STSv1
mode: testing
mx: mail.python.org
max_age: 604800

Set up a TLS report addressinstruction

Sending servers will report TLS failures when delivering to python.org, which you need before enforcing MTA-STS. The address must accept TLS reports; a DMARC report address does not necessarily do so.

Applies to: _smtp._tls.python.org

  1. Pick an address that will receive TLS reports: a mailbox you read (for example tls-reports@python.org, created first) or a TLS reporting service. 2. Publish a TXT record at _smtp._tls.python.org with the value v=TLSRPTv1; rua=mailto:<that address>.

Prepare BIMIinstruction

BIMI shows your logo next to messages in supporting inboxes, but only for mail that passes DMARC under an enforced policy.

Applies to: default._bimi.python.org

  1. Enforce DMARC first: p=quarantine or p=reject at 100% (no pct below 100). 2. Convert your logo to an SVG Tiny PS file and host it over HTTPS, for example https://python.org/bimi/logo.svg. 3. For Gmail and Apple Mail, obtain a VMC or CMC certificate for the logo. 4. Publish a TXT record at default._bimi.python.org with v=BIMI1, l= set to the logo URL and a= set to the certificate URL.