SPF record là gì và cách khai cho tên miền
Hướng dẫn Email Hosting · cập nhật 17/08/2026
SPF record là một bản ghi TXT trong DNS liệt kê những máy chủ được phép gửi thư thay mặt tên miền của bạn. Máy chủ nhận đọc bản ghi này để biết thư có đúng nguồn không. Khai một bản ghi mất khoảng 10 phút, chờ DNS lan xong mất tới 24 giờ.
Bạn cần bản ghi này khi thư gửi đi hay rơi vào mục spam, hoặc khi có người báo nhận được thư mạo danh địa chỉ công ty bạn. Không có SPF record thì bất kỳ ai cũng ghi tên miền của bạn vào ô người gửi mà không máy chủ nào phát hiện ra được.
- Liệt kê hết những nơi đang gửi thư thay tên miền của bạn.
- Ghép chuỗi bản ghi theo cú pháp SPF.
- Tạo một bản ghi TXT ở gốc tên miền trong trang quản lý DNS.
- Chờ DNS lan rồi gửi một thư thử để kiểm kết quả.
Cần quyền sửa DNS của tên miền. Một tên miền chỉ được có đúng một SPF record. Có hai bản ghi trở lên là máy chủ nhận trả kết quả permerror và bỏ qua cả hai, tình trạng này còn tệ hơn không khai bản ghi nào.
SPF record kiểm tra thư gửi đi theo cách nào
Khi một máy chủ nhận được thư ghi người gửi thuộc tên miền của bạn, nó tra bản ghi TXT ở gốc tên miền đó và so địa chỉ IP của máy vừa gửi với danh sách trong bản ghi. IP có trong danh sách thì thư qua. IP không có thì thư bị đánh dấu đáng ngờ hoặc bị từ chối, tuỳ ký tự đứng trước all.
Điểm cần nhớ là SPF chỉ soát địa chỉ IP của máy gửi, không đụng gì tới nội dung thư. Thư đi từ đúng máy chủ nhưng nội dung bị sửa dọc đường thì SPF vẫn cho qua, việc phát hiện phần nội dung là của DKIM.
Cú pháp SPF record và ý nghĩa từng cơ chế
Một bản ghi SPF luôn mở đầu bằng v=spf1 và kết thúc bằng một dạng của all. Ở giữa là các cơ chế liệt kê nguồn gửi hợp lệ. Máy chủ nhận đọc từ trái sang phải, gặp cơ chế nào khớp trước thì dừng ở đó và áp kết quả của cơ chế ấy.
v=spf1 mx a ip4:203.0.113.10 include:_spf.app.mailpro.vn -all
| Cơ chế | Nghĩa là | Khi nào dùng |
|---|---|---|
| mx | Cho phép các máy chủ nằm trong bản ghi MX của tên miền | Máy chủ nhận thư cũng là máy chủ gửi thư |
| a | Cho phép IP mà bản ghi A của tên miền đang trỏ tới | Website gửi thư từ chính máy chủ đặt web |
| ip4: | Cho phép một địa chỉ IPv4 hoặc một dải cụ thể | Máy chủ gửi có IP tĩnh, biết trước con số |
| ip6: | Như trên nhưng cho địa chỉ IPv6 | Máy chủ gửi chạy IPv6 |
| include: | Mượn luôn bản ghi SPF của một tên miền khác | Dùng dịch vụ email hoặc phần mềm gửi thư bên ngoài |
| -all | Mọi nguồn còn lại đều không hợp lệ, từ chối thẳng | Đã liệt kê chắc chắn đủ mọi nguồn gửi |
| ~all | Nguồn còn lại đáng ngờ, nhận nhưng đánh dấu | Còn đang dò, chưa chắc đã liệt kê hết |
| ?all | Không kết luận gì, coi như trung lập | Gần như bằng không khai, ít dùng |
Hai ký tự trước all tạo ra khác biệt lớn nhất. Mới khai lần đầu thì để ~all chừng một tới hai tuần, theo dõi xem có nguồn gửi hợp lệ nào bị sót không, rồi mới siết thành -all. Đặt -all ngay mà quên một nguồn là thư từ nguồn đó bị chặn hẳn.
Cách tạo SPF record cho tên miền
Bốn bước dưới đây làm trong trang quản lý DNS của tên miền, không cần đụng tới máy chủ email. Bước tốn thời gian nhất là bước một, vì nguồn gửi hay bị bỏ sót là những nơi không ai nghĩ tới, chẳng hạn form liên hệ trên website hay phần mềm hoá đơn.
1. Liệt kê hết các nguồn đang gửi thư
Ghi ra giấy mọi nơi phát thư mang tên miền của bạn: máy chủ email chính, website gửi thư xác nhận đơn hàng, phần mềm kế toán gửi hoá đơn, dịch vụ gửi thư quảng cáo, máy in đa năng gửi bản quét. Sót một nguồn là thư từ đó bị chặn sau khi bản ghi có hiệu lực.
2. Ghép chuỗi bản ghi
Bắt đầu bằng v=spf1, thêm lần lượt các cơ chế cho từng nguồn, kết thúc bằng ~all. Dùng hộp thư mailPro thì chuỗi tối thiểu là:
v=spf1 include:_spf.app.mailpro.vn ~all
Website cũng gửi thư từ máy chủ đặt web thì thêm a hoặc IP của máy chủ đó vào:
v=spf1 a include:_spf.app.mailpro.vn ~all
3. Tạo bản ghi TXT trong trang quản lý DNS
Vào trang quản lý DNS của tên miền, thêm một bản ghi mới với loại TXT. Ô tên hoặc host để trống hoặc điền dấu @, nghĩa là bản ghi nằm ở gốc tên miền. Ô giá trị dán nguyên chuỗi vừa ghép. Chi tiết chỗ bấm ở bài hướng dẫn quản lý DNS cho tên miền.
4. Chờ DNS lan rồi kiểm lại
Bản ghi mới cần thời gian lan, thường 15 phút tới 24 giờ tuỳ giá trị TTL. Kiểm bằng lệnh dưới đây trên máy tính:
nslookup -type=txt tenmiencuaban.com
Kết quả trả về phải có đúng một dòng bắt đầu bằng v=spf1. Máy vẫn trả bản cũ thì xoá bộ nhớ đệm DNS theo bài xoá cached DNS trên máy tính rồi tra lại.
Đọc kết quả xác thực trong header thư
Cách chắc chắn nhất để biết bản ghi đã chạy là gửi một thư sang một hộp thư khác rồi mở phần header gốc của thư đó. Dòng Received-SPF hoặc Authentication-Results ghi rõ kết quả bằng một từ khoá, và mỗi từ khoá ứng với một tình huống khác nhau.
| Kết quả | Nghĩa là | Việc cần làm |
|---|---|---|
| pass | IP máy gửi nằm trong danh sách cho phép | Không phải làm gì, bản ghi đang chạy đúng |
| fail | IP không nằm trong danh sách, bản ghi kết thúc bằng -all | Bổ sung nguồn gửi đó vào bản ghi |
| softfail | IP không có trong danh sách, bản ghi kết thúc bằng ~all | Như trên, thư vẫn tới nhưng dễ vào spam |
| neutral | Bản ghi không nói gì về IP này | Xem lại, thường do dùng ?all |
| none | Tên miền chưa có bản ghi SPF nào | Bản ghi chưa lan hoặc khai sai chỗ |
| permerror | Cú pháp sai, hoặc tên miền có hai bản ghi SPF | Xoá bớt để chỉ còn một, kiểm lại cú pháp |
Các lỗi hay gặp khi khai SPF record
Bốn lỗi dưới đây gặp gần như ở mọi lần khai đầu tiên. Điểm chung là bản ghi trông vẫn đúng khi nhìn bằng mắt, chỉ máy chủ nhận mới báo hỏng, nên phải đọc header thư mới thấy.
Tên miền có hai bản ghi SPF. Hay xảy ra khi thêm một nhà cung cấp mới mà khai thành bản ghi riêng. Kết quả là permerror và cả hai đều bị bỏ qua. Cách sửa là gộp thành một chuỗi, mỗi nguồn một cơ chế include:.
Vượt quá 10 lượt tra DNS. Chuẩn SPF giới hạn 10 lượt tra cho mỗi lần kiểm, và mỗi include:, a, mx đều tính một lượt. Nhiều dịch vụ gửi thư quá thì vượt mức và trả permerror. Cách sửa là thay bớt include: bằng ip4: ghi thẳng địa chỉ IP.
Khai bản ghi vào tên miền phụ. Bản ghi phải nằm ở gốc tên miền, ô host để trống hoặc dấu @. Điền mail hay www vào ô đó là bản ghi nằm sai chỗ và không có tác dụng.
Thư vẫn vào spam dù SPF đã pass. SPF chỉ là một trong ba lớp xác thực. Thiếu chữ ký số thì nhiều máy chủ vẫn hạ điểm tin cậy, cách khai chữ ký ở bài DKIM là gì.
Bước tiếp theo sau khi SPF đã pass
SPF trả lời đúng một câu hỏi: máy vừa gửi thư này có được phép gửi thay tên miền không. Nó không biết nội dung thư có bị sửa dọc đường không, và cũng không nói cho máy chủ nhận biết phải làm gì khi kiểm không đạt. Hai việc đó thuộc về hai lớp còn lại.
- Khai chữ ký số cho tên miền theo bài DKIM là gì. Lớp này bảo đảm nội dung thư không bị sửa sau khi rời máy chủ gửi.
- Khai DMARC sau khi cả SPF và DKIM đều pass đều đặn. Bản ghi DMARC là chỗ bạn ra lệnh cho máy chủ nhận xử lý ra sao khi hai lớp kia không đạt.
- Đổi
~allthành-allkhi đã chắc không sót nguồn gửi nào.
Thêm một nhà cung cấp gửi thư mới thì nhớ quay lại sửa bản ghi ngay hôm đó. Đây là chỗ hay quên nhất, và triệu chứng của nó là thư từ dịch vụ mới bị vào spam hàng loạt mà không ai nghĩ tới nguyên nhân nằm ở DNS.