Tôi nhận ra rằng tất cả các câu trả lời khác cho câu hỏi cũ này chỉ là liên kết. Vì vậy, tôi sẽ mô tả trong vài từ làm thế nào để thực hiện giải pháp yêu thích của tôi cho công việc này.
Các liên kết mà @ 84.104 đã gợi ý, mặc dù rất hữu ích, không thể được sử dụng để thực hiện đúng tỷ lệ cho mỗi người gửi. smtpd_client
các giới hạn không dành cho kiểm soát lưu lượng mà là để trợ giúp với phần mềm máy khách: "Các biện pháp chống lại khách hàng tạo ra quá nhiều kết nối". Mặc dù người ta có thể tìm thấy các khuyến nghị như thế này một rằng nó chắc chắn có thể giúp đỡ. Như @E. Yazici đã đề xuất, một addon cho postfix là bắt buộc. Cá nhân tôi thấy policyd theo khuyến nghị của @Janne Pikkarainen khá cồng kềnh mặc dù nó được coi là một tiêu chuẩn.
Addon yêu thích của tôi là postfwd vì nó nhẹ và dễ dàng. Điều đáng chú ý là điều này hoạt động rất dễ dàng với Plesk hoặc tương tự khác, mà không ảnh hưởng đến tập tin cấu hình phức tạp của Plesk. Giới hạn tốc độ email trong Plesk chỉ được triển khai trong phiên bản 12 nhưng vẫn còn các tính năng chính sách bị hạn chế.
Đầu tiên tải xuống addon mới nhất từ trang web ở trên. Tôi tin rằng không có vòng quay cho CentOS, trái ngược với Ubuntu và Debian. Tuy nhiên, nó được khuyên rằng phiên bản mới nhất được sử dụng. Cụ thể hơn, phiên bản 1.32 (hiện diện trong ví dụ repos Ubuntu 14.04LTS) có một lỗi khó chịu ngăn không cho nó hoạt động một cách thích hợp. Phiên bản 1.35 sắp xếp này.
Hãy chắc chắn rằng các mô-đun PERL này có mặt. Nếu sử dụng Debian hoặc Ubuntu, bạn có thể cài đặt từ repos để tất cả các phụ thuộc được tự động sắp xếp và sau đó thay thế /usr/sbin/postfwd
bằng phiên bản mới nhất.
Sau đó tạo quy tắc. Tạo một tệp như /etc/postfwd.cf
hoặc /etc/postfix/postfwd.cf
và thêm:
id=R001; sender=~/.*/; action=rate(sender/100/86400/REJECT only 100 messages per day for $$sender)
id=R002; sender=~/.*/; action=rate(sender/50/3600/REJECT only 50 messages per hour for $$sender)
Các quy tắc trên rõ ràng có hai quy tắc đánh giá cho tất cả người gửi. Cú pháp của rate
hành động là:
rate (<item>/<max>/<time in sec>/<action>)
Ví dụ tỷ lệ khác có thể được tìm thấy ở đây . Tham chiếu đến cú pháp có thể được tìm thấy trên tài liệu . Thảo luận tương tự có thể được tìm thấy ở đây . Nếu SASL được thực hiện (ví dụ dovecot), bạn có thể an toàn thay thế sender
với sasl_username
. Bạn có thể kiểm tra tính hợp lệ của bộ quy tắc với -C
tùy chọn:
postfwd -f /etc/postfwd.cf -C
Sau đó, bạn có thể tùy ý tạo một người dùng và nhóm chuyên dụng postfwd
theo đó postfwd sẽ chạy và khởi chạy nó:
postfwd --daemon -f /etc/postfwd.cf -u postfwd -g postfwd
Trong trường hợp có nó được cài đặt từ apt (Debian, Ubuntu vv), cũng có phải là một tập tin cấu hình dưới /etc/default/postfwd
và bạn có thể bắt đầu dịch vụ đúng cách, ví dụ sudo service postfwd start
.
Sau đó hãy xem nhật ký để xác minh rằng postfwd đang lắng nghe. Postfwd sử dụng cùng một bản ghi như postfix (ví dụ /var/log/mail
hoặc /usr/local/psa/var/log/maillog
vv) và một dòng postfwd 1.35 ready for input
nên được đặt đúng chỗ.
Sau đó, cho postfix biết để sử dụng postfwd. Chỉnh sửa tập tin conffix (thường /etc/postfix/main.cf
) và trong dòng:
smtpd_recipient_restrictions = permit_mynetworks,...
thêm check_policy_service inet:127.0.0.1:10040
. Vui lòng xem xét rằng thứ tự bạn đặt trong smtpd_recipient_restrictions
này có tầm quan trọng lớn và cuối cùng bạn có thể dành rất nhiều thời gian để chẩn đoán những gì có thể sai. Như đã giải thích trong câu hỏi này , nếu một kiểm tra trả về OK hoặc RE DỰNG thì postfix không tiếp tục đến lần tiếp theo, vì vậy bạn có thể nên đặt mức cao này.
Cuối cùng, để kiểm tra xem cái này có hoạt động không, bạn có thể chỉ định một giới hạn rất nhỏ, chẳng hạn như 1 hoặc thậm chí thêm một quy tắc như id=DEFAULT; action=dunno
. Bất kỳ quy tắc nhấn nào cũng được ghi lại. Cũng xin lưu ý rằng giới hạn tỷ lệ trên mỗi người gửi không phân biệt giữa các email có một người nhận hoặc một email có nhiều người nhận.
Sau đó gửi email từ một tài khoản (trong máy chủ đó) và xem nhật ký:
grep "RULES" /var/log/mail
Các liên kết khác: khởi động nhanh postfwd .