keltia/dmarc-cat

Handle gzipped XML files

sebastic opened this issue ยท 9 comments

outlook.com sends gzipped XML instead of plain XML or a ZIP file like protection.outlook.com!example.com!1634515200!1634601600.xml.gz

This is currently not supported:

$ dmarc-cat -v /tmp/protection.outlook.com\!example.com\!1634515200\!1634601600.xml.gz
2021/10/20 10:09:55 Analyzing /tmp/protection.outlook.com!example.com!1634515200!1634601600.xml.gz
2021/10/20 10:09:55 Error: file /tmp/protection.outlook.com!example.com!1634515200!1634601600.xml.gz:: unmarshall: XML syntax error on line 2: invalid character entity &9 (no semicolon)

These should be relatively easy to support as well.

amazonses.com, yahoo.com, comcast.net use gzipped XML as well.

That's weird, it works here:

PS C:\Users\roberto\go\src\dmarc-cat> .\dmarc-cat.exe -v .\testdata\example.com!keltia.net!1538604008!1538690408.xml.gz
2022/04/05 15:47:40 Analyzing .\testdata\example.com!keltia.net!1538604008!1538690408.xml.gz
2022/04/05 15:47:40 Resolving all 1 IPs
2022/04/05 15:47:40 ParallelSolve with 6 workers
2022/04/05 15:47:40 Resolved 1 IPs
dmarc-cat.exe 0.14.1,parallel/j6 by Ollivier Robert

Reporting by: esa1.eurocontrol.c3s2.iphmx.com โ€” MAILER-DAEMON@esa1.eurocontrol.c3s2.iphmx.com
From 2018-10-04 00:00:08 +0200 CEST to 2018-10-05 00:00:08 +0200 CEST

Domain: keltia.net
Policy: p=none; dkim=r; spf=r

Reports(1):
IP               Count   From       RFrom      RDKIM   RSPF
aran.keltia.net. 1       keltia.net keltia.net         pass

@sebastic could you please provide me with the file in question or another that triggers the issue?

I've sent you one by email.

Well... ๐Ÿ˜…

PS C:\Users\roberto\go\src\dmarc-cat> .\dmarc-cat.exe -v .\testdata\protection.outlook.com!onexs.com!1649030400!1649116800.xml.gz
2022/04/06 09:47:46 Analyzing .\testdata\protection.outlook.com!onexs.com!1649030400!1649116800.xml.gz
2022/04/06 09:47:46 Resolving all 2 IPs
2022/04/06 09:47:46 ParallelSolve with 6 workers
2022/04/06 09:47:46 Resolved 2 IPs
dmarc-cat.exe 0.14.1,parallel/j6 by Ollivier Robert

Reporting by: Outlook.com โ€” dmarcreport@microsoft.com
From 2022-04-04 02:00:00 +0200 CEST to 2022-04-05 02:00:00 +0200 CEST

Domain: onexs.com
Policy: p=quarantine; dkim=r; spf=r

Reports(2):
IP                     Count   From          RFrom     RDKIM   RSPF
smtp-infra.deanone.nl. 4       xs2.onexs.com onexs.com pass    pass
smtp-infra.deanone.nl. 3       xs2.onexs.com onexs.com pass    pass

That suggests that something changed in 0.14.1 or its dependencies (0.14.0 is packaged in Debian).

I just built dmarc-cat 0.14.1 with Go 1.15 on Debian bullseye, and it still fails:

$ ./dmarc-cat -version
dmarc-cat version 0.14.1,parallel/j4 archive/0.9.1
$ ./dmarc-cat -v /tmp/protection.outlook.com\!onexs.com\!1649030400\!1649116800.xml.gz
2022/04/06 08:37:55 Analyzing /tmp/protection.outlook.com!onexs.com!1649030400!1649116800.xml.gz
2022/04/06 08:37:55 Error: file /tmp/protection.outlook.com!onexs.com!1649030400!1649116800.xml.gz:: unmarshall: XML syntax error on line 1: illegal character code U+001F 

Does go test -v . fails in your setup too? I'm migrating from Travis-CI to Cirus-CI and will see how to setup tests for multiple Go versions.

