Wednesday, July 3, 2019

AWS Route 53 설정 문제 10분 해결 가이드 (MX, SPF, DKIM, DMARC 총정리)

웹사이트나 서비스를 운영하다 보면 어느 날 갑자기 예상치 못한 문제에 직면하게 됩니다. 그중에서도 비즈니스 커뮤니케이션의 핵심인 이메일이 갑자기 먹통이 되는 경우는 아찔한 경험이 아닐 수 없습니다. 고객 문의, 파트너와의 소통, 내부 중요 공지 등 모든 것이 중단되는 상황. 얼마 전까지만 해도 멀쩡하게 잘 사용하던 Google Workspace(구 G Suite) 이메일 주소로 아무런 메일도 수신되지 않는다면, 대부분의 사람들은 Google 서버의 문제나 네트워크 장애를 먼저 의심할 것입니다. 하지만 범인은 아주 가까운 곳, 바로 우리가 직접 관리하는 도메인 설정에 있을 확률이 매우 높습니다.

특히 최근에 기존에 사용하던 호스팅 서비스에서 AWS(Amazon Web Services)로 도메인을 이전했거나, AWS Route 53를 통해 도메인의 DNS를 관리하기 시작했다면 이 글을 끝까지 주목해 주시기 바랍니다. 도메인 이전 후 며칠간은 이메일이 정상적으로 동작하다가, 2~3일 혹은 그 이후부터 감쪽같이 메일 수신이 끊기는 '이메일 증발 현상'을 겪고 계신다면, 십중팔구는 MX(Mail Exchange) 레코드 설정 누락이 원인입니다.

이 글에서는 왜 이런 문제가 발생하는지, 그 근본적인 원인인 DNS와 MX 레코드의 개념은 무엇인지 심도 깊게 파헤쳐 보고, AWS Route 53에서 Google Workspace 이메일을 다시 정상적으로 수신하기 위한 MX 레코드 설정 방법을 스크린샷 수준의 상세한 설명으로 안내합니다. 여기서 그치지 않고, 단순히 이메일을 받는 것을 넘어 내 도메인에서 보낸 이메일이 스팸으로 분류되지 않고 상대방에게 안정적으로 도달하게 하는 비결, 즉 SPF, DKIM, DMARC 설정까지 완벽하게 마스터하여 여러분의 비즈니스 이메일 시스템을磐石(반석) 위에 올려놓는 방법을 총정리해 드립니다. 네트워크 전문가가 아니어도 괜찮습니다. 지금부터 차근차근 따라오시면 10분 안에 이 답답한 문제를 해결하고 이메일 전문가로 거듭날 수 있습니다.

1. 이메일 실종 미스터리: 범인은 DNS 캐시와 TTL

문제를 해결하기에 앞서, 왜 도메인을 이전하고 며칠 동안은 이메일이 잘 동작했는지 이해하는 것이 중요합니다. 그래야만 앞으로 유사한 문제를 예방할 수 있기 때문입니다. 이 현상의 중심에는 DNS(Domain Name System)TTL(Time To Live)이라는 개념이 있습니다.

DNS는 'example.com'과 같은 사람이 읽기 쉬운 도메인 이름을 컴퓨터가 이해하는 IP 주소(예: `192.0.2.1`)로 변환해주는, 이른바 '인터넷의 전화번호부'입니다. 우리가 메일을 보낼 때 `recipient@example.com`으로 보내면, 메일을 보내는 서버(MTA)는 먼저 DNS에 "example.com의 메일 서버는 어디야?"라고 물어봅니다.

이때, 전 세계의 모든 컴퓨터가 매번 도메인의 원본 DNS 서버까지 찾아가서 주소를 물어본다면 인터넷은 엄청난 부하에 시달릴 것입니다. 이를 방지하기 위해 각 지역의 인터넷 서비스 제공업체(ISP)의 DNS 서버나 구글의 `8.8.8.8`과 같은 공용 DNS 서버들은 한 번 물어본 주소를 일정 시간 동안 '기억(캐시)'해 둡니다. 이 기억하는 시간이 바로 TTL(Time To Live, 생존 시간)입니다.

