
cbpolicyd, zimbra-mta paketiyle birlikte gelen, 127.0.0.1:10031 üzerinde çalışan ve Postfix ile check_policy_service üzerinden haberleşen politika sunucusudur. Varsayılan olarak SQLite veritabanı ve kotalar (quotas) modülü ile gelir.
1. Servisi Etkinleştirme ve Devre Dışı Bırakma
# Etkinleştirme:
zmprov ms <mta_sunucu> +zimbraServiceEnabled cbpolicyd
# Devre dışı bırakma:
zmprov ms <mta_sunucu> -zimbraServiceEnabled cbpolicydEtkinleştirildiğinde zmconfigd, Postfix’in smtpd_recipient_restrictions ve smtpd_end_of_data_restrictions ayarlarına check_policy_service inet:localhost:10031 satırını otomatik ekler; loglar /opt/zimbra/log/cbpolicyd.log dosyasına yazılır.
2. Temel Localconfig Ayarları
/opt/zimbra/conf/cbpolicyd.conf.in şablonu zmlocalconfig değerlerinden üretilir. Önemli modül ve hata toleransı ayarları:
zmlocalconfig | grep -i cbpolicy
# Önemli değişkenler:
# cbpolicyd_bypass_mode = tempfail (veya DB sorununda postanın geçmesi için pass)
# cbpolicyd_module_quotas = 1
# cbpolicyd_module_accesscontrol = 0 | 1
# cbpolicyd_module_greylisting = 0 | 1
# cbpolicyd_log_level = 3 (0: Hata, 3: Bilgi, 4: Debug)3. SQLite Veritabanında Örnek Hız Sınırı (Rate Limit) Kuralı
Veritabanına erişmek için sqlite3 /opt/zimbra/data/cbpolicyd/db/cbpolicyd.sqlitedb komutunu kullanabilirsiniz. Aşağıdaki örnek SQL, herhangi bir göndericinin 60 saniyede 20’den fazla e-posta göndermesini erteler (DEFER), herhangi bir alan adının 60 saniyede 50’den fazla e-posta almasını ise reddeder (REJECT):
BEGIN TRANSACTION;
INSERT INTO "policies" VALUES(6, 'ZimbraRateLimit', 0, 'Gonderim Hiz Siniri', 0);
INSERT INTO "policy_members" VALUES(6, 6, 'any', 'any', NULL, 0);
INSERT INTO "quotas" VALUES(3, 6, 'Sender:user@domain', 'Sender:user@domain', 60, 'DEFER', '60 saniyede cok fazla ileti gonderildi', NULL, 0);
INSERT INTO "quotas" VALUES(4, 6, 'Recipient:@domain', 'Recipient:@domain', 60, 'REJECT', NULL, NULL, 0);
INSERT INTO "quotas_limits" VALUES(4, 3, 'MessageCount', 20, NULL, 0);
INSERT INTO "quotas_limits" VALUES(5, 4, 'MessageCount', 50, NULL, 0);
COMMIT;4. Yüksek Trafik İçin Performans Ayarı
Yoğun sunucularda /opt/zimbra/conf/cbpolicyd.conf.in içinde prefork çalışan sayısını artırın (Küçük: 2/2/4/10, Orta: 4/4/12/25, Büyük: 8/8/16/64):
min_servers=8
min_spare_servers=8
max_spare_servers=16
max_servers=64
max_requests=10005. Veritabanı Temizliği ve Haftalık VACUUM Bakımı
session_tracking tablosu yoğun trafikli sistemlerde gigabaytlarca büyüyebilir. 24 saatten eski kayıtları silen bir SQL betiği ve haftalık VACUUM cron görevi eklemeniz önerilir:
# /opt/zimbra/log/scripts/purge_cbpolicyd_daily.sql
delete from session_tracking where ((strftime('%s','now') - UnixTimestamp) > 86400);
vacuum;
# zimbra crontab örneği (Pazar 01:00 VACUUM):
0 1 * * 0 /usr/bin/sqlite3 /opt/zimbra/data/cbpolicyd/db/cbpolicyd.sqlitedb 'vacuum;'
Zimbra Sunucunuzda Uzman Desteğe mi İhtiyacınız Var?
Kurulum, migrasyon, SSL/TLS, performans optimizasyonu ve 7/24 SLA bakım hizmetleri için ekibimizle iletişime geçin.