That seems to work:

root@foobar:~/go/pkg/mod/github.com/keltia/dmarc-cat@v0.14.1# go test -v .
go: downloading github.com/stretchr/testify v1.3.0
go: downloading github.com/davecgh/go-spew v1.1.1
go: downloading github.com/pmezard/go-difflib v1.0.0
=== RUN   TestAnalyze
--- PASS: TestAnalyze (0.00s)
=== RUN   TestGatherRows_Empty
--- PASS: TestGatherRows_Empty (0.00s)
=== RUN   TestGatherRows_Good
--- PASS: TestGatherRows_Good (0.00s)
=== RUN   TestParallelSolve_Error
--- PASS: TestParallelSolve_Error (0.00s)
=== RUN   TestParallelSolve_Good
--- PASS: TestParallelSolve_Good (0.00s)
=== RUN   TestCheckFilename
--- PASS: TestCheckFilename (0.00s)
=== RUN   TestHandleZipFile
--- PASS: TestHandleZipFile (0.00s)
=== RUN   TestHandleZipFile_Xml
--- PASS: TestHandleZipFile_Xml (0.00s)
=== RUN   TestHandleZipFile_Bad
--- PASS: TestHandleZipFile_Bad (0.00s)
=== RUN   TestHandleZipFile_Bad1
--- PASS: TestHandleZipFile_Bad1 (0.00s)
=== RUN   TestHandleZipFile_None
--- PASS: TestHandleZipFile_None (0.00s)
=== RUN   TestHandleSingleFile_Plain
--- PASS: TestHandleSingleFile_Plain (0.00s)
=== RUN   TestHandleSingleFile_Gzip
--- PASS: TestHandleSingleFile_Gzip (0.00s)
=== RUN   TestHandleSingleFile_Zip
--- PASS: TestHandleSingleFile_Zip (0.00s)
=== RUN   TestHandleSingleFile_Xml
2022/04/07 17:19:48 HandleSingleFile
2022/04/07 17:19:48 typ=1
2022/04/07 17:19:48 a=&archive.Plain{Name:"-", r:(*os.File)(0xc00009a2c8)}
2022/04/07 17:19:48 xml=[]byte{0x3c, 0x3f, 0x78, 0x6d, 0x6c, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x31, 0x2e, 0x30, 0x22, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x55, 0x54, 0x46, 0x2d, 0x38, 0x22, 0x20, 0x3f, 0x3e, 0xa, 0x3c, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3e, 0x31, 0x2e, 0x30, 0x3c, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x65, 0x73, 0x61, 0x31, 0x2e, 0x65, 0x75, 0x72, 0x6f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x33, 0x73, 0x32, 0x2e, 0x69, 0x70, 0x68, 0x6d, 0x78, 0x2e, 0x63, 0x6f, 0x6d, 0x3c, 0x2f, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x3e, 0x4d, 0x41, 0x49, 0x4c, 0x45, 0x52, 0x2d, 0x44, 0x41, 0x45, 0x4d, 0x4f, 0x4e, 0x40, 0x65, 0x73, 0x61, 0x31, 0x2e, 0x65, 0x75, 0x72, 0x6f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x33, 0x73, 0x32, 0x2e, 0x69, 0x70, 0x68, 0x6d, 0x78, 0x2e, 0x63, 0x6f, 0x6d, 0x3c, 0x2f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x3e, 0x3c, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x3e, 0x31, 0x61, 0x36, 0x66, 0x66, 0x62, 0x24, 0x39, 0x66, 0x37, 0x37, 0x62, 0x65, 0x61, 0x3d, 0x36, 0x62, 0x32, 0x66, 0x34, 0x37, 0x38, 0x36, 0x61, 0x39, 0x38, 0x32, 0x34, 0x38, 0x30, 0x36, 0x40, 0x65, 0x73, 0x61, 0x31, 0x2e, 0x65, 0x75, 0x72, 0x6f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x33, 0x73, 0x32, 0x2e, 0x69, 0x70, 0x68, 0x6d, 0x78, 0x2e, 0x63, 0x6f, 0x6d, 0x3c, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x3e, 0x31, 0x35, 0x33, 0x38, 0x36, 0x30, 0x34, 0x30, 0x30, 0x38, 0x3c, 0x2f, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x65, 0x6e, 0x64, 0x3e, 0x31, 0x35, 0x33, 0x38, 0x36, 0x39, 0x30, 0x34, 0x30, 0x38, 0x3c, 0x2f, 0x65, 0x6e, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x3e, 0x6b, 0x65, 0x6c, 0x74, 0x69, 0x61, 0x2e, 0x6e, 0x65, 0x74, 0x3c, 0x2f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x61, 0x64, 0x6b, 0x69, 0x6d, 0x3e, 0x72, 0x3c, 0x2f, 0x61, 0x64, 0x6b, 0x69, 0x6d, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x61, 0x73, 0x70, 0x66, 0x3e, 0x72, 0x3c, 0x2f, 0x61, 0x73, 0x70, 0x66, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x3e, 0x6e, 0x6f, 0x6e, 0x65, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x73, 0x70, 0x3e, 0x3c, 0x2f, 0x73, 0x70, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x63, 0x74, 0x3e, 0x31, 0x30, 0x30, 0x3c, 0x2f, 0x70, 0x63, 0x74, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x72, 0x6f, 0x77, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x3e, 0x38, 0x38, 0x2e, 0x31, 0x39, 0x31, 0x2e, 0x32, 0x35, 0x30, 0x2e, 0x32, 0x34, 0x3c, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3e, 0x31, 0x3c, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0x6e, 0x6f, 0x6e, 0x65, 0x3c, 0x2f, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x6b, 0x69, 0x6d, 0x3e, 0x66, 0x61, 0x69, 0x6c, 0x3c, 0x2f, 0x64, 0x6b, 0x69, 0x6d, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x73, 0x70, 0x66, 0x3e, 0x70, 0x61, 0x73, 0x73, 0x3c, 0x2f, 0x73, 0x70, 0x66, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x72, 0x6f, 0x77, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x3e, 0x6b, 0x65, 0x6c, 0x74, 0x69, 0x61, 0x2e, 0x6e, 0x65, 0x74, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x3e, 0x6b, 0x65, 0x6c, 0x74, 0x69, 0x61, 0x2e, 0x6e, 0x65, 0x74, 0x3c, 0x2f, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x73, 0x70, 0x66, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x3e, 0x6b, 0x65, 0x6c, 0x74, 0x69, 0x61, 0x2e, 0x6e, 0x65, 0x74, 0x3c, 0x2f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x3e, 0x6d, 0x66, 0x72, 0x6f, 0x6d, 0x3c, 0x2f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3e, 0x70, 0x61, 0x73, 0x73, 0x3c, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x73, 0x70, 0x66, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x3e}
2022/04/07 17:19:48 report={1 {esa1.eurocontrol.c3s2.iphmx.com MAILER-DAEMON@esa1.eurocontrol.c3s2.iphmx.com  1a6ffb$9f77bea=6b2f4786a9824806@esa1.eurocontrol.c3s2.iphmx.com {1538604008 1538690408} []} {keltia.net r r none  100 } [{{88.191.250.24 1 {none fail pass []}} {keltia.net keltia.net } {{   } {keltia.net  pass }}}]}
2022/04/07 17:19:48 setting up w0
2022/04/07 17:19:48 ips=[]string{"88.191.250.24"}
2022/04/07 17:19:48 w0 - ip=88.191.250.24 - name=88.191.250.24
2022/04/07 17:19:48 resolved=[]main.IP{main.IP{IP:"88.191.250.24", Name:"88.191.250.24"}}
--- PASS: TestHandleSingleFile_Xml (0.00s)
=== RUN   TestHandleSingleFile_Null
--- PASS: TestHandleSingleFile_Null (0.00s)
=== RUN   TestHandleSingleFile_Txt
--- PASS: TestHandleSingleFile_Txt (0.00s)
=== RUN   TestHandleSingleFile_TxtNull
--- PASS: TestHandleSingleFile_TxtNull (0.00s)
=== RUN   TestHandleSingleFile_Verbose
--- PASS: TestHandleSingleFile_Verbose (0.00s)
=== RUN   TestHandleSingleFile_Debug
2022/04/07 17:19:48 HandleSingleFile
2022/04/07 17:19:48 typ=1
2022/04/07 17:19:48 a=&archive.Plain{Name:"-", r:(*os.File)(0xc00009a368)}
2022/04/07 17:19:48 xml=[]byte{}
--- PASS: TestHandleSingleFile_Debug (0.00s)
=== RUN   TestSetup
--- PASS: TestSetup (0.00s)
=== RUN   TestSetup2
--- PASS: TestSetup2 (0.00s)
=== RUN   TestSetup3
--- PASS: TestSetup3 (0.00s)
=== RUN   TestSetup4
dmarc-cat.test version 0.14.1,parallel/j4 archive/0.9.0
--- PASS: TestSetup4 (0.00s)
=== RUN   TestVersion
dmarc-cat.test version 0.14.1,parallel/j4 archive/0.9.0
--- PASS: TestVersion (0.00s)
=== RUN   TestSelectInput_Bad
--- PASS: TestSelectInput_Bad (0.00s)
=== RUN   TestSelectInput_Good
--- PASS: TestSelectInput_Good (0.00s)
=== RUN   TestSelectInput_Badfn
--- PASS: TestSelectInput_Badfn (0.00s)
=== RUN   TestMain_Noargs
--- PASS: TestMain_Noargs (0.00s)
=== RUN   TestMain_Noargs_Verbose
--- PASS: TestMain_Noargs_Verbose (0.00s)
=== RUN   TestMain_Noargs_Debug
2022/04/07 17:19:48 debug mode
--- PASS: TestMain_Noargs_Debug (0.00s)
=== RUN   TestMain_Noargs_NoResolv
2022/04/07 17:19:48 Analyzing testdata/google.com!keltia.net!1538438400!1538524799.xml
2022/04/07 17:19:48 Resolving all 2 IPs
2022/04/07 17:19:48 ParallelSolve with 4 workers
2022/04/07 17:19:48 Resolved 2 IPs
dmarc-cat.test 0.14.1,parallel/j4 by Ollivier Robert

