Zimbra’da Shared Mailbox ve Takvim Paylaşımı

Kurumsal ortamlarda en sık karşılaştığım destek taleplerinden biri şu: “Muhasebe departmanının ortak bir posta kutusu olsun, herkes görsün, herkes yanıtlasın.” Kulağa basit geliyor ama Zimbra’da bunu doğru yapılandırmak, özellikle büyük organizasyonlarda, birkaç kritik adımı içeriyor. Takvim paylaşımı da cabası. Bu yazıda hem shared mailbox kurulumunu hem de takvim paylaşımını, production ortamda gerçekten işe yarayan yöntemlerle ele alacağım.

Shared Mailbox Nedir, Ne Zaman Kullanılır?

Zimbra’da shared mailbox kavramı biraz farklı çalışıyor. Microsoft Exchange’deki gibi native bir “shared mailbox” tipi hesap yok. Bunun yerine standart bir Zimbra hesabı oluşturup, o hesabın posta kutusunu ve klasörlerini diğer kullanıcılarla paylaşıyorsunuz. Sonuç aynı, ama konfigürasyon mantığı farklı.

Tipik kullanım senaryoları:

  • Departman postaları: [email protected], [email protected], [email protected] gibi adreslere gelen mailleri birden fazla kişinin görmesi ve yanıtlaması
  • Proje takımları: Belirli bir projeye ait yazışmaların ortak bir noktada toplanması
  • Yönetici asistanlığı: Bir yöneticinin postasını sekreterinin de görmesi ve yönetmesi
  • IT destek kutuları: helpdesk@ gibi adreslerin tüm IT ekibi tarafından izlenmesi

Shared Mailbox Oluşturma ve Yapılandırma

İlk adım, paylaşımlı kullanılacak hesabı oluşturmak. Bunu hem admin panelinden hem de komut satırından yapabilirsiniz. Ben genellikle zmprov ile yapıyorum çünkü daha hızlı ve script’lemeye uygun.

# Shared mailbox hesabı oluşturma
su - zimbra
zmprov ca [email protected] GucluBirSifre 
  displayName "Destek Ekibi" 
  zimbraHideInGal TRUE 
  description "IT Destek Ortak Posta Kutusu"

zimbraHideInGal TRUE parametresi bu hesabın Global Address List’te görünmemesini sağlıyor. Shared mailbox’ları genellikle GAL’den gizliyorum çünkü kullanıcılar bu adreslere doğrudan mail atmak yerine ticketing sistemi üzerinden ulaşmalı.

Şimdi bu hesabın inbox’ını diğer kullanıcılarla paylaşalım. Zimbra’da paylaşım işlemleri zmprov ile grantRight komutu üzerinden yapılıyor:

# destek hesabının inbox'ını belirli bir kullanıcıyla paylaşma
zmprov mfg [email protected] account [email protected] sendAs sendOnBehalfOf read write

# Tüm inbox'ı bir gruba açma
zmprov mfg [email protected] group [email protected] sendAs sendOnBehalfOf read write

Buradaki izin tipleri önemli:

  • read: Sadece okuma izni
  • write: Okuma ve yazma (taşıma, silme dahil)
  • sendAs: Paylaşılan hesap adına mail gönderme (From: [email protected] görünür)
  • sendOnBehalfOf: Adına gönderme (From: ahmet on behalf of destek görünür)
  • admin: Tam yönetim yetkisi
  • adminSendAs: Yönetim + adına gönderme kombinasyonu

Production ortamda çoğunlukla sendAs ve write kombinasyonunu kullanıyorum. sendOnBehalfOf biraz profesyonelce görünmüyor, müşteriler “on behalf of” ibaresini gördüklerinde şaşırıyorlar.

Zimbra Web Client’ta Paylaşılan Posta Kutusunu Bağlama

Kullanıcı tarafında, paylaşılan posta kutusunu ZWC’ye (Zimbra Web Client) eklemek gerekiyor. Bu adımı kullanıcılar kendileri yapabiliyor ama IT olarak bunu otomatize etmek çok daha mantıklı.

Kullanıcı manuel olarak eklemek istiyorsa:

  1. Zimbra Web Client’a giriş yap
  2. Sol panelde herhangi bir klasöre sağ tıkla
  3. “Add Shared Folder” seçeneğini tıkla
  4. Paylaşan kişinin mail adresini gir
  5. Klasör adını ve rengi belirle

