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

Gửi thư qua SMTP relay

Hướng dẫn thao tác
Dành cho:
Người vận hành máy chủ, Quản trị viên không gian làm việc, Nhà phát triển
Cần quyền:
apikeys:managenhạy cảm
Trong ứng dụng:
Quản trị hệ thống, rồi Hệ thống và cập nhật, rồi SMTP relay

SMTP relay giúp những ứng dụng không gọi được HTTP API vẫn gửi email giao dịch qua SMTP relay của ReputeCast: ứng dụng kết nối tới cổng 587 (STARTTLS) hoặc 465 (TLS), xác thực bằng một thông tin xác thực chỉ dùng để gửi, và thư đi qua tuyến Giao dịch, danh sách chặn gửi và nhật ký thư của không gian làm việc. Quản trị viên hệ thống bật relay một lần cho mỗi hệ thống; sau đó mỗi không gian làm việc tự tạo thông tin xác thực của mình.

  • Bạn là quản trị viên hệ thống, và bạn có thể thay đổi tường lửa của máy chủ cùng tệp Docker Compose.
  • Một tên máy chủ cho relay, như smtp.example.com, có bản ghi A/AAAA trỏ về máy chủ. ReputeCast gợi ý host của URL công khai của hệ thống.
  • Trong không gian làm việc: apikeys:manage để tạo thông tin xác thực SMTP, và một người gửi Giao dịch đã xác minh. Địa chỉ From của mọi thư phải là một người gửi Giao dịch đã xác minh (xem thêm tên miền gửi thư và người gửi).
  • Các tiến trình có vai trò web chạy các listener của relay. Nếu bạn tách vai trò, xem mở rộng với các vai trò web, ingest và worker.

ReputeCast lắng nghe trên các cổng relay bên trong container, nhưng Docker Compose chỉ mở những cổng bạn liệt kê. Tệp deploy/docker-compose.yml mặc định chỉ mở cổng 8080, nên bạn cần tự thêm hai cổng relay vào service app:

docker-compose.yml
services:
app:
ports:
- "${REPUTECAST_PORT:-8080}:8080"
- "587:587" # SMTP relay, STARTTLS
- "465:465" # SMTP relay, implicit TLS

Áp dụng thay đổi bằng docker compose up -d, và mở cả hai cổng trên tường lửa của máy chủ. SMTP không phải HTTP, nên các cổng relay đi thẳng đến ứng dụng, không bao giờ qua reverse proxy của bạn. Nếu bạn đổi cổng trong cài đặt relay, hãy mở các cổng đó thay thế.

  1. Mở Quản trị hệ thống, rồi Hệ thống và cập nhật từ menu tài khoản và tìm phần SMTP relay.

  2. Đặt Tên máy chủ, Cổng STARTTLS (587) và Cổng TLS (465). Hai cổng phải khác nhau.

  3. Chọn Chứng chỉ:

    • Let’s Encrypt: ReputeCast tự lấy và gia hạn chứng chỉ. Let’s Encrypt xác thực tên máy chủ qua HTTP, nên http://<hostname>/.well-known/acme-challenge/ phải đến được một tiến trình web của ReputeCast, ví dụ thông qua reverse proxy của bạn. Mọi node web dùng chung chứng chỉ này.
    • Tệp chứng chỉ và khóa: tải lên Chuỗi chứng chỉ (PEM) và Khóa riêng (PEM). Khóa riêng ở chế độ chỉ ghi: nó được niêm phong và không bao giờ hiển thị lại.
  4. Chọn Bật, rồi Chạy kiểm tra. ReputeCast kiểm tra tên máy chủ có phân giải được không, cả hai cổng có truy cập được từ internet không, và chứng chỉ có hợp lệ không. Các kiểm tra này cũng chạy mỗi 10 phút; quản trị viên hệ thống được thông báo khi một cổng ngừng phản hồi.

  1. Trong không gian làm việc, mở Giao dịch, rồi Thiết lập rồi chọn Tạo thông tin xác thực SMTP.

  2. Đặt tên theo ứng dụng, chọn chế độ Thật hoặc Thử nghiệm, và nếu muốn, giới hạn những mẫu và danh mục mà thông tin xác thực được phép gửi, cũng như đặt thời điểm hết hạn. Chế độ thử nghiệm chỉ gửi tới thành viên của không gian làm việc và các địa chỉ thử mà bạn cho phép.

  3. Sao chép mật khẩu ngay: nó chỉ hiển thị một lần. Tên người dùng là ID khóa của thông tin xác thực; Mật khẩu là khóa bí mật của nó, bắt đầu bằng rc_smtp_. Thông tin xác thực này chỉ có transactional:send và không bao giờ có nhiều quyền hơn bạn đang có: thông tin xác thực ngừng hoạt động khi bạn rời không gian làm việc, bị vô hiệu hóa hoặc không còn transactional:send.