예를 들어, `example.com`의 MX 레코드 TTL이 86400초(24시간)로 설정되어 있었다고 가정해 봅시다. 당신이 도메인 네임서버를 기존 호스팅사에서 AWS Route 53으로 변경했더라도, 전 세계의 DNS 서버들은 앞으로 24시간 동안은 캐시에 저장된 '이전' MX 레코드 정보를 계속 사용합니다. 따라서 변경 직후에도 이메일은 이전 설정대로 잘 수신되는 것처럼 보입니다. 하지만 TTL 시간이 모두 만료되고 캐시가 삭제되는 시점부터, DNS 서버들은 새로운 네임서버인 AWS Route 53에게 "example.com의 메일 서버 주소를 알려줘!"라고 물어보기 시작합니다. 이때 만약 당신이 Route 53에 Google Workspace용 MX 레코드를 설정해두지 않았다면, Route 53은 "그런 정보는 없어."라고 답하게 되고, 결국 이메일은 최종 목적지를 찾지 못하고 미아가 되어버리는 것입니다. 이것이 바로 '이메일 증발 현상'의 전말입니다.

2. 이메일의 내비게이션, MX 레코드란 무엇인가?

MX 레코드는 'Mail Exchange'의 약자로, 특정 도메인으로 들어오는 이메일을 처리할 책임이 있는 메일 서버가 무엇인지를 알려주는 DNS의 핵심 레코드 타입 중 하나입니다. A 레코드가 웹사이트의 IP 주소를 알려주듯이, MX 레코드는 이메일 서버의 주소를 알려주는 역할을 합니다.

Google Workspace의 MX 레코드는 한 개가 아니라 여러 개로 구성되어 있습니다. 각 레코드는 두 가지 주요 정보로 이루어집니다.

  • 서버 주소 (Mail Server Address): 실제 메일을 수신하는 서버의 도메인 이름입니다. 예를 들어 `ASPMX.L.GOOGLE.COM`과 같습니다.
  • 우선순위 (Priority): 여러 개의 메일 서버가 있을 때 어떤 서버에 먼저 접속을 시도할지를 결정하는 숫자입니다. 숫자가 낮을수록 우선순위가 높습니다.

Google이 여러 개의 MX 레코드를 제공하는 이유는 안정성과 부하 분산(Redundancy and Load Balancing) 때문입니다. 메일을 보내는 서버는 가장 우선순위가 높은(숫자가 가장 낮은) 서버, 즉 `1 ASPMX.L.GOOGLE.COM`에 먼저 접속을 시도합니다. 만약 이 서버가 점검 중이거나 응답이 없으면, 그 다음 우선순위를 가진 서버(예: `5 ALT1.ASPMX.L.GOOGLE.COM`)로 접속을 시도합니다. 이렇게 여러 개의 백업 서버를 둠으로써 특정 서버에 장애가 발생하더라도 이메일 수신이 중단되지 않도록 보장하는 것입니다.

Google Workspace에서 사용해야 하는 MX 레코드의 전체 목록은 다음과 같습니다. 이 값들을 AWS Route 53에 정확하게 입력해야 합니다.

우선순위 (Priority) 메일 서버 (값 / Value)
1 ASPMX.L.GOOGLE.COM
5 ALT1.ASPMX.L.GOOGLE.COM
5 ALT2.ASPMX.L.GOOGLE.COM
10 ALT3.ASPMX.L.GOOGLE.COM
10 ALT4.ASPMX.L.GOOGLE.COM

이제 이 정보들을 가지고 직접 AWS Route 53에서 설정을 진행해 보겠습니다.

3. 실전! AWS Route 53에서 Google Workspace MX 레코드 설정하기

