Zimbra CLI Komutları ile Sunucu Yönetimi

Zimbra yönetiyorsanız, bir süre sonra web arayüzünün sizi yavaşlattığını fark edersiniz. Özellikle toplu işlemler, servis sorunları veya acil müdahaleler söz konusu olduğunda CLI kaçınılmaz hale gelir. Ben de yıllarca Zimbra kurulumlarını yönetirken komut satırının benim için ne kadar kritik olduğunu anladım. Bu yazıda gerçek senaryolardan derlediğim, günlük hayatta işe yarayan Zimbra CLI komutlarını paylaşacağım.

Temel Yapıyı Anlamak

Zimbra, kendi kullanıcısı altında çalışır ve neredeyse tüm yönetim işlemleri zimbra kullanıcısıyla yapılır. Root olarak bağlandığınızda önce kullanıcı değiştirmeniz gerekir:

su - zimbra

Bu adımı atlamak, en yaygın hataların başında gelir. Komutları root olarak çalıştırmaya çalışırsanız ya hata alırsınız ya da dosya izinlerini bozarsınız. Zimbra’nın ana yönetim aracı zmprov‘dur, servis kontrolü için zmcontrol kullanılır. Bunların yanı sıra kuyruk yönetimi, log analizi ve hesap işlemleri için onlarca özel araç bulunur.

Servis Durumu ve Yönetimi

Sunucuya bağlandığınızda ilk yapmanız gereken servis durumunu kontrol etmektir. Özellikle sabah geldiğinizde veya bir alarm aldığınızda:

zmcontrol status

Bu komut size tüm Zimbra bileşenlerinin durumunu gösterir: antispam, antivirus, ldap, logger, mailbox, memcached, mta, proxy, snmp, spell, stats. Herhangi biri “Stopped” görünüyorsa sorun araştırmasına oradan başlarsınız.

Tüm servisleri yeniden başlatmak için:

zmcontrol restart

Ama dikkatli olun, bu komut mail akışını birkaç dakika kesecektir. Sadece belirli bir servisi yeniden başlatmak genellikle daha iyi bir tercih olur:

zmcontrol stop
zmcontrol start

Antispam servisini tek başına yönetmek istediğinizde:

/opt/zimbra/bin/zmamavisdctl restart

Postfix MTA’yı ayrı olarak yeniden başlatmak gerektiğinde:

/opt/zimbra/bin/zmmtactl restart

Şunu söyleyeyim, üretim ortamında tüm servisleri birden yeniden başlatmak yerine problemi isolate edip sadece ilgili servisi restart etmek hem daha hızlı hem de daha az risklidir.

Hesap Yönetimi: zmprov ile Her Şey Mümkün

zmprov Zimbra’nın İsviçre çakısıdır. Yeni hesap oluşturmak, şifre değiştirmek, kota ayarlamak, domain eklemek… Hepsini bu araçla yaparsınız.

Yeni kullanıcı oluşturmak:

zmprov ca [email protected] SifreBurada displayName "Ad Soyad"

ca burada “create account” anlamına gelir. Sonrasına istediğiniz kadar özellik ekleyebilirsiniz:

zmprov ca [email protected] Gizli123! 
  displayName "Ahmet Yılmaz" 
  givenName "Ahmet" 
  sn "Yılmaz" 
  zimbraMailQuota 2147483648

Son satırdaki zimbraMailQuota değeri byte cinsindendir. 2147483648 byte = 2 GB anlamına gelir.

Kullanıcı bilgilerini sorgulamak:

zmprov ga [email protected]

Bu komut o hesaba ait her şeyi döker: kota, son giriş zamanı, hesap durumu, alias’lar ve daha fazlası. Belirli bir özelliği görmek istiyorsanız:

zmprov ga [email protected] zimbraMailQuota
zmprov ga [email protected] zimbraLastLogonTimestamp

Toplu kullanıcı listesi almak:

zmprov -l gaa domain.com

-l parametresi çıktıyı satır satır verir, scripting için çok uygun. Tüm domain’leri listelemek için:

zmprov gad

Kota Yönetimi ve Disk Kullanımı

Bir işletmede kaçınılmaz olarak “mailboxum doldu” şikayetleriyle karşılaşırsınız. CLI ile bu işleri çok daha hızlı halledersiniz.

Belirli bir kullanıcının kotasını değiştirmek:

zmprov ma [email protected] zimbraMailQuota 5368709120

ma “modify account” demek. 5368709120 byte = 5 GB.

Bir kullanıcının mevcut mailbox boyutunu öğrenmek:

zmmailbox -z -m [email protected] gms

gms “get mailbox size” anlamındadır. Çıktı MB cinsinden gelir.

Tüm hesapların kota kullanımını toplu görmek için bir script:

zmprov -l gaa domain.com | while read hesap; do
  echo -n "$hesap: "
  zmmailbox -z -m $hesap gms 2>/dev/null
done

Bu script biraz yavaş çalışır çünkü her hesap için ayrı bağlantı kurar, ama küçük-orta ölçekli kurulumlarda işe yarar.

