중요 알림: Google과 Yahoo는 2024년 4월부터 DMARC를 요구할 예정입니다.
PowerDMARC

SPF 레코드 구문

SPF 레코드 구문

SPF 레코드 구문

읽기 시간: 8

발신자 정책 프레임워크(SPF) 레코드는 도메인 기반 메시지 인증, 보고 및 준수(DMARC) 프로토콜의 중요한 부분으로 발신자 주소 위조를 방지하는 방법을 지정합니다.

SPF 레코드는 설정하기가 복잡하며 제대로 구성하지 않으면 구현 문제가 발생할 수 있습니다. 또한 SPF 레코드 구문은 처음 접할 때 혼동할 수 있는 몇 가지 특정 용어를 사용합니다. 따라서 이 블로그 게시물에서는 SPF 레코드 구문과 이를 구성할 때 고려해야 할 사항을 살펴봅니다.

SPF 레코드란 무엇인가요?

SPF 레코드는 도메인을 대신하여 이메일을 보낼 수 있는 서버를 식별하는 DNS 레코드의 한 유형입니다. 이 레코드는 도메인에 대해 이메일을 보낼 수 있는 권한이 있는 서버를 나열하여 이를 수행하며, 다른 서버가 도메인을 대신하여 이메일을 보내려고 하면 권한이 없는 발신자로 간주되어 거부됩니다.

SPF 레코드의 목적은 악의적인 사용자가 보낸 사람 필드에 회원님의 도메인을 사용하여 위조된 이메일 메시지를 보내는 것을 방지하는 것입니다. 공격자가 회원님의 도메인을 스푸핑하거나 위조하여 회원님의 서버에서 대량의 스팸 이메일을 발송하는 경우 이러한 문제가 발생할 수 있습니다.

SPF는 어떻게 작동하나요?

1. SPF 레코드 구문 생성

도메인에서 이메일을 보낼 수 있는 IP 주소를 지정하는 SPF 레코드 구문을 DNS 서버에 생성합니다. 즉, 누군가 도메인에서 스푸핑된 이메일을 보내려고 하면 메일 서버의 IP 주소가 승인된 서버 중 하나로 나열되지 않기 때문에 메시지가 실패하게 됩니다.

예를 들어 Gmail 계정만 도메인 이름에서 메일을 보낼 수 있고 Outlook 계정은 보낼 수 없도록 하려면 SPF 레코드에 다음 줄을 추가하면 됩니다:

 v=spf1 a mx include:_spf.google.com ~all

 이는 서버에 IP 주소가 _spf.google.com으로 끝나는 호스트에서 보낸 모든 메시지는 유효한 것으로 간주하고(m), 그 외의 모든 메시지는 삭제해야 한다고 알려줍니다(a). 

트위터의 SPF 기록 생성기 도구를 사용하여 지금 무료 레코드 생성을 시작할 수 있습니다!

2. DNS 조회

이메일 발신자가 메시지를 보내려고 하면 수신자 서버는 발신 도메인에서 DNS 조회를 수행하여 SPF 레코드가 있는지 확인하는데, 이를 "인증"이라고 합니다. 쿼리당 허용되는 조회 횟수는 10회로 제한되어 있으며, 이를 초과하면 다음과 같은 오류가 발생합니다. SPF 허용 오류.

SPF 레코드가 없으면 인증에 실패하고 메시지가 전달되지 않습니다. SPF 레코드가 있는 경우 SPF 서버는 TXT 레코드에서 SPF 레코드에 지정된 호스트 이름의 IP 주소를 확인합니다.

 지정된 IP 주소가 없으면 인증에 실패합니다. 그렇지 않으면 TXT 레코드에 나타나는 순서대로 지정된 각 IP 주소에 대해 A 쿼리를 수행합니다.

결과 코드가 NXDOMAIN 또는 NOERROR인 IP 주소는 SPF 서버에서 승인한 것으로 간주되며 해당 호스트 이름이 해당 도메인에 대한 승인된 전송 호스트 목록에 추가됩니다.

3. 인증 결과

메일 서버는 SPF 레코드에 지정된 규칙에 따라 수신자에게 메시지를 전달하거나 거부 플래그를 지정합니다.

인증 결과는 세 가지 형태로 나타날 수 있습니다: 합격, 중립, 불합격입니다.

통과는 메일 서버가 메시지를 정상적인 메시지로 받아들여 배달을 허용하는 것을 의미합니다. 중립은 DNS에 해당 도메인에 대한 레코드가 전혀 없거나 유효하지 않으므로 해당 도메인이 보낸 정상적인 메시지인지 여부를 알 수 없음을 의미합니다. 실패는 이 메시지가 전달될 수 있을 만큼 신뢰성이 높지 않음을 의미합니다.