Ama bunu script ile toplu yapmak için REST API kullanıyoruz:

#!/bin/bash
# Tüm destek ekibi üyelerine shared folder bağlama scripti

USERS=("[email protected]" "[email protected]" "[email protected]")
SHARED_ACCOUNT="[email protected]"
ZIMBRA_HOST="mail.sirket.com"
ADMIN_PASS="admin_sifresi"

for USER in "${USERS[@]}"; do
    echo "Processing: $USER"
    curl -k -u "[email protected]:${ADMIN_PASS}" 
        -H "Content-Type: application/json" 
        "https://${ZIMBRA_HOST}:7071/home/${USER}/?fmt=json" 
        -d '{
            "op": "mount",
            "name": "Destek Inbox",
            "owner": "'${SHARED_ACCOUNT}'",
            "path": "/Inbox",
            "color": 2
        }'
    echo "Done: $USER"
done

Bu yaklaşım yerine ben genellikle SOAP API’yi tercih ediyorum, daha güvenilir:

# SOAP ile shared folder mount etme
cat > /tmp/mount_folder.xml << 'EOF'
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Header>
    <context xmlns="urn:zimbra">
      <authToken>AUTH_TOKEN_BURAYA</authToken>
    </context>
  </soap:Header>
  <soap:Body>
    <CreateMountpointRequest xmlns="urn:zimbraMail">
      <link l="1" name="Destek Kutusu" owner="[email protected]" 
            path="/Inbox" view="message" color="2"/>
    </CreateMountpointRequest>
  </soap:Body>
</soap:Envelope>
EOF

Takvim Paylaşımı

Takvim paylaşımı, özellikle toplantı odası rezervasyonları ve yönetici takvimlerinin ekiple paylaşılması için kritik. Zimbra’da takvim paylaşımı da benzer bir mekanizma üzerinden çalışıyor ama birkaç farklılık var.

Önce takvim paylaşımı için izin seviyeleri:

  • r (read): Sadece görüntüleme
  • rp (read + private): Gizli etkinlikleri de görebilme
  • rsvp (read + schedule): Görüntüleme ve davet kabul/red
  • invite: Takvime etkinlik ekleyebilme
  • admin: Tam kontrol

Örneğin bir yöneticinin takvimine asistanının tam erişim vermesi:

# Yönetici takvimini asistanla paylaşma
zmprov mfg [email protected] account [email protected] 
    sendAs sendOnBehalfOf read write invite

# Toplantı odası takvimini tüm şirketle paylaşma (sadece görüntüleme)
zmprov mfg [email protected] 
    public "" read

Şimdi önemli bir senaryo: Toplantı odası kaynak hesabı. Birçok organizasyon toplantı odalarını Zimbra üzerinde kaynak olarak tanımlıyor. Bu çok pratik bir kullanım:

# Toplantı odası kaynak hesabı oluşturma
zmprov cr "Toplanti Odasi A" room 
    zimbraCalResType Room 
    zimbraCalResLocationDisplayName "Toplantı Odası A - 3. Kat" 
    zimbraCalResCapacity 20 
    zimbraCalResAutoAcceptDecline TRUE 
    zimbraCalResAutoDeclineIfBusy TRUE 
    zimbraCalResAutoDeclineRecurring FALSE

# Kaynak hesaba mail adresi atama
zmprov mcr "Toplanti Odasi A" zimbraCalResContactEmail [email protected]

zimbraCalResAutoAcceptDecline TRUE parametresi çok kullanışlı. Oda müsaitse otomatik kabul, doluysa otomatik red yapıyor. IT müdürü her reservasyon için onay vermek zorunda kalmıyor.

Departman Takvimi Oluşturma ve Paylaşma

Büyük bir kurumda departman takvimi çok işe yarıyor. İzinler, şirket tatilleri, departman toplantıları hepsini ortak bir takvimde tutabiliyorsunuz.

#!/bin/bash
# Departman takvimi oluşturma ve paylaşma scripti

DEPT_ACCOUNT="[email protected]"
DEPT_PASSWORD="GucluSifre123!"
ZIMBRA_ADMIN="[email protected]"
ZIMBRA_ADMIN_PASS="AdminSifresi"

# Önce hesabı oluştur
zmprov ca ${DEPT_ACCOUNT} ${DEPT_PASSWORD} 
    displayName "IK Departmanı Takvimi" 
    zimbraHideInGal TRUE

