Bạn có bao giờ nhận được một email giả mạo với tên của một công ty hoặc nhãn hiệu mà bạn biết? Điều này có thể gây ra sự hoang tưởng hoặc tạo ra sự rối mắc cho người nhận email và công ty hoặc nhãn hiệu đó.
Để tránh tình trạng này, một trong những cách tốt nhất là sử dụng SPF Record. Trong bài viết này, chúng ta sẽ giải thích về SPF Record và tại sao bạn nên sử dụng nó.
SPF Record là gì?
SPF (Sender Policy Framework) Record là một dạng thông tin được lưu trữ trong DNS (Domain Name System) của một tên miền. Nó cho phép một tên miền xác định danh sách các máy chủ email được phép gửi email tên miền đó.
Ví dụ, một tên miền có thể có SPF Record như sau:
v=spf1 a mx ip4:xxx.xxx.xxx.xxx include:otherdomain.com -all
Trong đó, “v=spf1” là phiên bản của SPF, “a” cho biết máy chủ email có thể gửi email từ tên miền này, “mx” cho biết các máy chủ email được liên kết với tên miền cũng có thể gửi email, “ip4:xxx.xxx.xxx.xxx” cho biết địa chỉ IP cụ thể gửi email từ tên miền này, “include:otherdomain.com” cho biết tên miền khác cũng có thể gửi email tên miền này, và “–all” cho biết tất cả các email không nằm trong danh sách này sẽ bị từ chối.
Tiêu chuẩn xác thực email là gì?
Như các bạn đã biết, giao thức SMTP chỉ truyền tải thư chứ không hỗ trợ bảo vệ bạn khỏi các email giả mạo, spam,…. Nó không thể xác định nguồn gốc của email và xác thực tên miền. Hiện nay có 3 tiêu chuẩn chính được sử dụng nhiều để xác thực email như sau:
- SPF: kiểm tra địa chỉ IP mà email gửi đến có được ủy quyền hay không.
- DKIM: kiểm tra xem thư có bị thay đổi trong quá trình dùng khóa và xác minh chữ ký hay không?
- DMARC: bao gồm cả hai cách tiếp cận trên.
Cả ba có sự khác biệt về việc triển khai và mặt kỹ thuật, tuy nhiên điểm chung của chúng là dựa trên DNS. Tất nhiên bạn cũng có thể bắt gặp một số phương thức xác thực khác như iprev, ADSP, Sender ID,… Mặc dù vậy một trong số chúng thường bị phản đối hoặc không được xác nhận quyền sở hữu.
Tại Sao Bạn Nên Sử Dụng SPF Record?
Có hai lý do chính tại sao bạn nên sử dụng SPF Record:
- Giúp tránh email giả mạo: Khi một email được gửi đi từ một máy chủ email không được liệt kê trong SPF Record của tên miền gửi email, email này có thể bị coi là email giả mạo.
- Tăng tính tin cậy của email: Khi một email được gửi từ một máy chủ email được liệt kê trong SPF Record của tên miền gửi email, email này sẽ được coi là hợp lệ và tin cậy hơn.
Cú pháp của SPF record
Ví dụ về cú pháp bản ghi SPF đơn giản:
{{EJS0}}
Trong đó, v=spf1
là số phiên bản bản ghi hiện tại. Phần còn lại bao gồm: cơ chế, bộ định tính và bộ sửa đổi.
Các cơ chế có thể tồn tại bao gồm:
Cơ chế | Mục đích |
+ | Mang nghĩa chấp nhận, máy chủ được phép gửi thư. |
– | Mang ý nghĩa từ chối và không cho phép gửi email. |
~ | Mặc dù là chấp nhận nhưng có đánh dấu. Máy chủ chưa được phép gửi thư và đang trong quá trình chuyển đổi. |
? | Mang nghĩa chấp nhận nhưng hiệu lực của máy chủ chưa được nêu rõ. |
Bộ định tính trong SPF record bao gồm:
Giá trị | Ý nghĩa | Cách thực hiện |
a | Xác nhận một bản ghi DNS của tên miền được ủy quyền. | a a/<độ dài tiền tố> a:<tên miền> a:<tên miền>/<độ dài tiền tố> |
all | Xác định chính sách cho tất cả các nguồn khác. | all |
exists | Kiểm tra tính hợp lệ của một bản ghi cho tên miền được cung cấp. | exists: <tên miền> |
include | Include tên miền được chỉ định theo ủy quyền. Nếu tên miền không có bản ghi hợp lệ bạn sẽ được cho phép. | include: <tên miền> |
ip4 | Xác định phạm vi mạng là ip4. Có thể thêm tiền tố độ dài biểu thị phạm vi. Nếu không có tiền tố này nó sẽ mặc định là /32. | ip4:<địa chỉ ip4> ip4:<mạng-ip4>/<độ dài phạm vi> |
ip6 | Xác định phạm vi mạng là ip6 và có thể thêm tiền tố độ dài. Giá trị mặc định khi không có tiền tố là /128. | ip6:<địa chỉ ip6> ip6:<mạng-ip6>/<độ dài phạm vi> |
mx | Xác định bản ghi DNS MX của tên miền được ủy quyền. Điều này có nghĩa email phải được gửi đi từ một trong các máy chủ thư đến của tên miền. | mx mx/<độ dài tiền tố> mx:<tên miền> mx:<tên miền>/<độ dài tiền tố> |
Bộ sửa đổi (bổ sung) bao gồm:
Giá trị | Ý nghĩa | Cách thực hiện |
exp | Giải thích cho người gửi vì sao thư bị từ chối. | exp=<tên miền> |
redirect | Thay thế tên miền bằng bản ghi hiện tại. | redirect=<tên miền> |
Một số lưu ý cần ghi nhớ
Bản ghi SPF record không quá 255 ký tự. Có thể dùng nhiều bản ghi khi cần thiết.
- Một số nhà cung cấp DNS có thể không yêu cầu trích dẫn về dữ liệu bản ghi, vậy nên cần kiểm tra trước khi tạo.
- Bản ghi cho các tên miền phụ nên được đặt tên tương ứng với tên miền chính.
- Để tránh quá trình tải DNS gián đoạn, tổng số cơ chế bao gồm cả công cụ sửa đổi nên nhỏ hơn 10.
Cách tạo bản ghi SPF cho tên miền
Áp dụng cú pháp trên, chúng ta hãy thử tạo một bản ghi SPF cho tên miền theo các bước sau:
- Cần thu thập tất cả các máy chủ thư và địa chỉ IP sẽ được ủy quyền trong bản ghi SPF.
- Truy cập vào bảng điều khiển DNS của ISP và tìm bản ghi loại TXT.
- Tạo bản ghi SPF theo từng thành phần:
- Bắt đầu với thẻ phiên bản bản ghi: v=spf1, v=spf2, v=spf3,…
- Chèn các địa chỉ IP được chỉ định ủy quyền: ip4: <địa chỉ IP> ip6: <địa chỉ IP> …
- Thêm thẻ include cho từng dịch vụ email của bên thứ ba để chỉ định nó đáng tin cậy. Ví dụ: include:student.net hoặc include:student.com
- Tận dụng các thẻ và giá trị của cơ chế, bộ sửa đổi bổ sung để thiết lập bản ghi SPF record.
- Thẻ all thường được sử dụng khi kết thúc bản ghi. Ví dụ như: -all, +all, ~all,…
Ví dụ một bản ghi SPF: v=spf1 a mx -all. Với bản ghi trên, tất cả các bản ghi a và MX đều được phép gửi mail, ngoài ra sẽ bị từ chối.
Dùng SPF record cho nhiều tên miền
Ví dụ bạn có tên miền chính là a.com và bản ghi SPF là v=spf1 a mx -all. Bạn muốn tạo bản ghi cho nhiều tên miền như b.com hoặc c.com? Cơ chế include cho phép người dùng chỉ định các tên miền khác độc lập với tên miền của mình. Thực hiện sẽ như sau:
{{EJS1}}
Người dùng cũng có thể trỏ tới tên miền chính của mình thông qua bản ghi SPF của tên miền phụ. Ví dụ:
{{EJS2}}
Có thể tách một SPF record lớn hay không?
Nếu bạn có một bản ghi khá phức tạp như sau:
{{EJS3}}
Bản ghi này dưới 255 ký tự nhưng lại khá dài, vậy nên hoàn toàn có thể chia chúng thành nhiều bản ghi. Các cách thực hiện như sau:
- Đầu tiên tách chúng thành nhiều bản ghi nhỏ và đặt tên theo tên miền chính như sau:
- Bản ghi spf1.a.com TXT:
{{EJS4}}
- Bản ghi spf2.a.com TXT:
{{EJS5}}
- Bản ghi spf3.a.com TXT:
{{EJS6}}
- Bản ghi spf1.a.com TXT:
- Sau đó điều chỉnh bản ghi đầu theo cách dưới đây:
- Bản ghi a.com TXT:
{{EJS7}}
- Bản ghi a.com TXT:
Sau khi cập nhật DNS, tất cả các bản ghi SPF record này được kiểm tra là một.
Xác thực bản ghi SPF
Sau khi đã thực hiện thao tác tạo và xử lý bản ghi theo ý muốn, bạn nên tiến hành xác thực chúng. Hiện nay có rất nhiều công cụ hỗ trợ quá trình này như: SPF Record Check hoặc SPF Syntax Validator. Vậy nên người dùng hoàn toàn thao tác được dễ dàng.
Biện pháp xử lý các sự cố liên quan tới SPF
Có một số vấn đề thường xuyên xảy ra khi thao tác bản ghi SPF. Dưới đây là các sự cố có thể diễn ra và cách khắc phục:
- Vượt quá giới hạn tra cứu DNS: như đã nói, bạn chỉ được phép có không quá 10 truy vấn. Nguyên nhân nhiều nhất gây ra việc này đó là sử dụng include quá nhiều. Giải pháp bạn nên sử dụng ở đây là tạo một tên miền phụ chuyên dùng gửi email.
- Bản ghi SPF record loại 99 không dùng nữa: điều này đồng nghĩa bản ghi của bạn đã quá cũ. Hiện tại các bản ghi chỉ xuất dưới dạng DNS TXT (loại 16), vậy nên hãy chắc chắn bạn đã cập nhật loại mới này.
- Nhiều luồng SPF khác nhau: đối với các nhà cung cấp dịch vụ mail lớn, vấn đề này hoàn toàn giải quyết tự động. Tuy nhiên nếu bạn đang sử dụng những nhà cung cấp email nhỏ thì không có tính năng tự động như vậy. Giải pháp là hãy đồng nhất hai mục DNS TXT của bạn về làm một.
Tổng kết về SPF record
Hy vọng những kiến thức về SPF record mà chúng tôi mang lại sẽ giúp ích cho bạn. Việc tạo hay truy vấn các bản ghi này không quá khó khăn như nhiều người tưởng. Vậy nên trang bị giải pháp xác thực email sẽ tăng cường hệ thống bảo mật hơn rất nhiều và là điều cần thiết nên làm.
Nếu còn gặp bất cứ vướng mắc gì về SPF record, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.