예를 들어 IP 주소가 '234.2.1.2'인 메일 서버가 'join@apple.com'에서 이메일을 보내는 경우입니다. 인바운드 서버는 도메인 이름 서비스(DNS)를 참조하여 이 IP 주소가 'apple.com' 도메인을 대신하여 이메일을 보낼 수 있는 권한이 있는지 확인합니다. 이 경우 메시지가 전달되며, 그렇지 않은 경우 삭제되거나 스팸으로 표시되어 SPF 레코드에 지정된 메커니즘에 따라 분류됩니다.

SPF 레코드 구문

SPF 레코드 구문은 지시어, 한정자, 메커니즘 등 여러 요소로 구성됩니다.

지시어는 SPF 레코드 구문의 첫 번째 부분입니다. 나머지 레코드를 해석하는 방법을 나타냅니다. SPF 레코드에는 세 가지 지시어가 나타날 수 있습니다: v=spf1, a, mx. v 지시어는 이 레코드가 SPFv1 레코드임을 나타내고, a 지시어는 이 레코드가 SPFv2 스타일 인증 실패 보고서임을 나타내고, mx 지시어는 도메인에 대한 메일 교환 서버 목록을 지정합니다.

한정자는 DNS 영역에서 SPF 레코드를 배치할 위치를 지정합니다(exim4, enduser 또는 _spf). 이러한 한정자는 메일 수신자가 자신의 DNS 레코드와 비교하여 SPF 레코드를 확인할 때 어디에서 찾을지 알려줍니다.

메커니즘은 SPF 검사에 실패한 이메일 주소를 처리하는 방법을 나타내는 데 사용됩니다. 모두, 없음, 소프트 실패, 중립화, 거부 등 여러 메커니즘 중에서 선택할 수 있습니다.

SPF 레코드 구문 한정자

SPF 레코드 구문의 "한정자"는 SPF 레코드의 범위를 나타내는 데 도움이 됩니다. 주로 특정 IP 주소가 도메인을 대신하여 이메일을 보낼 수 있는 권한이 있는지 여부를 나타내는 데 사용됩니다.

예선전 결과 코드 설명
+ 패스 부정적인 의미가 없는 유일한 한정자입니다. 도메인 이름의 보안 레코드에 오류나 경고가 없으며 안전한 것으로 간주됨을 나타냅니다.
- 실패 는 도메인 이름의 보안 레코드에 오류 또는 경고가 포함되어 있어 안전한 것으로 간주할 수 없음을 나타냅니다.

 

~ 소프트 실패 는 도메인 이름의 보안 레코드에 오류 또는 경고가 포함되어 있어 안전한 것으로 간주할 수 없지만 DNS 확인에 문제가 있거나 DNS 트러스트 앵커와 관련된 기타 문제를 나타낼 수 있음을 나타냅니다.
? 중립 도메인에 SPF 레코드가 없거나 레코드가 구문상 올바르지만 해당 도메인의 신뢰할 수 있는 IP 주소 목록에 있는 하나 이상의 전송 서버와 대조했을 때 전송 서버와 일치하지 않았음을 나타냅니다.

SPF 레코드 구문 메커니즘 

메커니즘은 SPF 레코드 구문에서 수신 서버에 어떤 종류의 인증 메커니즘을 사용해야 하는지 알려주는 데 사용됩니다. 메커니즘에는 두 가지 유형이 있습니다: 

메커니즘 목적 지시문이 적용되는 경우 구현
a 는 도메인의 DNS A 레코드를 권한이 있는 것으로 정의합니다. 이 지시어를 지정하지 않으면 현재 도메인이 사용됩니다.

 

 

는 발신자의 IP 주소가 포함된 도메인에서 A 또는 AAAA 레코드를 쿼리할 때 적용할 수 있습니다. a

a/<prefix-length>

a:<domain>

a:<domain>/<prefix-length>

모두 모든 지시문은 항상 일치하며 다른 모든 소스에 대한 정책을 정의합니다. 이 메커니즘은 항상 적용되어야 하며, 이 메커니즘은 항상 일치합니다. 모두
존재 A 레코드가 특정 도메인에 유효한지 여부를 확인합니다. 해당 도메인의 모든 A 레코드를 살펴보고 그 중 SPF 레코드에 설정된 기준과 일치하는 레코드가 있는지 확인하는 방식으로 작동합니다. 해당 도메인에 A 레코드가 있거나 RFC7208에 따라 다른 기준이 승인된 경우에 적용됩니다. exists:<domain>
포함 이 메커니즘의 목적은 도메인을 지정하고 일치하는 항목을 검색하고 도메인에 유효한 SPF 레코드가 없는 경우 영구 오류를 반환하는 것입니다. SPF 레코드의 "포함" 메커니즘은 도메인 레코드 내에 다른 SPF 레코드를 포함하는 데 사용할 수 있습니다. 도메인에 SPF 레코드가 없지만 다른 도메인에 있고 그 다른 도메인에 발신자의 IP 주소와 일치하는 IP 주소가 있는 경우 "포함" 메커니즘을 사용하면 일치하는 IP 주소를 가진 도메인이 권한 부여 목적으로 사용되게 됩니다.

 

