← RFC Reference

SPF — Keframework Chính sách Người gửi

Internet Standard Email Authentication Obsoletes RFC 4408 Published March 2026
ELI5: Hãy tưởng tượng công ty bạn có giấy đầu thư chính thức. SPF giống như việc công bố một danh sách những máy in được phép in trên giấy đầu thư của bạn. Khi ai đó nhận được một bức thư tuyên bố là từ bạn, họ có thể kiểm tra xem nó có đến từ một trong những máy in được phê duyệt của bạn hay không. Nếu không, họ biết nó có thể là hàng giả.

Tại Sao RFC Này Tồn Tại

SMTP được thiết kế vào đầu những năm 1980 mà không có xác minh người gửi tích hợp. Bất kỳ máy chủ nào cũng có thể tuyên bố gửi thư từ bất kỳ miền nào — không có gì trong giao thức cơ sở để ngăn chặn điều đó. Điều này khiến giả mạo email trở nên tầm thường: những kẻ gửi thư rác và lừa đảo có thể giả mạo địa chỉ người gửi phong bì để mạo danh các ngân hàng, đồng nghiệp hoặc bất kỳ thương hiệu được tin cậy nào.

SPF (Sender Policy Framework), được chuẩn hóa trong RFC 7208, giải quyết vấn đề này bằng cách cho phép chủ sở hữu miền xuất bản một bản ghi DNS TXT mà rõ ràng liệt kê những địa chỉ IP và máy chủ nào được phép gửi email cho miền của họ. Các máy chủ thư nhận truy vấn bản ghi này trong quá trình giao dịch SMTP và có thể từ chối hoặc gắn cờ các thư từ các nguồn không được phép.

RFC 7208 đã thay thế RFC 4408 thử nghiệm trước đó, nâng SPF lên trạng thái Tiêu chuẩn Internet đầy đủ với các quy tắc xử lý làm rõ và yêu cầu nghiêm ngặt hơn đối với giới hạn tra cứu DNS.

Cách Hoạt Động

SPF hoạt động ở cấp phong bì, không phải cấp tiêu đề thư. Miền được kiểm tra là miền trong lệnh MAIL FROM (còn gọi là Return-Path hoặc người gửi phong bì), không phải tiêu đề From: mà người dùng thấy.

Quy Trình Kiểm Tra SPF

  1. Máy chủ gửi kết nối với máy nhận và phát hành MAIL FROM:<user@example.com>.
  2. Máy nhận trích xuất miền example.com từ người gửi phong bì.
  3. Máy nhận truy vấn DNS cho bản ghi TXT tại example.com bắt đầu bằng v=spf1.
  4. Máy nhận đánh giá các cơ chế của bản ghi SPF so với địa chỉ IP kết nối.
  5. Kết quả là một trong những: pass, fail, softfail, neutral, none, temperror, hoặc permerror.

Ví Dụ Giao Dịch SMTP

# Máy chủ gửi 198.51.100.25 kết nối
S: 220 mx.receiver.com ESMTP ready
C: EHLO mail.example.com
S: 250-mx.receiver.com Hello
S: 250 OK
C: MAIL FROM:<alice@example.com>
# Máy nhận kiểm tra: bản ghi SPF của example.com có cho phép 198.51.100.25 không?
# Tra cứu DNS: example.com TXT "v=spf1 ip4:198.51.100.0/24 -all"
# 198.51.100.25 khớp ip4:198.51.100.0/24 => kết quả: pass
S: 250 OK
C: RCPT TO:<bob@receiver.com>
S: 250 OK

Chi Tiết Kỹ Thuật Quan Trọng

Cú Pháp Bản Ghi SPF

Bản ghi SPF là bản ghi DNS TXT bắt đầu bằng thẻ phiên bản v=spf1 theo sau là một loạt cơ chế và một bộ định danh tùy chọn cho mỗi cơ chế. Bản ghi được đánh giá từ trái sang phải; cơ chế đầu tiên khớp sẽ xác định kết quả.

example.com. IN TXT "v=spf1 ip4:198.51.100.0/24 ip6:2001:db8::/32 include:_spf.mailertogo.com include:_spf.google.com -all"

Cơ Chế

Cơ Chế Mô Tả
ip4:<range> Khớp nếu IP của người gửi nằm trong phạm vi CIDR IPv4 đã cho.
ip6:<range> Khớp nếu IP của người gửi nằm trong phạm vi CIDR IPv6 đã cho.
a Khớp nếu IP của người gửi bằng bản ghi A/AAAA của miền.
mx Khớp nếu IP của người gửi bằng bản ghi A/AAAA của một trong các máy chủ MX của miền.
include:<domain> Đánh giá đệ quy bản ghi SPF của miền khác. Một pass từ miền được bao gồm được tính là một khớp.
exists:<domain> Khớp nếu bản ghi DNS A tồn tại cho miền đã cho (được sử dụng cho macro nâng cao).
redirect=<domain> Bộ định danh: thay thế toàn bộ kiểm tra SPF hiện tại bằng bản ghi của miền khác.
all Khớp với mọi thứ. Thường được sử dụng ở cuối bản ghi là -all hoặc ~all.

Bộ Định Danh

Bộ Định Danh Kết Quả Ý Nghĩa
+ (mặc định) pass Người gửi được phép
- fail Không được phép — từ chối thư
~ softfail Có thể không được phép — chấp nhận nhưng gắn cờ
? neutral Không có khẳng định

Giới Hạn 10 Tra Cứu

Để ngăn chặn lạm dụng DNS, RFC 7208 bắt buộc rằng đánh giá SPF không được yêu cầu quá 10 tra cứu DNS dẫn đến độ phân giải cơ chế. Các cơ chế kích hoạt tra cứu là: include, a, mx, exists, redirect, và ptr (lỗi thời). Các cơ chế ip4ip6 thô không được tính. Vượt quá 10 tra cứu tạo ra kết quả permerror, thường có nghĩa là không có bảo vệ SPF nào cả.

Giới Hạn Tra Cứu MX

Ngoài ra, cơ chế mx không được dẫn đến quá 10 tên MX để truy vấn, và mỗi tên đó không được phân giải thành quá 10 địa chỉ A/AAAA. Cơ chế ptr bị chính thức không khuyến cáo.

Mở Rộng Macro

SPF hỗ trợ macro mở rộng thành các giá trị cụ thể theo ngữ cảnh trong quá trình đánh giá. Các macro phổ biến bao gồm %{s} (người gửi), %{l} (phần cục bộ), %{d} (miền), và %{i} (địa chỉ IP). Những cái này chủ yếu được sử dụng trong các cơ chế exists: cho chính sách phức tạp theo người dùng hoặc theo IP.

Ví Dụ Bản Ghi DNS

Cơ Bản: Phạm Vi IP Duy Nhất

example.com. IN TXT "v=spf1 ip4:203.0.113.0/24 -all"

Điển Hình: ESP Bên Thứ Ba + Google Workspace

example.com. IN TXT "v=spf1 include:_spf.mailertogo.com include:_spf.google.com -all"

Miền Không Gửi Email

parked-domain.com. IN TXT "v=spf1 -all"

Sử Dụng redirect

subdomain.example.com. IN TXT "v=spf1 redirect=example.com"

Những Sai Lầm Phổ Biến

Tác Động Đến Khả Năng Gửi Email

SPF là một trong ba trụ cột xác thực email (cùng với DKIMDMARC). Tác động của nó đến khả năng gửi email là đáng kể:

Related RFCs