Zimbra Webmail Arayüzü Özelleştirme ve Tema Yönetimi

Zimbra kurulumu yapıp sistemi ayağa kaldırdığınızda karşılaştığınız o varsayılan arayüz, büyük ihtimalle kurumun marka kimliğiyle hiç örtüşmüyor. Logo yok, kurumsal renkler yok, login sayfasında şirket adı bile geçmiyor. Bu durum küçük bir estetik sorun gibi görünse de kurumsal kullanıcılar için “bu sistem bize mi ait?” sorusunu doğuruyor. Bu yazıda Zimbra’nın webmail arayüzünü nasıl özelleştireceğinizi, tema yapısını nasıl anlayacağınızı ve production ortamında güvenli bir şekilde değişiklikleri nasıl uygulayacağınızı adım adım ele alacağız.

Zimbra Tema Mimarisini Anlamak

Zimbra, tema sistemi için iki farklı yaklaşım kullanır: Skin sistemi ve zimlet tabanlı özelleştirmeler. Zimbra 8.x ve 9.x için /opt/zimbra/jetty/webapps/zimbra/skins/ dizini ana tema deposudur. Her tema bu dizin altında kendi klasörüyle yer alır.

Varsayılan gelen temalar şunlardır:

  • harmony: Modern görünümlü, Zimbra 8+ ile gelen ana tema
  • beach: Açık tonlu alternatif tema
  • lemongrass: Yeşil tonlarında tema
  • pebble: Nötr, kurumsal uygun tema
  • sand: Sıcak tonlu tema
  • sky: Mavi tonlarında tema

Özelleştirme yaparken asla bu mevcut temaları doğrudan düzenlemeyin. Zimbra güncellemelerinde bu dosyalar ezilir ve bütün değişiklikleriniz gider. Bunun yerine kendi temanızı oluşturun.

Tema yapısı aşağıdaki şekildedir:

/opt/zimbra/jetty/webapps/zimbra/skins/
└── kurumsal_tema/
    ├── _base/
    │   ├── imgs/
    │   └── skin.properties
    ├── dwt.css
    ├── skin.css
    └── manifest.xml

Özel Tema Oluşturma

En pratik yol, mevcut bir temayı kopyalayıp üzerine inşa etmektir. Ben genellikle “harmony” temasını baz alıyorum çünkü en güncel CSS yapısını barındırıyor.

# zimbra kullanıcısına geç
su - zimbra

# Tema dizinine git
cd /opt/zimbra/jetty/webapps/zimbra/skins/

# Harmony'i kopyala
cp -r harmony kurumsal_tema

# İzinleri kontrol et
ls -la kurumsal_tema/

Kopyalama işlemi tamamlandıktan sonra manifest.xml dosyasını düzenlemeniz gerekiyor. Bu dosya Zimbra’ya temanın varlığını bildiriyor.

vi /opt/zimbra/jetty/webapps/zimbra/skins/kurumsal_tema/manifest.xml

Dosyanın içeriğini aşağıdaki gibi güncelleyin:

<skin name="kurumsal_tema">
    <version>1.0</version>
    <description>Kurumsal Özel Tema</description>
    <author>IT Departmanı</author>
    <extends>harmony</extends>
</skin>

Login Sayfasını Özelleştirme

Login sayfası özelleştirmesi kullanıcıların ilk gördüğü şey olduğu için genellikle yöneticilerin önceliği burada olur. Zimbra’nın login sayfası /opt/zimbra/jetty/webapps/zimbra/ altındaki template dosyalarından üretilir, ancak skin sistemi üzerinden çok daha güvenli bir yol var.

Login sayfasına ait CSS’i bulmak için:

find /opt/zimbra/jetty/webapps/zimbra/skins/kurumsal_tema/ -name "*.css" | xargs grep -l "login" 2>/dev/null

skin.css dosyasında login container için aşağıdaki gibi değişiklikler yapabilirsiniz:

