Brevo SMTP: hướng dẫn thiết lập, cấu hình và xử lý sự cố
Cấu hình Brevo SMTP đúng cách: máy chủ, cổng 587, 465 và 2525, khóa SMTP, xác thực tên miền, ví dụ cho WordPress và mã nguồn, giới hạn và cách sửa lỗi.
Brevo SMTP đưa thư đi của một ứng dụng ra khỏi tác nhân thư cục bộ trên máy chủ web và chuyển sang hạ tầng có xác thực, ghi nhật ký và báo cáo cho từng thông điệp. Việc thiết lập rất gọn: một tên máy chủ, một cổng, hai thông tin đăng nhập. Làm sai cũng gọn không kém, và các kiểu lỗi thường im lặng. Hướng dẫn này bao quát phần cấu hình, mô hình thông tin đăng nhập, phần việc DNS quyết định thư có đến nơi hay không, và những lỗi bạn sẽ gặp nếu bất kỳ mảnh nào bị cấu hình sai. Nếu bạn vẫn đang chọn nhà cung cấp, hướng dẫn về dịch vụ email SMTP so sánh thị trường trước đã.
Brevo SMTP là gì
Brevo mô tả Brevo SMTP là dịch vụ SMTP relay của mình. Ứng dụng, trang web hoặc máy chủ thư của bạn chuyển một thông điệp cho relay qua kết nối đã xác thực, và Brevo chịu trách nhiệm định tuyến, thử lại, uy tín và báo cáo. Thống kê của thư đi qua relay xuất hiện bên cạnh thống kê chiến dịch, và một lần trả lại cứng sẽ tự động đưa liên hệ đó vào danh sách chặn.
Relay được xây cho các thông điệp giao dịch: đặt lại mật khẩu, biên nhận, xác nhận đơn hàng, thông báo tài khoản. Nếu ranh giới giữa loại thư đó và thư marketing chưa rõ ràng, bài email giao dịch là gì sẽ nói rõ.
Chọn SMTP hay REST API
Cả hai đường đều dẫn tới cùng một nền tảng. Cách phân chia thực tế:
| Dùng SMTP khi | Dùng REST API khi |
|---|---|
| Hệ thống chỉ nói được SMTP (WordPress, Postfix, một ERP, một ứng dụng thư) | Bạn tự viết tích hợp và muốn có lỗi trả về theo cấu trúc |
| Bạn đang chuyển một cấu hình SMTP sẵn có và muốn thay đổi ít nhất | Bạn cần gửi theo lô, lên lịch, hoặc khóa idempotency |
Một giới hạn cứng: tài liệu dành cho lập trình viên của Brevo nêu rõ SMTP relay không hỗ trợ gửi theo lô, và hướng các thao tác theo lô sang các endpoint của API.
Tạo thông tin đăng nhập SMTP
Xác thực SMTP của Brevo dùng hai giá trị rất dễ nhầm với những thông tin đăng nhập bạn đã có.
Tìm SMTP login của bạn
SMTP login không phải địa chỉ email tài khoản Brevo. Đó là một định danh riêng hiển thị ở ô Login trên trang Settings, SMTP and API, theo định dạng [email protected].
Từ đó có hai quy tắc, cả hai đều lấy từ tài liệu xử lý sự cố của Brevo. Đừng điền smtp-relay.brevo.com vào ô tên đăng nhập: đó là máy chủ relay, không phải login của bạn. Và đừng đặt SMTP login vào header From, vì nó xác thực bạn chứ không định danh người gửi.
Tạo một khóa SMTP
Mật khẩu ở đây là một khóa SMTP, không phải mật khẩu tài khoản và cũng không phải khóa API.
- Mở menu tài khoản và chọn Settings, sau đó SMTP and API.
- Trong tab SMTP, bấm Generate a new SMTP key.
- Đặt tên khóa theo tích hợp sẽ dùng nó.
- Chọn biến thể. Standard là khóa 64 ký tự được khuyến nghị; Short là khóa 15 ký tự, dành cho ứng dụng không xử lý được mật khẩu dài.
- Đặt hạn dùng từ 7 ngày đến 1 năm, hoặc chọn không hết hạn.
- Bấm Generate, rồi sao chép ngay toàn bộ khóa.
Khóa đầy đủ chỉ hiển thị một lần, sau đó trang chỉ còn hiện vài ký tự cuối. Nếu bạn làm mất nó, hãy tạo khóa thay thế và cập nhật cấu hình.
Cấu hình kết nối
Các giá trị cần nhập vào bất kỳ ứng dụng hay thư viện nào:
| Thiết lập | Giá trị |
|---|---|
| Máy chủ SMTP | smtp-relay.brevo.com |
| Cổng | 587, 465, hoặc 2525 |
| Mã hóa | Để trống trừ khi dùng cổng 465, cổng này yêu cầu SSL hoặc TLS |
| Tên đăng nhập | SMTP login của bạn, định dạng [email protected] |
| Mật khẩu | Khóa SMTP của bạn |
Chọn cổng
| Cổng | Mã hóa | Khi nào dùng |
|---|---|---|
| 587 | TLS, thương lượng bằng STARTTLS | Mặc định. Hãy bắt đầu từ đây. |
| 465 | SSL hoặc TLS, ngầm định ngay khi kết nối | Khi ứng dụng của bạn cần kết nối được mã hóa ngầm định |
| 2525 | TLS, thương lượng bằng STARTTLS | Khi nhà cung cấp hosting chặn 587 |
Brevo khuyến nghị 587 làm mặc định. Cổng 465 từng được chỉ định cho SMTP qua SSL và sau đó bị ngừng khuyến nghị, nhưng vẫn được hỗ trợ rộng rãi và là lựa chọn đúng khi bạn cần kết nối được mã hóa trước lệnh đầu tiên. Cổng 2525 không phải cổng đăng ký với IETF hay IANA, nhưng hầu hết ISP và nhà cung cấp đám mây đều cho phép, nên nó là lối thoát khi 587 bị chặn.
Ô mã hóa hay làm người ta vấp. Brevo bảo bạn để trống trừ khi dùng 465. Điều đó không có nghĩa là kết nối không được mã hóa: trên 587 và 2525, máy chủ công bố STARTTLS và mọi ứng dụng tử tế đều nâng cấp kết nối trước khi xác thực. Nó chỉ có nghĩa là bạn không nên chọn “SSL” khi kết nối tới 587, vì cổng và mã hóa lệch nhau sẽ khiến xác thực thất bại ngay cả khi thông tin đăng nhập đúng.
Kiểm tra kết nối trước khi viết bất kỳ dòng mã nào
Hãy xác nhận relay có trả lời và TLS thương lượng thành công trước khi gỡ lỗi mã ứng dụng.
openssl s_client -starttls smtp -crlf -connect smtp-relay.brevo.com:587Một lần bắt tay thành công kết thúc bằng danh sách năng lực 250 của máy chủ, trong đó phải có STARTTLS và một dòng AUTH liệt kê PLAIN cùng LOGIN. Hoàn toàn không có banner nghĩa là vấn đề mạng, không phải vấn đề thông tin đăng nhập.
Xác thực tên miền gửi của bạn
Đây là bước người ta hay bỏ qua, và nó quyết định thư có đến nơi hay không. Từ ngày 1 tháng 2 năm 2024, việc xác thực tên miền đã là bắt buộc theo yêu cầu dành cho người gửi của Gmail và Yahoo, và Brevo lưu ý Microsoft đã công bố tiêu chuẩn tương tự vào ngày 5 tháng 5 năm 2025. Thư chưa xác thực sẽ bị lọc hoặc từ chối bất kể relay nào gửi đi.
Những bản ghi Brevo yêu cầu
| Bản ghi | Loại | Mục đích |
|---|---|---|
| Mã Brevo | TXT | Xác minh bạn sở hữu và kiểm soát tên miền gửi |
| DKIM | 1 TXT hoặc 2 CNAME | Ký thông điệp để bên nhận phát hiện thay đổi trên đường truyền |
| DMARC | TXT | Cho máy chủ nhận biết cách xử lý thư đáng ngờ, với chính sách none, quarantine hoặc reject |
Brevo có thể thêm các bản ghi này tự động nếu bạn đăng nhập vào nhà cung cấp tên miền từ bên trong Brevo, hoặc bạn tự chép các giá trị vào vùng DNS bằng tay. Bạn nhận dạng DKIM nào là tùy tài khoản: hai bản ghi CNAME dùng khóa 2048 bit theo mặc định, còn dạng TXT đơn dùng khóa 1024 bit.
Vì sao không có bản ghi SPF
Phần hỏi đáp của Brevo nói rõ: SPF và bản ghi MX không bắt buộc để xác thực tên miền, và chỉ được cung cấp khi thiết lập IP riêng. Trên hạ tầng dùng chung, Brevo kiểm soát đường hồi đáp, nên DKIM cộng với bước kiểm tra quyền sở hữu là đủ để xác thực. Nếu bạn đang chuyển từ một nhà cung cấp đòi hỏi bản ghi include SPF, đừng tự nghĩ ra một cái; một include không cần thiết chỉ làm tăng rủi ro vượt giới hạn tra cứu.
DMARC vẫn quan trọng, và Brevo công bố một bản ghi khởi đầu chạy được:
v=DMARC1; p=none; rua=mailto:[email protected]Hãy bắt đầu ở p=none để nhận báo cáo tổng hợp mà không ảnh hưởng việc gửi, rồi siết dần sang quarantine và reject khi mọi nguồn gửi hợp lệ đã được căn chỉnh. Hướng dẫn về khả năng gửi email của chúng tôi nói về lộ trình đó.
Xác minh người gửi
Mọi địa chỉ From đều phải là người gửi đã xác minh hoặc nằm trên tên miền đã xác thực. Người gửi mới được xác minh bằng mã 6 chữ số gửi tới địa chỉ đó, nhưng người gửi trên tên miền đã xác thực thì bỏ qua bước này, và đó là lý do bạn nên xác thực trước. Các tên miền thư miễn phí không thể xác thực, nên địa chỉ From ở gmail.com hay outlook.com sẽ bị từ chối hoặc bị lọc.
Hướng dẫn tích hợp
WordPress
WordPress giao thư đi cho wp_mail, hàm này gọi bất cứ thứ gì hosting cung cấp. Để định tuyến qua Brevo thì cần một plugin.
- Trong thanh bên quản trị, vào Plugins, sau đó Add New Plugin.
- Tìm Brevo, cài “Newsletter, SMTP, Email marketing and Subscribe forms by Brevo”, rồi kích hoạt.
- Vào Brevo, sau đó Home, và nhập khóa API v3 của Brevo vào ô kích hoạt. Bước này dùng khóa API vì plugin còn đồng bộ danh bạ. Bấm Login.
- Trong mục Transactional emails, chọn Yes.
- Chọn một người gửi có sẵn hoặc tạo mới. Mọi email từ WordPress sẽ dùng tên và địa chỉ người gửi đó.
- Nhập một địa chỉ và bấm Send email để gửi thư thử.
Hai lỗi thường gặp. Thông báo rằng email giao dịch chưa được kích hoạt vì tài khoản Brevo SMTP của bạn chưa được kích hoạt nghĩa là bộ phận hỗ trợ của Brevo phải bật nền tảng lên. Thông báo rằng không dùng được SMTP vì wp_mail đã được một tiến trình khác khai báo nghĩa là có plugin SMTP cạnh tranh; hãy tắt lần lượt từng plugin còn lại.
Ứng dụng phía máy chủ
Ví dụ Node.js của chính Brevo dùng nodemailer cùng các thiết lập ở trên:
const nodemailer = require("nodemailer");
const transporter = nodemailer.createTransport({ host: "smtp-relay.brevo.com", port: 587, secure: false, // true cho 465, false cho các cổng khác auth: { pass: process.env.BREVO_SMTP_KEY, },});
async function sendOrderConfirmation() { const info = await transporter.sendMail({ subject: "Đơn hàng của bạn đã được xác nhận", text: "Đơn hàng 10482 đã được xác nhận và sẽ giao trong hai ngày làm việc.", }); console.log("Message sent:", info.messageId);}
sendOrderConfirmation().catch(console.error);Hãy để ý secure: false trên cổng 587. Cờ này điều khiển TLS ngầm định, chứ không quyết định kết nối có được mã hóa hay không; nodemailer vẫn phát lệnh STARTTLS. Chỉ đặt true cho 465.
Bản tương đương bằng Python với thư viện chuẩn:
import smtplib, sslfrom email.message import EmailMessage
msg = EmailMessage()msg["Subject"] = "Đơn hàng của bạn đã được xác nhận"msg.set_content("Đơn hàng 10482 đã được xác nhận và sẽ giao trong hai ngày làm việc.")
with smtplib.SMTP("smtp-relay.brevo.com", 587, timeout=20) as server: server.starttls(context=ssl.create_default_context()) server.login(BREVO_SMTP_LOGIN, BREVO_SMTP_KEY) server.send_message(msg)Cả hai đều đọc thông tin đăng nhập từ biến môi trường, và đó là nội dung của phần tiếp theo.
Bảo mật và xoay vòng khóa
Brevo coi khóa SMTP như mật khẩu. Các quy tắc vận hành sau đáng được tuân thủ đúng từng chữ.
- Một khóa cho mỗi tích hợp. Đặt tên mỗi khóa theo hệ thống dùng nó, để một sự cố rò rỉ hay một lần ngừng dùng chỉ thu hồi đúng một thứ.
- Đừng bao giờ commit một khóa. Hãy dùng biến môi trường, một trình quản lý bí mật, hoặc kho cấu hình của nền tảng bạn dùng. Không phải hệ thống quản lý mã nguồn, không phải tệp
.envđược theo dõi, không phải ảnh chụp màn hình. - Xoay vòng khóa không gián đoạn. Tạo khóa thay thế, triển khai, xác nhận thư vẫn gửi được, rồi mới xóa khóa cũ. Việc xóa là không thể hoàn tác, và xóa một khóa đang dùng sẽ dừng ngay việc gửi thư giao dịch.
- Hãy vô hiệu hóa thay vì xóa khi muốn tạm dừng một tích hợp. Khóa có thể được kích hoạt lại sau.
- Hãy lường trước việc hết hạn. Khóa có thể mang hạn dùng từ 7 ngày đến 1 năm, và Brevo cho hết hạn những khóa không hoạt động sau 90 ngày.
Nếu cần một ranh giới cứng hơn, Brevo có thể chặn yêu cầu từ các địa chỉ IP lạ. Danh sách được phép dùng chung giữa khóa API và khóa SMTP, nên bất cứ thứ gì bạn cho phép đều áp dụng cho cả hai. Hãy cẩn thận với các tải công việc chạy trong container hoặc trên đám mây: địa chỉ đi ra có thể là một NAT gateway chứ không phải IP của máy ảo như bạn tưởng, và nhầm chỗ này sẽ tạo ra lỗi từ chối 525 5.7.1 Unauthorized IP address.
Các đội chạy Brevo song song với một cửa hàng, một CRM và một bộ phận hỗ trợ rốt cuộc phải quản lý nhiều khóa, nhiều người gửi và nhiều tên miền cùng lúc. Tajo giữ toàn bộ cấu hình đó ở một chỗ thay vì bốn bảng điều khiển.
Giới hạn gửi và điều tiết lưu lượng
Việc gửi qua SMTP rút từ tín dụng email của gói bạn dùng. Trên gói Free nghĩa là 300 lượt gửi email mỗi ngày; giới hạn đặt lại hằng ngày và phần chưa dùng không cộng dồn. Khi bạn chạm ngưỡng, Brevo giữ tối đa 1.000 email nữa trong hàng đợi gửi lại và không gửi gì vượt quá hàng đợi đó. Gói trả phí bỏ giới hạn theo ngày, và hướng dẫn bảng giá Brevo phân tích chi tiết các bậc.
Khi tín dụng cạn hoàn toàn, các thông điệp gửi qua SMTP bị tạm dừng và xếp hàng chứ không bị bỏ. Phần tồn đọng nằm ở Transactional, sau đó Real time, rồi Usage and plan, trong mục Email queue.
Brevo công bố giới hạn tốc độ cứng cho REST API chứ không phải cho relay. Ở bậc chung, POST /v3/smtp/email cho phép 1.000 lệnh gọi mỗi giây, và vượt giới hạn sẽ trả về 429 Too Many Requests. Đường API còn trả về các header giới hạn tốc độ để bạn điều tiết theo, còn relay thì không.
Theo dõi thư trả lại và khiếu nại
Thư đi qua relay hiển thị ở mục Transactional, trong các trang Statistics và Logs. Những sự kiện cần phản ứng:
- Trả lại cứng. Địa chỉ không hợp lệ, và Brevo tự động đưa liên hệ vào danh sách chặn.
- Bị chặn. Người nhận trước đó đã khiếu nại, hủy đăng ký, bị trả lại cứng, hoặc bị chặn thủ công.
- Hoãn và trả lại mềm. Nhà cung cấp chấp nhận kết nối nhưng trì hoãn hoặc từ chối thông điệp. Việc hoãn lặp lại với cùng một nhà cung cấp là dấu hiệu của vấn đề uy tín, không phải vấn đề mã nguồn.
Việc liên tục kiểm tra nhật ký không mở rộng được. Brevo hỗ trợ webhook giao dịch để đẩy các sự kiện gửi thành công, trả lại, mở thư và khiếu nại tới endpoint của bạn theo thời gian thực, và đó là cách bạn giữ dữ liệu chặn gửi của mình luôn cập nhật.
Con số cần theo dõi là tỷ lệ khiếu nại spam. Gmail, Yahoo và Microsoft yêu cầu người gửi giữ dưới 0,3%, và Brevo khuyến nghị theo dõi bằng Gmail Postmaster Tools. Phục hồi sau khi vượt ngưỡng mất nhiều thời gian hơn hẳn so với việc tránh vượt ngưỡng.
Xử lý sự cố
535 5.7.8 Authentication failed
Tên đăng nhập hoặc mật khẩu không xác minh được. Theo thứ tự khả năng xảy ra:
- Địa chỉ email tài khoản được dùng thay cho SMTP login theo định dạng
[email protected]. smtp-relay.brevo.combị dán vào ô tên đăng nhập. Brevo gọi đây là một trong những nguyên nhân phổ biến nhất.- Khóa API được dùng thay cho khóa SMTP.
- Khóa dính khoảng trắng thừa hoặc ngắt dòng khi sao chép và dán.
- Thiết lập mã hóa không khớp với cổng.
- Khóa đã bị vô hiệu sau một cảnh báo bảo mật, trường hợp này hãy tạo khóa mới.
525 5.7.1 Unauthorized IP address
Tính năng chặn IP đang bật và địa chỉ đang kết nối chưa được cấp phép. Hãy thêm nó vào, và kiểm tra địa chỉ đi ra thực tế trước nếu ứng dụng chạy sau NAT hoặc trên nền tảng container.
Không phản hồi và không có banner
Nếu kết nối TCP mở được nhưng máy chủ không bao giờ gửi lời chào 220, việc xác thực không thể bắt đầu và lỗi nằm ở phía mạng của bạn. Tường lửa doanh nghiệp đôi khi cho phép kết nối rồi âm thầm bỏ lưu lượng SMTP. AWS, Azure và Google Cloud mặc định hạn chế SMTP đi ra trên các tài khoản mới. Hãy yêu cầu gỡ hạn chế, hoặc chuyển sang cổng 2525.
450, nền tảng chưa được kích hoạt
Lỗi này nói rằng tài khoản SMTP của bạn chưa được kích hoạt hoặc nền tảng gửi của bạn đang bị vô hiệu. Với tài khoản mới, việc gửi thư giao dịch cần một bước kích hoạt riêng từ bộ phận hỗ trợ của Brevo. Với tài khoản đã dùng lâu, nó thường nghĩa là bị đình chỉ, hoặc vì một biểu mẫu không được bảo vệ bị bot đăng ký ồ ạt, hoặc vì tài khoản có dấu hiệu bị xâm nhập.
Người gửi bị từ chối
Hãy kiểm tra ba thứ: tên miền đã được xác thực, người gửi đã được xác minh, và header From không phải SMTP login của bạn.
Thư được nhận nhưng vào hộp thư rác
Hãy làm theo thứ tự này. Xác nhận tên miền gửi đã được xác thực và DKIM đang ký. Xác nhận tên miền trong From là của bạn chứ không phải nhà cung cấp thư miễn phí. Kiểm tra tỷ lệ khiếu nại trong Postmaster Tools so với ngưỡng 0,3%. Chỉ xem xét nội dung sau khi những kiểm tra đó đều sạch, vì nội dung hầu như không bao giờ là nguyên nhân đầu tiên.
IP riêng
IP riêng chỉ có ích khi khối lượng cao và đều. Nó phải được làm nóng trước khi bạn gửi lượng đáng kể qua đó, và nó cần một tên miền phụ dùng để gửi, xuất hiện trong header của bạn dưới dạng tên miền mailed by và return path. Đây là cấu hình duy nhất mà Brevo cung cấp bản ghi SPF và MX, bên cạnh các bản ghi A, CNAME, DKIM và DMARC cho tên miền phụ đó.
Hai chi tiết hay khiến người ta vấp. Một IP riêng cấu hình chỉ cho email marketing sẽ xếp hàng đợi các thông điệp giao dịch của bạn thay vì gửi chúng đi, nên hãy chuyển nó hoặc mua IP thứ hai. Và việc tách định tuyến giao dịch khỏi marketing đòi hỏi một nhóm ít nhất hai IP với những người gửi khác nhau, để mức tương tác yếu của thư marketing không kéo tụt biên nhận và thư đặt lại mật khẩu.
Làm đúng ngay từ đầu
Hãy xác thực tên miền, tạo một khóa SMTP có tên rõ ràng, kết nối tới smtp-relay.brevo.com trên cổng 587, và gửi thư thử qua đúng đường mã thật chứ không phải bằng một nút trên bảng điều khiển. Gần như mọi rắc rối về sau đều quy về một trong ba nguyên nhân.
- Sai thông tin đăng nhập trong ô tên đăng nhập hoặc mật khẩu.
- Thiết lập cổng và mã hóa mâu thuẫn với nhau.
- Tên miền gửi chưa bao giờ được xác thực.
Làm đúng những điều đó thì relay sẽ lùi hẳn về hậu trường, và đó chính là điều mà hạ tầng giao dịch nên làm.