# Tüm IK ekibine takvim paylaşımı ver
IK_EKIBI=("[email protected]" "[email protected]" "[email protected]")
for KULLANICI in "${IK_EKIBI[@]}"; do
    zmprov mfg ${DEPT_ACCOUNT} account ${KULLANICI} 
        read write invite sendOnBehalfOf
    echo "Takvim paylaşımı verildi: ${KULLANICI}"
done

# Tüm şirkete sadece görüntüleme izni (isteğe bağlı)
# zmprov mfg ${DEPT_ACCOUNT} allusers "" read

Delegate Access ve “Send As” Yapılandırması

Yönetici-asistan senaryosunda en kritik kısım “Send As” yetkisi. Asistan, yöneticinin adına mail atmak istediğinde Zimbra’nın bunu doğru yorumlaması gerekiyor. Bunu hem server tarafında hem client tarafında ayarlamak gerekiyor.

Server tarafı (yukarıda zaten hallettik), client tarafı için ZWC’de şu adımlar:

Kullanıcı Preferences > Accounts > Add External Account yerine “Delegated Access” kullanılması gerekiyor. Ama bunu script ile yapmak daha temiz:

# Asistana delegate access verme
zmprov ma [email protected] zimbraPrefDelegatedSendSaveTarget sender

# Asistanın hesabına yönetici adresini görünür persona olarak ekleme
# Bu kısım ZWC üzerinden yapılıyor ama zimbraPref ile de zorlanabilir
zmprov ma [email protected] 
    +zimbraPrefFromAddress "[email protected]" 
    +zimbraPrefFromDisplay "Genel Müdür"

Burada zimbraPrefDelegatedSendSaveTarget parametresi önemli:

  • sender: Gönderilen mail asistanın “Sent” klasörüne kaydedilir
  • owner: Gönderilen mail yöneticinin “Sent” klasörüne kaydedilir
  • both: Her iki klasöre de kaydedilir
  • none: Hiçbirine kaydedilmez

Production’da genellikle both veya owner kullanıyorum. Yönetici ne gönderildiğini görmek istiyor, asistan da kendi sent klasörünü temiz tutmak.

Paylaşım İzinlerini Yönetme ve Sorun Giderme

Zamanla izin karmaşası oluşabiliyor. Kim kime ne izin vermiş, toplu görmek için:

# Belirli bir hesabın tüm paylaşımlarını listele
zmprov gfg [email protected]

# Belirli bir hesabın aldığı tüm paylaşımları listele
zmprov gg account [email protected]

# Tüm shared hesapları bul (hideInGal true olanlar)
zmprov -l gaa zimbraHideInGal TRUE | grep -v spam | grep -v ham

Sık karşılaştığım bir sorun: Kullanıcı shared folder’ı görebiliyor ama mail gönderemiyor. Bu genellikle sendAs izninin eksik olmasından kaynaklanıyor:

# Mevcut izinleri kontrol et
zmprov gfg [email protected]

# Eksik izni ekle
zmprov mfg [email protected] account [email protected] sendAs

# Yanlış verilen izni kaldır
zmprov rfg [email protected] account [email protected] write

Bir diğer yaygın sorun: Takvim daveti gönderildiğinde organizatör bilgisi yanlış görünüyor. Bu zimbraAllowFromAddress ile çözülüyor:

# Kullanıcının farklı adreslerden gönderim yapabilmesine izin ver
zmprov ma [email protected] 
    zimbraAllowFromAddress [email protected] 
    zimbraAllowFromAddress [email protected]

Outlook/IMAP İstemcilerinde Shared Mailbox

Zimbra Connector for Outlook (ZCO) kullanıyorsanız shared mailbox’ları eklemek oldukça kolay. ZWC’deki gibi “Open Other User’s Mailbox” seçeneğiyle yapılıyor.

IMAP üzerinden bağlanan istemciler için shared folder’lara erişim farklı çalışıyor. IMAP namespace kullanılıyor:

# IMAP namespace üzerinden shared folder erişimi
# Kullanıcının IMAP istemcisinde şu klasör yolu çalışır:
# Other Users/[email protected]/Inbox

# Bunu zorlamak için namespace ayarlarını kontrol et
zmprov gs mail.sirket.com zimbraImapEnabledCapability
zmprov gs mail.sirket.com zimbraImapExposeVersionOnBanner