AWS 콘솔 인터페이스는 처음 보면 다소 복잡하게 느껴질 수 있지만, 아래 단계를 차근차근 따라 하면 누구나 쉽게 MX 레코드를 설정할 수 있습니다. `your-domain.com` 부분을 실제 사용하시는 도메인으로 바꿔서 생각하며 진행해주세요.

1단계: AWS 콘솔 로그인 및 Route 53 서비스 이동

  1. AWS Management Console에 로그인합니다.
  2. 상단 검색창에 'Route 53'을 입력하고 나타나는 'Route 53' 서비스를 클릭합니다.
  3. Route 53 대시보드 화면이 나타나면, 왼쪽 탐색 메뉴에서 '호스팅 영역(Hosted zones)'을 클릭합니다.

💡 잠깐! 호스팅 영역(Hosted Zone)이란?

호스팅 영역은 특정 도메인(예: `your-domain.com`)과 그 하위 도메인(예: `blog.your-domain.com`, `mail.your-domain.com`)에 대한 DNS 레코드들을 모아놓은 컨테이너라고 생각하면 쉽습니다. 이 곳에서 해당 도메인에 대한 모든 DNS 설정을 관리하게 됩니다.

2단계: 해당 도메인의 호스팅 영역 선택

호스팅 영역 목록에서 내가 설정하고자 하는 도메인 이름을 클릭합니다. 예를 들어 'your-domain.com'의 이메일을 설정하고 싶다면 목록에서 'your-domain.com'을 찾아서 클릭하면 됩니다. 그럼 해당 도메인에 이미 설정된 레코드 목록(NS, SOA 레코드 등)이 나타납니다.

3단계: 레코드 생성 시작

도메인 레코드 목록 화면의 오른쪽에 있는 '레코드 생성(Create record)' 주황색 버튼을 클릭합니다. 이제 MX 레코드를 입력할 수 있는 양식이 나타납니다.

4단계: Google Workspace MX 레코드 값 정확하게 입력하기

레코드 생성 양식의 각 필드를 아래 설명과 표에 나온 값을 참고하여 꼼꼼하게 채워야 합니다. 여기서 실수가 발생하면 이메일은 여전히 동작하지 않습니다.

Selecting MX Record Type in AWS Route 53

Route 53에서 레코드 유형으로 'MX'를 선택하는 화면 예시

  • 레코드 이름(Record name): 비워둡니다. 루트 도메인(your-domain.com) 자체의 메일을 설정하는 것이므로 아무것도 입력하지 않아도 됩니다. (입력란에 `your-domain.com`이 연하게 표시됩니다)
  • 레코드 유형(Record type): 드롭다운 목록을 클릭하여 'MX - 메일 서버 지정(Specifies mail servers)'을 선택합니다.
  • TTL(초): Time To Live 값입니다. 일반적으로 3600 (1시간)으로 설정하는 것이 무난합니다. 설정을 테스트하는 중이라면 더 짧게 300 (5분)으로 설정하여 변경 사항이 빨리 적용되도록 할 수 있습니다. 설정이 완벽하게 끝난 후에는 3600이나 그 이상으로 늘려도 괜찮습니다.
  • 값(Value): 이 부분이 가장 중요합니다. Google에서 제공하는 5개의 메일 서버 주소를 '우선순위'와 함께 입력하는 공간입니다. 각 줄에 하나의 레코드를 입력합니다. 형식은 `[우선순위 숫자] [서버 주소]` 입니다. 아래 내용을 그대로 복사해서 붙여넣으세요.

아래 텍스트 박스의 내용을 그대로 복사하여 '값(Value)' 입력란에 붙여넣으면 됩니다. Route 53은 자동으로 각 줄을 별도의 값으로 인식합니다.

1 ASPMX.L.GOOGLE.COM.
5 ALT1.ASPMX.L.GOOGLE.COM.
5 ALT2.ASPMX.L.GOOGLE.COM.
10 ALT3.ASPMX.L.GOOGLE.COM.
10 ALT4.ASPMX.L.GOOGLE.COM.

