Cách sử dụng Amazon Simple Email Service (SES) để thay thế máy chủ email dựa trên máy chủ của bạn

Một ngày đẹp trời, không vì lý do gì rõ ràng, máy chủ doanh nghiệp Ubuntu 18.04 của tôi đã ngừng chuyển tiếp thư đến địa chỉ Gmail của tôi.

Chỉ một ngày trước đó, các tệp .abol tôi đã tạo trong thư mục chính của các tài khoản máy chủ cục bộ mà tôi sử dụng cho email - như /home/office/.osystem - đã vui vẻ chuyển hướng tất cả thư nhắm đến địa chỉ doanh nghiệp của tôi đến hàng ngày của tôi -sử dụng tài khoản Gmail. Và rồi họ đột ngột dừng lại.

Khi tôi nhận thấy có điều gì đó không ổn, tôi ngay lập tức tham khảo nhật ký máy chủ của mình. /var/log/mail.err đã gửi ra những thông điệp quyến rũ bao gồm những thứ như:

status=deferred (delivery temporarily suspended: connect to alt2.gmail-smtp-in.l.google.com[219.8.202.27]:25: Connection timed out)

Kiểm tra hộp thư máy chủ cho tôi biết rằng có thư đến nhưng Postfix đó không thể thiết lập kết nối với Gmail để chuyển tiếp thư đến địa chỉ của tôi.

Đương nhiên, tôi khởi động lại Postfix, nhưng điều đó không giúp được gì.

sudo systemctl restart postfix

Tôi xác nhận rằng không có gì chặn các thư đi rời khỏi máy chủ của tôi trên cổng 25 (SMTP). Sau đó, tôi đã kiểm tra để đảm bảo rằng miền của tôi không bị đưa vào danh sách đen bằng cách nào đó (có rất nhiều công cụ trực tuyến sẽ làm điều đó cho bạn) và xem xét trạng thái của bản ghi MX của tôi bằng cách chạy đào từ dòng lệnh:

dig MX bootstrap-it.com

Không làm gì cả. Mọi thứ dường như đã kiểm tra.

Sau một vài phiên khắc phục sự cố khó chịu, tôi đã từ bỏ và nghĩ rằng tôi sẽ thử một cái gì đó hoàn toàn khác.

Là một kiến ​​trúc sư giải pháp AWS và đã đồng tác giả hai cuốn sách cho Wiley / Sybex trên AWS (một cuốn hướng dẫn về kỳ thi Học viên đám mây và một cuốn dành cho kỳ thi Liên kết Kiến trúc sư Giải pháp), tôi không sẵn sàng và có thể xây dựng ngăn xếp của riêng mình công cụ AWS sẽ xử lý nhu cầu máy chủ email của tôi trên đám mây?

Hóa ra là tôi đã sẵn lòng và - sau một số nghiên cứu nghiêm túc và thử và sai - có thể. Hoàn thành nó sẽ yêu cầu:

  • Tạo một nhóm S3 nơi các email đến sẽ được lưu trữ.
  • Tạo chủ đề Dịch vụ Thông báo Đơn giản (SNS) để gửi thông báo qua email cho tôi mỗi khi có email mới.
  • Định cấu hình Dịch vụ Email Đơn giản (SES) của Amazon để tiếp quản miền email của tôi (bootstrap-it.com) và xử lý thư đến. Điều đó liên quan đến việc thêm bản ghi MX vào Lộ trình 53 (nơi các miền của tôi được quản lý) và trỏ SES đến miền của tôi; thêm và xác minh từng địa chỉ email mà tôi muốn SES kiểm soát; và sau đó yêu cầu SES gửi tin nhắn mới đến nhóm S3 của tôi đồng thời kích hoạt cảnh báo cho chủ đề SNS.
  • Giả sử bạn cũng muốn gửi email thông qua dịch vụ, bạn cũng nên định cấu hình SES để ký các thư đi của mình bằng cách sử dụng Thư được xác định DomainKeys (DKIM).

Tôi sẽ không mô tả chi tiết tất cả các bước đó ở đây. Có rất nhiều tài liệu tuyệt vời có sẵn cho điều đó. Nhưng tôi sẽ đề cập ngắn gọn một số điểm đau mà bạn có thể gặp phải.

Bạn sẽ phải thêm bản ghi MX vào vùng được lưu trữ DNS của mình cho từng miền bạn đang sử dụng. Ngay cả khi miền của bạn được quản lý trong Lộ trình 53 của Amazon, bạn sẽ cần cung cấp giá trị cho hồ sơ của mình.

Những gì bạn sử dụng cho giá trị đó sẽ phụ thuộc vào khu vực AWS nơi tài nguyên SES của bạn được đặt. Trong trường hợp của tôi, nó trông như thế này:

10 inbound-smtp.us-east-1.amazonaws.com

Thông báo SNS sẽ đến trong một chuỗi văn bản dài chỉ chứa một vài đoạn ngắn thông tin hữu ích nhưng khó đọc. Như vậy là đủ để xác định spam, nhưng bạn thường cần nhiều thông tin hơn những gì bạn tìm thấy ở đây. Tôi sử dụng các thông báo như một cảnh báo cho tôi biết rằng có thư mới trong nhóm S3 của tôi.

Tự xem các email trong nhóm S3 của bạn qua Bảng điều khiển quản lý AWS không phải là ngày tận thế nếu nó chỉ xảy ra một hoặc hai lần mỗi tháng. Nhưng nếu họ đến nhanh hơn thế, bạn sẽ cần phải tìm cách tốt hơn để truy cập và đọc tin nhắn của mình.

Tuy nhiên, việc tạo ra một giao thức để tự động hóa quá trình đó thực sự là một vấn đề của hệ điều hành cục bộ đòi hỏi một bộ công cụ hoàn toàn khác. Tôi đã tự giải quyết vấn đề bằng cách sử dụng AWS CLI và một tập lệnh Bash thú vị. Nếu bạn muốn xem cách tôi đã làm điều đó, hãy nhấp qua bài viết này.

Có nhiều tính năng quản trị tốt hơn dưới dạng sách, khóa học và bài báo có sẵn tại bootstrap-it.com của tôi.