Gửi thư bằng Amazon SES
Để gửi newsletter bằng Amazon SES từ ReputeCast, bạn kết nối tài khoản AWS của chính mình trong trình hướng dẫn kết nối. ReputeCast tạo Amazon SNS topic và mỗi luồng một configuration set để đưa thư trả lại, khiếu nại và thông báo gửi thành công về ReputeCast, phát hiện sandbox SES ở mọi khu vực, và đọc hạn mức cũng như tốc độ gửi của bạn.
| Loại | API |
|---|---|
| Gửi marketing hàng loạt | Được phép |
| Webhook sự kiện | Amazon SNS topic do ReputeCast tạo; chữ ký RSA được kiểm tra với chứng chỉ của Amazon |
| Thiết lập tên miền | API |
| Đồng bộ danh sách chặn gửi | Hai chiều |
| Kích thước lô | 50, song song |
| Ghi chú | Kết nối bằng stack CloudFormation hoặc access key IAM; ReputeCast tạo SNS topic và một configuration set cho mỗi luồng. Phát hiện sandbox của SES ở từng khu vực và đọc hạn mức gửi cùng tốc độ gửi của bạn. |
Trước khi bắt đầu
Phần tiêu đề “Trước khi bắt đầu”- Một tài khoản AWS có Amazon SES. Tài khoản SES mới bắt đầu trong sandbox ở từng AWS Region: bạn chỉ gửi được tới các địa chỉ và tên miền đã xác minh, tối đa 200 thư mỗi 24 giờ và 1 thư mỗi giây (Amazon SES: Request production access, kiểm tra tháng 10/2026). Bạn vẫn có thể kết nối một khu vực đang ở sandbox và gửi yêu cầu quyền gửi chính thức ngay từ trình hướng dẫn.
- Quyền. Kết nối cần quyền
providers:manage. Thêm tên miền gửi mới trong trình hướng dẫn cần thêm quyềndomains:manage. - Một địa chỉ HTTPS công khai. SNS gửi sự kiện tới
<public URL>/hooks/ses/<token>, nên URL công khai của ReputeCast phải truy cập được từ internet. Trên máy tính cá nhân, hãy dùng tunnel trong lúc thử nghiệm (xem Reverse proxy và TLS). - Một cách cấp quyền truy cập. Chọn một trong hai:
- Stack CloudFormation (khuyên dùng). Stack tạo một IAM role tên
ReputeCastSESmà ReputeCast đảm nhận (assume) bằng một external ID. Không có khóa dài hạn nào được lưu. Bản thân máy chủ ReputeCast cần một danh tính AWS để đảm nhận role đó (một instance role, hoặcAWS_ACCESS_KEY_IDvàAWS_SECRET_ACCESS_KEYtrong biến môi trường của nó). - Khóa truy cập IAM. Access key ID và secret access key của một IAM user có chính sách bên dưới. Hãy dùng khóa
dài hạn (bắt đầu bằng
AKIA); biểu mẫu không có ô cho session token.
- Stack CloudFormation (khuyên dùng). Stack tạo một IAM role tên
Đây là chính sách đặc quyền tối thiểu mà stack gắn vào role, cũng là chính sách một IAM user cần có:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:SendRawEmail", "ses:GetAccount", "ses:GetSendQuota", "ses:*ConfigurationSet*", "ses:*EmailIdentity*", "ses:*SuppressedDestination*", "ses:PutAccountDetails" ], "Resource": "*" }, { "Effect": "Allow", "Action": ["sns:CreateTopic", "sns:Subscribe", "sns:SetTopicAttributes", "sns:GetSubscriptionAttributes"], "Resource": "arn:aws:sns:*:*:reputecast-*" } ]}Kết nối Amazon SES
Phần tiêu đề “Kết nối Amazon SES”-
Mở Nhà cung cấp gửi thư, chọn Thêm nhà cung cấp rồi chọn Amazon SES trong danh mục. Trình hướng dẫn có sáu bước; Kết nối nhà cung cấp gửi thư mô tả các bước chung của mọi nhà cung cấp.
-
Trong 1. Cách cấp quyền truy cập, chọn cách ReputeCast truy cập vào tài khoản AWS của bạn.
- Stack CloudFormation (khuyên dùng): chọn
Khởi chạy stack trong AWS. AWS CloudFormation console mở một stack tạo nhanh
(quick-create) tên
ReputeCastSESvới external ID đã điền sẵn. Hãy tạo stack, rồi sao chép đầu raRoleArncủa nó (có dạngarn:aws:iam::123456789012:role/ReputeCastSES) vào Role ARN, lấy từ đầu ra RoleArn của stack. - Khóa truy cập IAM: dán Access key ID và Secret access key.
Xem chính sách IAM (đặc quyền tối thiểu) hiển thị chính sách ở trên. Chọn Kiểm tra quyền truy cập: ReputeCast kiểm tra quyền truy cập bằng các lệnh gọi chỉ đọc (
GetAccount) trước khi lưu bất cứ thứ gì, ở dạng mã hóa.
- Stack CloudFormation (khuyên dùng): chọn
Khởi chạy stack trong AWS. AWS CloudFormation console mở một stack tạo nhanh
(quick-create) tên
-
Trong 2. Khu vực, chọn Khu vực SES. ReputeCast đọc tài khoản của bạn ở từng khu vực, nên mỗi lựa chọn đều cho biết khu vực đó đã có quyền gửi chính thức cùng hạn mức hằng ngày, hay đang ở sandbox. Hãy chọn khu vực bạn đã có quyền gửi chính thức, hoặc khu vực gần người nhận nhất.
-
Chờ danh sách khởi tạo hoàn tất. ReputeCast tạo (có thử lại khi lỗi):
- SNS topic
reputecast-events, đăng ký (subscribe) vào URL webhook của bạn, và xác nhận đăng ký khi SNS gửi bước bắt tay (handshake); - các configuration set
rc-broadcasts,rc-automations,rc-systemvàrc-transactional, mỗi set có một event destination phát các sự kiện gửi, gửi thành công, thư trả lại, khiếu nại, từ chối, trì hoãn và sự kiện đăng ký tới topic. Sự kiện mở và nhấp vẫn tắt: ReputeCast tự theo dõi các sự kiện đó.
Nếu một kết nối khác trên hệ thống này đã dùng cùng tài khoản AWS và khu vực, các tên sẽ có thêm hậu tố là slug của không gian làm việc. Dòng thất bại hiển thị mã lỗi của AWS và hành động bị từ chối; hãy sửa chính sách (Sửa chính sách mở role hoặc trang IAM users trong AWS), rồi thử lại.
- SNS topic
-
Nếu khu vực đang ở sandbox, một huy hiệu sandbox xuất hiện cùng biểu mẫu nộp yêu cầu quyền gửi chính thức tới AWS thay bạn: Trang web, Loại thư, Mô tả trường hợp sử dụng (điền sẵn từ không gian làm việc của bạn), Lượng gửi dự kiến mỗi ngày và Ngôn ngữ liên hệ. Phần mô tả trường hợp sử dụng được điền sẵn từ các danh sách của bạn và nêu rõ thư trả lại và khiếu nại được xử lý qua SNS và bị chặn gửi trên mọi nhà cung cấp gửi thư. Đưa Amazon SES ra khỏi sandbox giải thích AWS xem xét những gì. Bạn có thể tiếp tục trong lúc chờ.
-
Chọn Tiếp tục xác minh tên miền và nhập tên miền gửi. ReputeCast tạo SES identity với khóa DKIM 2048 bit, đặt tên miền MAIL FROM là
bounce.<your domain>, và liệt kê chính xác các bản ghi cần công bố. Các bản ghi chuyển sang Đã xác minh khi DNS lan truyền.
- Bản ghi đầu tiên trong ba bản ghi CNAME DKIM, trỏ tới
dkim.amazonses.com. - Bản ghi MX của MAIL FROM trên
bounce.<your domain>, để thư trả lại và SPF căn chỉnh với tên miền của bạn. - SPF cho tên miền gửi, đã gộp với bản ghi bạn đang có.
- Bản ghi DMARC, được đề xuất khi tên miền chưa có.
- Trạng thái xác minh và thời điểm kiểm tra gần nhất.
- Bản ghi đầu tiên trong ba bản ghi CNAME DKIM, trỏ tới
-
Trong Gửi thử, gửi một thư thử. Dòng thời gian gửi cho thấy thư được SES chấp nhận (kèm MessageId và configuration set), rồi các sự kiện Send và Delivery trả về qua SNS.
-
Trong Luồng, chọn các luồng mà SES đảm nhận. Mỗi luồng dùng configuration set riêng, nên sự cố ở luồng Gửi hàng loạt không bao giờ ảnh hưởng đến thư đặt lại mật khẩu.
-
Trong Liên hệ, giữ tùy chọn kéo các địa chỉ chặn gửi hiện có từ SES (khuyên dùng và được chọn sẵn) để nhập các địa chỉ trong danh sách chặn gửi cấp tài khoản của SES. Khi chọn, việc đồng bộ danh sách chặn gửi diễn ra hai chiều; khi bỏ chọn, ReputeCast chỉ đẩy danh sách của mình lên SES.
Kiểm tra kết quả
Phần tiêu đề “Kiểm tra kết quả”-
Trên Nhà cung cấp gửi thư, rồi Nhà cung cấp, thẻ Amazon SES hiển thị Ổn định (hoặc Sandbox · chỉ địa chỉ đã xác minh), trạng thái tài khoản, hạn mức 24 giờ và tốc độ gửi mà ReputeCast đọc từ SES.

