Policyd là một công cụ mã nguồn mở trong Zimbra, cho phép bạn đương đầu trong cuộc chiến với email rác (spam). Thông thường, bạn, một người quản trị hệ thống email, sẽ muốn thiết lập chính sách để hạn chế số lượng email tối đa mà một người dùng có thể gửi ra ngoài trong một khoảng thời gian nhất định. Điều này giúp cho hệ thống của bạn không bị liệt vào các blacklist.

Script cài đặt được cung cấp bởi Barry de Graaff, Channel Evangelist tại Synacor và đã được kiểm tra chạy tốt trên Zimbra 8.8.15, CentOS 7. Bạn có thể xem bài viết gốc tại đây.

1. Tải về script cài đặt

wget https://raw.githubusercontent.com/Zimbra-Community/zimbra-tools/master/cbpolicyd.sh -O /tmp/cbpolicyd.sh
chmod +rx /tmp/cbpolicyd.sh

Bạn có thể mở file cbpolicyd.sh này ra, đọc qua các hướng dẫn để hiểu chương trình cài đặt này sẽ thực hiện những gì.  Bạn có thể thay đổi cơ sở dữ liệu MariaDB để sử dụng một cơ sở dữ liệu MariaDB nằm bên ngoài hệ thống Zimbra (khi này dữ liệu cbpolicyd sẽ được bảo toàn khi bạn nâng cấp Zimbra).

Mặc định, script cài đặt sẽ thiết lập chính sách cho phép:

- Hạn chế bất kỳ người gửi nào chỉ được phép gửi tối đa 100 email mỗi 60 giây. Qúa số lượng này các email sẽ bị deferred.

- Hạn chế người dùng chỉ có thể nhận tối đa 125 email mỗi 60 giây. Qúa số lượng này sẽ bị chặn (reject).

Zimico khuyến nghị bạn nên điều chỉnh thông số này như sau:

- Hạn chế người gửi chỉ được phép gửi 200 email mỗi 3600 giây (1 giờ).

- Hạn chế người nhận chỉ được phép nhận 200 email mỗi 3600 giây (1 giờ).

Lưu ý khi người dùng gửi đến distribution list có số lượng member lớn sẽ làm cho quota bị hết nhanh chóng. Ngoài ra cbpolicyd bị trùng khi đếm số lượng message (thay vì 1 message sẽ đếm thành 2 message).

Bằng cách thay đổi khoảng thời gian từ 60 giây thành 3600 giây sẽ giúp hệ thống không bị rơi vào blacklist khi có 1 account nào đó bị compromised (lộ password) và bị dùng để gửi spam ra ngoài với số lượng lớn.

INSERT INTO quotas (PolicyID,Name,Track,Period,Verdict,Data) VALUES (6, 'Sender:user@domain','Sender:user@domain', 3600, 'DEFER', 'You are sending too many emails, contact helpdesk');
INSERT INTO quotas (PolicyID,Name,Track,Period,Verdict) VALUES (6, 'Recipient:@domain', 'Recipient:@domain', 3600, 'REJECT');
INSERT INTO quotas_limits (QuotasID,Type,CounterLimit) VALUES(3, 'MessageCount', 200);
INSERT INTO quotas_limits (QuotasID,Type,CounterLimit) VALUES(4, 'MessageCount', 200);

2. Khi bạn đã sẵn sàng, chạy file cài đặt

/tmp/cbpolicyd.sh

3. Khởi động dịch vụ cbpolicyd trên Zimbra

su - zimbra
zmprov ms $(zmhostname) +zimbraServiceEnabled cbpolicyd
zmprov ms $(zmhostname) zimbraCBPolicydQuotasEnabled TRUE
zmmtactl restart && zmcbpolicydctl start

4. Để test hoặc cập nhật số lượng message quota, bạn dùng lệnh sau

Ví dụ, để thiết lập số lượng message quota = 5 để test thử, với quyền zimbra user:

/opt/zimbra/bin/mysql policyd_db
SELECT * FROM quotas_limits;
UPDATE quotas_limits SET CounterLimit = 5 WHERE QuotasID = 3;

Bạn có thể xem các QuotasID bằng lệnh:

SELECT * from quotas;

và tìm trường 'ID' trong record 'Sender:user@domain'.

Thoát khỏi MariaDB bằng lệnh: quit;

Khi cập nhật hoặc nâng cấp Zimbra, bạn có thể phải chạy lại script này.

Nếu bạn cần hỗ trợ, vui lòng liên hệ với ZIMICO chúng tôi.