Mail Kuyruğu Yönetimi

MTA kuyruğu Zimbra yönetiminin en kritik noktalarından biridir. Kuyruk dolmaya başladığında mail gecikmeleri yaşanır, bazen de spam nedeniyle IP’niz kara listeye girer.

Mevcut kuyruk durumuna bakmak:

zmprov gcf zimbraSmtpHostname
postqueue -p | tail -5

Kuyrukta bekleyen mail sayısını öğrenmek:

mailq | grep -c "^[A-F0-9]"

Tüm kuyruğu temizlemek (dikkatli kullanın!):

postsuper -d ALL

Sadece deferred kuyruğu temizlemek:

postsuper -d ALL deferred

Deferred kuyruğu yeniden denemek:

postqueue -f

Gerçek hayat senaryosu: Bir gün sabahleyin geldim, kuyrukta 15.000’den fazla mail vardı. Tüm mailler tek bir iç IP’den geliyordu, belli ki bir uygulama sunucusu spam atıyordu. Şu komutla o IP’den gelen mailleri buldum ve sildim:

postqueue -p | grep "kaynak_ip" | awk '{print $1}' | tr -d '*' | postsuper -d -

Log Analizi

Zimbra logları /var/log/zimbra.log ve /opt/zimbra/log/ altında tutulur. Sorun giderirken log okumak şarttır.

Belirli bir kullanıcıya gelen mailleri takip etmek:

grep "to=<[email protected]>" /var/log/zimbra.log | tail -50

Belirli bir kullanıcıdan giden mailleri görmek:

grep "from=<[email protected]>" /var/log/zimbra.log | tail -50

Mail delivery loglarını gerçek zamanlı izlemek:

tail -f /var/log/zimbra.log | grep -i "status="

Authentication hatalarını bulmak:

grep "authentication failed" /var/log/zimbra.log | awk '{print $NF}' | sort | uniq -c | sort -rn | head -20

Bu son komut özellikle brute force saldırılarını tespit etmek için çok yararlı. En çok başarısız giriş denemesi yapan IP adreslerini sıralı olarak gösterir.

Backup ve Geri Yükleme

Zimbra’nın yerleşik backup araçları oldukça güçlüdür. Ama bunları sadece arayüzden değil, CLI üzerinden de yönetmek gerekir; özellikle otomatik işler için.

Full backup başlatmak:

zmbackup -f -a all

Belirli bir hesabı yedeklemek:

zmbackup -f -a [email protected]

Backup durumunu kontrol etmek:

zmbackup -bp

Bu komut çalışmakta olan backup işlemlerini ve son backup’ların durumunu gösterir.

Belirli bir hesabı geri yüklemek:

zmrestore -ca [email protected] -lb "label"

Label bilgisini zmbackup -lb komutuyla öğrenebilirsiniz. Geri yükleme işlemi öncesinde test ortamında mutlaka deneyin; production’da ilk kez denemeyin.

Sertifika Yönetimi

SSL sertifikası sorunları mail sunucularında en sık karşılaşılan sorunlardan biridir. Sertifika yenileme zamanı geldiğinde veya Let’s Encrypt kullanıyorsanız bu komutlar işe yarar.

Mevcut sertifikayı kontrol etmek:

zmcertmgr viewdeployedcrt

Self-signed sertifika oluşturmak (test için):

zmcertmgr createca
zmcertmgr createcrt -new -days 365
zmcertmgr deploycrt self
zmcontrol restart

Ticari veya Let’s Encrypt sertifikası deploy etmek için önce dosyaları doğru konuma kopyalamanız, ardından doğrulama yapmanız gerekir:

zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.key 
  /path/to/cert.crt /path/to/chain.crt

Doğrulama başarılıysa deploy edin:

zmcertmgr deploycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.key 
  /path/to/cert.crt /path/to/chain.crt
zmcontrol restart

Antispam ve Antivirus Yapılandırması

SpamAssassin ve ClamAV Zimbra’nın yerleşik bileşenleridir. Bunları CLI üzerinden yönetmek zaman zaman gerekli olur.

SpamAssassin kurallarını güncellemek:

/opt/zimbra/bin/sa-update

Antispam servisini yeniden başlatmak:

zmamavisdctl restart

ClamAV veritabanını güncelleme:

/opt/zimbra/bin/freshclam

Whitelist ve blacklist yönetimi için zmprov kullanılır:

# Domain whitelist eklemek
zmprov mcf +zimbraSpamWhitelistSender "guvenlidomain.com"

# Belirli bir adresi blacklist'e almak  
zmprov mcf +zimbraSpamBlacklistSender "[email protected]"

Performans ve İzleme

Zimbra’nın performansını CLI üzerinden izlemek için birkaç araç kullanabilirsiniz.

Mailbox servisinin JVM istatistiklerini görmek:

zmprov gms

Aktif oturumları listelemek:

zmprov gas

Sunucu istatistiklerini almak:

zmprov gis