Reporting by: google.com โ€” noreply-dmarc-support@google.com
From 2018-10-02 00:00:00 +0000 UTC to 2018-10-02 23:59:59 +0000 UTC

Domain: keltia.net
Policy: p=none; dkim=r; spf=r

Reports(2):
IP              Count   From       RFrom       RDKIM   RSPF    
195.154.227.159 1       keltia.net example.org         pass    
217.70.183.200  1       keltia.net example.org         pass    

--- PASS: TestMain_Noargs_NoResolv (0.00s)
=== RUN   TestRealmain_GoodFile
2022/04/07 17:19:48 Analyzing testdata/google.com!keltia.net!1538438400!1538524799.xml
2022/04/07 17:19:48 Resolving all 2 IPs
2022/04/07 17:19:48 ParallelSolve with 4 workers
2022/04/07 17:19:49 Resolved 2 IPs
dmarc-cat.test 0.14.1,parallel/j4 by Ollivier Robert

Reporting by: google.com โ€” noreply-dmarc-support@google.com
From 2018-10-02 00:00:00 +0000 UTC to 2018-10-02 23:59:59 +0000 UTC

Domain: keltia.net
Policy: p=none; dkim=r; spf=r

Reports(2):
IP                       Count   From       RFrom       RDKIM   RSPF    
zoidberg.rfc1149.net.    1       keltia.net example.org         pass    
relay7-d.mail.gandi.net. 1       keltia.net example.org         pass    