/* Login arka plan rengi */
.LoginScreen {
    background-color: #1a3a5c !important;
    background-image: url("../imgs/login_bg.jpg") !important;
    background-size: cover !important;
    background-position: center !important;
}

/* Login kutusu */
.LoginScreen .center_box {
    background-color: rgba(255, 255, 255, 0.95) !important;
    border-radius: 8px !important;
    box-shadow: 0 4px 20px rgba(0,0,0,0.3) !important;
}

/* Buton rengi */
.ZButton.ZWidgetImpl.ZLoginButton {
    background-color: #1a3a5c !important;
    border-color: #0d2a45 !important;
    color: #ffffff !important;
}

CSS değişikliklerinin etkili olabilmesi için önbelleği temizlemeniz gerekiyor:

su - zimbra -c "zmcontrol stop"
su - zimbra -c "zmcontrol start"

Ya da sadece jetty’yi yeniden başlatmak yeterli olabilir:

su - zimbra -c "zmmailboxdctl restart"

Logo Değiştirme

Kurumsal logo değiştirme işlemi en sık sorulan sorulardan biri. Zimbra’da logolar tema dizinindeki imgs/ klasöründe bulunuyor. Değiştirmeniz gereken başlıca dosyalar:

  • AppBanner.png: Ana uygulama banner logosu (genellikle 300×50 px)
  • LoginBanner.png: Login sayfasında görünen logo (genellikle 300×100 px)
  • favicon.ico: Tarayıcı sekmesinde görünen ikon
# Logo dosyalarını görüntüle
ls -la /opt/zimbra/jetty/webapps/zimbra/skins/kurumsal_tema/_base/imgs/

# Kendi logonuzu kopyalayın (önce uygun boyutta hazırlayın)
cp /tmp/sirket_logo.png /opt/zimbra/jetty/webapps/zimbra/skins/kurumsal_tema/_base/imgs/AppBanner.png
cp /tmp/sirket_logo_login.png /opt/zimbra/jetty/webapps/zimbra/skins/kurumsal_tema/_base/imgs/LoginBanner.png

# Favicon
cp /tmp/favicon.ico /opt/zimbra/jetty/webapps/zimbra/img/logo/

# Dosya sahipliğini zimbra kullanıcısına ver
chown -R zimbra:zimbra /opt/zimbra/jetty/webapps/zimbra/skins/kurumsal_tema/

Logo boyutlarını göz ardı etmeyin. Orantısız bir logo profesyonel görünümü hemen bozuyor. ImageMagick ile boyutlandırma yapabilirsiniz:

# ImageMagick kurulu değilse
yum install ImageMagick -y   # RHEL/CentOS için
apt-get install imagemagick -y  # Debian/Ubuntu için

# Logo boyutlandırma
convert /tmp/sirket_logo.png -resize 300x50 /tmp/sirket_logo_resized.png

# PNG optimizasyonu (isteğe bağlı ama önerilen)
convert /tmp/sirket_logo_resized.png -strip -quality 85 /opt/zimbra/jetty/webapps/zimbra/skins/kurumsal_tema/_base/imgs/AppBanner.png

Admin Console Üzerinden Tema Atama

Özel temanızı oluşturduktan sonra kullanıcılara atamak için Admin Console’u kullanabilirsiniz. Ancak komut satırından yapmak çok daha hızlı ve script edilebilir.

# Mevcut domain için varsayılan temayı ayarla
su - zimbra -c "zmprov md sirket.com.tr zimbraSkinLogoURL 'https://mail.sirket.com.tr'"

# Belirli bir kullanıcı için tema ata
su - zimbra -c "zmprov ma [email protected] zimbraZimletSkinColor '#1a3a5c'"

# Domain genelinde varsayılan skin ayarla
su - zimbra -c "zmprov md sirket.com.tr zimbraWebClientSkin kurumsal_tema"

# CoS (Class of Service) üzerinden toplu atama
su - zimbra -c "zmprov mc default zimbraWebClientSkin kurumsal_tema"

Değişikliği doğrulamak için:

su - zimbra -c "zmprov gd sirket.com.tr zimbraWebClientSkin"

