50 lines
2.0 KiB
SQL
50 lines
2.0 KiB
SQL
-- 0003_create_report_tables.up.sql
|
|
-- Tables for DMARC aggregate (RUA) records and TLS-RPT failure reports
|
|
|
|
CREATE TABLE IF NOT EXISTS dmarc_reports (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
domain_id UUID REFERENCES domains(id) ON DELETE CASCADE,
|
|
org_name VARCHAR(255) NOT NULL,
|
|
report_id VARCHAR(255) NOT NULL,
|
|
domain VARCHAR(255) NOT NULL DEFAULT '',
|
|
date_begin TIMESTAMPTZ,
|
|
date_end TIMESTAMPTZ,
|
|
raw_xml TEXT,
|
|
summary JSONB,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
ALTER TABLE dmarc_reports ALTER COLUMN domain_id DROP NOT NULL;
|
|
ALTER TABLE dmarc_reports ADD COLUMN IF NOT EXISTS domain VARCHAR(255) NOT NULL DEFAULT '';
|
|
ALTER TABLE dmarc_reports ADD COLUMN IF NOT EXISTS date_range_begin TIMESTAMPTZ;
|
|
ALTER TABLE dmarc_reports ADD COLUMN IF NOT EXISTS date_range_end TIMESTAMPTZ;
|
|
|
|
CREATE TABLE IF NOT EXISTS dmarc_report_records (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
report_id UUID NOT NULL REFERENCES dmarc_reports(id) ON DELETE CASCADE,
|
|
source_ip INET NOT NULL,
|
|
count INT NOT NULL,
|
|
disposition VARCHAR(32) NOT NULL,
|
|
dkim_result VARCHAR(32) NOT NULL,
|
|
spf_result VARCHAR(32) NOT NULL,
|
|
header_from VARCHAR(255) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS tls_rpt_reports (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
organization_name VARCHAR(255) NOT NULL,
|
|
report_id VARCHAR(255) NOT NULL,
|
|
domain VARCHAR(255) NOT NULL,
|
|
date_range_begin TIMESTAMPTZ NOT NULL,
|
|
date_range_end TIMESTAMPTZ NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS tls_rpt_report_policies (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
report_id UUID NOT NULL REFERENCES tls_rpt_reports(id) ON DELETE CASCADE,
|
|
policy_type VARCHAR(64) NOT NULL,
|
|
success_count INT NOT NULL DEFAULT 0,
|
|
failure_count INT NOT NULL DEFAULT 0
|
|
);
|