← 글 목록

OCI Email Delivery로 메일 발송 기반 다지기: SPF, DKIM, PTR의 세계

/ 9분 분량

새로운 프로젝트에 필요한 메일 발송 시스템을 구축하는 과정에서 SPF, DKIM, PTR 같은 생소한 개념들을 마주하며 머리가 복잡해졌습니다. 특히 이메일이 스팸함으로 가지 않고 제대로 '도착'하게 하려면 도대체 뭘 설정해야 하는지, 왜 그렇게 복잡한지 궁금증이 꼬리를 물었습니다. 직접 OCI Email Delivery 서비스를 파헤치며 이메일 발송의...

학습 주제

  • 주제: OCI Email Delivery를 이용한 SPF, DKIM, PTR 설정 및 메일 발송 메커니즘 이해
  • 학습 날짜: 2026년 7월 7일

탐구 과정

프로젝트 진행 중, 사용자 초대나 비밀번호 재설정 메일을 보내려면 발송 기반이 필요하다는 것을 알게 되었습니다. 특히 마감 기한이 촉박한 상황이라, 기존 인프라를 최대한 활용하면서도 안정적으로 메일을 보낼 수 있는 방법을 찾아야 했습니다. OCI Email Delivery 서비스가 월 3,000통 무료라는 점 때문에 관심을 갖게 되었지만, SPF, DKIM, PTR 같은 설정 값들이 무엇을 의미하는지, 왜 필요한지가 명확하지 않아 막막했습니다. 처음에는 단순히 DNS에 값을 복사해 넣으면 되는 줄 알았는데, 메일이 스팸함을 벗어나기 위한 근본적인 원리가 궁금해졌습니다.

이 문제를 해결하기 위해 OCI Email Delivery가 제공하는 기능들을 하나씩 뜯어보고, 각 설정 항목이 실제 메일 발송 과정에서 어떤 역할을 하는지, 그리고 왜 우리가 직접 메일을 보내는 대신 OCI 같은 전문 서비스를 이용해야 하는지에 초점을 맞춰 탐구했습니다. 특히, SPF와 DKIM이 각각 어떤 방식으로 발신자의 신뢰성을 검증하는지, 그리고 PTR은 어떤 역할을 하는지 깊이 파고들었습니다.

핵심 학습 내용

OCI Email Delivery를 통해 메일을 안정적으로 발송하기 위해서는 다음과 같은 핵심 개념들을 이해해야 합니다.

1. OCI Email Delivery 서비스의 역할

OCI Email Delivery는 단순히 메일을 보내주는 서비스가 아니라, 발신 전용 인프라를 제공합니다. 우리가 직접 서버를 구축하고 IP 평판 관리, 스팸 필터 우회, PTR 설정 등을 하는 대신, OCI가 이 모든 복잡한 과정을 대행해줍니다. 이는 클라우드 환경에서 일반 인스턴스의 25번 포트가 차단되어 있거나, 신규 IP의 평판이 낮아 스팸으로 오인될 가능성이 높은 문제를 해결해 줍니다.

2. SPF (Sender Policy Framework)

  • 무엇인가?: 발신 IP 주소가 해당 도메인의 발신자로 등록될 권한이 있는지 확인하는 메커니즘입니다.
  • 어떻게 작동하나?: DNS의 TXT 레코드에 허용된 발신 IP 목록을 명시합니다. 수신 서버는 메일이 도착한 IP를 확인하고, 해당 도메인의 SPF 레코드를 조회하여 IP가 허용된 목록에 있는지 검증합니다.
  • 핵심: TCP 연결의 실제 발신 IP는 위조하기 어렵다는 네트워크 계층의 제약에 기반하여 신뢰성을 확보합니다.
  • 예시:
    likelion-khu.com  TXT  "v=spf1 include:ap.rp.oracleemaildelivery.com ~all"
    
    이 설정은 likelion-khu.com 도메인에서 메일을 보낼 때, OCI의 ap.rp.oracleemaildelivery.com에 명시된 IP 목록을 허용한다는 의미입니다.

3. DKIM (DomainKeys Identified Mail)

  • 무엇인가?: 메일 내용이 전송 중에 변조되지 않았음을 암호학적으로 증명하는 메커니즘입니다.
  • 어떻게 작동하나?: 발신 서버(OCI 릴레이)는 메일 내용에 대한 개인키로 암호화된 서명(DKIM-Signature 헤더)을 생성하여 메일에 첨부합니다. 수신 서버는 DNS에 공개된 공개키를 이용해 이 서명을 복호화하여 메일 내용의 무결성을 검증합니다.
  • 핵심: 비대칭키 암호화 방식을 사용하여 메일 내용의 진위와 무결성을 증명합니다. 공개키는 DNS에 기록되어 신뢰성을 확보합니다.
  • 예시 (DNS 등록): OCI에서 제공하는 공개키 값을 DNS의 CNAME 레코드에 등록하여, 수신 서버가 _domainkey.likelion-khu.com을 조회했을 때 OCI의 공개키 정보를 찾을 수 있도록 합니다.