Zimlet ile Gelişmiş Özelleştirmeler

Bazı özelleştirmeler skin sistemiyle mümkün olmuyor. Örneğin login sayfasına özel bir duyuru mesajı eklemek, footer’a kurumsal iletişim bilgilerini yerleştirmek ya da belirli menü öğelerini gizlemek için zimlet geliştirmek gerekiyor.

Zimlet yapısı temel olarak şöyle:

mkdir -p /tmp/com_sirket_custom_zimlet
cd /tmp/com_sirket_custom_zimlet

# zimlet tanım dosyasını oluştur
cat > com_sirket_custom_zimlet.xml << 'EOF'
<zimlet name="com_sirket_custom_zimlet" version="1.0" 
        description="Kurumsal Özelleştirmeler" 
        label="Kurumsal UI">
    <include>com_sirket_custom_zimlet.js</include>
    <includeCSS>com_sirket_custom_zimlet.css</includeCSS>
</zimlet>
EOF

# JavaScript dosyası
cat > com_sirket_custom_zimlet.js << 'EOF'
function com_sirket_custom_zimletHandlerObject() {}
com_sirket_custom_zimletHandlerObject.prototype = new ZmZimletBase();
com_sirket_custom_zimletHandlerObject.prototype.constructor = com_sirket_custom_zimletHandlerObject;

com_sirket_custom_zimletHandlerObject.prototype.init = function() {
    // Toolbar'a logo ekle
    var appName = appCtxt.getCurrentAppName();
    if (appName) {
        this._addCompanyInfo();
    }
};

com_sirket_custom_zimletHandlerObject.prototype._addCompanyInfo = function() {
    var footerEl = document.createElement('div');
    footerEl.id = 'company_footer';
    footerEl.style.cssText = 'position:fixed;bottom:0;width:100%;background:#1a3a5c;color:#fff;text-align:center;padding:5px;font-size:12px;z-index:9999;';
    footerEl.innerHTML = 'Kurumsal Mail Sistemi | BT Departmanı: 0212 XXX XX XX';
    document.body.appendChild(footerEl);
};
EOF

# Zimlet paketini oluştur
cd /tmp
zip -r com_sirket_custom_zimlet.zip com_sirket_custom_zimlet/

Zimlet’i sisteme yüklemek için:

# Zimlet deploy et
su - zimbra -c "zmzimletctl deploy /tmp/com_sirket_custom_zimlet.zip"

# Zimlet'i aktifleştir
su - zimbra -c "zmzimletctl acl com_sirket_custom_zimlet +zimlet"

# Belirli CoS için aktifleştir
su - zimbra -c "zmzimletctl acl com_sirket_custom_zimlet zimbraId COID +zimlet"

# Önbelleği temizle
su - zimbra -c "zmprov flushCache zimlet"

Giriş Sayfası Başlığı ve Footer Özelleştirme

Bazı kurumlar KVKK uyarısı veya kullanım politikası metnini login sayfasında göstermek istiyor. Bu iş için Zimbra’nın zimbraWebClientLoginMessage özelliği tam anlamıyla biçilmiş kaftan:

# Login sayfasına uyarı mesajı ekle
su - zimbra -c "zmprov md sirket.com.tr zimbraWebClientLoginMessage 
'Bu sistem yalnızca yetkili kullanıcılara aittir. Tüm oturumlar kayıt altına alınmaktadır. 
KVKK kapsamında bilgileriniz işlenmektedir.'"

# Login sayfasındaki uygulama adını değiştir
su - zimbra -c "zmprov md sirket.com.tr zimbraWebClientTitle 'Kurumsal Mail - Şirket Adı'"

# Login sayfası logosunu URL ile belirle (CDN kullanımı için uygun)
su - zimbra -c "zmprov md sirket.com.tr zimbraSkinLogoURL 'https://www.sirket.com.tr'"
su - zimbra -c "zmprov md sirket.com.tr zimbraSkinLogoLoginBanner 'https://cdn.sirket.com.tr/mail-logo.png'"
su - zimbra -c "zmprov md sirket.com.tr zimbraSkinLogoAppBanner 'https://cdn.sirket.com.tr/mail-logo-small.png'"