-
Trong AWS console, ở khu vực bạn đã chọn: SNS topic
reputecast-eventscó một HTTPS subscription đã xác nhận, bốn configuration setrc-đều có event destination tênreputecast, và identity tên miền của bạn đã được xác minh. -
Các lượt gửi thành công và thư trả lại mới xuất hiện trong Nhà cung cấp gửi thư, rồi Sự kiện và đồng bộ.
ReputeCast gửi từng thư bằng SES SendEmail với configuration set của luồng. Mỗi lô tối đa 50 thư, gửi bằng các lệnh
gọi song song, ở tốc độ gửi tối đa mà SES báo cho tài khoản của bạn. Khi chiến dịch lớn hơn phần hạn mức 24 giờ còn
lại, Độ sẵn sàng gửi sẽ cảnh báo bạn: việc gửi tạm dừng khi chạm hạn mức và
tiếp tục khi hạn mức được giải phóng. Thẻ hiển thị tỷ lệ trả thư và tỷ lệ khiếu nại so với giới hạn 5% và 0,1%, bên
cạnh các mức mà SES bắt đầu xem xét và tạm dừng tài khoản;
Thư trả lại, khiếu nại và giới hạn của nhà cung cấp giải thích các mức
này.
Khắc phục sự cố
Phần tiêu đề “Khắc phục sự cố”- “AWS không cho ReputeCast nhận vai trò này.” Hãy kiểm tra stack đã tạo xong, bạn đã dán đúng đầu ra
RoleArncủa nó, và external ID trong stack không bị thay đổi. Thông báo này cũng xuất hiện khi role thiếu một quyền hoặc AWS không phản hồi, nên hãy kiểm tra cả chính sách của role. - “ReputeCast không nhận được vai trò: máy chủ này không có thông tin xác thực AWS của riêng nó để nhận vai trò.”
Máy chủ không có danh tính AWS để đảm nhận role. Hãy chạy ReputeCast với một instance role hoặc các biến môi trường
AWS_*, hoặc dùng khóa truy cập IAM. - “Amazon SES đã từ chối khóa này” kèm một mã như
UnrecognizedClientException. Key ID hoặc secret bị sai, hoặc khóa đã bị xóa. Hãy tạo access key mới cho IAM user và dán lại cả hai giá trị. - Một dòng khởi tạo thất bại với
AccessDeniedvà một hành động nhưses:CreateConfigurationSet. Chính sách của role hoặc user không cho phép hành động đó (hoặc đã bị sửa sau khi stack chạy). Hãy khôi phục chính sách ở trên, rồi thử lại. - “Không có xác nhận sau 5 phút” trên dòng SNS subscription. SNS không truy cập được URL webhook của bạn. Hãy
đảm bảo URL công khai truy cập được từ internet qua HTTPS và proxy của bạn chuyển
/hooks/tới ReputeCast, rồi thử lại. - Thư thử thất bại với
MessageRejectedvì một địa chỉ chưa được xác minh. Khu vực đang ở sandbox: hãy xác minh người nhận trong SES, gửi tới một địa chỉ bạn đã xác minh, hoặc yêu cầu quyền gửi chính thức. - Bạn đã đổi URL công khai. ReputeCast không tự cập nhật SNS. Hãy đăng ký topic
reputecast-eventsvới URL webhook mới trong AWS. - Bạn đã ngắt kết nối SES. ReputeCast xóa thông tin xác thực đã lưu nhưng không gỡ bỏ gì trong AWS. Nếu không còn
cần, hãy tự xóa SNS topic và subscription, các configuration set
rc-, identity và stack hoặc IAM user.