Zimbra说明文档.docx
《Zimbra说明文档.docx》由会员分享,可在线阅读,更多相关《Zimbra说明文档.docx(42页珍藏版)》请在冰豆网上搜索。
Zimbra说明文档
Zimbra技术说明文档
文档版本号:
V1.0(初稿)
版本历史
版本
日期
内容
作者
备注
1.0
2011-11-28
初稿
史明松
目录
1.Zimbra概述3
1.1.Zimbra是什么?
3
1.2.Zimbra的特点4
1.2.1.最终用户的界面预览4
1.2.2.后台管理的界面预览8
1.2.3.用户功能12
1.2.4.管理功能14
2.Zimbra技术概览16
2.1.内部总体架构17
2.2.系统组件说明17
2.3.组件之间协作关系18
2.4.Zimbra软件包说明19
2.5.Zimbra扩展性20
3.Zimbra接口说明21
3.1.Zimlet可插拔技术21
3.2.Preauth认证登录接口23
3.3.ZimbraREST接口27
3.4.ZimbraSOAP接口29
4.Zimbra组件和服务详细说明29
4.1.LDAP目录服务29
4.2.Zimbra源码组件分析31
5.Zimbra基于win32下的源码安装32
6.Zimbra更多参考说明35
1.Zimbra概述
1.1.Zimbra是什么?
Zimbra的核心产品是Zimbra协作套件(ZimbraCollaborationSuite,简称ZCS)。
它的核心功能是电子邮件和日程安排服务器,当然还包括许多其它的功能,就象是下一代的微软Exchange。
在电子邮件和日程安排之外,它还提供文档存储和编辑、即时消息以及一个利用获奖技术开发的全功能的管理控制台。
ZCS同时也提供移动设备的支持,以及与部署于Windows、Linux或苹果操作系统中的桌面程序的同步功能。
Zimbra公司的主要产品有两个,分别是ZimbraCollabrationSuite和ZimbraDesktop。
ZimbraCollabrationSuite,即“Zimbar协作套件”,简称ZCS。
ZCS的功能类似于Exchange,分为网络版(NetworkEdition,简称NE)和开源版(OpenSourceEdition,简称FOSS)两个细分版本。
ZimbraDesktop,即Zimbra桌面程序,简称ZD。
ZD的功能相当于Outlook。
Zimbra的开源模式属于“OpenCore”,即核心的部分采用“开源+免费”模式,但一些面向企业的功能则采用“闭源+收费”模式。
FOSS是ZCS的开源版本。
该版本拥有网络版本80%以上的功能,可以很好地独立运行,能够满足大部分企业的的需要。
FOSS在ZimbraPublicLicense(ZPL)协议下发布;该协议来源于CommonPublicLicense(CPL)和MozillaPublicLicense(MPL)。
1.2.Zimbra的特点
1.2.1.最终用户的界面预览
会话模式的邮件列表
根据邮件中的地址显示浮动地图
邮件等内容的复杂搜索条件输入
地址簿管理
日程安排的主界面
多人参加的约会的人员状态
日程共享
任务列表
任务详细内容
1.2.2.后台管理的界面预览
后台管理的主界面
服务类别(ClassOfService)属性设置
分发列表设置
域管理
新建账户向导
Zimlet管理
1.2.3.用户功能
高效易用的电子邮件功能:
1)Zimbra的用户功能指的是Web客户端,即ZimbraWebClient,简称ZWC。
2)ZWC是一个基于AJAX技术的富客户端,支持电子邮件、日历、地址簿、文档、即时通讯、公文包、任务,甚至在线的电子表格程序。
3)ZWC很容易被扩展。
扩展通过称为Zimlet的技术来实现。
Zimlet可以修改页面的而已、添加功能等。
4)当邮件的数量越来越多时,ZWC可以帮您更有效地组织和管理电子邮件:
•用会话视图来隐藏关联邮件中的多余的邮件
•按照规则自动给电子邮件打上标签,如来自重要人物的邮件
•自动将旧的邮件移动到指定的文档夹中
5)方便地共享收件箱及其它文件夹:
比如希望别人代管你的收件箱或允许一些人员共享一个销售相关的资料,您可以很方便将一个文件夹共享出来。
根据您的需要,共享接受者可以是只能读取,也可全部控制某个特定的文件夹。
6)业界领先的搜索功能:
你可以针对所有保存在服务器上的数据或文件,如电子邮件、联系人、日历、文档建立快速、高效和精确的搜索,并且:
•将搜索条件保存为虚拟文件夹,以保持自动更新
•用搜索构建框来方便地根据日期、域名、关键字等建立搜索条件。
7)可以用鼠标快速地拖拽邮件来重新进行组织,比使用上下文菜单更为有效:
•将邮件拖动到指定的文件夹中
•应用一个标签
•启动一个Zimlet的工作流
强大的Web日历和群件:
1)与客户端程序功能相同的日历,ZWC提供了与传统客户端功能相同的日历功能,如:
•在天、周、工作周、月视图之间快速切换
•拖动一个事件或缩放一个事件来重新定义时间
•在事件中输入富文本作为备注;为会议添加附件
•方便是查询其他人员、房间或资源的闲忙状态
•基于全局通讯簿的与会人员地址自动完成
2)群组日历及闲忙状态查看
ZWC日历支持多个不同的日历显示,以不同的颜色重叠来表示。
这些不同的日历可能是群组或其他同事的日历。
每一个都可以单独地开启或关闭显示。
当您邀请别人参加会议时,可以看到他的闲忙状态。
您也可看到其它资源,如房间在指定时间段内的闲忙状态。
3)与MicrosoftExchange的互操作性
Zimbra还可以和MicrosoftExchange服务器进行用户闲忙状态的交互,比如在ZWC日历中显示Exchange服务器中的用户的状态。
另外,Exchange服务器中的用户可以直接将Zimbra用户加入到会议或约会中。
1.2.4.管理功能
Zimbra的管理功能通过两种方式来实现,一是基于Web的管理控制台,二是命令行工具。
–绝大多数的日常管理可以在管理控制台中完成,如管理账号、查看队列等
–有些不常用的或比较消耗资源的操作可以用命令行工具来完成,如批量生成账号等。
1)Zimbra还提供一些工具,用来从Exchange/Domino等其它的群件系统来迁移用户和数据
运行在单独的服务器端口上,使用与前台客户端相同的AJAX技术。
可以在管理控制台完成以下工作:
–管理服务类别
–建立或修改账号
–建立或修改分发列表
–管理电子邮件队列
–查看或管理系统的状态
–管理Zimlet的部署
2)命令行工具,Zimbra提供超过30个命令行工具,这些命令行工具可以用来:
–批量管理账号
–启动或停止服务
–安装安全证书
–维护与服务器相关的本地配置信息
最常用的命令行工具可能是zmprov。
这个命令可以用来修改在管理控制台中看到的任何对象的属性,甚至是一些无法在管理控制台中完成的任务。
3)从其它系统迁移,Zimbra针对主流的群件系统、邮件系统提供了迁移工具,如Exchange、Domino、GroupWise以及标准的POP3等。
2.Zimbra技术概览
Zimbra被设计成一个端到端的群件解决方案,有良好地可伸缩性和可靠性。
整体架构上是依托于
一些知名的开放的技术和标准。
Zimbra的架构在技术上的优势包括:
•集成了很多开源软件,包括Linux,Jetty,Postfix,MySQL,OpenLDAP。
•使用业界标准的开放协议,包括SMTP,LMTP,SOAP,XML,IMAP,POP。
•一些时髦的技术,包括Java,JavaScriptthinclient,DHTML。
•水平的扩展性。
因为每台服务器都所有自己的数据存储、消息存储及账号,所以当你要扩充整个
系统的处理能力时,只需添加更多的服务器即可。
2.1.内部总体架构
2.2.系统组件说明
名称
说明
Core
基础部分,主要包括一些公用的类库、脚本等
LDAP
目录服务器,用于存储系统配置及用户数据
MTA
邮件传输代理
Store
邮箱服务器,是邮件存储、访问的核心组件
SNMP
系统状态收集
Proxy
代理,用于构建复杂的系统架构
Spell
拼写检查
Logger
日志组件,基于MySQL数据库
Memcached
同上,用于集群环境
在小型的部署环境中,上述组件可以被安装到同一台服务器上,但在复杂的、大型的部署中,通常会被分散到不同的服务器上以提高处理能力。
除了Zimbra自行开发的组件外,Zimbra中还包括如下开源软件:
•Apache,Web服务器,用于拼写检查服务器
•Jetty,应用服务器,Zimbra的邮箱服务运行于此
•Postfix,邮件传输代理
•MySQL,数据库
•Lucene,开源的全文检索引擎
•ClamAV,开源的防病毒引擎
•SpamAssassin,开源的反垃圾邮件引擎
•Amavisd-new,连接MTA和其它的安全组件
•James/Sieve,邮件过滤规则
•Nginx,HTTP/SMAP/IMAP代理
•Memcached,内存对象复制
2.3.组件之间协作关系
2.4.Zimbra软件包说明
ZCS包括如下应用程序包:
ZimbraCore
包括核心的类库、实用工具、监控工具和基本的配置文件
ZimbraLDAP
ZCS使用开源的OpenLDAP作为目录服务,实现用户身份验证功能。
每个账号都有一个唯一的邮箱ID作为账号的主要身份编号。
ZCS中使用的OpenLDAP已经经过定制。
ZimbraMTA
Postfix是一个开源的MTA程序,通过SMTP协议接收邮件,并通过LMTP协议将邮件传递到合适的Zimbra邮箱服务器中。
ZimbraMTA包中还包括防病毒软件和反垃圾邮件软件。
ZimbraStore(邮箱服务器)
包括了邮箱服务器需要的各个组件,包括Jetty,一个开源的Servlet容器。
在ZCS中,邮箱服务器被称作mailboxd。
每个账号只能在一个邮箱服务器中存在;每个账号都会对应一个邮箱,其中包括所有的邮件和附件。
邮箱服务器中包括如下组件:
A、数据存储
是一个MySQL数据库,内部的邮箱ID与用户账号相关联。
数据存储将邮箱ID与用户的OpenDLAP账号进行映射。
数据存储包括每个用户的标签定义、邮件夹、日程安排、联系人,同时也包括每封邮件的状态、所在邮件夹等。
B、消息存储
消息存储是用来存放邮件及附件的。
消息以MIME格式存放。
有多个收件人的邮件,在消息存储中只存放一份
C、索引存储
索引和搜索技术由Lucene提供。
索引文件基于单个邮箱。
每个服务器都有单独的数据存储、邮件存储和索引存储。
当新邮件到达时,服务器会安排一个新的线程来对邮件做索引。
Zimbr-SNMP
非必须安装。
如果你决定使用它来做监控,建议在每种服务器(邮箱服务器、LDAP、MTA)上都安装。
Zimbra使用swatch查看syslog输出生成SNMP信号。
ZimbraLogger
可选择性地安装于一台邮箱服务器上。
这个组件用于syslog的聚合和报表。
如果未安装,则无法在管理控制台中看到服务器的统计信息。
ZimbraSpell
可选择性安装。
它是一个开源的拼写检查工具,用在ZWC中。
如果此包安装了,Zimbra-apache也会被安装。
ZimbraProxy
可选择性安装。
使用代理服务器可以将同一个域名的邮箱分散到不同的服务器上。
ZimbraMemcached
Memcache是一个与代理相关的包,当代理包被安装时,它也会被安装。
运行代理服务器的必须使用Memcached,多台代理可使用同一台Memcached服务器。
2.5.Zimbra扩展性
Zimbra具有较好的扩展性。
扩展点有如下三个:
1.服务器端的Extension
增加服务器端的SOAP响应点来增强服务器的功能
2.客户端的Zimlet
向ZWC客户端中添加、替换各类功能,如URL识别、地址与地图映射等
3.服务器端的组件替换
服务器端的一些JAVA组件,如用户管理模块、索引管理模块可以进行替换
3.Zimbra接口说明
3.1.Zimlet可插拔技术
Zimlet是为了将第三方信息和内容与ZimbraWebClient的功能进行集成而开发的小型程序。
Zimlet可使您在邮件中使用不同的内容类型,并与之互动。
●单击邮件中的URL后,您便可启动一个浏览器窗口,前往该URL。
将鼠标悬停在URL上,便能以预览方式看网站内容。
●右键单击一个电话号码后,即可从所用计算机的softphone(如Skype或Cisco的VOIP)拨号。
●右键单击邮件中的一个日期,便可看到您的效率手册,并可在不离开邮件的情况下安排会议。
右键单击一个姓名、地址或电话号码,即可更新您的地址簿。
●窗格中可能还有其他可用的Zimlet。
备注:
如果您的窗格中没有Zimlet,则说明您的系统管理员已将其停用。
Zimlet可插拔技术
ZimletFiles
下面将介绍的各种资源和文件,zimlet的一部分。
一个zimlet可以包括一个XMLZimlet定义文件(例如com_zimbra_test.xml)。
这是zimlet信息,如名称和版本介绍
文件
必须/可选
描述
{zimlet-name}.xml
Required
这是Zimlet定义文件和指定zimlet的行为。
这个文件是为所有zimlets需要。
zimletXML元素的更多信息,请参阅ZimletDefinitionFileReference获取更多的xml信息。
*.js
Optional
支持JavaScript文件(“JS”)。
*.jsp
Optional
支持JavaServer页面(“JSP”)文件。
有关详细信息,请参阅Java&JSP。
*.jar
Optional
支持Java档案文件(“JAR文件”)。
有关详细信息,请参阅Java&JSP。
*.css
Optional
支持CSS文件。
{zimlet-name}.properties
Optional
资源属性文件zimlet。
这些资源用于国际化和本地化zimlets。
有关详细信息,请参阅Internationalization。
config_template.xml
Optional
这是Zimlet配置文件是用来配置zimlet属性,如“allowedDomains”,有关详细信息,请参阅ZimletConfigurationFile,允许域的更多信息请参阅ProxyServletSetup。
ZimletAPIs
有不同的ZimletAPI组建提供开发,在这个基础上,尽量让你的Zimlet和可利用的API相结合。
XMLAPI
XMLAPI是由两部分组成:
ZimletDefinitionFile
ZimletConfigurationFile
仅仅根据定义文件,你可以完成很多。
例如,您可以执行的内容zimlets,构建上下文菜单,使您的zimlet出现一个面板项目,并在一般情况下,完成与外部服务的基本相互作用(通过标签)。
但有多少定制和ZimbraWeb客户端的交互,zimlet是可以有限制的。
此外,还有些限定的调试。
对于任何zimlet希望目前与ZimbraWeb客户端(例如注入按钮,制作zimlet应用程序选项卡),这是当你开始利用与XMLAPI的JavaScriptAPI自定义对话框或先进的互动。
所有zimlets,至少,必须包括一个基本的定义文件。
zimletXML元素和语法的更多信息,可参阅ZimletDefinitionFileReference
JavaScriptAPI
Zimlets主要是用JavaScript编写的。
使用的JavaScriptAPI的XMLAPI,允许你写的真的很强大zimlets。
出于某种目的,可以使用的XMLAPI(如创建一个面板项目,上下文菜单等)和使用JavaScriptAPI从这些项目中的事件做出反应。
更多详细信息请参阅JavaScriptAPIs。
SOAPAPI
Zimbra公开了一个SOAP(简单对象访问协议)与Zimbra服务器API进行交互。
使用SOAP,数据从服务器一个给定的邮箱的服务器可以发送获取,(例如,创建一个邮件或文件夹)。
Zimbra的SOAPAPI为zimlet调用的例子可以发现在Examples>SOAPAPIZimlets.
Zimbra的SOAPAPI命令的一个更详细的说明中可以找到ZimbraServer/docs/soap.txt.
详细接口参见官方英文文档:
http:
//
3.2.Preauth认证登录接口
Preauth认证,是一种机制,担保一个可信的第三方用户的身份。
例如,如果用户已经到由首页登录进入电子邮件应用程序,他们不应该被再次提示输入自己的密码。
可以通过邮件链接点击,然后将验证在URL中传递的数据和创建认证令牌(Zimbra的标准机制,以确定用户重定向到一个特殊的URL地址),保存在一个cookie,邮件应用程序将用户重定向。
第三方通过一个共享密钥和Zimbra取得联系。
认识到这一点的关键,第三方指定所需的用户名,时间戳(以确保请求是“新的”),一个可选的到期时间,然后计算出一个数据,使用的密钥的SHA-1的HMAC。
服务器使用提供的数据,其关键,以验证它匹配在请求中发送的HMAC计算的HMAC。
如果是这样,服务器将构建一个auth令牌,它保存在一个cookie,和电子邮件应用程序将用户重定向。
为了为preauth启用域,你需要运行的zmprov命令,并创建一个密钥:
prov>gdpak
preAuthKey:
4e2816f16c44fab20ecdee39fb850c3b0bb54d03f1d8e073aaea376a4f407f0c
prov>
有两个接口。
一个接口是基于URL,易于集成。
其他接口是基于SOAP的情况下,第三方希望更多的控制产生AUTH令牌,将用户重定向。
第一,我们将描述URL接口,URLInterface:
/service/preauth?
account={account-identifier}
by={by-value}
timestamp={time}
expires={expires}
[&admin=1]
preauth={computed-preauth}
值如下:
{account-identifier}登录的帐户名,如john.doe@
{by-value}指定根据什么来认证,值为name|id|foreignPrincipal,默认值为name.
{timestamp}当前的时间,以毫秒为单位,必须为当前服务器工作时间五分钟内
{expires}到期的authtoken时间,以毫秒为单位,设置为0则使用默认过期时间
{admin}设置1则为管理员控制台,在端口7071默认的情况下,根据账户,by值等计算验证值
{computed-preauth}计算验证的值
第二基于SOAP接口的描述:
zimbraAccount">
{account-identifier}
{computed-preauth}
你可以“注入”到通过URL接口的应用程序:
https:
//server/service/preauth?
isredirect=1&authtoken={...}
将这个URL设置cookie和重定向到/邮件/Zimbra的。
如果一个URL,然后/Zimbra公司/邮件的需要,那么你也可以通过在redirectURL
...&redirectURL=/zimbra/h/
示例:
preauth.jsp
FileEditOptionsBuffersToolsHelp
--
Toconfigure:
1)为你的域使用zmprov生成preauth的域密钥:
zmprovgdpak
preAuthKey:
ee0e096155314d474c8a8ba0c941e9382bb107cc035c7a24838b79271e32d7b0
以该值,设置为它下面的DOMAIN_KEY值
2)重新启动服务器(只需要你第一次产生域的前auth密钥)
3)将用户重定向(此**文件在安装后)JSP页面:
http:
//server/zimbra/preauth.jsp
它将构建preauth网址
-->
<%@pageimport="java.security.InvalidKeyException" %>
<%@pageimport="java.security.NoSuchAlgorithmException" %>
<%@pageimport="java.security.SecureRandom" %>
<%@pageimport="java.util.HashMap" %>
<%@pageimport="java.util.Map" %>
<%@pageimport="java.util.Iterator" %>
<%@pageimport="java.util.TreeSet" %>
<%@pageimport="javax.crypto.Mac" %>
<%@pageimport="javax.crypto.SecretKey" %>
<%!
publicstaticfinalStringDOMAIN_KEY=
"ee0e096155314d474c8a8ba0c941e9382bb107cc035c7a24838b79271e32d7b0";
publicstaticStringgenerateRedirect(HttpServletRequestrequest,Stringname)