Как получить «сырые» DMARC-отчеты через API DMARC?

Инструмент DMARC Weekly Digest от HaskiMail помогает внедрить политику DMARC и получать еженедельные агрегированные DMARC-данные от крупных провайдеров почты в удобном для чтения формате. Однако иногда вам может понадобиться получить оригинальные сырые данные, полученные от провайдеров, которые использовались для формирования этих сводных отчетов.

В этой статье мы расскажем, как использовать API DMARC Weekly Digest для получения этих сырых отчетов.

Аутентификация с помощью REST API DMARC

Когда вы зарегистрировались для получения DMARC Weekly Digests, вам был выдан API-ключ, который вы можете использовать для доступа к DMARC REST API. Этот ключ передается в заголовке X-Api-Token при выполнении запросов, требующих аутентификации.

Получение ID DMARC-отчета

Этот API-запрос вернет все полученные DMARC-отчеты для домена с возможностью фильтрации по дате или диапазону дат. Используйте этот запрос, чтобы получить список отчетов и затем используйте возвращаемый ID отчета для того, чтобы получить сырые данные. Также можно использовать параметры запроса from_date и to_date, чтобы ограничить результаты необходимым диапазоном дат.

Получение ID DMARC-отчета

Этот API-запрос вернет все полученные DMARC-отчеты для домена с возможностью фильтрации по дате или диапазону дат. Используйте этот запрос, чтобы получить список отчетов и затем используйте возвращаемый ID отчета для того, чтобы получить сырые данные. Также можно использовать параметры запроса from_date и to_date, чтобы ограничить результаты необходимым диапазоном дат.

Пример запроса с использованием URL:
curl https://dmarc.haskimail.ru/records/my/reports?from_date=2017-01-02&to_date=2017-01-16&limit=100 \
  -X GET \
  -H "Accept: application/json" \
  -H "X-Api-Token: 005d8431-b020-41aa-230e-4d63a0357869"
Пример ответа:
{
  "meta": {
    "next": 276,
    "next_url": "/records/e8dad1d4-7162-4c73-8ddf-5be0d64bc2a6/reports?from_date=&to_date=&limit=1&after=276",
    "total": 2
  },
  "entries": [
    {
      "domain": "wildbit.com",
      "date_range_begin": "2014-04-27T20:00:00Z",
      "date_range_end": "2014-04-28T19:59:59Z",
      "id": 276,
      "created_at": "2014-07-25T11:44:55Z",
      "external_id": "xxxxxxxxxxx",
      "organization_name": "google.com"
    }
  ]
}

Получение подробностей сырого отчета по ID

Теперь, когда у вас есть ID отчета, вы можете использовать запрос Get a specific DMARC report by ID для получения сырых данных, отправленных нам провайдером. Если вы хотите получить отчеты в формате XML вместо JSON, просто измените заголовок Accept на application/xml.

Пример запроса с использованием cURL:
curl https://dmarc.haskimail.ru/records/my/reports/:id \
  -X GET \
  -H "Accept: application/json" \
  -H "X-Api-Token: 005d8431-b020-41aa-230e-4d63a0357869"
Пример ответа:
{
  "id": 276,
  "domain": "wildbit.com",
  "date_range_begin": "2014-04-27T20:00:00Z",
  "date_range_end": "2014-04-28T19:59:59Z",
  "source_uri": "mailto:noreply-dmarc-support@google.com",
  "external_id": "xxxxxxxxx",
  "email": "noreply-dmarc-support@google.com",
  "organization_name": "google.com",
  "created_at": "2014-07-25T11:44:55Z",
  "extra_contact_info": "http://support.google.com/a/bin/answer.py?answer=2466580",
  "records": [
    {
      "header_from": "wildbit.com",
      "source_ip": "127.0.0.1",
      "source_ip_version": 4,
      "host_name": "example.org.",
      "count": 1,
      "policy_evaluated_spf": "fail",
      "policy_evaluated_dkim": "fail",
      "policy_evaluated_disposition": "none",
      "policy_evaluated_reason_type": null,
      "spf_domain": "example.org",
      "spf_result": "pass",
      "dkim_domain": null,
      "dkim_result": null
    }
  ]
}
}