How to reproduce the results (Section 5.2) on the paper?

We wanted to measure the current state of SPF validation by SMTP servers in the wild with respect to lookup limits. In our experiment, we focus on the DNS lookup limits specified in the standard; namely: (1) total DNS lookup and (2) void lookup. Please refer to Section 5.1 of our paper to understand the methodology of our scanning.

Reproducing the analytics from the datasets

This section introduces a way to verify the results produced via our Internet wide scanning.

Datasets and scripts

(1) Datasets and prerequisites for the analysis.

Filename Download Description
List of scanned MTAs (hashed) link
DNS Logs link

(2) Scripts for the analysis

Filename Download Description
generate-fig7-data.py link This script is for analyzing the BIND logs associated with the scan and generating data for reproducing Figure 7.

How to run the scripts?

  1. Requirements: You'll need ~2GB of storage and python3 installed in your machine.
  2. Create a directory named spf-usenix-fall-2024-artifacts anywhere you want.
  3. Download the specified json and zip files in this directory.
  4. Unzip the bind-logs.zip file within this directory. If done correctly, there should be a bind-logs directory under the base spf-usenix-fall-2024-artifacts directory.
  5. Navigate to the spf-usenix-fall-2024 directory in a terminal.
  6. Run python3 generate-fig7-data.py
  7. If everything goes smoothly up until this point, you should see the numbers and their explanations. Please match it with Section 5.2 of our paper.