원문 캡처 · dmarcguard.io
원문 캡처 · dmarcguard.io

APRF(Aggregate Performance Reporting)는 메일 제공업체가 발신자에게 메일 배치와 수신자 반응을 매일 집계해 보내도록 제안된 보고 형식이자 DNS 레코드다. 아직 IETF 인터넷 초안이며 표준은 아니다. 보고 대상은 발신자의 From 주소가 아니라 유효한 DKIM 서명의 도메인과 선택자다.

APRF는 인증 여부가 아니라 인증 뒤 메일 제공업체가 메시지를 어디에 배치했는지, 수신자가 어떻게 반응했는지를 다룬다. DMARC가 인증 결과를 보고한다면 APRF는 받은편지함·원치 않는 메일함 등의 배치와 긍정·중립·부정 반응을 집계한다. DKIM 서명의 d= 도메인과 선택자(s=)를 기준으로 레코드를 찾으므로, ESP가 자체 도메인으로 서명했다면 해당 ESP 도메인의 레코드가 적용된다. 초안은 서명 도메인이 5322.From 도메인과 일치하지 않을 수 있다고 명시한다.

초안 상태와 DNS 설정

APRF는 IETF mailmaint 작업반의 draft-ietf-mailmaint-aprf-00에 규정돼 있다. 인터넷 초안은 작업 중인 문서이므로 필드와 레코드 문법, 전달 방식이 바뀔 수 있다. 현재 초안에는 레코드의 ABNF 누락과 같은 기간에 보고서를 다시 보냈을 때의 처리 방식 등 미결 항목도 있다.

도메인 소유자는 메일 제공업체가 보고서를 보낼 위치를 TXT 레코드로 지정한다. 레코드는 선택자별, 와일드카드, 선택자 없는 형식으로 둘 수 있다.

  • _aprf._domainkey.example.com은 모든 선택자에 적용된다.
  • *._aprf._domainkey.example.com은 모든 선택자에 적용되는 와일드카드 형식이다.
  • sel1._aprf._domainkey.example.com은 sel1 선택자에만 적용된다.

예를 들어 d=foo.example.org; s=sel1로 서명한 메일은 sel1._aprf._domainkey.foo.example.org를 조회한다. 여러 형식을 함께 둘 수 있으며, 구체적인 선택자 레코드가 와일드카드보다 우선하고 와일드카드는 선택자 없는 이름보다 우선한다.

필수 태그는 v와 rua다. v 값은 APRFv1이어야 하며, 그렇지 않으면 레코드는 유효하지 않아 무시해야 한다. rua에는 쉼표로 구분한 하나 이상의 mailto: 주소를 넣는다. 선택 사항인 sdi는 보고서 분할에 사용할 헤더 이름과 한 글자 구분자를 지정한다.

예를 들어 전체 레코드는 다음과 같다.

*._aprf._domainkey.example.com. IN TXT "v=APRFv1; rua=mailto:aprf@example.com"

대부분의 발신자는 와일드카드 레코드 하나를 사용할 수 있다. ESP와 플랫폼이 DKIM 선택자를 추가하거나 교체해도 한 곳으로 보고서를 받을 수 있기 때문이다. 특정 선택자의 보고서를 다른 주소로 보내려면 선택자별 레코드를 추가할 수 있다. 레코드 구성에는 APRF 생성기를, 수신 측에서 조회할 값을 확인하려면 APRF 검사기를 이용할 수 있다.

보고서 수신 주소가 DKIM 도메인과 다르면, 초안은 발송 전 수신 대상 도메인의 허가를 확인하도록 권고한다. 수신 대상은 <selector>.<DKIM domain>._aprf.<report destination domain>에 v=APRFv1 값을 가진 TXT 레코드를 게시한다. 선택자나 DKIM 도메인에 와일드카드를 쓸 수 있다. 이 절차는 제3자가 동의하지 않은 주소로 보고서를 보내는 일을 막기 위한 것으로, DMARC 외부 보고서 대상 확인과 비슷하다.

보고서에 담기는 내용과 주의점

보고서는 정확히 하루(UTC 기준 00:00:00~23:59:59)를 다루는 JSON이다. header에는 보고서 버전, 보고 주체, DKIM 도메인과 선택자, 기간, 연락처 등이 들어간다. body에는 배치 분류와 참여 지표가 담길 수 있다. 배치 분류의 예는 inbox, unwanted, forwarded, promotional이며, 참여 지표는 positive, neutral, negative다. 두 항목은 각각 선택 사항이고, 제공업체가 어떤 정보를 공유할지 정한다.

수치는 정확한 메시지 수가 아니라 구간별 집계다. 구간 크기는 제공업체가 정하며, 초안은 구간의 상한을 보고하도록 권고한다. 따라서 수치를 더하거나 받은편지함 비율을 계산하면 정확한 것처럼 보이지만 실제 메시지 수를 나타내지 않는다. 보고서에서 빠진 분류도 0을 뜻하지 않는다.

