Nhiều relay SMTP cho iRedMail

  1. User gởi mail qua relay SMTP (thí dụ @example.org)
  2. Relay SMTP
  3. Tài khoản để gởi mail (user/password)
  4. Thời điểm tính quota
  5. Hạn mức gởi email trong 24 giờ
  6. Relay host đang được chọn (-1 = dự phòng)

Các relay SMTP miễn phí thường có hạn mức gởi mail trong 24h. Nếu nhu cầu gởi mail nhiều thì có thể dùng nhiều relay SMTP, thiết kế sao cho nếu hạn mức gởi mail của một SMTP hết thì tự động chuyển sang dùng SMTP khác.

Câu hỏi là làm sao đếm số email được gởi đi từ một domain?

Có nhiều tiện ích làm việc này, chủ yếu là lọc file log của postfix chứ postfix dovecot không cung cấp thông tin. Vì iRedMail có ghi chép vào bảng iredapd.smtp_sessions mỗi khi gởi email, chúng ta có thể sử dụng thông tin này để đếm số email gởi đi.

Đầu tiên lập bảng vmail.relayhost như trong hình 1. Bảng vmail.relayhost này còn dùng để chứng thực tài khoản gởi mail qua 2 file

# /etc/postfix/mysql/sender_dependent_relayhost_maps
hosts       = 127.0.0.1:3306
user        = vmail
password    = <<password>>
dbname      = vmail
# '%s' will be replaced by the envelope sender address or @domain.
query       = SELECT relayhost FROM relayhost WHERE account='%s' AND active=1 LIMIT 1

# /etc/postfix/mysql/sender_dependent_relayhost_auth
hosts       = 127.0.0.1:3306
user        = vmail
password    = <<password>>
dbname      = vmail
# '%s' will be replaced by the envelope sender address or @domain.
query       = SELECT concat(username,':',password) FROM relayhost WHERE account='%s' AND active=1 LIMIT 1

Sau đó tạo một trigger before insert của bảng iredapd.smtp_sessions. Mỗi khi email được gởi đi, thông tin về email được ghi chép trong smtp_sessions, nhờ đó chúng ta đếm được số email được gởi đi của domain tính từ thời điểm bắt đầu tính quota, nếu quá số lượng thì cập nhật bảng relayhost, đặt active cho relay SMTP tiếp theo. Ngoài ra nếu chưa quá quota mà quá 24h thì reset lại thời điểm bắt đầu dùng quota của SMTP đang active.

Comments Off on Nhiều relay SMTP cho iRedMail

Filed under Software

Comments are closed.