클라이언트 IP를 기반으로 한 Gmail SPF 실패


8

Gmail이 클라이언트 IP를 기반으로 한 SPF 확인에 실패했습니다. 관련 헤더는 다음과 같습니다.

Received-SPF: fail (google.com: domain of johndoe@example.com does not designate 164.77.240.58 as permitted sender) client-ip=164.77.240.58;
Received: from johndoe (unknown [164.77.240.58])
    by mail.example.com (Postfix) with ESMTP id 993643FE2D

클라이언트 IP (164.77.240.58)는 johndoe 컴퓨터의 IP입니다. mail.example.com의 IP 인 발신자 IP는 SPF 레코드에 포함됩니다.

발신자 IP 대신 클라이언트 IP를 기반으로 Gmail이 실패하는 이유는 무엇입니까? 이것이 SPF가 작동하는 방식입니까?


SMTP 서버에 연결된 클라이언트를 단순히 "클라이언트 IP"에 대한 참조로 예상했을 것입니다. (어떤 당신이 AFAICT, 기대했던 것?)
는 Håkan 고 Lindqvist

3
ReceivedGmail에서 추가 한 헤더 를 포함시켜 실제로 메일을받은 위치를 명확히 할 수 있습니까?
Håkan Lindqvist

@ HåkanLindqvist 다른 받았습니다의 헤더만을 말한다by <google IP>
최대 토로

IMAP을 통해 Gmail로 메일을 가져 오는 데 비슷한 문제가 있습니다. 문제 1 (덜 비슷 함) : a@example.com과 같은 두 개의 로컬 사서함간에 b@example.com으로 이메일을 보내면 (그러나 SMTP 포트 25 사용) Gmail은이를 가져 와서 서버가 아닌 클라이언트 IP에서 SPF 확인을 수행합니다. serverfault.com/q/669584 문제 2 (보다 유사) : 누군가가 ESMTP 헤더가 포함 된 이메일을 보내면 Gmail에서이를 가져 와서 서버 도메인과 서버 IP로 SPF를 확인합니다. serverfault.com/q/670113
Zbyszek

답변:


4

먼저 example.com의 spf 레코드를 가져옵니다.

$ dig -t spf mail.example.com

example.com이 발신자 목록에 있는지 확인하십시오. spf 레코드는 다음과 같아야합니다.

"v=spf1 a:mail.example.com a:cname.example.com -all"

나열된 도메인 이름을 가져 와서 IP 주소를 얻으려면 DNS 조회를 수행하십시오.

$ dig mail.example.com

그런 다음 PTR 조회를 수행하여 IP의 역방향 DNS 이름을 얻습니다.

$ dig -x XX.XX.XX.XX

역방향 IP 조회는 spf 레코드에 나열된 레코드 중 하나와 일치해야합니다. spf 레코드로 시작하는 것이 도움이 될 것이므로 진행 상황을 볼 수 있습니다.


3
itym dig example.com TXT. 또한 SPF 레코드가 ptr방법 을 사용하지 않는 한 역방향 조회가 SPF와 차이가 있다고 생각하지 않습니다 .
Håkan Lindqvist

2

예. Google은 SPF 실패를 식별하는 데 정확합니다. 확인해야 할 IP 주소는 Google 메일 서버에 연결되는 주소입니다. Google에 대한 수신 헤더가 없으므로 메일 서버가 연결에서 SPF를 확인하는 것 같습니다. 인터넷에서 인증되지 않은 연결에 대해서만 SPF를 확인해야합니다. 로컬 연결 및 인증 된 연결은 SPF 유효성 검사를 무시해야합니다.

SPF는 보내는 컴퓨터가 보내는 도메인에 의해 허용되도록하기위한 것입니다. 일반적으로 도메인에는 인터넷으로주고받는 모든 전자 메일을 처리하는 1 ~ 2 개의 메일 서버가 있습니다. 이 주소는 도메인의 SPF 레코드에 나열된 주소 여야합니다.

이 경우 johndoe도메인의 메일 서버에 연결되어있는 것 같습니다. 서버가 도메인의 네트워크에 없으면 제출 포트 (587)에서 인증 된 연결을 사용하는 것이 일반적입니다. 그런 다음 메일 서버는 메시지를 gmail로 전달해야하며 SPF는 전달해야합니다. SPF가 여전히 실패하면 메일 서버의 IP를 포함하도록 SPF 레코드를 수정해야합니다. 사용할 수있는 몇 가지 메커니즘이 있습니다.

이메일 정책 은 도메인에서 보낸 모든 합법적 인 메일이 SPF를 통과하도록합니다. SPF에 실패 할 사용자를 대신하여 메시지를 전달하는 서비스가 있습니다. 그러나 서버 유효성 검사에서받은 기록 실패 DMARC는 모두 스패머입니다.


2
메일 서버 IP는 SPF 레코드에 포함되어 있습니다. 이것이 발신자 IP입니다. 그러나 Gmail은 클라이언트 IP, 즉 johndoe의 컴퓨터를 기반으로 거부합니다.
Max Toro

@MaxToro Received 헤더에 따르면 johndoe의 컴퓨터가 Google로 직접 전송합니다. PTR 레코드가 없으므로 알 수 없습니다. johndoe의 컴퓨터가 Google에 인증되면 likley가 작동합니다.
BillThor

아니요, johndoe의 컴퓨터에서 수신하는 mail.example.com입니다.
Max Toro

@MaxToro 서버가 SPF 레코드를 거부하는 것이 아닙니까? 마지막으로 활성화 된 정책은 Google입니다. 메일 로그에 Google로 전송하려고하는지 알려야합니다.
BillThor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.