(중요) 서버 주소 맨 뒤에 `.`(마침표)를 붙이는 것이 정석입니다. FQDN(Fully Qualified Domain Name)을 의미하며, `.`를 붙이지 않아도 Route 53이 대부분 자동으로 처리해주지만, 명시적으로 붙여주는 것이 더 안전합니다.

Setting Google Workspace MX Records in Route 53

Route 53에 모든 MX 레코드 값을 입력한 화면 예시

5단계: 레코드 생성 완료

모든 값을 정확히 입력했는지 다시 한번 확인한 후, 오른쪽 하단의 '레코드 생성(Create record)' 버튼을 클릭합니다. 잠시 후 호스팅 영역 레코드 목록에 방금 추가한 MX 타입의 레코드가 생성된 것을 확인할 수 있습니다. 축하합니다! 이제 전 세계의 메일 서버들이 `your-domain.com`으로 오는 이메일을 Google의 메일 서버로 정확하게 보낼 수 있게 되었습니다.

이것만으로도 이메일 '수신' 문제는 해결됩니다. 하지만 진정한 프로페셔널이라면 여기서 멈추지 않습니다. 내가 보낸 메일이 다른 사람의 스팸함으로 직행하는 것을 막고, 내 도메인을 사칭한 스팸 메일을 차단하기 위한 추가 설정을 진행해야 합니다.

4. 이메일 신뢰도 300% 상승! SPF, DKIM, DMARC 완벽 정복

MX 레코드가 '수신'을 위한 설정이라면, 지금부터 설명할 SPF, DKIM, DMARC는 '발신' 이메일의 신뢰도를 결정하는 핵심 요소들입니다. 이 3가지를 모두 설정해야만 내 도메인에서 보낸 메일이 Gmail, Naver, Outlook 등 주요 메일 서비스에서 스팸으로 오인받을 확률을 극적으로 낮출 수 있고, 해커들이 내 도메인 주소를 사칭하여 피싱 메일을 보내는 것을 방어할 수 있습니다. 모두 MX 레코드와 마찬가지로 Route 53에 TXT 레코드를 추가하는 방식으로 설정합니다.

1) SPF (Sender Policy Framework): "이 서버에서만 메일 보낼게요"

SPF는 내 도메인 이름으로 이메일을 보낼 수 있도록 허락된 서버(IP 주소) 목록을 DNS에 공개적으로 게시하는 표준 기술입니다. 메일을 받는 서버는 이 SPF 레코드를 확인하고, 만약 허용되지 않은 서버에서 발송된 메일이 도착하면 "이건 출처가 의심스러운데?"라고 판단하여 스팸으로 처리하거나 차단할 수 있습니다.

Google Workspace를 통해 메일을 보낸다면, Google의 모든 발송 서버를 SPF 레코드에 포함시켜야 합니다. 다행히 Google은 이 모든 서버 목록을 `_spf.google.com` 이라는 하나의 레코드로 관리해주므로 우리는 이것을 가져다 쓰기만 하면 됩니다.

SPF 레코드 설정 방법:

  1. 위에서와 같이 Route 53 호스팅 영역에서 '레코드 생성' 버튼을 클릭합니다.
  2. 레코드 이름(Record name): 비워둡니다.
  3. 레코드 유형(Record type): 'TXT - 텍스트 문자열'을 선택합니다.
  4. TTL(초): 3600으로 설정합니다.
  5. 값(Value): 아래의 SPF 레코드 값을 큰따옴표(" ") 안에 넣어 입력합니다.
    "v=spf1 include:_spf.google.com ~all"
  6. '레코드 생성' 버튼을 클릭하여 저장합니다.

*레코드 분석:* `v=spf1`은 SPF 버전 1임을 의미, `include:_spf.google.com`은 구글의 SPF 설정을 포함하라는 의미, `~all`은 이 목록에 없는 서버에서 온 메일은 의심스럽지만 일단 받기는 하라는 'SoftFail' 정책입니다. 보안을 더 강화하고 싶다면 `-all`(HardFail)로 바꿀 수도 있지만, 초기에는 `~all`로 시작하는 것이 안전합니다.