4. PTR (Pointer Record)

  • 무엇인가?: IP 주소와 호스트 이름을 서로 연결하는 역방향 DNS 레코드입니다.
  • 어떻게 작동하나?: IP 주소를 가지고 역방향 DNS 조회를 했을 때, 해당 IP에 할당된 그럴듯한 호스트 이름이 나오는지 확인합니다.
  • 핵심: 발신 IP의 신뢰성을 높이는 보조적인 역할을 합니다. OCI Email Delivery 서비스는 자체 IP에 대한 PTR 레코드를 이미 설정해두므로, 우리가 직접 설정할 필요는 없습니다.

5. 전체 발송 흐름

  1. 설정: OCI에서 Email Domain, DKIM 키, Approved Sender를 생성합니다.
  2. DNS 등록: OCI가 제공하는 DKIM 공개키 정보와 SPF 레코드 값을 구매한 도메인의 DNS(예: 호스팅케이알)에 등록합니다.
  3. 자격 증명: 백엔드(BE)가 OCI Email Delivery에 접속하기 위한 SMTP 자격 증명(IAM 유저)을 생성합니다.
  4. 메일 발송: BE는 SMTP 자격 증명을 이용해 OCI 릴레이 서버에 접속하고 메일을 제출합니다.
  5. 서명: OCI 릴레이는 제출된 메일에 DKIM 서명을 부착합니다.
  6. 전송: OCI 릴레이는 자체 IP 풀을 이용해 메일을 실제 수신자 메일 서버로 발송합니다.
  7. 검증: 수신 서버는 SPF, DKIM, PTR 등의 검증을 거쳐 메일을 받은편지함으로 전달하거나 스팸함으로 분류합니다.

이해한 내용

이번 학습을 통해 이메일이 단순히 텍스트를 보내는 것을 넘어, 발신자의 신뢰성을 확보하기 위한 복잡한 검증 과정을 거친다는 것을 명확히 이해할 수 있었습니다.

  • SPF와 DKIM의 상호 보완: SPF는 '누가 보냈는가(IP)'를, DKIM은 '보낸 내용이 진짜인가'를 검증하여 서로 다른 측면에서 메일의 신뢰도를 높여줍니다. 둘 다 필수적인 설정입니다.
  • DNS의 역할: DNS는 단순히 도메인 이름과 IP를 연결하는 것을 넘어, SPF 및 DKIM 공개키 정보를 제공하는 중요한 신뢰 기반 역할을 합니다.
  • 전문 ESP(Email Service Provider)의 중요성: IP 평판 관리, 포트 25 차단 우회, PTR 설정 등 개인이 직접 관리하기 어려운 부분들을 OCI 같은 전문 서비스가 대행해주기 때문에, 우리는 핵심 기능 개발에 집중할 수 있습니다.
  • Approved Sender는 '보내는 사람' 주소: To(받는 사람) 주소는 인증이 필요 없지만, From(보내는 사람) 주소는 스팸/피싱 악용을 막기 위해 사전 승인이 필요하다는 점을 알게 되었습니다.

실전 적용

이 지식은 우리가 개발하는 서비스에서 사용자 초대, 알림, 비밀번호 재설정 등 다양한 종류의 이메일을 안정적으로 발송하는 데 직접적으로 적용될 것입니다.

  • 구체적인 적용 계획:
    1. OCI 콘솔에서 likelion-khu.com 도메인을 대상으로 Email Domain, DKIM, Approved Sender (noreply@likelion-khu.com) 설정을 진행합니다.
    2. 전용 IAM 유저를 생성하여 SMTP 자격 증명을 발급받고, 이를 백엔드 애플리케이션의 JavaMailSender 설정에 적용합니다.
    3. 구매한 도메인의 DNS 관리 페이지(호스팅케이알)에서 OCI가 제공하는 SPF TXT 레코드와 DKIM CNAME 레코드를 정확하게 추가합니다.
    4. 설정 완료 후, 테스트 메일을 보내 SPF, DKIM 검증이 정상적으로 통과하는지(메일 헤더 확인)를 꼼꼼히 점검합니다.
  • 응용 아이디어: 향후 이메일 발송량을 늘려야 할 경우, OCI Email Delivery의 API 발송 방식도 고려해볼 수 있습니다. 또한, 메일 발송 성공/실패에 따른 로그를 분석하여 문제 발생 시 원인을 파악하고 개선하는 프로세스를 마련할 수 있습니다.

추가 학습 계획

이번 학습을 통해 이메일 발송의 기본 원리를 파악했지만, 실제 운영 단계에서는 더 깊은 이해가 필요할 것 같습니다.

  • 더 깊이 공부하고 싶은 부분:
    • 메일 발송 성공/실패 시 발생하는 반송(Bounce) 메일 처리 및 분석 방법
    • 이메일 헤더를 상세히 분석하여 SPF, DKIM, DMARC 등의 검증 결과를 확인하는 방법
    • OCI Email Delivery의 API 발송 방식과 SMTP 방식의 차이점 및 장단점 비교
  • 관련 자료 찾기:
    • OCI Email Delivery 공식 문서에서 DMARC 설정 관련 내용
    • 메일 헤더 분석을 위한 온라인 도구 활용법
    • 이메일 보안 관련 블로그 및 기술 문서
  • 다음 학습 주제: DMARC(Domain-based Message Authentication, Reporting & Conformance) 설정 및 메일 헤더 분석을 통한 실제 검증 결과 확인