Bu yöntem tema dosyalarına dokunmadan sadece LDAP üzerinden değişiklik yaptığı için güncellemelerden etkilenmiyor. Birden fazla domain yönetiyorsanız her domain için ayrı değer atayabiliyorsunuz ki bu gerçekten çok işe yarıyor.

Renk Şeması Özelleştirme

Harmony temasında renk değişkenleri skin.properties dosyasında tanımlı. Bu dosyayı düzenleyerek tüm renk şemasını tek yerden kontrol edebilirsiniz:

vi /opt/zimbra/jetty/webapps/zimbra/skins/kurumsal_tema/_base/skin.properties

Dosya içeriğinde şu değişkenleri arayın ve kurumsal renklerinizle değiştirin:

# Ana renk paleti
baseBG=1a3a5c
baseS=0d2a45
baseHL=2a5a8c
baseText=ffffff
baseShadow=000000

# Sekme renkleri
activeTabBG=2a5a8c
activeTabFG=ffffff
inactiveTabBG=e8edf2
inactiveTabFG=333333

# Toolbar
toolbarBG=1a3a5c
toolbarFG=ffffff

# Link renkleri
linkColor=2a5a8c
visitedLinkColor=1a3a5c

Değişiklik sonrasında önbelleği temizlemeyi unutmayın:

su - zimbra -c "zmprov flushCache skin"
su - zimbra -c "zmprov flushCache template"

Özelleştirmeleri Yedekleme ve Güncelleme Stratejisi

Zimbra güncellemesi yaptığınızda skin dizini etkilenebilir. Bunu yönetmek için basit bir yedekleme ve geri yükleme scripti hazırlamanızı önerim:

#!/bin/bash
# /usr/local/bin/zimbra-skin-backup.sh

SKIN_NAME="kurumsal_tema"
BACKUP_DIR="/opt/zimbra-backups/skins"
DATE=$(date +%Y%m%d_%H%M%S)
SKIN_PATH="/opt/zimbra/jetty/webapps/zimbra/skins"

mkdir -p $BACKUP_DIR

# Güncel temayı yedekle
tar -czf "$BACKUP_DIR/${SKIN_NAME}_${DATE}.tar.gz" 
    -C "$SKIN_PATH" "$SKIN_NAME"

# Son 10 yedeği sakla, eskilerini sil
ls -t "$BACKUP_DIR/${SKIN_NAME}_"*.tar.gz | tail -n +11 | xargs -r rm

echo "[$DATE] Skin yedekleme tamamlandı: ${SKIN_NAME}_${DATE}.tar.gz"

# Zimbra güncellemesinden sonra uygulanacak geri yükleme
# tar -xzf "$BACKUP_DIR/${SKIN_NAME}_TARIH.tar.gz" -C "$SKIN_PATH"
# chown -R zimbra:zimbra "$SKIN_PATH/$SKIN_NAME"
# su - zimbra -c "zmprov flushCache skin"

Script’i cron’a ekleyin:

chmod +x /usr/local/bin/zimbra-skin-backup.sh

# Her gece saat 02:00'de çalışsın
echo "0 2 * * * root /usr/local/bin/zimbra-skin-backup.sh >> /var/log/zimbra-skin-backup.log 2>&1" >> /etc/crontab

Çoklu Domain için Tema Yönetimi

Aynı Zimbra sunucusunda birden fazla domain host ediyorsanız ve her domain için farklı görsel kimlik gerekiyorsa, her domain için ayrı skin oluşturabilirsiniz:

# İkinci domain için ayrı tema
cp -r /opt/zimbra/jetty/webapps/zimbra/skins/kurumsal_tema 
      /opt/zimbra/jetty/webapps/zimbra/skins/ikinci_sirket_tema