Trang Setup của Giao dịch: thẻ HTTP API, các khóa có thể gửi thư, trong đó có một thông tin xác thực SMTP cho dịch vụ thanh toán, và thẻ SMTP relay đang ở trạng thái On.

Ảnh chụp này hiển thị giao diện tiếng Anh.

Cài đặt Giá trị
Host Tên máy chủ của relay, ví dụ smtp.example.com
Port 587 với STARTTLS, hoặc 465 với TLS
Auth PLAIN hoặc LOGIN
Username ID khóa của thông tin xác thực
Password Khóa bí mật của thông tin xác thực (rc_smtp_…)
From Một địa chỉ thuộc người gửi Giao dịch đã xác minh

Hai header không bắt buộc dùng để gắn nhãn thư trong ReputeCast; relay đọc chúng và không chuyển tiếp chúng đi:

Header không bắt buộc
X-ReputeCast-Tags: invoice, eu
X-ReputeCast-Category: Billing

X-ReputeCast-Tags gồm các thẻ cách nhau bằng dấu phẩy. X-ReputeCast-Category nhận tên hoặc ID của một danh mục; nếu không có header này, thông tin xác thực chỉ được phép dùng một danh mục sẽ dùng danh mục đó. Người nhận đã tắt một danh mục Tùy chọn sẽ không nhận thư của danh mục đó.

Thiết lậpMặc địnhCách thay đổi
Cổng587 (STARTTLS) and 465 (TLS)Quản trị hệ thống › Hệ thống và cập nhật › SMTP relay; hai cổng bất kỳ khác nhau
Thư lớn nhất40 MiBCố định; giới hạn của nhà cung cấp trong tuyến có thể thấp hơn
Số người nhận mỗi thư50Cố định; mỗi người nhận được tính vào tốc độ gửi của thông tin xác thực SMTP
Thời gian chờ đọc và ghi của kết nối5 minutes eachCố định
Kiểm tra trạng tháiEvery 10 minutesChọn Chạy lại kiểm tra
Thay đổi cài đặt đến các tiến trình web khácWithin 30 sCố định

Gửi một thư từ ứng dụng của bạn, rồi mở Giao dịch, rồi Thư. Thư hiển thị Thư thô (SMTP) thay cho tên mẫu, kèm dòng thời gian gửi.

  • Kiểm tra báo một cổng không truy cập được → cổng chưa được mở trong Compose, hoặc tường lửa phía trước máy chủ đang chặn nó.
  • Kiểm tra báo tên máy chủ không phân giải được → thêm bản ghi A/AAAA, chờ DNS cập nhật, rồi chạy lại kiểm tra.
  • Let’s Encrypt thất bại → cổng 80 của tên máy chủ không đến được tiến trình web của ReputeCast. Hãy định tuyến /.well-known/acme-challenge/ tới tiến trình đó, hoặc tải lên tệp chứng chỉ.
  • Xác thực thất bại → dùng ID khóa làm tên người dùng, không phải tên của thông tin xác thực, và kiểm tra thông tin xác thực chưa bị thu hồi hoặc hết hạn, và thành viên đã tạo nó vẫn đang hoạt động và có transactional:send. Phản hồi 535 cho biết lý do.
  • Thư bị từ chối với lỗi kích thước → relay nhận tối đa 40 MiB, nhưng các nhà cung cấp gửi thư trên tuyến có thể nhận ít hơn; phản hồi sẽ nói rõ điều này.
  • Ứng dụng bị từ chối kết nối → relay đang tắt. HTTP API vẫn hoạt động trong mọi trường hợp.