include:<domain>
ip4 "ip4" 지시어와 함께 범위의 길이를 나타내는 접두사와 함께 IPv4 범위를 지정할 수 있습니다. 접두사를 지정하지 않으면 /32로 가정합니다. 이러한 조건 중 하나라도 해당하면 "ip4" 메커니즘이 적용됩니다:

 

- 지정된 IPv4 주소가 SPF 레코드에 있는 IP 주소와 일치합니다.

 

- 지정된 IPv4 서브넷에는 발신자의 IP 주소가 포함되어 있습니다.

ip4:<ip4-address>

ip4:<ip4-network>/<prefix-length>

ip6 범위의 길이를 나타내는 접두사와 함께 "ip4" 지시어를 사용하여 IPv6 범위를 지정할 수 있습니다. 접두사를 지정하지 않으면 /128로 가정합니다. 이러한 조건 중 하나라도 해당하면 "IP6" 메커니즘이 적용됩니다:

 

- 지정된 IPv6 주소가 SPF 레코드에 있는 IP 주소와 일치합니다.

 

- 지정된 IPv6 서브넷에는 발신자의 IP 주소가 포함되어 있습니다.

ip6:<ip6-address>

ip6:<ip6-network>/<prefix-length>

mx SPF 레코드에 정의된 대로 "mx" 메커니즘은 도메인의 DNS(도메인 이름 시스템) MX(메일 교환기) 레코드를 권한이 부여된 것으로 정의합니다. DNS MX 레코드는 도메인을 대신하여 이메일 메시지를 수락할 책임이 있는 서버를 결정합니다. DNS MX 레코드에는 메시지를 수락하는 데 사용할 수 있는 각 서버의 IP 주소와 우선 순위 값이 포함되어 있습니다.

 

도메인의 MX 레코드에 발신자의 IP 주소와 일치하는 IP 주소가 포함되어 있으면 이 발신자가 이 도메인을 대신하여 이메일을 보낼 수 있는 권한이 있음을 나타냅니다.

mx

mx/<prefix-length>

mx:<domain>

mx:<domain>/<prefix-length>

ptr ptr 메커니즘은 보내는 IP 주소의 역호스트명 또는 하위 도메인을 사용하여 대상 도메인 이름을 정의합니다. 쿼리된 도메인 또는 지정된 도메인에 대한 MX 레코드가 하나 이상 있고 해당 MX 레코드에 발신자의 IP 주소에 대한 FQDN이 있는 PTR 레코드가 포함된 경우에만 적용됩니다. ptr

ptr:<domain>

SPF 레코드 구문 수정자

SPF 레코드 구문에서 수정자는 SPF 레코드의 기본 동작을 변경하는 데 사용할 수 있습니다. 수정자는 규칙에 대한 예외를 지정하는 데 사용하거나 수신자에게 추가 정보를 제공하는 데 사용할 수 있습니다.

수정자 목적 구현
경험치 "exp" 수정자는 메시지가 거부된 이유에 대한 설명을 지정하는 값입니다. 이는 발신자가 특정 종류의 문제를 피할 수 있도록 돕기 위한 것으로, 수신 서버에서 메시지가 수락되지 않은 구체적인 이유를 알려주는 데 사용할 수 있습니다. exp=<domain>
리디렉션 리디렉션 수정자는 SPF 레코드에서 전체 도메인 이름을 대체하는 문자열입니다. 이 수정자의 목적은 해당 도메인으로 전송되는 모든 메일을 다른 서버로 리디렉션하는 것입니다. MX 레코드가 여러 개 있는 도메인이나 다른 회사로 재할당되었지만 여전히 동일한 이메일 주소를 사용하는 도메인에 유용할 수 있습니다. redirect=<domain>

마무리

SPF 레코드는 도메인 DNS 레코드의 중요한 부분입니다. 이 레코드는 다른 메일 서버에 내가 보낸 메시지라고 주장하는 메시지를 인증하는 방법을 알려주므로 SPF 레코드를 올바르게 구성하는 것이 중요합니다. 그러나 이메일 손상 및 스푸핑에 대한 보호 기능을 강화하려면 SPF를 DMARC와 함께 사용해야 합니다. 

그리고 SPF 레코드 조회 도구 을 사용하면 도움이 될 수 있습니다. 조회 도구는 필수 필드가 누락되었는지 여부를 포함하여 현재 SPF 레코드가 어떻게 생겼는지에 대한 간략한 개요를 제공하며, 생성기를 사용하면 모든 필수 필드가 포함된 SPF 레코드 구문을 처음부터 생성할 수 있으므로 DNS 레코드에 바로 추가할 수 있습니다.

모바일 버전 종료