Kiểm soát tốc độ tin nhắn SMTP trên Ubuntu 8.04, tốt nhất là với postfix


8

Có thể tôi đang theo đuổi một lỗi nhưng tôi đang cố gắng thiết lập một proxy smtp các loại. Tôi có một máy chủ postfix nhận tất cả email cho một bộ sưu tập máy chủ / máy khách. Họ sử dụng một smarthost (Relayhost = ...) để chuyển tiếp thư đến MTA công ty của chúng tôi. Tôi muốn giới hạn số lượng tin nhắn mà một máy chủ cá nhân có thể chuyển tiếp để ngăn chặn MTA công ty. Postfix có một chương trình gọi là "đe" có khả năng theo dõi các số liệu thống kê về thư sẽ được sử dụng cho những thứ đó nhưng dường như nó không được thực thi. Tôi đã chạy "inotifywait -m / usr / lib / postfix / anvil" trong khi tôi bắt đầu postfix và gửi một số tin nhắn thông qua nó từ một máy chủ từ xa. inotifywait chỉ định đe không bao giờ được chạy. Bất cứ ai cũng nhận được các điều khiển tốc độ postfix / anvil để làm việc?

main.cf

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
myhostname = site-server-q9
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relayhost = Out outgoing mail relay
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = 10.X.X.X
smtpd_client_message_rate_limit = 1
anvil_rate_time_unit = 1h

trích xuất master.cf

anvil     unix  -       -       -       -       1       anvil
smtp      inet  n       -       -       -       -       smtpd

Câu trả lời:


7

Cuối cùng, tôi đã sử dụng policyd. Tôi đã cấu hình nó để giới hạn một địa chỉ IP duy nhất không quá 10000 tin nhắn mỗi giờ và 1 GB. Dưới đây là một bản sao của tài liệu mà tôi đã viết cho chính mình trong trường hợp bất cứ ai thấy nó hữu ích.


Cấu hình postfix và policyd

Sau khi các gói đã được cài đặt, hãy thực hiện các thay đổi sau đối với cấu hình của chúng. Trong /etc/postfix/main.cf thêm dòng sau

smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10031

Trong /etc/postfix-policyd.conf

  • đổi WHITELISTING=1sangWHITELISTING=0
  • đổi GREYLISTING=1sangGREYLISTING=0
  • đổi SENDERTHROTTLE=0sangSENDERTHROTTLE=1
  • đổi QUOTA_EXCEEDED_TEMP_REJECT=1sangQUOTA_EXCEEDED_TEMP_REJECT=0
  • đổi SENDER_QUOTA_REJECTION="Quota Exceeded."sangSENDER_QUOTA_REJECTION="Quota Exceeded, 10,000 messages/hour max!"
  • đổi SENDER_SIZE_REJECTION="Message size too big."sangSENDER_SIZE_REJECTION="Message size too big. 10Mb per message or 1 Gb/hour max!"
  • đổi SENDERMSGLIMIT=512sangSENDERMSGLIMIT=10000
  • đổi SENDERRCPTLIMIT=3600sangSENDERRCPTLIMIT=10000
  • đổi SENDERQUOTALIMIT=250000000sangSENDERQUOTALIMIT=1000000000
  • đổi SENDERMSGSIZE=10240000sangSENDERMSGSIZE=50000000
  • đổi SENDER_INACTIVE_EXPIRE=31dsangSENDER_INACTIVE_EXPIRE=1h

2

Có thể thú vị cho việc thực hiện của bạn:

default_destination_concurrency_limit (default: 20)

    The default maximal number of parallel deliveries to the same destination. This is the default limit for delivery via the lmtp(8), pipe(8), smtp(8) and virtual(8) delivery agents. With per-destination recipient limit > 1, a destination is a domain, otherwise it is a recipient.

    Use transport_destination_concurrency_limit to specify a transport-specific override, where transport is the master.cf name of the message delivery transport.

1

Anvil thực sự có nghĩa là để hạn chế tốc độ tin nhắn đến, không giới hạn gửi đi. Hãy nghĩ về nó như một bộ lọc DoS thô.

Bạn có thể muốn xem các cài đặt liên quan đến phần qmgr của postfix. Cụ thể, bạn có thể muốn đặt giới hạn đồng thời của mình ở mức rất thấp và thời gian chờ đợi trong hàng đợi của bạn rất cao. Bạn sẽ muốn thiết lập các tỷ lệ phân phối đến một cái gì đó mà có một (r) chậm trễ lớn , và cũng muốn giảm số lượng các quá trình giao hàng trong master.cf.

Bạn đã xem xét sử dụng qshape để xác định mức nào sẽ là tỷ lệ chấp nhận được cho MTA nội bộ của bạn chưa?


Mục tiêu của tôi là không làm chậm bất cứ điều gì, tôi chỉ muốn ngăn chặn quá trình chạy ra khỏi máy chủ của công ty. Đó là thỏa thuận tôi đã thực hiện với nhóm trao đổi cho các dịch vụ của họ. Thư vẫn cần phải linh hoạt. Tôi đã cấu hình lại postfix cho giao hàng cục bộ và lặp lại thử nghiệm. Tin nhắn vẫn đang bỏ qua giới hạn.
TimDaMan

1
Tôi đã hiểu rồi!! Anvil không nhận được dữ liệu nguồn cấp dữ liệu / quy trình về các máy khách trong "mynetworks = ..." Tôi đã thay đổi nó thành mynetworks = 127.0.0.0/8 và giới hạn đang được tuân theo.
TimDaMan

0

Anvil không đăng nhập cho postfix, Ive đã thêm bên dưới vào main.cf và dường như hoạt động với tôi

#### Prevent server sending excess mail from clients add to /etc/postfix/main.cf
####
anvil_rate_time_unit = 60s
anvil_status_update_time = 120s
smtpd_error_sleep_time = 2s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
smtpd_client_message_rate_limit = 
#### End Prevent server sending excess mail 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.