Zimbra Blog

Test Zimbra in OVF / VMX Format in VMware’s Virtual Appliance Marketplace

Posted in /etc, Zimbra Server by Jon Dybik on April 30th, 2010

Recently we updated our listing on VMware’s Virtual Appliance Marketplace with a trial version of ZCS Network Edition 6.0.6. We packaged it up in two formats – traditional VMX/VMDK and the Open Virtualization Format, OVF for short, using VMware Studio. The traditional VMX/VMDK package can be use with VMware’s desktop products like Workstation for Linux/Windows and Fusion for MAC. You can also go grab VMware Player for FREE and test drive the ZCS trial on either Linux or Windows. OVF PropertiesThe OVF package can be used “out-of-the-box” with VMware vSphere or imported to other VMware desktop and server products using the standalone OVF Tool 1.0 or vCenter Converter.

The OVF 1.0 format is a platform independent, DMTF standard that streamlines the application setup process in a virtual environment.  This makes deploying the ZCS trial fast and simple to testdrive the latest features.

  • You can deploy the ZCS trial OVF package right from a URL directly to VMware vSphere using the “Deploy OVF Template” wizard in the vSphere Client or the OVF Tool 1.0.
  • The vSphere Client reads the OVF template and auto-configures certain virtual machine settings as well as guides you through mapping the network and storage configurations into your target runtime environment.
  • You will also be prompted to answer runtime specific installation parameters like the ZCS server’s hostname and the admin username/password.

All of the captured input is used on “first boot” to automatically configure the ZCS trial as a unique running instance complete with an activated 15 day trial license! This is a good example of the collaboration that’s been happening between the Zimbra and vSphere teams and a sign of good things to come as we are busy building our Zimbra virtual appliance.

The Zimbra virtual appliance will be ready to ship later this year and will feature a

  • Simplified Admin experience
  • Expanded usage of OVF properties to further streamline the deployment process
  • New capabilities to simplify patch management, mailbox creation, and migration

For more information, you can check out the appliance RFEs in bugzilla.

UPDATE: You can now find this at http://www.zimbra.com/products/zimbra-appliance.html



Zimbra TCO Bests Microsoft Exchange in University of Pennsylvania Case Study

Posted in Community, Education, News, Partners by Greg Armanini on April 28th, 2010

In today’s climate IT departments are under a lot of pressure to cut costs yet maintain services that don’t compromise on features.  So it’s no surprise we hear more and more the questions, “How does Zimbra total cost-of-ownership (TCO) compare with Microsoft Exchange?”   In fact, it recently hit #3 on our popularity chart as organizations contemplate Exchange upgrades again (we’ll save the top two questions for another day).

Public field data typically shows Zimbra Collaboration Suite ahead of MS Exchange Server when licensing and hardware costs are compared for various on-premises deployments.   However, while licensing and hardware cost data is readily available, perhaps the most significant recurring cost components in the equation are less well documented — additional time spent administering servers and software and the high cost of support contracts.

This cost differential often gets hazy because most organizations do not closely log time spent on specific tasks, including software administration or escalated user support issues.  Instead, in most circles you simply hear something analogous to “my Exchange servers are really cranky.”   But how much valuable productivity are you actually losing?

It turns out at EDUCAUSE when we caught up with the University of Pennsylvania (Penn) they shared some great field data with us on this very topic from their own TCO case study.

Exchange Zimbra
Users 3,100 13,700
FTEs 3.2 2.2
User/FTE 969 6,227
Per User Cost $7.5 $3
Above: Penn admin resource distribution and resulting monthly per-user costs charged back to departments

According to Adam Preset,  an IT Technical Director in Information Systems & Computing (Penn’s central IT organization), Penn’s IT Services added Zimbra 18 months ago to provide departments across the campus a Web 2.0 option in addition to Microsoft Outlook and Exchange 2007 (Zimbra can share Active Directory, resources and free-busy times with Exchange).  Today their split-mode deployment consists of 3,100 Exchange users and 13,700 Zimbra users (each with grad students, faculty and employees) running equivalent feature sets (email, calendaring, sharing, mobile, etc).

Split-mode deployments are not uncommon (see Argonne National Labs), but in the case of Penn, the central IT staff’s administration time is closely logged on each system because they charge back time for service rendered to the other departments.   Combined with a single team managing both systems simultaneously in split-mode and you have a natural control for cost data.

Adam says they have found Zimbra takes significantly fewer man-hours to administer.  In absolute terms Exchange servers take 33% more effort and require one extra full-time headcount per year — even with 4.4 times more users on the Zimbra servers.

Here is a video where Adam discusses their deployment, cost methodology and why more users chose Zimbra over Exchange on campus:

Adam later noted, “to bring the Exchange user base up to Zimbra’s scale and provide the expected level of support we’d need to hire new administrators – probably two or more FTEs, which isn’t practical.”