Daha detaylı bir performans analizi için:

zmstat-chart -s stats.csv -o /tmp/charts/

Bu komut istatistik grafiklerini oluşturur. Hafıza, CPU ve mail akış verilerini görselleştirmek için kullanılır.

Bir de şunu ekleyeyim: Zimbra’nın kendi logger servisi var, ama çoğu zaman /opt/zimbra/log/ altındaki dosyaları doğrudan okumak daha hızlı sonuç verir.

Alias ve Distribution List Yönetimi

Kurumsal ortamlarda alias ve dağıtım listesi yönetimi sık yapılan işler arasındadır.

Hesaba alias eklemek:

zmprov aaa [email protected] [email protected]

aaa “add account alias” demek. Alias’ları listelemek:

zmprov ga [email protected] zimbraMailAlias

Dağıtım listesi oluşturmak:

zmprov cdl [email protected] displayName "Tüm Çalışanlar"

Listeye üye eklemek:

zmprov adlm [email protected] [email protected] [email protected]

Liste üyelerini görüntülemek:

zmprov gdlm [email protected]

Bir üyeyi listeden çıkarmak:

zmprov rdlm [email protected] [email protected]

Hesap Kilitleme ve Devre Dışı Bırakma

Bir çalışan ayrıldığında veya güvenlik ihlali şüphesi olduğunda hesabı hızla devre dışı bırakmanız gerekebilir:

zmprov ma [email protected] zimbraAccountStatus inactive

Durumu active, inactive, locked, lockout, pending veya closed olarak ayarlayabilirsiniz. closed seçeneği hesabı tamamen kapatır ama siler, inactive ise erişimi keser ama veriler kalır. Bu farkı bilmek önemlidir.

Hesabı yeniden aktif etmek:

zmprov ma [email protected] zimbraAccountStatus active

Şifre değiştirmek:

zmprov sp [email protected] YeniSifre123!

sp “set password” demektir. Şifre değiştirme işleminde bir dahaki girişte kullanıcıyı şifre değiştirmeye zorlamak için:

zmprov ma [email protected] zimbraPasswordMustChange TRUE

Faydalı One-liner’lar

Yıllar içinde biriktirdiğim, işe yarayan kısa komutlar:

Son 30 günde hiç giriş yapmayan hesapları bulmak:

zmprov -l gaa domain.com | while read acc; do
  last=$(zmprov ga $acc zimbraLastLogonTimestamp 2>/dev/null | awk '{print $2}')
  echo "$acc: $last"
done | grep -v "20[2-9][0-9]" 

Tüm domain’lerdeki toplam hesap sayısını öğrenmek:

for domain in $(zmprov gad); do
  count=$(zmprov -l gaa $domain | wc -l)
  echo "$domain: $count hesap"
done

Mailbox servisinin çöp toplamasını (garbage collection) tetiklemek:

zmprov flushCache

Konfigürasyon cache’ini temizlemek, özellikle bir ayar değişikliğinden sonra hemen etkin olmasını istediğinizde:

zmprov flushCache config
zmprov flushCache account

Sorun Giderme Senaryoları

Senaryo: Mail gönderip alınamıyor

İlk kontrol listesi:

zmcontrol status          # Servisler ayakta mı?
postqueue -p | wc -l      # Kuyrukta ne kadar mail var?
tail -100 /var/log/zimbra.log | grep -i error   # Son hatalar ne?

Senaryo: Kullanıcı webmail’e giremıyor

zmprov ga [email protected] zimbraAccountStatus   # Hesap aktif mi?
zmprov ga [email protected] zimbraPasswordLocked  # Şifre kilitli mi?
grep "[email protected]" /var/log/zimbra.log | tail -20  # Log'a bak

Senaryo: Disk dolmak üzere

du -sh /opt/zimbra/store/*   # Hangi mailbox büyük?
zmcontrol stop
/opt/zimbra/libexec/zmdbintegrityreport   # DB bütünlüğü kontrol
zmcontrol start

Sonuç

Zimbra CLI komutları ilk başta karmaşık görünebilir, ama bir süre kullandıktan sonra web arayüzüne dönmek istemiyorsunuz. Özellikle toplu işlemler, script’lerle otomasyon ve acil müdahaleler söz konusu olduğunda CLI tartışmasız daha hızlı ve güvenilirdir.

Bu yazıda anlattığım komutların büyük çoğunluğunu üretim ortamlarında kullandım. Her Zimbra sürümünde küçük farklılıklar olabilir; özellikle Zimbra 8.x ile 9.x arasında bazı komut davranışları değişti. Komutları çalıştırmadan önce --help parametresiyle kullanımı teyit edin, kritik işlemleri önce test ortamında deneyin.

Son bir not: Zimbra kullanıcısıyla çalışırken yaptığınız değişiklikleri kaydedin. Üretim ortamında komut geçmişini (history) düzenli aralıklarla bir dosyaya kaydetmek, ileride “bunu ne zaman yaptım” sorusunun cevabını bulmanızı kolaylaştırır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir