MTA-STS 정책 검사기

도메인의 _mta-sts TXT 레코드와 mta-sts.txt 정책 파일을 가져와, 메일 전송 시 TLS 암호화 강제(MTA-STS)가 올바르게 설정되었는지 진단합니다.

  • MTA-STS는 "보내는 쪽" 서버가 확인하는 방식입니다. 정책을 공개하면 다른 서버들이 여러분의 도메인으로 메일을 보낼 때 TLS를 강제하게 됩니다.
  • enforce로 전환하기 전에 몇 주에서 한 달 정도 testing 모드로 운영하며 예상치 못한 전달 거부가 발생하지 않는지 모니터링하는 것이 안전합니다.
  • max_age(정책 유효 기간)는 보통 604800초(7일)~31557600초(1년) 범위로 설정합니다. 값이 너무 짧으면 정책 파일을 자주 다시 가져와야 합니다.
  • mx 필드에는 와일드카드(*.example.com)를 사용할 수 있지만, TLS 인증서의 SAN(Subject Alternative Name)이 해당 와일드카드와 일치해야 합니다.
  • DNS 레코드나 정책 파일 중 하나만 설정해서는 작동하지 않습니다. 둘 다 갖춰져야 비로소 MTA-STS가 유효하게 작동합니다.

자주 묻는 질문

"MTA-STS 미설정" 자체는 많은 도메인에서 흔한 상태이며 즉시 위험하다고 볼 수는 없습니다. 다만 STARTTLS 스트리핑 공격에 대한 내성을 높이고 싶다면 도입을 검토할 가치가 있습니다.

SPF/DKIM/DMARC는 발신자가 위조되지 않았는지 검증하는 발신 도메인 인증입니다. MTA-STS는 발신자 인증과는 무관하며, 메일이 전달되는 경로 자체에서 TLS 암호화를 강제하는 방식으로 서로 다른 계층의 위협을 방어합니다.

자신의 도메인이 아니라 "mta-sts."를 앞에 붙인 서브도메인(예: mta-sts.example.com)의 웹 서버에 /.well-known/mta-sts.txt 경로로 배치해야 하며, 유효한 TLS 인증서로 제공되어야 합니다.

권장되지 않습니다. 먼저 몇 주에서 한 달 정도 testing 모드로 운영하며 TLS-RPT 등으로 전달 상황을 모니터링한 후, 문제가 없다면 enforce로 전환하는 것이 안전한 절차입니다.

이 도구는 TXT 레코드와 정책 파일의 구문 및 필수 항목 존재 여부만 확인합니다. TLS 인증서의 유효성이나 실제 MX 호스트와의 TLS 핸드셰이크 결과까지는 검증하지 않으므로, 엄밀한 검증을 위해서는 checktls.com 등 전문 도구를 함께 사용하세요.
ツールくん

여담 ― STARTTLS의 약점과 MTA-STS가 등장하게 된 배경

SMTP의 전송 구간 암호화는 오랫동안 1999년에 표준화된 STARTTLS 방식에 의존해 왔습니다. 이는 평문으로 연결을 시작한 뒤 나중에 암호화로 전환하는 방식입니다. 그런데 2014년, 보안 연구자들은 실제로 존재하는 "STARTTLS 스트리핑" 공격을 확인했습니다. STARTTLS 협상 자체가 암호화가 시작되기 전 평문으로 이루어지기 때문에, 경로상의 공격자가 서버 응답을 조작해 STARTTLS 지원 여부를 숨기고 상대방이 평문으로 되돌아가도록(fallback) 속일 수 있었습니다.

근본 원인은 STARTTLS가 상대방이 TLS를 지원하지 않을 경우 의도적으로 평문으로 되돌아가도록 설계되었다는 점이었습니다. 이는 호환성을 위한 기능이었지만, 공격자는 단순히 TLS를 지원하지 않는 척함으로써 이를 악용할 수 있었습니다. 2015년 무렵 구글 자체 조사에 따르면 일부 국가와 통신사에서 STARTTLS 스트리핑이 광범위하게 이루어지고 있음이 드러났습니다.

MTA-STS(RFC 8461, 2018년 공개)는 이러한 문제에 대한 업계의 대응으로, 구글・마이크로소프트・야후 등이 공동으로 제정한 표준입니다. 도메인은 DNS TXT 레코드로 "MTA-STS를 지원한다"고 선언하고, HTTPS로 가져오는 정책 파일에 허용된 MX 호스트와 TLS 요구 사항을 명시합니다. 정책을 한 번 가져오면 max_age 기간 동안 캐시되므로, 이후 평문으로 되돌리려는 시도가 있으면 조용히 허용되는 대신 탐지하고 거부할 수 있습니다.

비슷한 목적을 가진 TLS-RPT(TLS Reporting, RFC 8460)와 함께 사용하면 TLS 연결이 실패했을 때 보고서를 받을 수 있습니다. MTA-STS는 "방어", TLS-RPT는 "가시성"이라는 역할을 나누어 맡으며, 두 가지를 함께 사용하는 것이 현재의 모범 사례입니다.