# İkinci domain için logolar ve renkler güncellenir
# Ardından domain bazlı atama:
su - zimbra -c "zmprov md ikincisite.com.tr zimbraWebClientSkin ikinci_sirket_tema"
su - zimbra -c "zmprov md ikincisite.com.tr zimbraWebClientTitle 'İkinci Şirket Mail'"
su - zimbra -c "zmprov md ikincisite.com.tr zimbraSkinLogoLoginBanner 
    'https://cdn.ikincisite.com.tr/mail-logo.png'"

# Önbelleği temizle
su - zimbra -c "zmprov flushCache skin"
su - zimbra -c "zmmailboxdctl restart"

Bu yapı büyük holding yapılarında ya da ISP’lerin Zimbra ile sağladığı white-label mail hizmetlerinde çok kullanışlı oluyor. Tek sunucu üzerinde onlarca domain’e ayrı kurumsal görünüm verebiliyorsunuz.

Sık Yapılan Hatalar ve Çözümleri

Özelleştirme yaparken karşılaşılan klasik sorunlar ve çözümleri:

  • Değişiklikler görünmüyor: Tarayıcı önbelleği ve Zimbra önbelleği ayrı şeyler. zmprov flushCache komutuyla Zimbra tarafını, Ctrl+Shift+R ile tarayıcı tarafını temizleyin.
  • Logo bozuk görünüyor: PNG dosyasındaki transparan katman bazı tarayıcılarda sorun çıkarıyor. ImageMagick ile flatten seçeneğiyle dönüştürün.
  • CSS değişiklikleri kısmen etkileniyor: !important direktifini kullandığınızdan emin olun, Zimbra’nın kendi CSS’i çok katmanlı.
  • Zimlet yüklemiyor: zmzimletctl status ile zimlet durumunu kontrol edin, XML syntax hatası olabilir.
  • Güncelleme sonrası tema kayboluyor: Özel tema klasörünüzün /opt/zimbra/jetty_base/ altına değil jetty/webapps/ altına oluşturulduğundan emin olun. Zimbra 9+ sürümlerinde dizin yapısı değişmiş olabilir.
# Zimlet durumunu kontrol et
su - zimbra -c "zmzimletctl listZimlets"

# Önbellek temizleme sırası
su - zimbra -c "zmprov flushCache skin"
su - zimbra -c "zmprov flushCache locale"
su - zimbra -c "zmprov flushCache template"
su - zimbra -c "zmprov flushCache zimlet"

Sonuç

Zimbra arayüz özelleştirmesi ilk bakışta karmaşık görünse de mantığını bir kez kavrayınca oldukça sistematik bir yapıya sahip olduğunu görüyorsunuz. Önemli olan nokta şu: asla orijinal tema dosyalarını düzenlemeyin, her zaman kendi kopyanızı oluşturun. zmprov üzerinden yapılan değişiklikler (logo URL’si, başlık, login mesajı gibi) en güvenli yol çünkü güncellemelerden etkilenmiyor. Skin tabanlı değişiklikler için ise güncelleme öncesinde mutlaka yedek alın ve bir geri yükleme scriptiniz hazır olsun.

Çoklu domain senaryolarında domain bazlı skin ataması güçlü bir araç. Holding yapısındaki şirketler ya da hosting sağlayıcılar bu özelliği kullanarak tek Zimbra sunucusunu onlarca farklı kurumsal kimliğe sahip organizasyona hizmet verebilir hale getiriyor. Zimlet geliştirme ise skin sisteminin yetmediği noktalarda devreye giriyor; ancak production’a atmadan önce mutlaka test ortamında deneyin çünkü hatalı bir zimlet tüm webmail arayüzünü bozabilir.

Son olarak, her özelleştirmeyi belgelendirin. Altı ay sonra bu değişiklikleri kim yaptı, neden bu renkler seçildi, hangi dosyalar değiştirildi gibi sorularla boğuşmamak için değişiklik tarihi ve gerekçesiyle birlikte basit bir dokümantasyon tutmak hayat kurtarıyor.

Bir yanıt yazın

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