에루샤
erusya
Back-end Developer
Web Geek
Anime Otaku
에루샤 프로필 이미지
개발

AWS Route53 DKIM 입력시 뜨는 CharacterStringTooLong 오류 해결 방법

문제 발생

여느때와 같이 서버 만지작 거리며 일을하다가 관리하는 업체에서 네이버 웍스 메일을 사용한다고 DNS에 웍스의 MX 레코드등의 값을 입력해달라고 요청이 왔다.

MX레코드나 SPF는 순조롭게 입력했는데, DKIM이라는 레코드도 입력해 달라고 하드라.
이건 딱봐도 TXT에 넣는 데이터여서 그냥 받은 값을 복사/붙여넣기하고 등록하려는데...

본문 이미지길이가 너무 길다고?

왓더?
TXT 값이 너무 길어서 등록이 안된다고한다.
AWS Route53은 길이제한도 있었나? 싶어서 알아보니 각 레코드 라인당 255자의 제한이 있다고 한다.

그럼 2048비트의 DKIM값은 어떻게 입력하라는거지?
알아보니 해결 방법이 있었다.


TXT 단락 분할 등록

위의 경우처럼 긴 DKIM값을 한줄로 입력하기위해서는 AWS Route53에서는 내용을 임의로 분리등록할 수 있는 방법이 있었다.

"k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAraC3pqvqTkAfXhUn7Kn3JUNMwDkZ65ftwXH58anno/bElnTDAd/idk8kWpslrQIMsvVKAe+mvmBEnpXzJL+0LgTNVTQctUujyilWvcONRd/z37I34y6WUIbFn4ytkzkdoVmeTt32f5LxegfYP4P/w7QGN1mOcnE2Qd5SKIZv3Ia1p9d6uCaVGI8brE/7zM5c/zMthVPE2WZKA28+QomQDH7ludLGhXGxpc7kZZCoB5lQiP0o07Ful33fcED73BS9Bt1SNhnrs5v7oq1pIab0LEtHsFHAZmGJDjybPA7OWWaV3L814r/JfU2NK1eNu9xYJwA8YW7WosL45CSkyp4QeQIDAQAB"Copy

예를들어 위의 DKIM 값이 내가 입력해야하는 값이라고 상정해보자. 
2048비트의 DKIM값은 보통 400자 내외의 길이를 가지고있는데 AWS가 허용하는 라인당 수는 255자이다.
그러니가 위 레코드를 2분할 시키면 대충 200자씩이니까 이를 '연결'해서 등록하면된다.

일단 위의 값을 적당히 2분할 시키고 분할시킨값을 쌍따옴표(")로 아래처럼 묶어준다.

"k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAraC3pqvqTkAfXhUn7Kn3JUNMwDkZ65ftwXH58anno/bElnTDAd/idk8kWpslrQIMsvVKAe+mvmBEnpXzJL+0LgTNVTQctUujyilWvcONRd/z37I34y6WUIbFn4ytkzkdoVmeTt32f5LxegfYP4P/"

"w7QGN1mOcnE2Qd5SKIZv3Ia1p9d6uCaVGI8brE/7zM5c/zMthVPE2WZKA28+QomQDH7ludLGhXGxpc7kZZCoB5lQiP0o07Ful33fcED73BS9Bt1SNhnrs5v7oq1pIab0LEtHsFHAZmGJDjybPA7OWWaV3L814r/JfU2NK1eNu9xYJwA8YW7WosL45CSkyp4QeQIDAQAB"Copy

한 단락당 255자가 넘지않는 단락이 2개 생성되었다면 이제 이 2개의 값을 '한 줄'로만들어줘야한다.
무슨소리냐면 TXT레코드는 멀티 레코드를 지원하는 영역인데 저걸 줄바꿈(앤터)를 포함한 두줄로 등록하면 TXT 레코드가 2줄로 인식이되지 한줄로 인식이 되지않는다. (당연한 소리지만)
그래서 위의 데이터를 한줄로 중간 따옴표 사이의 공백문자나 개행문자를 없애고 아래처럼 만든다.

"k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAraC3pqvqTkAfXhUn7Kn3JUNMwDkZ65ftwXH58anno/bElnTDAd/idk8kWpslrQIMsvVKAe+mvmBEnpXzJL+0LgTNVTQctUujyilWvcONRd/z37I34y6WUIbFn4ytkzkdoVmeTt32f5LxegfYP4P/""w7QGN1mOcnE2Qd5SKIZv3Ia1p9d6uCaVGI8brE/7zM5c/zMthVPE2WZKA28+QomQDH7ludLGhXGxpc7kZZCoB5lQiP0o07Ful33fcED73BS9Bt1SNhnrs5v7oq1pIab0LEtHsFHAZmGJDjybPA7OWWaV3L814r/JfU2NK1eNu9xYJwA8YW7WosL45CSkyp4QeQIDAQAB"Copy

좀 길어서 보기 쉽진 않겠지만 결론적으로

"TXT_매우_긴_데이터" -> "TXT_매우_""긴_데이터"

이렇게 "쌍따옴표로 단락을 나누면 된다는 의미이다.
그리고 이 데이터를 '한 줄'로 TXT 레코드에 등록하면 제대로 장문의 DKIM값이 DNS 설정에 적용이된다.

이후 dig나 nslookup 등의 dns 확인 기능으로 적용여부를 아래와 같이 확인할 수 있다.

dig
$ dig selector_key_1._domainkey.domain.com txt
...
;; ANSWER SECTION:
selector_key_1._domainkey.domain.com. 60 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...Copy

nslookup
> nslookup -q=TXT selector_key_1._domainkey.domain.com
...
Non-authoritative answer:
selector_key_1._domainkey.domain.com.    text =
    "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz1...Copy


결론

이메일 발송에 대해서 도메인의 인증절차에 따라 DKIM 등록이 요즘 많이 들어오고 있다.
1024비트의 DKIM 서명은 문제없이 등록되나 더 보안이 뛰어난 2048비트의 DKIM값은 위의 사례처럼 일부 DNS 업체에서는 등록이 한번에 안된다고 한다.

모든 DNS업체가 AWS 처럼 처리하지 않을수도 있기때문에 정확한거는 각자 DNS 업체의 가이드에 따르는것이 맞고, AWS의 경우에는 위의처럼 하면 될것이다.

DNS TXT 레코드를 만들 때 발생하는 “{Value}로 인해 발생하는 CharacterStringTooLong(값이 너무 깁니다)” 오류 해결
DNS TXT 레코드를 만들 때 발생하는 “{Value}로 인해 발생하는 CharacterStringTooLong(값이 너무 깁니다)” 오류 해결
타사에서 Amazon Route 53 호스팅 영역에서 제공한 DKIM 텍스트 리소스 레코드를 생성하려고 했습니다. 하지만 다음과 같은 오류가 발생했습니다. “{Value}로 인해 발생하는 CharacterStringTooLong(값이 너무 깁니다).”
https://repost.aws/ko/knowledge-center/route53-resolve-dkim-text-record-error
Troubleshoot DKIM issues - Google Workspace Admin Help
Follow the troubleshooting steps in this article if messages sent from your domain are: Not passing DKIM authentication Rejected by receiving servers Sent to recipients’ spam folders Many DK
https://support.google.com/a/answer/11612790#dkim-verify-txt-char-limits

#AWS #문제해결
0 개의 댓글
×