--- PASS: TestRealmain_GoodFile (1.01s)
=== RUN   TestRealmain_GoodFile1
2022/04/07 17:19:49 Analyzing testdata/google.com!keltia.net!1538438400!1538524799.zip
2022/04/07 17:19:49 Resolving all 2 IPs
2022/04/07 17:19:49 ParallelSolve with 4 workers
2022/04/07 17:19:49 Resolved 2 IPs
dmarc-cat.test 0.14.1,parallel/j4 by Ollivier Robert

Reporting by: google.com โ€” noreply-dmarc-support@google.com
From 2018-10-02 00:00:00 +0000 UTC to 2018-10-02 23:59:59 +0000 UTC

Domain: keltia.net
Policy: p=none; dkim=r; spf=r

Reports(2):
IP                       Count   From       RFrom       RDKIM   RSPF    
relay7-d.mail.gandi.net. 1       keltia.net example.org         pass    
zoidberg.rfc1149.net.    1       keltia.net example.org         pass    

--- PASS: TestRealmain_GoodFile1 (0.00s)
=== RUN   TestRealmain_NoFile
2022/04/07 17:19:49 Analyzing /nonexistent
--- PASS: TestRealmain_NoFile (0.00s)
=== RUN   TestMain_EmptyArg
2022/04/07 17:19:49 Analyzing foo
--- PASS: TestMain_EmptyArg (0.00s)
=== RUN   TestMain_GoodFile
2022/04/07 17:19:49 Analyzing testdata/google.com!keltia.net!1538438400!1538524799.zip
2022/04/07 17:19:49 Resolving all 2 IPs
2022/04/07 17:19:49 ParallelSolve with 4 workers
2022/04/07 17:19:49 Resolved 2 IPs
dmarc-cat.test 0.14.1,parallel/j4 by Ollivier Robert

