Bỏ qua để đến nội dung

Gửi thư bằng Amazon SES

Hướng dẫn thao tác
Dành cho:
Quản trị viên không gian làm việc
Cần quyền:
providers:managenhạy cảm, domains:managenhạy cảm
Trong ứng dụng:
Nhà cung cấp gửi thư, rồi Nhà cung cấp

Để 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ạiAPI
Gửi marketing hàng loạtĐược phép
Webhook sự kiệnAmazon 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ềnAPI
Đồng bộ danh sách chặn gửiHai 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.
  • 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ền domains: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 ReputeCastSES mà 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ặc AWS_ACCESS_KEY_ID và AWS_SECRET_ACCESS_KEY trong 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.

Đâ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ó:

Chính sách SES của ReputeCast
{
"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-*"
}
]
}
  1. 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.

  2. 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 ReputeCastSES với external ID đã điền sẵn. Hãy tạo stack, rồi sao chép đầu ra RoleArn của nó (có dạng arn: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.

    Bước kết nối Amazon SES: đã chọn stack CloudFormation, role đã được đảm nhận, khu vực us-east-1 có quyền gửi chính thức, và mọi dòng khởi tạo đều đã hoàn tất.
  3. 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.

  4. 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-system và 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.

  5. 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ờ.

  6. 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ảy bản ghi DNS của news.acme.io, tất cả đã xác minh: ba CNAME DKIM, bản ghi MX và SPF của MAIL FROM, SPF cho tên miền gửi và DMARC.
    1. Bản ghi đầu tiên trong ba bản ghi CNAME DKIM, trỏ tới dkim.amazonses.com.
    2. 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.
    3. SPF cho tên miền gửi, đã gộp với bản ghi bạn đang có.
    4. Bản ghi DMARC, được đề xuất khi tên miền chưa có.
    5. Trạng thái xác minh và thời điểm kiểm tra gần nhất.
  7. 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.

  8. 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.

  9. 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.

  • 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.

    Trang Nhà cung cấp gửi thư liệt kê Amazon SES ở trạng thái Ổn định cùng hạn mức, tốc độ, trạng thái tài khoản, tỷ lệ trả thư và tỷ lệ khiếu nại so với ngưỡng xem xét của SES.
  • Trong AWS console, ở khu vực bạn đã chọn: SNS topic reputecast-events có một HTTPS subscription đã xác nhận, bốn configuration set rc- đều có event destination tên reputecast, 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.

  • “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 RoleArn củ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 AccessDenied và 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 MessageRejected vì 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-events vớ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.