이 글은 Ubuntu 18.04 + Postfix 메일서버 기준으로 SPF 설정하는 방법에 대한 포스팅이다.
우선 SPF(Sender Policy Framework)란 메일 발송자가 전자메일주소를 위조하거나 도용하여 스팸메일을 대량으로 보낼 수 있는 메일시스템의 취약점을 보완하기 위해 만들어졌으며 사전에 해당 메일이 실제 발송서버에서 보내어졌는지 확인하는 인증기술이다.
▷ SPF 동작방식
– 메일발신자 : 자신의 메일서버의 정보와 정책등을 SPF 레코드로 표현하여 DNS에 TXT 레코드로 등록한다
– 메일수신자 : 이메일을 수신했을 때 발송자에 DNS에 등록된 SPF를 확인하여 해당 메일에 표기된 발송IP와 비교하여 그 결과값에 따라 수신여부를 결정한다(수신측 메일서버에 SPF 확인기능이 설치되어 있어야 한다)
위의 동작방식을 그림으로 표현하면 아래와 같다.
- 메일을 주고받으려면 보내는사람과 받는사람이 있어야하며 메일을 보내주는 메일서버가 필요하다. 메일을 보내는사람은 lasthackers.com 도메인의 sender 계정을 사용하고 메일을 받는사람은 google.com 도메인의 receive 계정을 사용한다고 가정하자
- 만약 정상적인 sender 사용자가 메일을 보내면 SMTP를 통해 lasthackers.com의 메일서버로 전달된다. 이 과정에서는 웹메일을 사용하든 Outlook을 사용하든 메일서버로 메일을 보낼것이다.
- lasthackers.com의 메일서버에서는 송신자가 보낸 메일을 받아 수신자의 메일서버(google.com)으로 전달한다.
- 수신 메일서버에서 송신 메일서버의 SPF 레코드 값을 확인한다. 이때 수신 메일서버에는 SPF를 체크하는 프로그램이 설치되어 있어야 한다.
- 수신 메일서버가 SPF 레코드를 확인하여 수신할지 거부할지 결정한다. 위의 설정의 경우 lasthackers.com 계정으로 받은 메일은 1.1.1.1 IP에서 보냈을것이며 아니라면 Drop 하라는 의미이다.(필드에 관한 내용은 아래에서 다룬다)
- 수신 메일서버는 SPF 확인결과 실제 메일을 보내온 lasthackers.com 서버(1.1.1.1)와 IP가 일치하기 때문에 해당 메일을 수신하여 최종 수신자에게 전달한다.
▷ SPF 입력 형식
“v=spf1 mx a:mail.lasthackers.com a:lasthackers.com ip4:49.172.79.12 ~all”
일반적으로 위와 같이 사용한다. 필드별 설명은 아래 표를 참고하기 바란다
▷ SPF 레코드 수식
+ : PASS
– : FAIL
~ : Soft fail
? : Neutral
필드 | 설명 | 사용예시 |
all | 주로 SPF 레코드의 가장 마지막에 오고 항상 사용 | “v=spf1 mx ~all” 해당 도메인의 MX 레코드를 질의하여 발송서버의 IP와 MX서버의 IP가 일치하면 수신메일서버의 정책에 따라 판단하여 처리함 “v=spf1 mx -all” 해당 도메인의 MX 레코드를 질의하여 발송서버의 IP와 MX서버의 IP가 일치하면 허용 “v=spf1 -all” 해당 도메인은 어떤 서버에서도 메일을 발송하지 않음 “v=spf1 +all” 해당 도메인은 어떤 서버에서도 메일을 수신함 |
ip4 | ip4 주소를 정당한 송신서버로 지정 | “v=spf1 ip4:192.168.0.1 -all” 192.168.0.1의 IP주소일때만 허용한다 |
ip6 | ip6 주소를 정당한 송신서버로 지정 | “v=spf1 ip6:1824::9:122:00c:49e2 -all” 해당 IPv6 주소만 허용한다 |
a | 도메인의 A레코드를 정당한 송신서버로 지정 | “v=spf1 a -all” 현재 도메인일경우 허용 “v=spf1 a:lasthackers.com -all” A레코드가 lasthackers.com 일때만 허용 |
MX | 도메인의 MX레코드를 정당한 송신서버로 지정 | “v=spf1 mx:192.168.0.1 -all” MX레코드 질의결과 송신자의 메일서버 IP와 동일할경우만 허용 |
include | 이 도메인의 SPF레코드를 정당한 송신서버로 지정 | include : example.com |
◆ Example
- lasthackers.com. IN TXT “v=spf1 ip4:1.1.1.1 -all”
– lasthackers.com 메일서버에서 들어오는 메일은 보내는서버의 IP가 1.1.1.1 일때만 허용하고 나머지는 거부한다
▷ SPF 설정하기
SPF 설정법은 위의 문법대로 룰을 만들어 호스팅업체의 서브도메인 혹은 자체적으로 도메인서버를 운영중이라면 도메인서버에 존파일에 TXT레코드로 추가하면된다.
[…] SPF 설정 […]