2) DKIM (DomainKeys Identified Mail): "이 메일은 제가 보낸 게 맞고, 중간에 변조되지 않았어요"

DKIM은 이메일에 '디지털 서명'을 추가하여 이메일의 발신자 인증과 내용의 무결성을 보장하는 기술입니다. 은행의 공인인증서와 비슷한 원리입니다. 발신 서버는 개인 키(Private Key)로 이메일의 특정 부분(헤더, 본문 등)을 암호화하여 서명을 생성하고, 이 서명을 이메일 헤더에 첨부하여 보냅니다. 메일을 수신한 서버는 DNS에 공개된 공개 키(Public Key)를 조회하여 이 서명을 복호화합니다. 만약 복호화가 성공하면 "아, 이 메일은 진짜 `your-domain.com`에서 보냈고, 오는 동안 내용이 바뀌지도 않았구나"라고 신뢰하게 됩니다.

DKIM 설정 방법 (2단계 프로세스):

A. Google Workspace 관리 콘솔에서 DKIM 키 생성:

  1. Google Workspace 관리 콘솔에 로그인합니다.
  2. 메뉴에서 '앱' > 'Google Workspace' > 'Gmail'로 이동합니다.
  3. '이메일 인증'을 클릭합니다.
  4. '선택된 도메인'에서 내 도메인이 맞는지 확인하고, '새 레코드 생성' 버튼을 클릭합니다.
  5. 'DNS 호스트 이름(TXT 레코드 이름)'과 'TXT 레코드 값'이 생성됩니다. 이 두 개의 값을 그대로 복사해둬야 합니다. 보통 DNS 호스트 이름은 `google._domainkey` 와 같은 형태이고, TXT 레코드 값은 `v=DKIM1; k=rsa; p=...`로 시작하는 아주 긴 문자열입니다.

B. AWS Route 53에 TXT 레코드 추가:

  1. 다시 AWS Route 53의 '레코드 생성' 화면으로 돌아옵니다.
  2. 레코드 이름(Record name): Google 관리 콘솔에서 복사한 'DNS 호스트 이름'을 붙여넣습니다. (예: `google._domainkey`)
  3. 레코드 유형(Record type): 'TXT'를 선택합니다.
  4. TTL(초): 3600으로 설정합니다.
  5. 값(Value): Google 관리 콘솔에서 복사한 긴 'TXT 레코드 값'을 큰따옴표(" ")로 감싸서 붙여넣습니다.
  6. '레코드 생성'을 클릭합니다.
  7. 다시 Google 관리 콘솔의 DKIM 설정 화면으로 돌아와서 '인증 시작' 버튼을 누릅니다. DNS가 전파되면(몇 분에서 최대 48시간 소요) 상태가 '인증 중'에서 '이메일 인증 중'으로 바뀝니다.

3) DMARC (Domain-based Message Authentication, Reporting, and Conformance): "가짜 메일 처리 규칙과 결과 보고"

DMARC는 SPF와 DKIM을 기반으로 동작하는 최종 방어선이자 정책 관리 도구입니다. DMARC 레코드를 설정함으로써, 당신은 전 세계 메일 서버들에게 "내 도메인에서 온 메일이 SPF나 DKIM 인증에 실패하면 어떻게 처리할지"에 대한 정책(예: 그냥 받기, 격리, 거부)을 알려줄 수 있습니다. 또한, 내 도메인으로 발송되는 메일들의 인증 현황(누가 사칭을 시도하는지 등)에 대한 리포트를 받아볼 수도 있습니다.

기본적인 DMARC 레코드 설정 방법:

