2024년 2월 1일부터 Google이 대량으로 메일을 보내는 발신자에 대한 가이드 라인을 변경한다는 공지를 올렸다. 여기서 대량으로 메일을 보내는 발신자의 기준은 1일에 5,000개 이상의 메일을 보내는 발신자이다.
이 가이드 라인을 위반했을 경우 이메일이 정상적으로 전송되지 않거나 스팸으로 표시 될 수 있으므로, 메일 관련된 기능이 있는 서비스를 운영하고 있는 경우 가이드 라인을 확인하고 대응이 필요한 경우 적절한 조치를 강구해야한다.
Google 가이드 라인의 아홉가지 조건을 세 가지로 분류
1 | 도메인에 SPF 및 DKIM 이메일 인증을 설정합니다. → SPF와 DKIM을 붙여서 메일을 보내라. |
2 | 발신 도메인 또는 IP에 유효한 정방향 및 역방향 DNS 레코드(PTR 레코드라고도 함)가 있어야 합니다. 자세히 알아보기 → 송신하는 IP주소를 full-circle reverse DNS으로 하라. |
3 | Postmaster Tools에 보고되는 스팸 비율을 0.3% 미만으로 유지합니다. 자세히 알아보기 → 스팸 메일률을 0.3%미만으로 해라. |
4 | 인터넷 메시지 서식 표준(RFC 5322)에 따라 메일 서식을 지정합니다. → 메일의 포맷 표준에 맞춰라. |
5 | Gmail 보낸사람: 헤더를 도용하지 마세요. Gmail은 DMARC 스팸 격리 저장소 시정 조치 정책을 적용할 예정이며, Gmail 보낸사람: 헤더를 도용하면 이메일 전송에 영향을 미칠 수 있습니다. → gmail이 아니면서 @gmail.com을 From으로 하여 메일을 보내지 않도록 하라. |
6 | 메일링 리스트나 수신 게이트웨이를 사용하는 등 이메일을 정기적으로 전달하는 경우 발신 이메일에 ARC 헤더를 추가합니다. ARC 헤더는 메일이 전달되었음을 나타내며 사용자가 전달자임을 나타냅니다. 메일링 리스트 발신자는 발신 메일에 메일링 리스트를 지정하는 List-id: 헤더를 추가해야 합니다. → 전송할 때에 ARC 헤더를 추가하라. |
7 | 발신 도메인에 DMARC 이메일 인증을 설정합니다. DMARC 시정 조치 정책을 없음으로 설정할 수 있습니다. 자세히 알아보기 → p = none도 괜찮으니 DMARC 레코드를 발행하도록 해라. |
8 | 직접 메일의 경우 발신자의 보낸사람: 헤더에 있는 도메인이 SPF 도메인 또는 DKIM 도메인과 일치해야 합니다. 이는 DMARC 일치 기준을 통과하는 데 필요합니다. → 사람이 보내는 메일에는 헤더 From과 Envelope-From은 동일하게 해라. 동일하게 되지 않는다면 헤더 From 도메인에 서명한 DKIM를 달아라. |
9 | 마케팅 메일 및 구독 메일의 경우 원클릭 수신 거부를 지원하고 메일 본문에 수신 거부 링크가 명확히 보이게 표시합니다. 자세히 알아보기 |
가이드 라인에는 아홉 개의 항목이 기재되어 있는데, 이는 세 가지로 분류할 수 있다.
(A) 메일을 보내는 시스템의 인프라에 관련된 것
(B) 메일을 보내는 운용에 관련된 것
(C) 양쪽 다 걸쳐 있는 것
이 분류에 따라 다시 표를 나눠본다면 다음과 같이 정리할 수 있다.
(A) 메일을 보내는 시스템의 인프라에 관련된 것
1 | 도메인에 SPF 및 DKIM 이메일 인증을 설정합니다. → SPF와 DKIM을 붙여서 메일을 보내라. |
2 | 발신 도메인 또는 IP에 유효한 정방향 및 역방향 DNS 레코드(PTR 레코드라고도 함)가 있어야 합니다. 자세히 알아보기 → 송신하는 IP주소를 full-circle reverse DNS으로 하라. |
4 | 인터넷 메시지 서식 표준(RFC 5322)에 따라 메일 서식을 지정합니다. → 메일의 포맷 표준에 맞춰라. |
6 | 메일링 리스트나 수신 게이트웨이를 사용하는 등 이메일을 정기적으로 전달하는 경우 발신 이메일에 ARC 헤더를 추가합니다. ARC 헤더는 메일이 전달되었음을 나타내며 사용자가 전달자임을 나타냅니다. 메일링 리스트 발신자는 발신 메일에 메일링 리스트를 지정하는 List-id: 헤더를 추가해야 합니다. → 전송할 때에 ARC 헤더를 추가하라. |
7 | 발신 도메인에 DMARC 이메일 인증을 설정합니다. DMARC 시정 조치 정책을 없음으로 설정할 수 있습니다. 자세히 알아보기 → p = none도 괜찮으니 DMARC 레코드를 발행하도록 해라. |
(B) 메일을 보내는 운용에 관련된 것
3 | Postmaster Tools에 보고되는 스팸 비율을 0.3% 미만으로 유지합니다. 자세히 알아보기 → 스팸 메일률을 0.3%미만으로 해라. |
5 | Gmail 보낸사람: 헤더를 도용하지 마세요. Gmail은 DMARC 스팸 격리 저장소 시정 조치 정책을 적용할 예정이며, Gmail 보낸사람: 헤더를 도용하면 이메일 전송에 영향을 미칠 수 있습니다. → gmail이 아니면서 @gmail.com을 From으로 하여 메일을 보내지 않도록 하라. |
8 | 직접 메일의 경우 발신자의 보낸사람: 헤더에 있는 도메인이 SPF 도메인 또는 DKIM 도메인과 일치해야 합니다. 이는 DMARC 일치 기준을 통과하는 데 필요합니다. → 사람이 보내는 메일에는 헤더 From과 Envelope-From은 동일하게 해라. 동일하게 되지 않는다면 헤더 From 도메인에 서명한 DKIM를 달아라. |
(C) 양쪽 다 걸쳐 있는 것
9 | 마케팅 메일 및 구독 메일의 경우 원클릭 수신 거부를 지원하고 메일 본문에 수신 거부 링크가 명확히 보이게 표시합니다. 자세히 알아보기 |
이제 각 항목에 대해서 자세히 살펴보도록 하자.
(A) 메일을 보내는 시스템의 인프라에 관련된 것
1 | 도메인에 SPF 및 DKIM 이메일 인증을 설정합니다. → SPF와 DKIM을 붙여서 메일을 보내라. |
2 | 발신 도메인 또는 IP에 유효한 정방향 및 역방향 DNS 레코드(PTR 레코드라고도 함)가 있어야 합니다. 자세히 알아보기 → 송신하는 IP주소를 full-circle reverse DNS으로 하라. |
4 | 인터넷 메시지 서식 표준(RFC 5322)에 따라 메일 서식을 지정합니다. → 메일의 포맷 표준에 맞춰라. |
6 | 메일링 리스트나 수신 게이트웨이를 사용하는 등 이메일을 정기적으로 전달하는 경우 발신 이메일에 ARC 헤더를 추가합니다. ARC 헤더는 메일이 전달되었음을 나타내며 사용자가 전달자임을 나타냅니다. 메일링 리스트 발신자는 발신 메일에 메일링 리스트를 지정하는 List-id: 헤더를 추가해야 합니다. → 전송할 때에 ARC 헤더를 추가하라. |
7 | 발신 도메인에 DMARC 이메일 인증을 설정합니다. DMARC 시정 조치 정책을 없음으로 설정할 수 있습니다. 자세히 알아보기 → p = none도 괜찮으니 DMARC 레코드를 발행하도록 해라. |
1. 도메인에 SPF 및 DKIM 이메일 인증을 설정합니다.
SPF 레코드와 DKIM레코드에 관한 설명은 링크를 참조하면 될 것 같다. 일종의 메일의 신뢰도를 높이기 위한 설정으로, 설정을 하게 되면 불분명한 발신자가 아님을 인증받을 것이기에 이메일 수신이 차단되거나 스팸으로 분류되는 확률이 낮아진다.
우리 회사에서 개발하고 있는 서비스의 경우 AWS의 SES를 이용해서 메일을 전송하고 있으며, SES의 경우 기본적으로 SPF 인증이 설정되어 있고, DKIM을 사용하여 이메일 인증 설정을 해놨기 때문에 해당 사항은 아니다.
2. 발신 도메인 또는 IP에 유효한 정방향 및 역방향 DNS 레코드(PTR 레코드라고도 함)가 있어야 합니다.
- 메일 송신하는 IP 주소를 역방향 조회하면 호스트명이 나올 것
- 그 호스트명을 토대로 조회하면 해당 IP주소가 조회될 것
메일 송신 도메인과 IP가 일치되면 큰 문제가 없다고 할 수 있다.
4. 인터넷 메시지 서식 표준(RFC 5322)에 따라 메일 서식을 지정합니다.
언어 표준의 SMTP 라이브러리를 사용하고 있다면 문제가 없다.
6. 메일링 리스트나 수신 게이트웨이를 사용하는 등 이메일을 정기적으로 전달하는 경우 발신 이메일에 ARC 헤더를 추가합니다. ARC 헤더는 메일이 전달되었음을 나타내며 사용자가 전달자임을 나타냅니다. 메일링 리스트 발신자는 발신 메일에 메일링 리스트를 지정하는 List-id: 헤더를 추가해야 합니다.
이 내용은 모든 사람에게 해당하는 것이 아닌 관계자에게 해당한다. EC사이트나 여행 예약 사이트 등 인터넷 서비스 혹은 실존하는 기업등 인터넷으로 메일을 보내는 모든 조직이 아닌 다음의 조직들에 해당하므로, 해당하지 않는다면 크게 신경쓰지 않아도 될 듯하다.
- ISP
- 통신사
- MBP(MailBox Provider - Gmail, Yahoo! 메일, outlook, iCloud등)
- 메일 서버를 운용하고 있고 그 서버를 통해 넓은 범위로 메일을 전송하고 있음
7. 발신 도메인에 DMARC 이메일 인증을 설정합니다. DMARC 시정 조치 정책을 없음으로 설정할 수 있습니다.
DMARC은 메일 인증 기술의 하나로, DMARC는 메일의 헤더 From과 대조해 SPF 혹은 DKIM이 pass하고 있는지를 검증한다.
DMARC에서는, 한 조직(도메인)이 메일과 해당 메일의 DMARC에 의한 인증 결과에 의한 취급(정책)을, 인터넷의 각 메일 수신 서버에 대해 DNS를 통해서 공개하는데 정책은 기본적으로 none, quarantine, reject 총 세 가지가 있다. 각 정책에 대한 설명은 다음과 같다.
이번 가이드 라인 안내를 통해 Gmail이 원하는 것은 none으로 설정해도 좋으니 어떠한 정책을 설정하여 공개하길 바란다는 것이다. none으로 하고 싶다면 DNS에 다음과 같이 쓰면 일단은 완료이다.
_dmarc.example.com IN TXT "v=DMARC1; p=none"
(B) 메일을 보내는 운용에 관련된 것
3 | Postmaster Tools에 보고되는 스팸 비율을 0.3% 미만으로 유지합니다. 자세히 알아보기 → 스팸 메일률을 0.3%미만으로 해라. |
5 | Gmail 보낸사람: 헤더를 도용하지 마세요. Gmail은 DMARC 스팸 격리 저장소 시정 조치 정책을 적용할 예정이며, Gmail 보낸사람: 헤더를 도용하면 이메일 전송에 영향을 미칠 수 있습니다. → gmail이 아니면서 @gmail.com을 From으로 하여 메일을 보내지 않도록 하라. |
8 | 직접 메일의 경우 발신자의 보낸사람: 헤더에 있는 도메인이 SPF 도메인 또는 DKIM 도메인과 일치해야 합니다. 이는 DMARC 일치 기준을 통과하는 데 필요합니다. → 사람이 보내는 메일에는 헤더 From과 Envelope-From은 동일하게 해라. 동일하게 되지 않는다면 헤더 From 도메인에 서명한 DKIM를 달아라. |
3. Postmaster Tools에 보고되는 스팸 비율을 0.3% 미만으로 유지합니다.
일단 Postmaster Tools은 도메인 등록을 통해 스팸 비율을 확인할 수 있는 Google이 제공하고 있는 무료툴이며, 이 스팸비율에 관련된 내용을 종합적으로 정리하자면 다음과 같다.
- 스팸 비율은 보통 0.1%미만이 되도록 하라.
- 스팸 비율은 0.3%이상이 되지 않도록 하라.
- 여기서 스팸 메일은 "유저에 의해 (유저의 메일함에 도착) 스팸 메일이라고 보고 됐을 경우"를 의미한다.
- 어떠한 이유로 이미 스팸 메일에 할당되어 있는 경우, 위에서 안내한 비율보다 더 적은 비율이라도 어떠한 제재를 가할지도 모른다.
AWS의 SES를 이용하는 경우 이 툴을 사용하지 않고도 확인할 수 있으니, 주기적으로 확인하여 스팸 메일로 지정한 사람에게는 메일을 보내지 않는 등의 정책을 추가하여 스팸 메일로 분류되는 비율을 낮추도록 해야한다.
8. 직접 메일의 경우 발신자의 보낸사람: 헤더에 있는 도메인이 SPF 도메인 또는 DKIM 도메인과 일치해야 합니다. 이는 DMARC 일치 기준을 통과하는 데 필요합니다.
MUA(Outlook, iPhone의 표준 메일 앱 등)를 통해 보낼 때에 헤더 From과 Envelope-From은 보통 일치하므로 뭔가 특이한 구성의 메일이 아니라면 신경쓸 항목은 아니다.
(C) 양쪽 다 걸쳐 있는 것
9 | 마케팅 메일 및 구독 메일의 경우 원클릭 수신 거부를 지원하고 메일 본문에 수신 거부 링크가 명확히 보이게 표시합니다. 자세히 알아보기 |
아마 마케팅 메일등을 받아 봤다면 메일 아래에 수신 거부 표시가 표시되어 있는 경우가 있는데, 다음해 부터는 필수로 그러한 마케팅 메일과 같이 수신 거부를 유저쪽에서 쉽게 할 수 있도록 강구해야한다.
구글 가이드 라인에서 제시하고 있는 원클릭 수신 거부를 설정하는 방법은 다음과 같다.
원클릭 수신 거부를 설정하려면 발신 메일에 다음 헤더를 모두 포함합니다.
"POST /unsubscribe/example HTTP/1.1 Host: solarmora.com Content-Type: application/x-www-form-urlencoded Content-Length: 26 List-Unsubscribe=One-Click" List-Unsubscribe 헤더에 관한 자세한 내용은 RFC 2369 및 RFC 8058을 참고하세요. 다음과 같은 기타 수신 거부 방법도 권장합니다. 1. 수신자가 수신 동의한 개별 메일링 리스트를 스스로 검토하도록 허용합니다. 모든 메일링 리스트를 한꺼번에 또는 개별적으로 수신 거부할 수 있게 하세요. 2. 여러 차례 메일을 반송한 수신자는 자동으로 메일링 리스트에서 제외합니다. |
이러한 POST 요청이 왔을 때, 자동적으로 그 메일주소로 일정기간 메일을 보내지 않도록 설정할 것인지, 아니면 그 메일주소를 데이터에서 삭제할지 등에 대해서 각 기업이 방침을 정해한다.
참고자료
https://support.google.com/mail/answer/81126?hl=ko
https://qiita.com/nfujita55a/items/51eefd1e9578927e118a
'IT > 기초 지식' 카테고리의 다른 글
가상 DOM (Vritual DOM)이란? (0) | 2024.03.28 |
---|---|
JWT(JSON Web Token)란? (0) | 2024.03.10 |
수완이 좋은 엔니지어에게 배운 예외에 대한 이야기 (0) | 2023.08.09 |
Vue2와 Vue3의 차이 (0) | 2023.07.12 |
그림으로 이해하는 SOLID 원칙 (0) | 2023.07.09 |