He also added that common culprits impacting costs in the Microsoft deployment are Outlook client and PST data issues, more support needs on the desktop due to lack of adoption of Outlook Web Access (OWA), Exchange data restores and more frequent server downtime. Whereas advantages for Zimbra are easier overall server administration and fewer help desk incidents because so many users say they prefer the Zimbra AJAX Web Client over traditional desktop clients.

So what’s the key take-away?  Though every organization has different cost sensitivity; data points like this serve as gentle reminders not to forget the whole picture. While a license discount or storage price drop can be helpful for initial TCO calculation, the human capital component is key to understanding real long-term value!

Adam Preset spoke at EDUCAUSE Annual with Pam Buffington of Georgia Tech on “Implementing a Cost-Effective and User-Friendly E-Mail, Calendaring, and Collaboration System.”



Extending Zimbra with Server Extensions

Posted in Open Source, PowerTips - Admins, Zimbra Server by Vishal Mahajan on April 27th, 2010

Zimlets and the ability to extend the Zimbra Web Client is a pretty widely known capability. But did you know that Zimbra also has a framework that allows developers to extend Zimbra server-side functionality?

Zimbra Server Extensions provide a mechanism to add functionality to the server in lieu of modifying web.xml and other web server configuration files. By implementing a Server Extension, you can inject or in some cases, intercept, server-side functionality. Some examples include:

  • Handling authentication requests against a user store different than the built-in Zimbra LDAP user store. Server Extensions provide a way to “plug-in” your custom authentication mechanism.
  • Creating custom SOAP requests to augment the current Zimbra SOAP API.
  • Registering custom mime handlers for the processing of message mime components (i.e. body, message and multipart nodes).
  • Performing registration or “bootstrapping” of server-side components, such as the Microsoft Exchange Free/Busy resolver.

Getting Started

Writing an extension starts by implementing the com.zimbra.cs.extension.ZimbraExtension interface:

public interface ZimbraExtension {

    /**
     * Defines a name for the extension. It must be an identifier.
     * @return the extension name
     */
    public String getName();

    /**
     * Initializes the extension. Called when the extension is loaded.
     *
     * @throws ServiceException
     */
    public void init() throws ServiceException;

    /**
     * Terminates the extension. Called when the server is shut down.
     *
     */
    public void destroy();
}

To create your Extension:

  1. Write a MyZimbraExtension class that implements the ZimbraExtension interface.
  2. Create a JAR file (for example: myext.jar) and include the following attribute in the JAR manifest file:
    • Zimbra-Extension-Class: com.example.MyZimbraExtension
  3. Place the myext.jar into the {zimbra_install-dir}/lib/ext/{my-ext-dir} directory.

Below are a few examples, though not an exhaustive list, of how the Server Extension framework can be used:

Custom HTTP Handlers

A Server Extension can process HTTP GET/POST/OPTIONS requests by extending the com.zimbra.cs.extension.ExtensionHttpHandler abstract class and registering the subclass in the Extension init() method.

public class MyHttpHandler implements ExtensionHttpHandler {

    // the path under which MyHandler is registered
    public String getPath() {
        return "/myext/myhandler";
    }

    // override doGet/doPost/ doOptions as needed
    ...
}

and in MyZimbraExtension.init(), do the following:

com.zimbra.cs.extension.ExtensionDispatcherServlet.register(this, new MyHttpHandler());

This would result in processing of requests at http://{my-zimbra-server-url}/service/extension/myext/myhandler being delegated to the MyHttpHandler class.

Custom SOAP Requests

If an Extension needs to support extra SOAP requests, it can do so by implementing the com.zimbra.soap.DocumentService interface and registering custom SOAP requests & operations handlers from it.

public class MyDocumentService implements DocumentService {

    /**
     * Registers <code>DocumentHandler<code> instance with document dispatcher.
     */
    public void registerHandlers(DocumentDispatcher dispatcher) {
        dispatcher.registerHandler(HelloWorldOp.REQUEST_QNAME, new HelloWorldOp());
    }
}

and in MyZimbraExtension.init(), do the following:

com.zimbra.soap.SoapServlet.addService("SoapServlet", new MyDocumentService());

Custom Authentication

If your Zimbra deployment needs to authenticate user passwords from, for example, a “home grown” authentication system and not from LDAP (which is the out-of-the-box Zimbra solution), the Extension can do so by extending the com.zimbra.cs.account.auth.ZimbraCustomAuth abstract class.  The subclass would have to implement an authenticate() method to which the plain-text password is passed as one of the arguments.

Learn More

A detailed implementation document is available at ZimbraServer/docs/extensions.txt. Now that we’ve introduced the topic, stay tuned for more information on specific Server Extension implementation examples.