The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
[
  {
    'tests' => {
      'sender-id-pick-mfrom1' => {
        'spec' => '',
        'mailfrom' => 'user@example3.net',
        'description' => 'SenderID with mfrom and pra, pick mfrom',
        'result' => 'pass',
        'host' => '1.2.3.5',
        'helo' => 'mail.example.net'
      },
      'sender-id-pick-mfrom2' => {
        'spec' => '',
        'mailfrom' => 'user@example4.net',
        'description' => 'SenderID with mfrom and pra, pick mfrom',
        'result' => 'fail',
        'host' => '1.2.3.5',
        'helo' => 'mail.example.net'
      },
      'second-include' => {
        'spec' => '',
        'mailfrom' => 'user@example7.net',
        'description' => 'second include matches',
        'result' => 'pass',
        'host' => '3.4.5.6',
        'helo' => 'mail.example.net'
      },
      'domain-dots-at-end' => {
        'spec' => '4.3/1',
        'mailfrom' => 'user@example5.net....',
        'description' => 'multiple dots at end of domain name are illegal',
        'result' => 'none',
        'host' => '1.2.3.5',
        'helo' => 'mail.example.net'
      },
      'sender-id' => {
        'spec' => '',
        'mailfrom' => 'user@example2.net',
        'description' => 'no SPF record but SenderID',
        'result' => 'pass',
        'host' => '1.2.3.5',
        'helo' => 'mail.example.net'
      },
      'sender-id-pick-spf' => {
        'spec' => '',
        'mailfrom' => 'user@example5.net',
        'description' => 'SenderID with mfrom and SPF, pick SPF',
        'result' => 'pass',
        'host' => '1.2.3.5',
        'helo' => 'mail.example.net'
      },
      'ptr-cname' => {
        'spec' => '',
        'mailfrom' => 'user@example6.net',
        'description' => 'PTR record is CNAME to PTR record',
        'result' => 'pass',
        'host' => '2.3.4.5',
        'helo' => 'mail.example.net'
      },
      'spf-by-cname' => {
        'spec' => '',
        'comment' => 'The SPF Lookup returns a CNAME and the SPF record',
        'mailfrom' => 'user@example.net',
        'description' => 'TXT/SPF records can be referenced through CNAME',
        'result' => 'pass',
        'host' => '1.2.3.5',
        'helo' => 'mail.example.net'
      },
      'p-in-exp-mod' => {
        'spec' => '',
        'explanation' => 'forbidden for one.two.three.five.example.net',
        'mailfrom' => 'user@example1.net',
        'description' => '%{p} in exp= modifier',
        'result' => 'fail',
        'host' => '1.2.3.5',
        'helo' => 'mail.example.net'
      }
    },
    'description' => 'various other tests',
    'zonedata' => {
      'example5.net' => [
        {
          'SPF' => 'spf2.0/mfrom -ip4:1.2.3.5 all'
        },
        {
          'SPF' => 'v=spf1 ip4:1.2.3.5 -all'
        }
      ],
      'example.net' => [
        {
          'CNAME' => 'example.com'
        }
      ],
      'example8.net' => [
        {
          'SPF' => 'v=spf1 ip4:2.3.4.5 ip4:3.4.5.6 -all'
        }
      ],
      'example2.net' => [
        {
          'SPF' => 'spf2.0/pra,mfrom ip4:1.2.3.5 -all'
        }
      ],
      'example1.net' => [
        {
          'SPF' => 'v=spf1 -ip4:1.2.3.5 all exp=%{p4r}.explain.example1.net'
        }
      ],
      'example4.net' => [
        {
          'SPF' => 'spf2.0/mfrom -ip4:1.2.3.5 all'
        },
        {
          'SPF' => 'spf2.0/pra ip4:1.2.3.5 -all'
        }
      ],
      'example.com' => [
        {
          'SPF' => 'v=spf1 ip4:1.2.3.5 -all'
        }
      ],
      'one.two.three.five.example.net' => [
        {
          'A' => '1.2.3.5'
        }
      ],
      'unknown.explain.example1.net' => [
        {
          'TXT' => 'bad message for %{p}'
        }
      ],
      'five.three.two.one.explain.example1.net' => [
        {
          'TXT' => 'forbidden for %{p}'
        }
      ],
      'example3.net' => [
        {
          'SPF' => 'spf2.0/pra -ip4:1.2.3.5 all'
        },
        {
          'SPF' => 'spf2.0/mfrom ip4:1.2.3.5 -all'
        }
      ],
      '5.3.2.1.in-addr.arpa' => [
        {
          'PTR' => 'one.two.three.five.example.net'
        }
      ],
      'friend.example6.net' => [
        {
          'A' => '2.3.4.5'
        }
      ],
      'example6.net' => [
        {
          'SPF' => 'v=spf1 ptr:friend.example6.net -all'
        }
      ],
      'two.three.four.five.example.net' => [
        {
          'PTR' => 'friend.example6.net'
        }
      ],
      '5.4.3.2.in-addr.arpa' => [
        {
          'CNAME' => 'two.three.four.five.example.net'
        }
      ],
      'example7.net' => [
        {
          'SPF' => 'v=spf1 include:example.com include:example8.net -all'
        }
      ]
    }
  }
]