긍정·중립·부정의 공식 정의는 없다. 제공업체에 따라 열기나 ‘스팸 아님’ 신고를 긍정으로, 전달이나 폴더 이동을 중립으로, 스팸 신고·삭제·구독 취소를 부정으로 볼 수 있다. 정의가 제공업체마다 다를 수 있고, 버전이 바뀌면 분류의 의미도 달라졌을 수 있으므로 version을 함께 확인해야 한다.

선택 사항인 sdi(Signer-Defined Identifier)는 브랜드나 캠페인처럼 발신자가 정한 기준으로 보고서를 나누는 기능이다. 값에는 RFC 5322 헤더 이름과 출력 가능한 ASCII 문자 한 글자를 구분자로 쓰며, 구분자는 ;, = 또는 ,일 수 없다. 관련 DKIM 서명은 해당 헤더에 서명해야 하고, 최대 네 단계로 분할할 수 있다. 제공업체가 이를 무시할 수도 있으므로 의존해서는 안 된다. 헤더 이름 충돌을 피하고, 분할 이름은 보고서에 노출될 수 있으니 민감한 정보를 넣지 말아야 한다. 대안으로 스트림이나 고객별 d= 도메인 또는 선택자를 따로 둘 수 있다.

보고서는 이메일로 전달된다. 메시지는 multipart/report 형식이고, 보고서는 application/json 첨부 파일로 온다. 제공업체가 gzip으로 압축할 수 있으며, 이 경우 파일 형식은 application/gzip, 확장자는 .json.gz다. 초안은 수신자가 압축 파일도 받아야 한다고 권고한다. 첨부 파일명과 제목에는 보고서 종료 날짜, DKIM 도메인, 선택자, 보고 주체 이름이 들어간다.

개인정보 노출도 고려해야 한다. 적은 수의 메일을 보고하면 작은 집계값만으로 개인에 관한 정보가 드러날 수 있어, 초안은 제공업체가 메시지 수나 고유 수신자 수 기준을 두는 방안을 제시한다. 제공업체는 모든 요청 주소에 보고서를 보낼 의무가 없으며, From 정렬 여부나 도메인 평판 등을 고려할 수 있다. 따라서 보고서가 오지 않는다고 레코드 오류라고 단정할 수 없다. sdi 분할 이름도 제공업체에 보인다.

다른 메일 신호와의 차이

ARF는 스팸 신고나 DMARC 실패 같은 메시지별 불만·실패 보고 형식이다. APRF는 DKIM 도메인과 선택자별 일일 집계다. TLS-RPT는 메일 서버 사이의 전송 암호화 실패를 보고한다. Gmail Postmaster Tools, Yahoo Sender Hub, Microsoft SNDS는 각각 로그인해 확인하는 제공업체별 평판·전달 대시보드다. 시드 목록 테스트는 실제 수신자 대신 테스트용 받은편지함에서 메시지 배치를 확인한다.

APRF는 실제 발신 메일의 배치 정보를 제공업체가 지정된 메일함으로 보내는 방식이다. 다른 신호를 대체하지는 않는다. DMARC는 누가 발신자로 가장하는지 확인하는 데 쓰이고, 제공업체 대시보드에는 각 업체가 공개하는 정보가 표시된다. 시드 테스트는 실제 수신자가 아니라 테스트 계정의 결과를 보여준다.

시작할 때 확인할 사항

먼저 발신한 메일의 DKIM 서명에서 d= 도메인과 s= 선택자를 확인하거나 DKIM 검사기를 이용한다. 매일 첨부 파일을 받을 수 있는 메일함을 정한 뒤, 보통은 와일드카드 TXT 레코드를 게시하고 검사기로 수신 측 조회 결과를 확인한다. 첫 보고서는 APRF 보고서 분석기에서 붙여넣거나 업로드해 볼 수 있다. 이 도구는 브라우저에서 처리하고 데이터를 업로드하지 않으며, 수치를 더하거나 비율로 바꾸지 않고 보고된 값 그대로 표시한다고 안내한다.

APRF를 지원하는 제공업체에서만 보고서를 받을 수 있다. Spam Resource에 따르면 현재 Comcast(Xfinity)가 베타로 보고서를 보내고 있다. 초안이 채택되기 전까지 다른 제공업체의 보고서를 기대하기 어렵다.

DKIM은 APRF가 기준으로 삼는 서명이다. DMARC는 인증 보고와 외부 보고서 대상 허가 절차를 설명하며, ARF와 TLS-RPT는 각각 메시지별 불만·실패와 전송 암호화 실패를 다룬다.

부록: 원문 예시

text
v=APRFv1;rua=mailto:reports@example.org; v=APRFv1;rua=mailto:reports@example.org,mailto:reports2@example2.net; v=APRFv1;rua=mailto:reports@example.org;sdi=MsgInfo,^