Thunderbird gibi IMAP istemcilerinde shared folder’a erişmek için hesap ayarlarından “Subscribe” işlemi yapılması gerekiyor. Klasör listesinde Other Users altında paylaşılan hesaplar görünecektir.

Pratik Senaryo: Müşteri Hizmetleri Ortak Kutusu

Gerçek bir senaryo üzerinden gidelim. 15 kişilik müşteri hizmetleri ekibiniz var, hepsi [email protected] adresine gelen mailleri görecek ve yanıtlayacak. Ayrıca bir ekip takvimi paylaşacaklar.

#!/bin/bash
# Müşteri hizmetleri ortak kurulum scripti

MH_ACCOUNT="[email protected]"
MH_PASSWORD="MH_GucluSifre_2024!"

# 1. Hesabı oluştur
zmprov ca ${MH_ACCOUNT} ${MH_PASSWORD} 
    displayName "Müşteri Hizmetleri" 
    zimbraHideInGal TRUE 
    zimbraMailQuota 5368709120 
    description "Müşteri Hizmetleri Ortak Posta Kutusu"

# 2. Hesabın şifresinin süre dolmasını engelle
zmprov ma ${MH_ACCOUNT} zimbraPasswordMustChange FALSE
zmprov ma ${MH_ACCOUNT} zimbraAuthTokenLifetime 0

# 3. Ekip üyelerine yetki ver
MH_EKIBI=$(zmprov gdl [email protected] | grep zimbraMailForwardingAddress | awk '{print $2}')

for KULLANICI in $MH_EKIBI; do
    zmprov mfg ${MH_ACCOUNT} account ${KULLANICI} 
        sendAs write read
    echo "Yetki verildi: ${KULLANICI}"
done

# 4. Filtreleme kuralı ekle (opsiyonel - otomatik etiketleme)
zmprov ma ${MH_ACCOUNT} zimbraMailSieveScript '
require ["fileinto", "tag"];
if header :contains "Subject" ["[URGENT]"] {
    tag "acil";
    fileinto "Acil";
}
'

echo "Müşteri Hizmetleri ortak kutusu hazır."

Güvenlik ve Audit

Shared mailbox’larda kim ne zaman ne yaptı sorusu kritik. Zimbra audit log’ları bu konuda yardımcı oluyor:

# Audit log'larını kontrol et
grep "[email protected]" /opt/zimbra/log/audit.log | tail -50

# Belirli bir kullanıcının shared hesaba erişimlerini filtrele  
grep "[email protected]" /opt/zimbra/log/audit.log | 
    grep "[email protected]" | 
    awk '{print $1, $2, $3, $NF}'

# Gönderilen maillerde "on behalf of" takibi
grep "SendMsgRequest" /opt/zimbra/log/mailbox.log | 
    grep "[email protected]" | tail -20

Güvenlik açısından shared mailbox’lar için önerilerim:

  • Shared hesapların kendi oturumu açamaması için zimbraAccountStatus inactive yerine şifreyi çok karmaşık tutun ve web erişimini COS üzerinden sınırlayın
  • Düzenli olarak zmprov gfg ile kimlerin erişimi olduğunu denetleyin
  • Personel değişikliklerinde hemen erişim yetkilerini güncelleyin
  • Önemli departman hesapları için mail arşivleme politikası belirleyin

Sonuç

Zimbra’da shared mailbox ve takvim paylaşımı, doğru yapılandırıldığında kurumsal iletişim altyapısının gerçekten bel kemiği olabiliyor. zmprov mfg komutu bu işlemlerin merkezinde yer alıyor ve bir kez mantığını kavradığınızda geri kalanı yerine oturuyor.

En sık yapılan hatalar şunlar oluyor: sendAs iznini vermeden kullanıcıların neden gönderemediğini anlamamak, IMAP istemcilerinde namespace farklılıklarını görmezden gelmek ve personel değişikliklerinde eski izinleri temizlememek. Bu üç noktaya dikkat ederseniz shared mailbox sorunlarının büyük çoğunluğunu önlemiş olursunuz.

Takvim paylaşımı tarafında ise kaynak hesaplarını (toplantı odaları, araçlar vb.) kurmak organizasyonlarda inanılmaz verimlilik sağlıyor. Otomatik kabul/red özelliği sayesinde IT ekibi rezervasyon işlerinden tamamen sıyrılabiliyor. Bu özelliği henüz kullanmıyorsanız, hemen devreye almanızı tavsiye ederim.

Bir yanıt yazın

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