Reporting by: google.com โ€” noreply-dmarc-support@google.com
From 2018-10-02 00:00:00 +0000 UTC to 2018-10-02 23:59:59 +0000 UTC

Domain: keltia.net
Policy: p=none; dkim=r; spf=r

Reports(2):
IP                       Count   From       RFrom       RDKIM   RSPF    
relay7-d.mail.gandi.net. 1       keltia.net example.org         pass    
zoidberg.rfc1149.net.    1       keltia.net example.org         pass    

--- PASS: TestMain_GoodFile (0.00s)
=== RUN   TestNullResolver_LookupAddr
--- PASS: TestNullResolver_LookupAddr (0.00s)
=== RUN   TestRealResolver_LookupAddr
--- PASS: TestRealResolver_LookupAddr (0.23s)
=== RUN   TestVerbose_No
2022/04/07 17:19:49 no
--- PASS: TestVerbose_No (0.00s)
=== RUN   TestVerbose_Yes
2022/04/07 17:19:49 yes
--- PASS: TestVerbose_Yes (0.00s)
=== RUN   TestDebug_No
--- PASS: TestDebug_No (0.00s)
=== RUN   TestDebug_Yes
2022/04/07 17:19:49 yes
--- PASS: TestDebug_Yes (0.00s)
PASS
ok      github.com/keltia/dmarc-cat     1.254s

0.15.0 built with Go 1.18 works now:

root@foobar:~# ./go/bin/dmarc-cat -version
dmarc-cat version 0.15.0,parallel/j4 archive/0.9.1
root@foobar:~# ./go/bin/dmarc-cat -v /tmp/protection.outlook.com\!onexs.com\!1649030400\!1649116800.xml.gz 
2022/04/07 17:21:45 Analyzing /tmp/protection.outlook.com!onexs.com!1649030400!1649116800.xml.gz
2022/04/07 17:21:45 Resolving all 2 IPs
2022/04/07 17:21:45 ParallelSolve with 4 workers
2022/04/07 17:21:46 Resolved 2 IPs
dmarc-cat 0.15.0,parallel/j4 by Ollivier Robert

Reporting by: Outlook.com โ€” dmarcreport@microsoft.com
From 2022-04-04 00:00:00 +0000 UTC to 2022-04-05 00:00:00 +0000 UTC

Domain: onexs.com
Policy: p=quarantine; dkim=r; spf=r

Reports(2):
IP                     Count   From          RFrom     RDKIM   RSPF    
smtp-infra.deanone.nl. 4       xs2.onexs.com onexs.com pass    pass    
smtp-infra.deanone.nl. 3       xs2.onexs.com onexs.com pass    pass