Bạn sẽ cần một tài khoản AWS và quyền truy cập vào DNS của tên miền của bạn. SES là lựa chọn rẻ nhất trong danh sách này với cách biệt lớn, và cũng là lựa chọn có nhiều bước thực hiện nhất.
Tài liệu chính thức của Amazon: Xác minh tên miền · Lấy thông tin xác thực SMTP · Chuyển ra khỏi môi trường sandbox
⭐ Chúng tôi kết nối với SES qua giao diện SMTP, không phải API REST. Đó là lý do tại sao bạn được yêu cầu cung cấp tên người dùng và mật khẩu SMTP thay vì khoá truy cập AWS. Cả hai cách đều gửi cùng một thông điệp như nhau; giao diện SMTP giúp tránh toàn bộ các sự cố ký yêu cầu AWS vốn rất khó chẩn đoán từ bên ngoài, và đây cũng chính là giao diện mà Amazon phát hành thông tin xác thực cho các công cụ như của chúng tôi sử dụng.
1. Chọn một khu vực và giữ cố định khu vực đó
SES hoạt động theo khu vực. Mọi thứ dưới đây — tên miền đã xác minh, thông tin xác thực, hạn mức gửi của bạn — đều thuộc về một khu vực AWS và không tồn tại ở bất kỳ khu vực nào khác.
Hãy chọn khu vực gần khách hàng của bạn nhất (eu-west-1 cho Châu Âu, us-east-1 cho Bắc Mỹ) và ghi nhớ lại. Xác minh tên miền của bạn ở Ireland rồi tạo thông tin xác thực ở Frankfurt là cách phổ biến nhất khiến bạn mất cả buổi chiều ở đây, và lỗi phát sinh từ việc này sẽ không đề cập bất cứ điều gì về khu vực.
2. Xác minh tên miền của bạn
Bảng điều khiển Amazon SES → Identities → Create identity → Domain. Nhập một tên miền phụ chẳng hạn như mail.yourdomain.com.
Bật Easy DKIM và chọn RSA_2048_BIT. SES sẽ cung cấp cho bạn ba bản ghi CNAME:
| Type | Host |
|---|
CNAME | <token1>._domainkey.mail.yourdomain.com |
CNAME | <token2>._domainkey.mail.yourdomain.com |
CNAME | <token3>._domainkey.mail.yourdomain.com |
Thêm cả ba bản ghi. Quá trình xác minh thường hoàn tất trong vòng một giờ.
⭐ Đồng thời bật MAIL FROM domain tùy chỉnh (bounce.mail.yourdomain.com) và thêm các bản ghi MX cũng như SPF TXT mà hệ thống yêu cầu. Nếu không có cấu hình này, người gửi trên phong bì thư của bạn sẽ là amazonses.com, khiến SPF khớp với Amazon thay vì bạn, và bạn sẽ phải phụ thuộc hoàn toàn vào mỗi DKIM.
3. Thoát khỏi sandbox — đây là bước mọi người hay bỏ quên
⛔⛔ Một tài khoản SES mới sẽ nằm trong sandbox và chỉ có thể gửi đến các địa chỉ mà bạn đã xác minh riêng biệt. Tài khoản này sẽ chấp nhận mọi địa chỉ khác nhưng không gửi bất kỳ thư nào đến chúng.
Đây chính là lỗi mà bước xác minh của chúng tôi được thiết kế để phát hiện: trong sandbox, SES tiếp nhận thư của bạn với phản hồi thành công hoàn toàn bình thường nhưng sau đó lại hủy bỏ nó. Nếu bạn xác minh thiết lập của chúng tôi bằng cách gửi thử nghiệm đến một địa chỉ mà bạn vô tình đã xác minh trong AWS, quá trình gửi sẽ thành công — và sau đó mọi thư gửi đến khách hàng thực tế đều sẽ biến mất.
Bảng điều khiển tài khoản → Request production access. Amazon sẽ hỏi bạn gửi nội dung gì và xử lý thư bị trả lại (bounce) như thế nào; một vài câu trả lời trung thực về việc gửi thông báo giao dịch cho khách hàng của chính bạn thường sẽ được phê duyệt trong vòng 24 giờ.
⭐ Hãy thực hiện bước này trước khi bạn kết nối SES tại đây. Sẽ không có gì để gỡ lỗi sau đó, vì sẽ không có lỗi nào phát sinh.
4. Tạo thông tin xác thực SMTP
Bảng điều khiển SES → SMTP settings → Create SMTP credentials.
Thao tác này sẽ tạo một người dùng IAM có quyền chỉ gửi và cung cấp cho bạn một tên người dùng SMTP cùng một mật khẩu SMTP.
⛔ Đây không phải là khoá truy cập và khoá bí mật AWS của bạn. Chúng được tạo ra từ một khoá bí mật IAM bằng thuật toán cụ thể và không thể hoán đổi cho nhau. Việc dán khoá bí mật truy cập AWS vào đây sẽ luôn xác thực thất bại, và lỗi sẽ chỉ thông báo rằng thông tin xác thực đã bị từ chối.
⚠️ Mật khẩu chỉ hiển thị một lần. Hãy tải xuống tệp CSV trước khi bạn rời khỏi trang.
5. Kết nối trong Zinn®
Mở mục Email sending trong bảng điều khiển của bạn:
- Provider — Amazon SES
- Send from this domain —
mail.yourdomain.com
- AWS region — khu vực từ bước 1, ví dụ:
eu-west-1
- SMTP username — lấy từ bước 4
- Port — để nguyên là 587
- SES SMTP password — lấy từ bước 4
Chúng tôi tự động tạo máy chủ lưu trữ cho bạn (email-smtp.<region>.amazonaws.com), vì vậy không có trường hợp nhập sai tên máy chủ lưu trữ.
6. Gửi thư thử nghiệm và nhập mã
Nhấn Send test message đến một hộp thư đến thuộc một tên miền khác mà bạn chưa xác minh trong AWS — địa chỉ Gmail cá nhân là lựa chọn lý tưởng, vì đó là địa chỉ chứng minh bạn đã thoát khỏi sandbox. Xem mã và nhập mã đó vào.
Khi hệ thống không hoạt động
"Email address is not verified" khi đang gửi đến khách hàng thực tế — bạn vẫn đang ở trong sandbox. Hãy xem Bước 3.
535 Authentication Credentials Invalid — bạn đã sử dụng khoá truy cập AWS thay vì thông tin xác thực SMTP (bước 4), hoặc thông tin xác thực thuộc về một khu vực khác với khu vực bạn đã nhập.
"Maximum sending rate exceeded" — một tài khoản sản xuất mới bắt đầu ở mức 14 thư mỗi giây và 50.000 thư mỗi ngày. Đó là một lượng thông báo rất lớn, nhưng nếu bạn đang di chuyển một lượng khách hàng lớn, trước tiên hãy yêu cầu tăng giới hạn.
Hoạt động tốt khi thử nghiệm nhưng dừng lại trong môi trường thực tế — hãy kiểm tra bảng điều khiển Reputation của SES. Amazon sẽ tự động tạm dừng gửi thư khi tỷ lệ trả lại hoặc khiếu nại vượt quá ngưỡng của họ, và ngưỡng này rất dễ bị vượt qua khi sử dụng danh sách khách hàng cũ.