처음에는 가장 느슨한 정책인 `p=none`으로 시작하여 리포트를 받아보며 상황을 파악한 후, 점차 `p=quarantine`(격리), `p=reject`(거부)로 정책을 강화하는 것이 좋습니다.

  1. Route 53에서 '레코드 생성'을 클릭합니다.
  2. 레코드 이름(Record name): `_dmarc` 라고 입력합니다. (전 세계 공통 약속입니다)
  3. 레코드 유형(Record type): 'TXT'를 선택합니다.
  4. TTL(초): 3600으로 설정합니다.
  5. 값(Value): 아래의 기본 DMARC 레코드 값을 큰따옴표(" ")로 감싸서 입력합니다. `dmarc-reports@your-domain.com` 부분은 리포트를 수신할 실제 이메일 주소로 변경해주세요.
    "v=DMARC1; p=none; rua=mailto:dmarc-reports@your-domain.com"
  6. '레코드 생성' 버튼을 클릭합니다.

*레코드 분석:* `v=DMARC1`은 DMARC 버전, `p=none`은 인증에 실패해도 특별한 조치를 취하지 말라는 정책(모니터링 모드), `rua=mailto:...`는 집계 리포트를 받을 이메일 주소를 지정하는 것입니다.

5. 설정 완료 후 필수 확인 과정

모든 DNS 레코드 설정이 끝났다고 해서 바로 적용되는 것은 아닙니다. 앞서 설명한 TTL 때문에 변경 사항이 인터넷 전체에 전파되기까지는 시간이 걸립니다. 짧게는 몇 분, 길게는 48시간까지 소요될 수 있습니다. 설정이 제대로 되었는지 확인하는 몇 가지 방법이 있습니다.

  1. Google Admin Toolbox - Check MX: Google에서 직접 제공하는 가장 확실한 도구입니다. Check MX tool 페이지에 접속하여 내 도메인 이름을 입력하고 실행하면, MX 레코드 설정에 문제가 없는지 즉시 진단해 줍니다. 녹색 체크 표시가 나타나면 성공입니다.
  2. MXToolbox: MXToolbox와 같은 외부 전문 진단 사이트를 이용하는 것도 좋습니다. 도메인 이름을 입력하면 MX 뿐만 아니라 SPF, DKIM, DMARC 설정까지 한 번에 점검하고 점수를 매겨주어 매우 유용합니다.
  3. 터미널/명령 프롬프트 사용 (고급 사용자):
    • MX 레코드 확인: `nslookup -q=MX your-domain.com` 또는 `dig your-domain.com MX`
    • SPF/TXT 레코드 확인: `nslookup -q=TXT your-domain.com`
    • DKIM 레코드 확인: `nslookup -q=TXT google._domainkey.your-domain.com`
    • DMARC 레코드 확인: `nslookup -q=TXT _dmarc.your-domain.com`
    명령을 실행했을 때 내가 설정한 값들이 정확하게 출력된다면 성공적으로 설정된 것입니다.

마치며: 안정적인 비즈니스 커뮤니케이션의 초석을 다지다

이메일은 단순한 소통 수단을 넘어 비즈니스의 신뢰와 직결되는 매우 중요한 자산입니다. '갑자기 이메일이 안 되는 문제'는 당황스럽지만, 그 원인을 파고들면 결국 DNS라는 인터넷의 기본 원리와 만나게 됩니다. 오늘 우리는 AWS Route 53 환경에서 Google Workspace 이메일 수신을 위한 MX 레코드 설정부터, 발신 메일의 신뢰도를 보장하고 도메인 사칭을 막는 SPF, DKIM, DMARC 설정까지 이메일 시스템의 A to Z를 모두 살펴보았습니다.

이러한 DNS 레코드 설정은 한 번만 제대로 해두면 특별한 변경이 없는 한 계속해서 안정적으로 작동하며 당신의 비즈니스를 든든하게 받쳐줄 것입니다. 만약 주변에 비슷한 문제로 고통받는 동료나 친구가 있다면, 이 글이 명쾌한 해결책이 되어줄 수 있을 것입니다. 이제 불안함은 떨쳐버리고, 안정적인 이메일 시스템 위에서 비즈니스를 마음껏 펼쳐나가시기 바랍니다.


0 개의 댓글:

Post a Comment