你在这里: 首页>文档>文档资源

管理员指南

Zimbra Daffodil(10)管理员指南,涵盖系统管理、账号管理、服务配置和日常运维。

本文档适用于 Zimbra Daffodil 版本 10.0 和 10.1.0。

许可证

CC BY-SASynacor, Inc.,2025-2026

© 2025-2026 Synacor, Inc. Zimbra 协作管理员指南

本作品根据 Creative Commons Attribution-ShareAlike 4.0 获得许可 国际许可,除非您与其他许可协议 Synacor, Inc. 另有规定。要查看此许可证的副本,请访问 https://creativecommons.org/licenses/by-sa/4.0或写信给 Creative Commons,邮政信箱 1866,山景城,CA 94042,美国。

Synacor, Inc.,2025-2026
埃利科特街 505 号,A39 室
布法罗, 纽约 14203
US

简介

Zimbra Collaboration 是一款功能齐全的消息传递和协作解决方案,包括电子邮件、地址簿、日历、任务和 Web 文档创作。

Zimbra Daffodil (v10.1) 引入了新的许可证服务,在许可证管理方面发生了重大变化。请参阅许可部分了解更多详细信息

受众

本指南适用于负责安装、维护和支持 Zimbra Collaboration 服务器部署的系统管理员。

本指南的读者应具备以下推荐的知识和技能:

  • 熟悉相关技术和标准

  • Linux 操作系统和开源概念

  • 邮件系统管理的行业实践

第三方组件

在可能的情况下,Zimbra Collaboration 遵守备份管理、用户身份验证、操作平台和数据库管理的现有行业标准和开源实现。 但是,它仅支持经过官方测试和认证的“产品概述”一章中的“Zimbra 协作架构概述”中描述的特定实现。 本文档有时可能会指出市场上是否有其他工具可用,但此类提及并不构成认可或认证。

产品生命周期

本章提供有关 Zimbra 组件的产品生命周期阶段的信息。

组件弃用声明

组件 弃用声明

Zextras/NG 模块

HSM、备份、移动、ABQ、驱动器、文档、身份验证、连接和管理已被删除。

IMAPD

已删除

产品概述

本章提供 Zimbra 组件的系统概述。

架构概述

Zimbra Collaboration 架构采用知名开源构建 技术和基于标准的协议。该架构包括 可以作为单个节点运行的客户端接口和服务器组件 配置或跨多个服务器部署以获得高可用性 并提高了可扩展性。

Architectural Overview

该架构包括以下核心优势:

核心优势 组件/描述

开源集成

Linux®、Jetty、Postfix、MariaDB、OpenLDAP®

行业标准开放协议

SMTP、LMTP、 SOAP、XML、IMAP、POP

现代技术设计

HTML5、Javascript、XML 和 Java

可扩展性

每个 Zimbra 邮箱服务器都包含其自己的邮箱帐户和关联的 消息存储和索引。 Zimbra 平台可垂直扩展(通过添加 更多系统资源)和水平(通过添加更多服务器)

基于浏览器的客户端界面

使用标准轻松、直观地访问 Zimbra 协作功能 网络平台。

基于浏览器的管理控制台

核心电子邮件、日历和协作功能

Zimbra Collaboration 是一款创新的消息传递和协作应用程序 提供以下最先进的解决方案 通过基于浏览器的网络客户端。

  • 直观的消息管理、搜索、标记和共享。

  • 个人、外部和共享日历。

  • 个人和共享地址簿和通讯组列表。

  • 个人和共享任务列表。

Zimbra 提供了一项内置功能,其中共享电子邮件附件或邮件的副本仅在文件系统上存储一次,即使它被发送给同一服务器上的多个用户也是如此。这极大地减少了存储需求,因为只保存了一个副本,并且硬链接指向其他邮箱的“blob”存储。

Zimbra 组件

Zimbra 架构包括使用行业的开源集成 标准协议。列出的第三方软件 第三方软件 与 Zimbra 软件捆绑在一起并作为 安装过程。这些组件已经过测试和配置 使用该软件。

表 1. 第三方软件
3rd 方组件 描述

Jetty

运行 Zimbra 软件的 Web 应用程序服务器。

Postfix

开源邮件传输代理 (MTA),将邮件消息路由到 适当的 Zimbra 服务器

开放 LDAP 软件

轻量级目录访问协议的开源实现 (LDAP) 存储 Zimbra 系统配置、Zimbra 全球地址 列表,并提供用户身份验证。 Zimbra 还可以与 GAL 合作, 外部 LDAP 目录提供的身份验证服务,例如 Active Directory

MariaDB

数据库软件

Lucene

开源全功能文本和搜索引擎

将某些附件文件类型转换为 HTML 的第三方源

防病毒/反垃圾邮件

开源组件,包括:

  • ClamAV,一种可防止恶意文件的防病毒扫描程序

  • SpamAssassin,一种尝试识别垃圾邮件的邮件过滤器

  • Amavisd - 之间的新接口MTA 和一个或多个内容检查器

Apache JSieve

管理电子邮件过滤器

LibreOffice

高保真文档预览

OnlyOffice

协作文档编辑

Zimbra 应用程序包

Zimbra Collaboration 提供下列应用程序包 应用程序包.

表 2. 应用程序包
说明

Zimbra 核心

库、实用程序、监控工具和基本配置 文件。zmconfigd包含在 zimbra-core 中并自动 能够在所有系统上运行。

Zimbra 现代 Web 客户端

Zimbra 现代 Web 应用程序所需的资产。该软件包会自动安装在每台服务器上。

Zimbra Store

邮箱服务器的组件(包括 Jetty)。 Zimbra 邮箱 服务器包括以下组件:

  • 数据存储 — MariaDB 数据库。

  • 消息存储 — 所有电子邮件和文件附件的位置。

  • 索引存储 — 索引和搜索技术通过提供 卢塞恩。为每个邮箱维护索引文件。

  • Web 应用程序服务 — Jetty Web 应用程序服务器运行 Web 任何商店服务器上的应用程序 (webapps)。它提供一个或多个网络 应用服务。

Zimbra LDAP

Zimbra Collaboration 使用 OpenLDAP® 软件,这是一个开源 LDAP 目录服务器。用户身份验证、Zimbra 全局地址列表以及 配置属性是通过 OpenLDAP 提供的服务。请注意 Zimbra GAL 和身份验证服务可以由外部提供 LDAP 目录,例如 Active Directory。

Zimbra MTA

Postfix 是接收电子邮件的开源邮件传输代理 (MTA) 通过 SMTP 并将每条消息路由到适当的 Zimbra 邮箱服务器 使用本地邮件传输协议 (LMTP)。 Zimbra MTA 还包括 防病毒和反垃圾邮件组件。

Zimbra Proxy

Zimbra Proxy 是一种高性能反向代理服务,用于传递 IMAP[S]/POP[S]/HTTP[S] 客户端向其他内部 Zimbra 发出请求 services.此软件包通常安装在 MTA 服务器或其上 拥有独立的服务器。安装 zimbra-proxy 软件包后, 代理功能默认启用。安装 Zimbra 代理非常困难 推荐,如果使用单独的 Web 应用程序服务器则必需。

Zimbra Memcached

安装 zimbra-proxy 时会自动选择 Memcached。在 使用代理时,至少一台服务器必须运行 zimbra-memcached。你 可以将单个 memcached 服务器与一个或多个 Zimbra 一起使用 代理。如果使用单独的 Web 应用程序,则需要 zimbra-memcached 服务器。

Zimbra SNMP(可选)

如果您选择安装 zimbra-SNMP 进行监控,则此软件包应为 安装在每台 Zimbra 服务器上。

Zimbra Logger(可选)

如果使用,则安装在一台邮箱服务器上,并且必须安装在 与邮箱服务器同时安装。Zimbra Logger 安装工具用于 系统日志聚合和报告。如果不安装 Logger,则服务器 管理控制台的统计信息部分将不会显示。

Zimbra Spell(可选)

Aspell 是 Zimbra Classic Web 应用程序上使用的开源拼写检查器。当 Zimbra-Spell 已安装,Zimbra-Apache 软件包也已安装。

Zimbra 阿帕奇

当 Zimbra Spell 或 Zimbra 时会自动安装此软件包 已安装 Convertd。

Zimbra Convertd

此软件包安装在 zimbra-store 服务器上。只有一个 Zimbra-convertd 软件包需要存在于 Zimbra Collaboration 中 环境。默认是在每台机器上安装一个 zimbra-convertd zimbra 商店服务器。安装 Zimbra-Convertd 后,Zimbra-Apache 包也已安装。

Zimbra 存档(可选)

存档和发现提供存储和搜索所有消息的功能 传送到 Zimbra 协作服务器或由 Zimbra 协作服务器发送。该套餐包括 跨邮箱搜索功能,直播、直播均可使用 存档邮箱搜索。注意:使用归档和发现可以触发 额外的邮箱许可证使用。了解有关 Zimbra 存档的更多信息 和 Discovery,请联系 Zimbra 销售人员。

Zimbra OnlyOffice

协作编辑文档需要安装此软件包,该文档由 Onlyoffice 提供支持,可以协作编辑公文包中存储的文档。该软件包可以安装和设置在代理服务器、邮箱服务器上或作为单独的文档服务器。

许可证守护程序服务 (LDS)

随着 Zimbra Daffodil (v10.1) 中引入新的许可证服务,添加了一个名为许可证守护程序服务的新许可证服务(LDS) 以允许增强且灵活的许可证管理。 LDS 是支持许可证管理所需的服务。

邮件流 — 多服务器配置

每个部署的配置取决于许多变量 例如邮箱数量、邮箱配额、性能要求、 现有网络基础设施、IT 策略、安全方法、垃圾邮件 过滤要求等等。一般来说,部署共享共同点 传入流量和用户连接的特征,如图所示 如下图。配置多个点的替代方法 内网也是可以的。

Mail Flow - Multi-Server Configuration

编号序列描述如下:

  1. 入站 Internet 邮件穿过防火墙并负载平衡到 用于垃圾邮件过滤的边缘 MTA。

  2. 过滤后的邮件随后会经过第二个负载均衡器。

  3. 连接到消息传递服务器的外部用户也会经过 防火墙到第二个负载均衡器。

  4. 入站互联网邮件发送至任何 Zimbra Collaboration MTA 服务器 并经过垃圾邮件和病毒过滤。

  5. 指定的 Zimbra Collaboration MTA 服务器查找收件人的 来自 Zimbra Collaboration LDAP 副本服务器的目录信息。

  6. 从 Zimbra 协作 LDPA 获取用户信息后 服务器,MTA 服务器将邮件发送到相应的 Zimbra Collaboration 服务器。

  7. 内部最终用户连接直接与任何 Zimbra Collaboration 建立 然后从服务器获取用户的目录信息 Zimbra Collaboration LDAP 并根据需要重定向用户。

  8. 来自 Zimbra Collaboration 服务器的备份可以处理到已安装的 磁盘。

Zimbra 系统目录树

下表列出了Zimbra创建的主要目录 安装包。目录组织对于任何 在(父)下安装时,Zimbra Collaboration 中的服务器/opt/zimbra.

下表中未列出的目录是 用于构建核心 Zimbra 软件的库或 各种第三方工具。
表 3./opt/zimbra
下的系统目录树 文件 描述

backup/

备份目标包含完整和增量备份数据

bin/

Zimbra Collaboration 应用程序文件,包括所述实用程序 在命令行实用程序

cdpolicyd

策略功能、限制

clamav/

用于病毒和垃圾邮件控制的 Clam AV 应用程序文件

conf/

配置信息

contrib/

用于传输的第三方脚本

convertd/

转换服务

cyrus-sasl/

SASL AUTH 守护进程

data/

包括数据目录适用于 LDAP、mailboxd、postfix、amavisd、clamav

db/

数据存储

docs/

SOAP txt 文件和技术 txt 文件

extensions-extra/

不同身份验证类型的服务器扩展

extensions-network-extra/

不同网络版本身份验证类型的服务器扩展

httpd/

包含 Apache Web 服务器。用于 aspell 和转换为 单独的进程

index/

索引存储

java/

包含 Java 应用程序文件

jetty/

邮箱应用程序服务器实例。在此目录中, webapps/zimbra/skins文件夹包含 Zimbra UI 主题文件

lib/

libexec/

内部使用的可执行文件

log/

Zimbra 协作服务器应用程序的本地日志

logger/

用于记录器服务的 RRD 和 SQLite 数据文件

mariadb/

MariaDB 数据库文件

net-snmp/

用于收集统计信息

openldap/

OpenLDAP 服务器安装,预先配置为工作

postfix/

Postfix 服务器安装,预先配置为与 Zimbra Collaboration 配合使用

redolog/

包含 Zimbra 协作服务器的当前事务日志

snmp/

SNMP 监控文件

ssl/

证书

store/

消息存储

zimbramon/

包含控制脚本和 Perl 模块

zimlets/

包含随 Zimbra 一起安装的 Zimletzip文件

zimlets-deployed/

包含随 Zimbra Classic Web 应用程序提供的 Zimlet

zimlets-network/

包含随网络安装的功能的 Zimletzip文件 版本

zmstat/

邮箱统计信息,另存为.csv文件

Zimbra Web 应用程序

Zimbra 提供多种 Web 应用程序类型以供使用 Zimbra 功能。 Web 应用程序提供邮件、日历、地址簿和任务功能。

表 4. Zimbra Web 应用程序
客户端类型 描述

现代 Web 应用程序

使用现代技术、UI 设计,并在桌面、移动设备和平板电脑等设备上提供相同的用户体验。

经典网络应用程序

包括 Ajax 功能并提供全套 Web 协作功能。 仅支持桌面网络浏览器;不提供适应较小屏幕、触摸功能或手势的用户体验。

用户可以在登录前从登录页面的“版本”下拉列表中选择 Web 应用程序。 管理员可以将 COS 的默认 Web 应用程序设置为经典 Web 应用程序或现代 Web 应用程序。 用户可以覆盖此默认值:

  • 在 Modern Web App 中,用户可以进入设置→常规更改登录的默认 Web App 的值

  • 在经典 Web 应用程序中,用户可以转到首选项→常规→登录将登录的默认 Web 应用程序的值更改为

建议管理员将默认值设置为现代 Web 应用程序。

Web 服务、桌面客户端和移动应用程序

除了使用 Web 浏览器或移动设备连接到 Zimbra Collaboration,可使用 Web 服务进行连接,例如 Exchange Web 服务 (EWS) 或桌面客户端,例如 Zimbra Connector 到 Microsoft Outlook。支持以下内容:

  • Exchange Web 服务 (EWS)提供客户端访问以启用 使用 Microsoft 时,Zimbra Collaboration 可与 Exchange Server 进行通信 Mac 设备上的 Outlook。要启用 EWS 客户端访问,请参阅类别 服务部分。 EWS 是一项单独许可的附加功能。

  • 消息传递应用程序编程接口 (MAPI)同步 到受支持的 Microsoft Outlook 版本,具有完全代理、离线功能 对 S/MIME 的访问和支持。使用 Zimbra Connector for Outlook 来 在 Windows 上使用 Microsoft Outlook 时连接到 Zimbra Collaboration 设备。要启用 MAPI (Microsoft Outlook) 连接器,请参阅类别 服务部分。

  • Exchange ActiveSync (EAS)允许从 Android 和 iOS 设备上支持的邮件应用程序移动访问 Zimbra Collaboration。使用 EAS,用户可以与 Gmail (Android)、Samsung Email、iOS Mail 和 Microsoft Outlook Mobile 等本机应用程序实时同步电子邮件、日历和联系人。 EAS 提供针对移动生产力优化的无缝体验。要启用 EAS 访问,请参阅服务等级部分。 EAS 是一项单独许可的附加功能。

由于 Microsoft 在该平台上弃用了 EAS,因此 Windows Outlook 桌面客户端不支持 EAS。
  • 支持所有 POP3、IMAP4、Web 分布式日历扩展 创作和版本控制 (CalDAV) 以及 Web 分布式创作和版本控制 (CardDAV) 客户端的 vCard 扩展。

客户端兼容性概述

此表概述了桌面和移动用户跨 Zimbra 协议(ZCO、ActiveSync、EWS)支持的应用程序和操作系统。

要通过ZCO、EWS 和 ActiveSync协议设置帐户,请参阅将帐户添加到 Outlook 和移动应用程序部分。

建议:Zimbra 建议使用零碳对于 Windows 上的 Outlook,环境预警系统用于 Mac 上的 Outlook,以及ActiveSync用于 Android 和 iOS 上的移动访问。

协议 支持的平台 支持的操作系统/版本 支持的应用程序 注释

ZCO

Windows 桌面

Windows 操作系统(版本 10、11)

经典 Outlook(旧版)2021、2024、365

建议所有 Windows 桌面用户使用。
最适合企业级同步和日历支持。
⚠️ Outlook 2016 和 2019 从 2025 年 10 月起弃用。

ActiveSync

Android

Android 操作系统 15 和 16

Gmail、Outlook 应用程序、三星电子邮件应用程序

iOS

iOS 18.5

iOS 邮件应用程序、Outlook 应用程序

EWS

MacOS

macOS 14(索诺玛)、15(红杉)

经典 Outlook(旧版)2021、365

邮件应用程序

⚠️ Outlook 2019 已弃用于 2023 年 10 月达到生命周期终点。
请迁移到受支持的版本。

离线模式

对于经典 Web 应用程序,Chrome 版本 85 及更高版本不再支持离线模式(影响Kepler9-Patch9开始)。用户仍然可以继续在以前的浏览器版本中使用离线模式。

Zimbra 离线模式允许在使用 Zimbra Modern Web 应用程序时访问数据 — 无需网络连接 — 。

例如,如果没有服务器连接或服务器连接丢失,Web 应用程序会自动转换为“离线模式”。 当服务器连接恢复时,Web App 会自动恢复到“在线模式”。

这种离线模式使用现代浏览器中 HTML5 提供的缓存功能。

安全措施

多种保障措施协同运用,有针对性地提高 整个系统的安全性,是确保安全的最佳方法之一 您的信息基础设施。这些措施实施于 Zimbra 协作平台中总结的防御机制 以下主题:

要查看当前和详细的安全新闻和警报,请参阅安全中心Zimbra Wiki.

身份和访问管理

系统中用于用户身份管理的关键功能包括 总结如下表:

表 5. 身份和访问管理功能
功能 描述

身份生命周期管理

利用 LDAP 目录进行所有创建、读取、更新和删除 (CRUD) 与用户管理相关的功能 Zimbra 合作。 LDAP 的使用是可选的,但所有属性都特定于 Zimbra Collaboration 通过本机 LDAP 目录进行存储和管理。

第一因素身份验证

主要由授权用户使用的组合用户名和密码 当尝试访问系统时。这些凭据保留在 用户存储:密码存储为比较的加盐哈希 与输入的密码相对应,拒绝(不匹配)或 接受(匹配)。如果外部目录(LDAP 或 Active Directory)是 首选,适当的登录凭据可以存储在这个外部 LDAP 目录。另请参阅 Zimbra LDAP 服务了解更多详细信息。

二因素身份验证

在管理控制台配置的第二层身份安全 启用或禁用与关联的移动设备的密码生成 Zimbra 合作。启用后,用户或 COS 帐户必须使用生成的 密码以访问其客户服务。另请参阅 关于 2 因素身份验证二因素身份验证.

授权访问

用户帐户由各种属性、权限级别和权限定义 允许或禁止查看哪些数据以及哪些功能的策略 可以执行。管理控制台管理员可以创建组并分配 访问权限以支持目标业务目标。

信息安全和隐私

系统内置的用于保护数据的功能总结在 下表:

表 6. 信息安全和隐私功能
关键概念 说明

安全性、完整性和隐私管理

Zimbra Collaboration 支持使用 S/MIME 证书(由 公众信任的证书颁发机构 (CA) 以及内部 PKI; 域名密钥识别邮件 (DKIM);基于域的消息认证, 报告和合规性 (DMARC); Amavisd-new,位于 Mail 中 用于管理传入和传出 DMARC 策略的传输代理 (MTA)。

加密方法:

传输中

端点和服务之间的安全连接除了使用 TLS 之外,还使用 TLS 各种其他协议:SMTP、LMTP+STARTTLS、HTTPS、IMAPS/IMAP+STARTTLS、 POP3S/POP3+STARTTLS。

静态

使用 S/MIME 进行端到端加密,数据存储在 Zimbra Collaboration 中 消息存储被加密,直到使用适当的解密发生 私钥。

防病毒和反垃圾邮件

恶意软件和垃圾邮件都受到 Zimbra Collaboration 原生的挑战 功能和第三方插件:Amavisd-new、ClamAV 和 Spam 刺客。

仅经典 Web 应用程序支持此功能。

系统日志

Zimbra Collaboration 系统日志 — 由 SNMP 触发器生成 — 可以使用 记录用户和管理员活动、登录失败等数据, 慢速查询、邮箱活动、移动同步活动和数据 基于错误。事件、警报和陷阱可以转发到日志管理 和事件关联系统,以创建集中的策略和 根据您的安全性和合规性要求发出通知。

表 7. 安全数据
功能 描述

事件响应

管理员可以在 发生恶意或意外活动(例如用户帐户被盗) 凭据,或丢失智能手机)。

存档和发现

此可选功能允许管理员选择特定用户电子邮件 用于归档和应用保留策略的消息,可以是 用于存档邮箱和实时邮箱。

E

Zimbra Daffodil (v10.1) 许可

Zimbra Daffodil (v10.1) 引入了自动化许可和授权系统,以提高管理许可证的灵活性并允许未来的增长。

随着 Zimbra Daffodil (v10.1) 中新许可证服务的引入,添加了名为许可证守护程序服务 (LDS) 的新许可证服务,以实现增强且灵活的许可证管理。

有关 LDS 以及如何设置的更多信息,请参阅许可证守护程序服务.

部分,需要 Zimbra Collaboration 许可证才能启用许可证功能和创建帐户。

以下是 Zimbra Daffodil (v10.1) 许可更新:

  1. 新的许可证守护程序是 Zimbra 安装的一部分。它显示为zimbra-license-daemon位于模块列表中,并且是 Zimbra 正常运行所必需的。

  2. 需要 18-26 个字母数字字符密钥,以替换旧的license.xml文件。

  3. Zimbra Collaboration 许可证仅限于许可证中定义的权利,并且不支持多次激活。

  4. 一旦激活 Zimbra Collaboration 许可证,用户以后无需进行许可证管理。许可证管理是实时的,由 Zimbra 管理。

  5. 引入了离线许可证服务器来支持无法访问公共网络的环境。

  6. 收集的所有数据均基于符合 GDPR 和其他法律法规的许可证要求和总使用量。

    记录 LDAP 和 LDS 主机名以用于许可证注册和激活。
  7. 提供独立实验室许可证。请联系 Zimbra 销售或支持团队。

以下是架构视图:

Realtime License Architecture

LDAP 属性

以下是 Zimbra Daffodil (v10.1) 许可的新属性:

  • zimbraNetworkRealtimeLicense- 存储在线和离线激活所需的许可证密钥。

  • zimbraNetworkRealtimeActivation- 包含激活详细信息、激活的产品版本、激活许可证的功能。

  • zimbraOfflineNetworkRealtimeLicense- 存储离线激活所需的网络密钥。

  • zimbraFeatureActualUsageCount- 存储报告和强制功能的过度使用计数。

许可证功能

Zimbra Collaboration 许可使管理员能够查看和控制他们计划部署的许可功能。 您可以监控使用情况并管理以下许可证功能。

Zimbra Daffodil (v10.1) 引入了许可和未许可功能的详细视图,以便在管理 UI 或命令行中进行更好的管理。以下是跟踪的许可功能:

功能 许可属性 说明 功能代码

帐户

AccountsLimit

您可以创建的帐户。

AL

ZCO

MAPIConnectorAccountsLimit

可以使用 Zimbra Connector for Microsoft Outlook (ZCO) 的帐户。

MCAL

EWS

EwsAccountsLimit

可以使用 EWS 连接到 Exchange 服务器的帐户。 EWS 是一项单独许可的附加功能。

EAL

Zimbra Mobile

MobileSyncAccountsLimit

可以使用 ActiveSync 协议访问其移动设备上的电子邮件的帐户。

MSAL

S/MIME

SMIMEAccountsLimit

可以使用 S/MIME 功能的帐户。

SMAL

存档

ArchivingAccountsLimit

允许的存档帐户。 需要安装存档功能。

AAL

Zimbra Office

DocumentEditingAccountsLimit

文档协作功能,允许在组织内创建/编辑/共享文档。 只需要安装Office。

交易

分享

ShareingAccountsLimit

控制用户的共享和委派功能。

沙尔

公文包

BriefcaseAccountsLimit

控制用户的公文包功能。

BAL

备份和恢复

BackupEnabled

允许管理员使用备份和恢复功能

BE

存储管理(内部卷))

StorageManagementEnabled

允许管理员使用存储管理功能并使用内部存储创建卷。

SME

存储管理(外部(S3)卷)

ObjectStoreSupportEnabled

允许管理员使用存储管理功能并使用外部 S3 提供商(例如 AWS、Ceph)创建卷。

OSSE

附件索引

AttachmentIndexingEnabled

允许对附件内容建立索引

AIE

日历

CalenderAccountsLimit

为用户启用日历功能

CALAL

对话

ConversationEnabledAccountsLimit

为用户启用对话功能

CNEAL

CrossMailboxSearch

CrossMailboxSearchEnabled

允许跨实时邮箱和存档邮箱搜索内容。

CMBSE

委派管理员

DeleatedAdminAccountsLimit

您可以创建的委派管理员帐户

DAAL

组日历

GroupCalenderAccountsLimit

使您能够同时查看多个日历

GCAL

标签

TaggingEnabledAccountsLimit

为用户启用标记功能

TEAL

任务

TaskEnabledAccountsLimit

为用户启用任务功能

TKEAL

附件的 HTML 视图

ViewInHtmlEnabledAccountsLimit

查看 HTML 格式的电子邮件附件

VHEAL

Zimlets

ManageZimletsEnabledAccountsLimit

可以管理 Zimlet 的用户帐户

MZEAL

多重身份验证

MultiFactorAuthEnabled

控制用户的两因素身份验证功能。

MFAE

功能代码可用于使用zmlicense命令检查各个服务的状态。请参阅zmlicense部分了解更多详细信息。

Zimbra Daffodil (v10.1) 许可证要求

您需要 Zimbra 的许可证才能在 Zimbra Collaboration 中创建帐户并使用 Modern Web App。
试用许可证仅限于一个电子邮件地址,可以通过联系 Zimbra 销售人员申请延期。

要试用 Zimbra Collaboration,您可以免费获取试用版。 将系统安装在生产环境中后,您将需要购买订阅或永久许可证。

许可证类型 说明

试用版

您可以从 Zimbra 网站https://www.zimbra.com 获取免费试用许可证→ 产品 → 下载 → 获取试用许可证。 试用许可证允许您创建最多 50 个用户。 60 天后到期。

订阅

Zimbra 订阅许可证只能通过购买获得。 该许可证对特定的 Zimbra 协作系统有效,并使用您购买的 Zimbra 帐户(席位)数量、订阅许可证的生效日期和到期日期进行加密。

永久

Zimbra 永久许可证只能通过购买获得。 此许可证类似于订阅许可证。 它对特定的 Zimbra 协作系统有效,并使用您购买的 Zimbra 帐户(席位)数量、生效日期和到期日期 2099-12-31 进行加密。 当您续订支持协议时,您不会收到新的永久许可证,但系统中的帐户记录会根据新的支持结束日期进行更新。

Zimbra 协作帐户类型的许可证使用

分配给某人的帐户(包括为存档创建的帐户)需要邮箱许可证。 分发列表、别名、位置和资源不计入许可证。

以下是 Zimbra Collaboration 帐户类型以及它们是否影响您的许可证限制的说明。

许可证帐户类型 说明

系统帐户

系统帐户是 Zimbra Collaboration 使用的特定帐户。 它们包括垃圾邮件(垃圾邮件和普通邮件)的垃圾邮件过滤器帐户、带有病毒的电子邮件的病毒隔离帐户以及 GALsync 帐户(如果您为域配置 GAL)。

不要删除这些帐户!这些帐户不会计入您的许可证。

管理员帐户

管理员和委派管理员帐户会计入您的许可证。

用户帐户

用户帐户计入您的许可证帐户限制。

删除帐户时,许可证帐户限制会反映更改。

别名帐户

这些类型不会计入您的许可证。

分发列表

资源帐户

许可证激活

所有 Zimbra Daffodil (v10.1) 安装都需要许可证激活,并继续支持自动和手动许可证方法。在 Daffodil (v10.1) 中,术语已更改为在线激活离线激活.

管理控制台已得到增强,具有更直观且易于遵循的 UI,其中与许可证部署相关的所有操作都在单个屏幕上。

Zimbra Daffodil (v10.1) 许可证的激活可以在安装期间、升级期间或安装后完成。许可证激活后,以后无需在服务器上进行许可证管理。

如果不激活许可证,Zimbra 服务将无法启动。

许可证的任何更新都需要重新激活许可证(例如,启用新功能或更新限制)。在同一服务器上重新激活许可证时,激活计数不会受到影响。

在线许可证激活

如果 Zimbra 协作服务器连接到互联网并且可以与 Zimbra 许可证服务器通信,则会自动激活许可证。

以下是在线许可证的适用激活规则:

  • 帐户应具有有效的支持结束日期。

  • 许可证应有效(不应过期)。

  • 可以切换许可证,前提是新许可证限制大于或等于当前许可证使用量。

  • 不允许在任何现有许可证(试用、常规、永久)上激活试用许可证。

以下是激活许可证的步骤:

管理控制台

  1. 登录管理控制台并转至主页 → 开始使用 → 安装许可证 → 在线激活

  2. Key文本框中,指定 18-26 字母数字字符的许可证密钥,然后单击激活.

  3. 成功激活后,您将看到一条成功消息 -您的许可证已成功激活.

命令行

您也可以激活来自命令行界面的许可证。

  1. 作为zimbra用户,运行以下命令:

zmlicense -a <license_key>
  1. 成功激活后,您将看到一条成功消息 -您的许可证已成功激活.

升级的 Zimbra Collaboration 版本需要立即激活才能维持网络功能。

如果您无法自动激活许可证,请参阅下一节有关离线许可证激活的内容.

离线许可证激活

Zimbra Daffodil (v10.1) 中生成和激活离线许可证的方法已更改。作为先决条件,新包zimbra-nalpeiron-offline-daemon必须安装在运行许可证守护程序服务的服务器上。安装该软件包后,将启动离线守护程序服务,充当本地运行的许可证管理器。

如果未安装软件包或离线守护程序服务未运行,离线许可证激活将不起作用。
离线守护程序服务对于离线许可证的运行及其管理来说是一项至关重要的服务。建议您设置服务监控来检查服务的状态。
离线许可证最多可能需要 48 小时才能颁发。

以下是脱机许可过程的体系结构视图:

Offline License Arch

先决条件

以下是安装脱机守护程序包之前需要完成的先决条件:

禁用 FIPS

应在安装脱机守护程序包之前在系统上禁用 FIPS。

以下是禁用 FIPS 的步骤。以root用户身份执行命令:

  • 对于 RHEL/CentOS/Rocky Linux 系统:

    sudo fips-mode-setup --disable
    sudo reboot
    • 验证 FIPS 是否已禁用。检查/proc/sys/crypto/fips_enabled文件。如果禁用,则输出如下:

      $ cat /proc/sys/crypto/fips_enabled
      0
  • 对于 Ubuntu 系统:

    sudo ua disable fips
    sudo reboot
    • 验证 FIPS 是否已禁用。检查/proc/sys/crypto/fips_enabled文件。如果禁用,则输出如下:

      $ cat /proc/sys/crypto/fips_enabled
      0
禁用 SELinux

应在安装脱机守护程序包之前在系统上禁用 SELinux。您必须重新启动系统才能使更改生效。

以下是禁用 SELinux 的步骤。以root用户身份执行命令:

  • 对于 RHEL/CentOS/Rocky Linux 系统:

    • 检查 SELinux 状态。如果出现状态enabled,执行进一步的步骤来禁用:

      $ sestatus| grep 'SELinux status\|Current mode'
      SELinux status:                 enabled
      Current mode:                   enforcing
    • 编辑/etc/sysconfig/selinux:

      vi /etc/selinux/config
    • 将 SELINUX 指令更改为禁用。

      SELINUX=disabled
    • 保存并退出文件。重新启动系统:

      reboot
    • 重启后,检查状态。 SELinux 应显示为禁用:

      $ sestatus| grep 'SELinux status'
      SELinux status:                 disabled
  • 对于 Ubuntu 系统:

    • 检查 SELinux 状态。如果状态出现enabled,请执行进一步的步骤来禁用:

      $ sestatus| grep 'SELinux status\|Current mode'
      SELinux status:                 enabled
      Current mode:                   enforcing
    • 编辑/etc/selinux/config:

      vi /etc/selinux/config
    • 将 SELINUX 指令更改为禁用。

      SELINUX=disabled
    • 保存并退出文件。重新启动系统:

      reboot
    • 重启后,检查状态。 SELinux 应显示为禁用:

      $ sestatus| grep 'SELinux status'
      SELinux status:                 disabled
添加区域设置en_US.utf8

语言环境en_US.utf-8是离线守护程序包所必需的。

以下是检查和添加区域设置的步骤。以root用户身份执行命令:

  • 对于 RHEL/CentOS/Rocky/Ubuntu Linux 系统:

    • 检查是否需要所需的区域设置en_US.utf8可以在系统上使用。如果可用,它将显示如下:

      $ locale -a |grep 'en_US.utf8'
      en_US.utf8
    • 如果不可用,请添加区域设置:

      $ localedef -i en_US -f UTF-8 en_US.UTF-8

安装脱机守护程序包

以下是安装脱机守护程序包的步骤。执行命令作为root用户:

  • 对于 RHEL/CentOS/Rocky Linux 系统:

yum clean metadata
yum check-update
yum install zimbra-nalpeiron-offline-daemon
  • 对于 Ubuntu 系统:

apt-get update
apt-get install zimbra-nalpeiron-offline-daemon
  • 验证 nalpdaemon 服务是否处于活动状态:

$ systemctl status nalpdaemon
● nalpdaemon.service - Nalpeiron Licensing Daemon
   Loaded: loaded (/usr/lib/systemd/system/nalpdaemon.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2024-06-08 02:03:37 EDT; 1s ago

如果该服务未处于活动状态,请重新启动该服务:

$ systemctl restart nalpdaemon

作为zimbra用户,重新启动 LDS 和 configdctl 服务:

$ su - zimbra
$ zmlicensectl --service restart
$ zmconfigdctl restart

请求并激活离线许可证

通过管理控制台和 CLI 支持该方法。

以下是步骤:

管理控制台
  1. 联系支持团队以获取网络密钥许可证密钥.

  2. 登录管理控制台并转到主页 → 开始 → 安装许可证 → 离线激活

  3. 步骤 1下,指定网络密钥许可证密钥和单击生成激活请求.

  4. 网络和产品激活文件生成成功后,下载按钮将出现在文本框旁边。

  5. 点击下载按钮旁边的文本框并保存文件。保存时将预先填充名称和文件类型 - network_activation_fingerprint、product_activation_fingerprint。

  6. 登录支持门户并选择许可证选项卡。

  7. 选择生成版本 10.1 或更高版本的离线许可证激活文件。

  8. 指定产品许可证密钥网络许可证密钥.

  9. 复制network_activation_fingerprint.txt文件的内容并粘贴到网络激活指纹文本框中。

  10. 复制product_activation_fingerprint.txt文件的内容并粘贴到产品激活指纹文本框中。

  11. 在产品版本文本框中指定产品版本。

  12. 单击生成许可证证书

  13. 保存生成的许可证激活 XML 文件。

  14. 返回管理控制台许可证页面。

  15. 离线激活 → 步骤3下,上传许可证激活 XML 文件,然后单击激活.

  16. 成功激活后,您将看到一条成功消息 -您的许可证已成功激活.

命令行
  1. 联系销售人员并获取网络密钥许可证密钥.

  2. 作为zimbra用户,运行zmlicense命令以生成网络密钥许可证密钥

    zmlicense --offlineActivationRequestCert --network <network_key> --product <product_key>
  3. 将屏幕上打印的证书保存为network_activation_fingerprint.txt 和product_activation_fingerprint.txt。

  4. 登录支持门户并选择许可证选项卡。

  5. 选择生成版本 10.1 或更高版本的离线许可证激活文件。

  6. 指定产品许可证密钥网络许可证密钥.

  7. 复制以下内容network_activation_fingerprint.txt文件并粘贴到网络激活指纹文本框中。

  8. 复制product_activation_fingerprint.txt文件的内容并粘贴到产品激活指纹文本框中。

  9. 在产品版本文本框中指定产品版本。

  10. 单击生成许可证证书

  11. 将生成的许可证激活 XML 文件保存在服务器上。

  12. 作为zimbra用户,运行zmlicense命令激活离线许可证

    zmlicense -A /path_to_XML/activation_file.xml
  13. 成功激活后,您将看到一条成功消息 -您的许可证已成功激活.

如果您在访问支持门户时遇到问题或在激活离线许可证时遇到任何问题,请联系 Zimbra 销售或支持人员。

未安装或激活许可证时

如果您无法安装或激活 Zimbra Collaboration 服务器许可证,以下情况描述了您的 Zimbra Collaboration 服务器将如何受到影响。

许可条件 说明/影响

未安装

如果没有安装许可证,Zimbra Collaboration 服务器默认为单用户模式,其中所有受许可证限制的功能仅限于一名用户。

无效

如果许可证文件看起来是伪造的或因其他原因验证失败,Zimbra 协作服务器默认为单用户模式。

未激活

许可证激活宽限期为 10 天。 如果超过此期限而没有激活,Zimbra Collaboration 服务器将默认为单用户模式。

对于未来日期

如果许可证开始日期是将来的日期,Zimbra 协作服务器默认为单用户模式。

宽限期内

从 Zimbra Daffodil (v10.1) 开始,宽限期功能已更改。欲了解更多详情,请参阅宽限期管理指南中的部分。

已过期

Zimbra Daffodil (v10.1.10) 及以上版本,如果许可证结束日期已过,服务器将不会进入宽限期。有关更多详细信息,请参阅管理指南中的许可证到期和宽限期部分。

续订

Zimbra Daffodil (v10.1.10) 及以上版本,如果在结束日期之前未续订许可证,服务器将不会进入宽限期。有关续订后如何重新激活许可证的更多详细信息,请参阅管理指南中的到期后许可证续订部分

获取许可证

订阅和永久许可证只能安装在购买时确定的 Zimbra Collaboration 系统上。 您的 Zimbra 协作环境仅需要一份 Zimbra 许可证。 该许可证设置系统上的最大帐户数。

当前许可证信息,包括购买的帐户数量、使用的帐户数量和到期日期,可以在管理控制台中查看。

管理控制台:

主页 → 开始 → 安装许可证 → 当前许可证信息.

许可证协调和数据收集通知

同意最终用户许可协议,即表示您授予 Synacor Inc. 及其某些被许可方从您的 Zimbra Collaboration 服务器收集许可和非个人身份使用数据的权限。

在安装、升级期间以及定期使用时,Zimbra Collaboration 服务器会传输信息以协调计费和许可证数据。

此数据收集的权限是根据 Zimbra Collaboration 最终用户许可协议第 11.4 和 11.6 节授予的。 许可证副本可在https://www.zimbra.com.cn/legal/licensing/.

中找到。 所收集的数据由当前许可证信息的元素组成,并受 Synacor 隐私政策的约束,该政策可在https://www.synacor.com/privacy-policy/.

管理控制台中找到增强功能

许可证管理 UI 已得到增强,使其成为更加直观且易于遵循的 UI,其中与许可证部署相关的所有操作都在一个屏幕上。

可以通过 2 种方式访问许可证管理页面:

  1. 登录管理控制台并转至主页 → 开始 → 安装许可证

  2. 登录管理控制台并转至主页 → 配置 → 全局设置 → 许可证

概述

所有许可证操作现在都可以在一个单一的计算机上进行屏幕。以下是该部分的详细信息:

当前许可证信息

显示许可证的详细信息、功能的状态以及每个功能的使用情况。

在线激活

在 Zimbra Daffodil (v10.1) 之前,此方法称为自动激活.

如果您的服务器直接连接到互联网,您可以使用在线方法激活许可证。

指定 18-26 个字母数字字符的许可证密钥,然后单击激活以激活您的许可证。成功激活后,您将看到一条成功消息 -您的许可证已成功激活

离线激活

在 Zimbra Daffodil (v10.1) 之前,此方法称为手动激活.

如果您的服务器没有直接连接到互联网,您可以使用离线方法激活许可证。

请参阅离线许可证激活部分,了解生成离线许可证的详细步骤。

存储管理功能的许可证检查

从 Zimbra Daffodil (v10.1) 开始,存储管理功能的许可证分为两部分:

  1. StorageManagementEnabled- 用于启用/禁用存储管理功能以及允许/禁止在内部存储上创建卷的属性。

  2. ObjectStoreSupportEnabled- 允许/禁止在外部存储上创建卷的属性。

ObjectStoreSupportEnabled属性依赖于StorageManagementEnabled属性。因此,如果不为许可证启用StorageManagementEnabled,则无法启用ObjectStoreSupportEnabled
管理控制台更新

根据许可证中启用的属性,将出现以下行为:

StorageManagementEnabled = FALSE 或许可证已过期
  1. 如果您尝试访问存储管理选项卡Home → 配置 → <Server> → <Server_Name> → 存储管理,将显示错误对话框-您的此功能许可证已过期或无效。请参阅配置 - 全局设置 - 许可证了解更多信息。

  2. 如果您尝试访问全局设置主页 → 配置 → 全局设置 → 存储管理下的存储管理选项卡,则会显示错误对话框 -您的此功能的许可证已过期或无效。请参阅配置 - 全局设置 - 许可证了解更多信息。

StorageManagementEnabled = TRUE 且 ObjectStoreSupportEnabled = FALSE

如果 ObjectStoreSupportEnabled 为 false 且 StorageManagementEnabled 为 true:

  1. 如果您尝试访问存储管理选项卡Home → 配置 → <Server> → <Server_Name> → 存储管理,横幅显示在页面顶部 -您当前没有外部卷的许可。请参阅配置 - 全局设置 - 许可证了解更多信息。

  2. 尝试添加卷时,将禁用外部卷的选择。

  3. 您无法执行 SM 会话。开始按钮显示为禁用。您可以通过 CLI 执行它。

  4. 您无法安排 SM 会话。计划显示为禁用。

  5. 您将能够创建新策略。

  6. 如果您尝试访问全局设置主页 → 配置 → 全局设置 → 存储管理下的存储管理选项卡,您将无法查看存储桶信息。

  7. 设置卷时,如果之前创建过外部卷,则它们不会出现在列表中。

StorageManagementEnabled = TRUE 且 ObjectStoreSupportEnabled = TRUE
  1. 存储管理功能的所有功能均可用。

  2. 您可以创建内部和外部卷。

Zimbra Daffodil (v10.1.10) - 许可证到期和宽限期行为

为了确保更好地遵守许可策略,从 Zimbra Daffodil (v10.1.10) 开始,宽限期机制已得到改进,以区分许可证到期和许可证服务器连接丢失。

许可证到期

如果您的许可证到期,系统将不会进入宽限期。

服务将在到期后立即停止。

这些更新适用于常规和试用许可证类型。

到期前通知

为了帮助确保及时续订和不间断服务,系统在许可证到期前通过多种渠道通知 Zimbra 管理员:

电子邮件通知

电子邮件提醒会自动发送到 Zimbra 系统中配置的管理员电子邮件地址。

这些电子邮件的发送时间为:

  • 90 天

  • 60 天

  • 45 天

  • 30 天

  • 15 天

  • 到期前 1 天

电子邮件将发送到zimbraLicenseNotificationEmailLDAP 属性中配置的地址。

目前,只能更新内部电子邮件地址以接收通知。外部电子邮件地址支持将在即将发布的版本中提供。 如果未设置地址,系统会记录:

ZimbraLicenseNotificationEmail is not set, please set it to receive the notification emails

确保设置并监控通知电子邮件,以免错过到期前通知。

每封通知电子邮件均包含:

  • 许可证 ID。

  • 许可证到期前剩余的天数。

  • 确切的到期日期。

示例电子邮件模板
Subject: Zimbra License Expiry Notification – X Days Remaining

Dear Administrator,

Your Zimbra license (ID: <License_KEY>) expires in 90 days on <Expiry_Date>.
Please ensure timely renewal to avoid service disruptions.
For renewal assistance contact the sales team.

Regards,
Zimbra Licensing System

这些通知是 Zimbra 系统内部的,不依赖于任何外部平台(例如 Salesforce)。通知独立工作,并发送到zimbraLicenseNotificationEmailLDAP 属性中定义的电子邮件地址。

仅针对常规许可证类型发送通知。

通过 Salesforce 的电子邮件通知

除了内部通知之外,Salesforce (SFDC) 还会向客户帐户中定义的联系人发送类似的到期前通知。

将针对即将到来的许可证到期或支持合同结束日期发送通知。

它遵循相同的通知时间表:90、60、45、30、15 和 1 天.

管理控制台警报

视觉警报直接显示在 Zimbra 管理控制台中。

  • 警报会在许可证到期前 30 天出现。

  • 警报在续订许可证之前保持可见。

  • 仅对具有管理权限的用户可见。

到期前许可证通知的工作原理

Zimbra 在许可证到期前主动向管理员发出警报,以确保及时续订并避免服务中断。

通知时间

系统在许可证到期日期前 90 天开始监控许可证到期情况。

警报发送时间:

  • 90 天

  • 60 天

  • 45 天

  • 30 天

  • 15 天

  • 到期前 1 天

如果通知无法发送(例如,由于递送问题),将在第二天重试。

每日检查

后台任务每天在午夜(服务器本地时间)运行,以评估到期状态并触发警报。

通知跟踪

为了防止重复通知,Zimbra 将警报历史记录存储在 LDAP 属性中:

zimbraLicensePreExpiryReminderSentDetails

示例
{
  "category": 90,
  "preExpiryMailSentDetails": {
    "90": "20250626T032658Z",
    "60": "20250619T104011Z"
  }
}
许可证续订后会发生什么
  • 如果新的到期时间 > 90 天,所有警报记录都会被清除。

  • 如果新的到期日在 60-89 天之间,则仅保留 90 天的警报记录。

这可确保未来通知的正确性。

许可证到期后系统行为

当许可证到期时,会发生以下情况:

  • 邮件存储服务停止。

  • 所有网络版功能均被禁用。

  • 管理控制台和现代/经典 Web UI 访问被阻止。

  • 通过协议(IMAP、CalDAV、CardDAV、ActiveSync、EWS、ZCO)访问已禁用。

  • POP 访问仅限于以前下载的电子邮件。

  • 所有服务(包括电子邮件发送、登录、备份、恢复)停止。

  • 电子邮件已排队。在“maximal_queue_lifetime”时间限制用完后,排队的消息将被退回。

过去的数据不会丢失 - 在应用有效许可证之前,服务将受到简单限制。 然而,服务的持续停止可能会因邮件队列溢出而导致数据丢失。

LDS 服务保持活动状态。管理员必须确保它正在运行以应用到期后的许可证更新。

许可证到期后续订
对于在线许可证
  1. 确保 LDS 服务正在运行。

  2. 作为zimbra用户,运行:

    zmlicense -l -a <license_key>
  3. 重新启动邮箱服务:

    zmcontrol restart
对于脱机许可证
  1. 作为 root,验证脱机守护程序:

    systemctl status nalpdaemon
  2. 如果需要,重新启动它:

    systemctl restart nalpdaemon
  3. 作为zimbra用户,生成激活证书:

    zmlicense -l --offlineActivationRequestCert --network <network_key> --product <product_key>
  4. 复制网络激活证书产品激活证书.

  5. 登录到支持门户 > 许可证选项卡。将复制的证书粘贴到相应的字段中。

  6. 提供产品版本并单击生成许可证书.

  7. 保存生成的许可证激活XML文件并将其复制到邮箱节点。

  8. 使用以下方式申请许可证:

    zmlicense -l -A <Offline_Lic.XML>
  9. 重启邮箱服务:

    zmcontrol restart

宽限期

从 Zimbra Daffodil (v10.1.10) 开始,邮箱服务器仅在以下情况下才会进入宽限期:

  1. LDS/第三方许可证服务器不可用。

    1. 如果邮箱服务器与许可证服务器失去连接大约 12 小时,服务器将进入宽限期。

    2. 如果 LDS 节点设置在专用服务器上,并且邮箱节点失去与其的连接。

服务器将在宽限期内继续运行,直到与 LDS/第三方许可证服务器建立连接或直到许可证到期。

连接恢复后,将恢复正常的许可证验证。

如果许可证在宽限期内到期,将根据许可证到期规则禁用服务。

宽限期内的功能

当系统处于宽限期时,以下功能可用:

  • 电子邮件操作- 所有电子邮件操作将继续运行,不会对最终用户造成影响或中断。

  • 帐户修改- 用户可以修改其帐户的任何设置。例如。创建签名或过滤器、更改密码等。

  • 网络功能- 除恢复帐户外,所有网络功能将继续运行。

当系统处于宽限期时,以下功能不可用:

  • 帐户操作:

    • 您无法创建新用户或删除现有用户。

    • 您无法修改/更新现有用户的以下功能 -EWS、SMIME、ActiveSync 和 ZCO

    • 您无法从备份恢复帐户。

宽限期内的功能

Zimbra Daffodil (v10.1.1) 及以上版本,如果功能使用超出允许的许可限制,该功能将进入 10 天的宽限期。在此期间,系统会向管理员发送为期 10 天的定期通知,以通知他们宽限期内的功能。

当该功能处于宽限期内时,无法为新/现有帐户启用该功能。

如果该功能仍处于宽限期内,则 10 天后,将触发更正过程,并在帐户级别禁用过度使用的功能。通知电子邮件包含有关禁用该功能的帐户的信息。

超出限制后,以下功能将进入宽限期:

  • SMIME - 许可属性SMIMEAccountsLimit

  • EWS - 许可属性EwsAccountsLimit

  • MAPI (ZCO) - 许可属性MAPIConnectorAccountsLimit

  • Zimbra Mobile - 许可属性MobileSyncAccountsLimit

以下是该功能进入宽限期时要采取的纠正措施:

  1. 在账户或 COS 级别禁用该功能:例如,S/MIME 功能限制为 10,使用计数为 21。管理员应为 11 个或更多用户禁用该功能,以使该功能脱离宽限期并在许可限制内。一旦该功能在许可限制内,它将在 24 小时内恢复到正常状态。

  2. 增加许可证限制:例如,如果MAPI的限制是10个,而使用次数是25个,您可以联系我们的销售团队,请求将许可限制增加15个。限制更新后,该功能将在24小时内恢复到正常状态。

以下是功能可以在宽限期内运行的场景:

  • 升级到 Zimbra Daffodil (v10.1.1) 或更高版本:

    • 升级到 Zimbra Daffodil (v10.1.1) 或更高版本后,如果功能限制超出许可帐户,该功能将进入宽限期。

  • 降低许可限制:

    • 如果许可限制降低导致该功能超出限制,该功能将进入宽限期。例如。该许可证的 SMIME 限制为 100 个帐户,并且您为 100 个帐户启用了它。如果此限制降低至 50 个帐户,则该功能将进入宽限期。

  • 恢复帐户:

    • 如果您恢复已启用功能的帐户,可能会导致超出许可限制。

通知

默认情况下,服务器安装过程中提供的管理员帐户被设置为通知电子邮件。通知电子邮件地址存储在 LDAP 属性zimbraLicenseNotificationEmail中并且可以更改。

  • 作为 zimbra 用户,执行以下命令:

zmprov mcf zimbraLicenseNotificationEmail newemail@domain.com

在以下情况下发送通知:

  1. 当超出功能限制并进入宽限期时。

  2. 当没有对宽限期功能采取任何操作并且对帐户禁用该功能时。

  3. 如果对超过 100 个帐户禁用该功能,则帐户列表将附加在通知电子邮件中。

以下是超出功能限制并进入宽限期时的通知电子邮件示例:

Subject: Zimbra System Alert: Feature(s) usage limit exceeded

The licensed number of accounts has been reached or exceeded for the following features:

MobileSyncAccountsLimit:
 - Licensed users:10
 - Current users:20
 - Usage Exceeded on: 29-August 2024

MAPIConnectorAccountsLimit:
 - Licensed users:10
 - Current users:21
 - Usage Exceeded on: 29-August 2024

SMIMEAccountsLimit:
 - Licensed users:10
 - Current users:20
 - Usage Exceeded on: 29-August 2024

EwsAccountsLimit:
 - Licensed users:10
 - Current users:20
 - Usage Exceeded on: 29-August 2024

You can either reduce the usage of the existing users or increase the feature license limit.

To increase the feature license limit, please contact Zimbra Sales at
Zimbra Sales

To manage account feature allocation, please sign in to the Admin Portal.

Please note the following:
1. You will continue to receive the notification for 10 days from the usage exceeded date.
2. You will not be able to enable the overused feature for any accounts.
3. If you do not take any action on the overused feature, the feature would be disabled for the users to get it under the licensed limit.

Regards,
Zimbra Support

以下是在宽限期内未对某项功能采取任何操作且对少于 100 个帐户禁用时的通知电子邮件示例:

Subject: Zimbra System Alert: Feature(s) disabled due to exceeded usage

The licensed number of accounts has been exceeded and automatically adjusted at the account level for the following features:

MobileSyncAccountsLimit
- Licensed Users : 10
- Current Users : 14
- Users reduced by : 4

Feature disabled for the following accounts:
test10@domain.com
test11@domain.com
test13@domain.com
test14@domain.com


EwsAccountsLimit
- Licensed Users : 10
- Current Users : 15
- Users reduced by : 5

Feature disabled for the following accounts:
test10@domain.com
test11@domain.com
test12@domain.com
test13@domain.com
test14@domain.com


MAPIConnectorAccountsLimit
- Licensed Users : 10
- Current Users : 15
- Users reduced by : 5

Feature disabled for the following accounts:
admin@domain.com
test10@domain.com
test11@domain.com
test12@domain.com
test13@domain.com

To increase the number of licenses, please visit the Zimbra Support Portal.

To manage allocation of licenses to accounts, please sign in to the Admin Portal.

Regards,
Zimbra Support

以下是在宽限期内对某项功能未采取任何操作且对超过 100 个帐户禁用时的示例通知电子邮件。帐户列表附在通知电子邮件中:

Subject: Zimbra System Alert: Feature(s) disabled due to exceeded usage

The licensed number of accounts has been exceeded and automatically adjusted at the account level for the following features:

SMIMEAccountsLimit

- Licensed Users : 10
- Current Users : 211
- Users reduced by : 201

MAPIConnectorAccountsLimit
- Licensed Users : 10
- Current Users : 211
- Users reduced by : 201

To increase the number of licenses, please visit the Zimbra Support Portal.

To manage allocation of licenses to accounts, please sign in to the Admin Portal.


Regards,

Zimbra Support

使用预防

为账户或 cos 启用某个功能时,使用预防模块可防止管理员过度配置功能。

使用预防将针对以下功能执行:

  • SMIME - 许可属性SMIMEAccountsLimit

  • EWS - 许可属性EwsAccountsLimit

  • MAPI (ZCO) - 许可属性MAPIConnectorAccountsLimit

  • Zimbra 移动 -MobileSyncAccountsLimit

使用预防将在执行以下操作时执行:

  • 创建账户。

  • 修改帐户。

  • 修改 COS。

下图说明了流程:

License Overuse Prevention

以下是为帐户或 COS 启用该功能时会遇到的场景及其结果:

  • 启用过度使用的功能- 如果您要在拥有 120 个帐户且许可限制的 COS 上启用 SMIME 功能SMIME 功能为 100。超出许可证限制将不允许操作。您将看到以下错误:

    • COS:

Cos Modification Failed :
Please disable over used features to proceed, features list : zimbraFeatureSMIMEEnabled
  • 帐户:

Account Modification Failed :
Exceeded limit for following feature(s): zimbraFeatureSMIMEEnabled
  • 启用非许可功能- 如果您尝试为未经许可的 COS/账户启用某项功能,您将看到以下错误:

    • COS:

Cos Modification Failed :
Please disable features which are not licensed to use : zimbraFeatureMobileSyncEnabled
  • For Account:

Account Modification Failed :
Features are not licensed to use, following feature(s) : zimbraFeatureMobileSyncEnabled
  • Enabling overused and non-licensing feature- 当尝试为 COS/账户启用过度使用的功能以及非许可功能时,您将看到以下内容错误:

    • COS:

Cos Modification Failed :
Please disable over used features to proceed, features list : zimbraFeatureSMIMEEnabled
Please disable features which are not licensed to use : zimbraFeatureMobileSyncEnabled
  • 帐户:

Account Modification Failed :
Exceeded limit for following feature(s): SMIME
Features are not licensed to use, following feature(s) : zimbraFeatureMobileSyncEnabled

增强型zmlicense命令

Zimbra Daffodil (v10.1) 开始,许可证管理是实时的,并为管理员提供功能的整体使用视图。

以下是命令

激活在线许可证密钥的一些增强功能以​​及现有功能 -zmlicense -a

  • 作为 zimbra 用户,执行zmlicense -a:

$ zmlicense -a <activation-key>

如果激活密钥有效,将显示成功消息,否则将显示错误。

激活离线许可证 XML 文件 -zmlicense -A

  • 作为 zimbra 用户,执行zmlicense -A:

$ zmlicense -A <license-activation-XML>

如果激活密钥有效,将显示成功消息,否则显示错误。

打印许可证详细信息 -zmlicense -p

  • 作为 zimbra 用户,执行zmlicense -p:

$ zmlicense -p
Current activated license : 512345113142067890
Activated Product Version : 10.1.0_GA_4629
LDS Device Id : KgQIAuHG5gjU2kKo3VBk

Feature : AccountsLimit
	Status: Authorized for use
	Max Limit: 10
	Used Limit: 1

Feature : ArchivingAccountsLimit
	Status: Authorized for use
	Max Limit: 10
	Used Limit: 0

Feature : AttachmentIndexingEnabled
	Status: Authorized for use
.
.
.

以下是输出的详细信息:

  • 功能:许可功能的名称。

  • 状态:许可功能是否有权使用:

    • 授权使用 - 该功能已获得使用许可。

    • 未授权使用 - 该功能未获得使用许可。

  • 最大限制- 可以启用该功能的最大帐户数。

  • 使用限制- 功能的使用限制。

检查许可证状态 -zmlicense -c

  • 作为 zimbra 用户,执行zmlicense -c:

$ zmlicense -c
checking license status. . .
Current license code : 53944123451399294, Activation status: License is OK

如果许可证有效,将显示成功消息,否则显示错误。

检查各个功能状态 -zmlicense -fc <feature-code>

请参阅许可证功能部分中的表了解功能代码。

  • 作为 zimbra 用户,执行zmlicense -fc:

$ zmlicense -fc AL
Feature AccountsLimit[AL] Status: Feature authorized for use
$ zmlicense -fc SHAL
Feature SharingAccountsLimit[SHAL] Status: Feature not authorized, contact zimbra support for help.

刷新许可证缓存 -zmlicense -rc

要刷新邮箱上的许可证缓存(从许可证守护程序服务重新加载数据),您可以使用rc选项:

  • 作为 zimbra 用户,执行zmlicense -rc:

$ zmlicense -rc
refreshing the license cache..
Cache refreshed status : true

许可证守护程序服务 [LDS]

许可证守护程序服务 (LDS) 是一项新服务,可在在线模式下与 Zimbra 许可证服务器通信,在离线模式下与 LAN 守护程序(本地安装)通信。

LDS 负责使用 Zimbra 许可证服务器管理许可证信息。在安装/升级期间,它显示为zimbra-license-daemon在模块列表中并且是必需的服务。所有实时许可操作均通过 LDS 进行。

许可证守护程序服务是 Zimbra 正常运行和许可证管理的关键且重要的服务。建议您进行服务监控设置来检查服务的状态.

概述

  1. LDS 是一个简单的 Java 服务,在您安装 Zimbra 时包含在内。

  2. 它提供了一个用于管理许可证的 API,例如激活许可证、为帐户分配功能或释放许可证。

  3. 它很安全,因为它使用 TLS 身份验证,并且只有邮件存储可以访问它。

  4. 它保留许可证的本地缓存。

  5. LDS 是支持许可证管理所需的服务。

  6. 如果许可证守护程序服务未安装或未运行,Zimbra 的网络功能将无法验证并被禁用,这将影响许可证功能和帐户管理。

  7. 您可以使用zmlicensectl命令来管理服务。

以下是架构视图:

LDS Architecture 3

系统要求

LDS 不是资源密集型(CPU / 内存)服务。

如果部署在专用节点上,则需要以下最低配置: 如果部署在专用节点上,则最低系统要求如下:

  • 处理器系列:Intel/AMD w/ PassMark CPU 标记 > 7,000

  • vCPU 数量:2

  • RAM (GB):8

端口

LDS 节点上的以下端口应可从邮箱内部访问:

进程 端口

LDS

8081

离线 LAN 守护进程

80

离线 pg 守护进程

16700

以下端口应可从 LDS 外部访问my.nalpeiron.comlicense.zimbra.com主机:

进程 端口

Http

80

Https

443

安装单独的许可证守护程序服务节点

要将许可证守护程序服务与其他 Zimbra 服务分开,您可以设置专用的 LDS 节点。您需要在升级 LDAP 服务器之后、开始升级邮箱服务器之前设置此节点。

zimbra-license-daemon在 Zimbra 安装过程中默认安装,除非管理员标记N用于 Zimbra 安装期间的包。

类型y然后按Enter安装zimbra-license-daemon软件包。

Install zimbra-license-daemon [Y]

在单独的服务器上安装zimbra-license-daemon软件包

解压 Zimbra Daffodil (v10.1) 并执行安装程序脚本./install.sh.

键入y并按Enter以安装zimbra-license-daemon软件包。

Select the packages to install

Install zimbra-ldap [Y] N

Install zimbra-logger [Y] N

Install zimbra-mta [Y] N

Install zimbra-dnscache [Y] N

Install zimbra-snmp [Y] N

Install zimbra-license-daemon [Y] Y

Install zimbra-store [Y] N

Install zimbra-apache [Y] N

Install zimbra-spell [Y] N

Install zimbra-convertd [Y] N

Install zimbra-memcached [Y] N

Install zimbra-proxy [Y] N

Install zimbra-archiving [N] N

Install zimbra-onlyoffice [Y] N

Install zimbra-patch [Y] N

Install zimbra-mta-patch [Y] N

Install zimbra-proxy-patch [Y] N

完成剩余的安装。

设置邮箱服务器

LDS 节点安装成功完成后,您现在可以安装/升级邮箱服务器。

解压 Zimbra Daffodil (v10.1) 并执行安装程序脚本./install.sh.

如果升级现有邮箱服务器,请在出现提示时提供有效的许可证密钥,然后继续执行软件包选择步骤。

ZCS upgrade from 8.8.15 to 10.1.0 will be performed.
Validating whether an existing license is expired or not and checking if it qualifies for an upgrade

Please enter the license key (an alphanumeric string of 18-24 characters without any special characters):5332567329720607741
SUCCESS: License valid
License is valid and supports this upgrade.  Continuing.
Validating ldap configuration

您还可以使用./install.sh命令指定许可证密钥。如果验证成功,安装程序将继续:

./install.sh --licensekey 5332567329720607741

如果安装新的邮箱服务器,请继续执行程序包选择步骤。

  • 以下是设置邮箱服务器以使用专用 LDS 节点的步骤:

    • 选择N对于Install zimbra-license-daemon选项。

      Install zimbra-license-daemon [Y] N
    • 安装程序将显示以下提示。输入Y

      Have you installed zimbra-license-daemon package on different node [N] Y
    • 安装程序会提示输入安装 LDS 的主机。指定 LDS 主机名:

      Please enter the zimbra-license-daemon host [] <LDS_Hostname>
    • 如果 LDS 正在服务器上运行,安装将继续。

    • 如果服务器无法连接 LDS,安装程序将显示license-daemon should be running and healthy并中止安装。请检查与服务器的连接并重新启动安装。请参阅故障排除部分了解常见错误及其解决方案。

LDS 管理命令zmlicensectl

引入了新命令zmlicensectl来管理 LDS 的各种操作。

由于许可证守护程序服务是一项关键且重要的服务,因此它不通过zmcontrol命令进行管理。这zmcontrol命令将显示状态,但您无法启动/停止/重新启动 LDS。

以下是有关选项的详细信息:

操作 参数 说明

显示帮助

--help

显示帮助

服务管理

--service <arg>

管理各种操作

--service启动、重启、停止、状态

启动、重启、停止或检查服务状态

--servicesetLogLevel=INFO,DEBUG,ERROR,WARN

设置各种日志级别。有助于调试。

--servicesetOfflineMode=true,false

启用/禁用离线模式

离线服务管理

--nalpeiron <arg>

当启用 Offline License 模式时,该参数用于管理离线服务

--nalpeiron启动、重启、停止、状态

启动、重启、停止或检查离线服务状态

导出离线数据

--exportOfflineLicenseData

提取离线许可证使用数据以进行分析和计费

清除许可证目录

--clearLicenseWorkDir

用于解决 LDS 上潜在许可证缓存问题的故障排除选项

例子:

  • 要重新启动 LDS,请以zimbra用户身份执行命令:

zmlicensectl --service restart
  • 要在调试模式下设置日志级别,请以zimbra用户身份执行命令:

zmlicensectl --service setLogLevel=DEBUG
  • 要将许可模式从在线更改为离线,请以zimbra用户身份执行命令:

zmlicensectl --service setOfflineMode=true
  • 要重新启动离线模式所需的 LAN 守护程序,请执行以下命令:zimbra用户:

zmlicensectl --nalpeiron restart
  • 要导出离线使用数据(仅 BSP 需要),请执行以下命令:zimbra用户:

zmlicensectl --exportOfflineLicenseData

故障排除

记录

以下是记录所有许可操作的日志:

  • 邮件存储日志:

    • 包含邮件存储操作的日志

    • 位置:/opt/zimbra/log/mailbox.log

  • 许可证守护程序服务日志

    • 包含与邮件存储和 LDS 之间的 API 通信相关的日志

    • 地点:/opt/zimbra/log/license-daemon-service.log

  • 本机库日志​

    • 包含与 nalpeiron 服务器通信时发生的库错误。

    • 地点:/opt/zimbra/license/work/15xx.log

许可证守护程序服务日志

LDS 的文件日志记录机制已通过根据大小和时间管理日志文件的滚动策略得到增强。这可确保有效存储日志,并根据定义的标准存档或删除较旧的日志。

以下是详细信息:

  1. 文件位置:/opt/zimbra/log/license-daemon-service.log

  2. 日志格式:日志包括时间戳、线程名称、日志级别和消息。例如

    2024-08-01 10:11:03 [main] INFO  c.zimbra.license.service.Application - The following 1 profile is active: "dev"
  3. 历史记录管理:维护指定天数的日志文件历史记录。日志文件最多保留 15 天。超过 15 天的文件将被自动删除,以遵守保留策略。

  4. 大小上限:所有日志文件的总大小不会超过 5 GB。一旦达到此限制,旧的日志文件将被删除,以便为新的日志文件腾出空间。

  5. 基于大小的滚动:日志文件在达到指定的最大大小(最大限制:500 MB)时进行轮换。这意味着在创建新文件之前每个日志文件将限制为 500 MB。

  6. 基于时间的滚动:基于时间的滚动配置可确保日志文件按日期组织,并且每天创建一个新的日志文件。

    • 基于时间大小的滚动

每日文件:

  • 每日创建:每天都会创建一个新的日志文件,其基本名称为 license-daemon-service.log。例如,2024 年 9 月 1 日的日志将保存在名为 license-daemon-service.log 的文件中。

  • 当日结束滚动:在一天结束时,日志文件将滚动并使用 YYYY-MM-DD 格式的日期戳进行重命名。例如,2024 年 9 月 1 日的日志将保存为 license-daemon-service-2024-09-01.0.log。如果文件在一天内滚动多次,则后续文件将按顺序编号,例如,license-daemon-service-2024-09-01.1.log、license-daemon-service-2024-09-01.2.log 等。

访问日志:

  • 当前日日志:要访问当天的日志文件,可以使用命令 tail -f /opt/zimbra/log/license-daemon-service.log。

  • 前一天日志:要访问前一天的日志,您应该使用带日期戳的日志文件。例如,可以使用 cat /opt/zimbra/log/license-daemon-service-2024-09-01.0.log 访问 2024 年 9 月 1 日的日志。

文件索引:

  • 顺序编号:如果由于超过最大文件大小(maxFileSize)而在同一天内生成多个日志文件,则文件将按顺序编号。 例如,

license-daemon-service-2024-09-01.0.log
license-daemon-service-2024-09-01.1.log
license-daemon-service-2024-09-01.2.log
错误条件/代码

在某些情况下,您可能会遇到各种许可证错误/代码或特定错误。

以下是一些常见场景及其解决方案:

许可证激活失败:邮件存储尝试连接到 LDS 时出现
  • license-daemon should be running and healthy错误:

    • 确保 LDS 已启动并正在运行。

    • 检查状态 -zmlicensectl --service status

    • 如果未运行,请重新启动服务 -zmlicensectl --service restart

  • 激活许可证失败:

    • 确保 LDS 节点可以访问互联网。

  • 无效许可证错误,代码为“4001”:

    • 验证许可证未过期。

  • 无效许可证错误,代码为“-10116”:

    • 检查帐户具有有效的支持结束日期。

  • 无效许可证错误,代码为“-5000”:

    • 支持结束日期可能为空。

  • 无效许可证错误,代码为“-401”: 

    • 许可证激活受限或许可证无效。

  • 无效许可证错误,错误代码为“4000”:

    • 许可证使用无效。如果您尝试更改许可证,则可能会发生这种情况。

  • 无效许可证错误,代码为“4002”:

    • 常规许可证设置无法激活试用版。

功能检查失败:
  • 确保 LDS 已启动并正在运行 -zmlicensectl --service status

    • 如果未运行,请重新启动 LDS 服务 -zmlicensectl --service restart

  • 无法使用服务器级别功能,例如备份还原、存储管理等。

    • 确保功能已被授权使用 -zmlicense -fc <feature_code>** 如果已启用,则重新启动邮箱 -zmmailboxdctl restart

  • 无法启用该功能account/cos: 

    • 确保功能已被授权使用 -zmlicense -fc <feature_code>

    • 如果功能属于限制类型,则确保您有足够的可用限制 -zmlicense -p | grep -E '(EwsAccountsLimit)' -A3

    • 如果功能属于限制类型,则确保您有足够的可用限制 -zmlicense -p | grep -E '(EwsAccountsLimit)' -A3

Zimbra 邮箱服务器

Zimbra 邮箱服务器是管理所有邮件的专用服务器 邮箱内容,包括消息、联系人、日历等 附件。

Zimbra 邮箱服务器具有用于备份和日志的专用卷 文件。每个 Zimbra 邮箱服务器只能看到自己的存储卷。 Zimbra 邮箱服务器无法查看、读取或写入其他服务器。

邮箱服务器

每个账户配置在一台邮箱服务器上,该账户为 与包含电子邮件、附件的邮箱关联, 该帐户的日历、联系人和协作文件。

每个邮箱服务器都有自己独立的消息存储、数据存储、 以及该服务器上邮箱的索引存储。下面是一个 每个商店及其目录位置的概述。

消息存储

所有电子邮件均以 MIME 格式存储在消息存储中, 包括邮件正文和文件附件。

默认情况下,消息存储位于每个邮箱服务器上的 /opt/zimbra/store。每个邮箱都有自己的目录,以其名称命名 内部邮箱ID。邮箱 ID 每台服务器都是唯一的,而不是系统范围内的。

具有多个收件人的邮件作为单个副本存储在 消息存储。在 UNIX 系统上,每个用户的邮箱目录 包含到实际文件的硬链接。

安装 Zimbra Collaboration 后,一份索引卷和一条消息 卷在每个邮箱服务器上配置。每个邮箱被分配一个 当前索引卷上的永久目录。当有新消息时 消息已发送或创建,保存在当前消息卷中。

要管理您的电子邮件存储资源,您可以配置存储 通过实施存储来存储旧消息的卷 管理(SM)政策。 请参阅管理配置.

数据存储

数据存储是一个 SQL 数据库,其中内部邮箱 ID 与用户帐户关联。所有消息元数据,包括标签, 对话,指针指示消息存储的位置 文件系统。 SQL 数据库文件位于 /opt/zimbra/db.

每个帐户(邮箱)仅驻留在一台服务器上。每个服务器都有自己的 自己的独立数据存储,其中包含该邮箱的数据 服务器。

  • 数据存储将邮箱 ID 映射到用户的 LDAP 账户。 Zimbra 协作数据库中的主要标识符 是邮箱 ID,而不是用户名或帐户名。邮箱 ID 仅在单个邮箱服务器内是唯一的。

  • 元数据,包括用户的标签定义集、文件夹、联系人、 日历约会、任务、公文包文件夹和过滤规则位于 数据存储数据库。

  • 有关每封邮件的信息,包括是否已阅读或是否已阅读 未读以及关联的标签存储在数据存储中 数据库。

索引存储

索引和搜索技术是通过 Apache Lucene 提供的。每个 当邮件消息和附件被自动索引 到达。索引文件与每个帐户相关联。索引文件是 位于/opt/zimbra/index.

标记化和索引过程不可通过以下方式配置 管理员或用户。

Index Store

过程如下:

  1. Zimbra MTA 将传入电子邮件路由到邮箱服务器 包含帐户的邮箱。

  2. 邮箱服务器解析邮件,包括邮件头、 正文以及所有可读文件附件,例如 PDF 文件或 Microsoft Word文档,为了对单词进行标记。

  3. 邮箱服务器将标记化信息传递给 Lucene 以 创建索引文件。

标记化是按每个单词进行索引的方法。 某些常见的 模式,例如电话号码、电子邮件地址和域名 如消息标记化插图中所示进行标记化。

Web 应用程序服务器

Jetty Web 应用程序服务器在任何 商店服务器。它提供一项或多项 Web 应用程序服务。

邮件存储服务

邮件存储服务提供对邮箱/帐户数据的后端访问。 邮件存储的 Web 应用程序包括:

  • 邮件存储(邮件服务器) =/opt/zimbra/jetty/webapps/service

  • Zimlets =/opt/zimbra/jetty/webapps/zimlet

用户界面服务

用户界面服务提供前端用户界面访问 邮箱帐户数据和管理控制台,包括:

  • Web 应用程序 =/opt/zimbra/jetty/webapps/zimbra

  • Zimbra 管理员控制台 =/opt/zimbra/jetty/webapps/zimbraAdmin

  • Zimlets =/opt/zimbra/jetty/webapps/zimlet

备份邮箱服务器

Zimbra Collaboration 包括一个可配置的备份管理器,位于 每个 Zimbra Collaboration 服务器并执行备份和恢复 功能。您不必停止 Zimbra Collaboration 服务器即可 运行备份过程。备份管理器可用于恢复 单个用户,而不必在发生事件时恢复整个系统 某个用户的邮箱已损坏。完整备份和增量备份是 在/opt/zimbra/backup。 请参阅备份和恢复.

每个 Zimbra 邮箱服务器都会生成重做日志,其中包含当前和 消息存储服务器处理的归档事务自 最后一次增量备份。当服务器恢复后,备份后 up 文件已完全恢复,存档中的所有重做日志和 重放当前使用的重做日志以使系统恢复正常 失败之前。

邮箱服务器日志

Zimbra Collaboration 部署由各种第三方组成 具有一台或多台邮箱服务器的组件。每个组件可以 生成自己的日志输出。本地日志位于/opt/zimbra/log.

中 选定的 Zimbra Collaboration 日志消息会生成 SNMP 陷阱,您可以使用这些陷阱 可以使用任何SNMP监控软件进行捕获。 请参阅监控 Zimbra 服务器.

系统日志、重做日志和备份会话应位于不同的磁盘上,以便 最大程度地减少发生不可恢复的数据丢失的可能性 这些磁盘出现故障。

IMAP

Zimbra Collaboration 有一个默认安装的内置 IMAP 服务器,并且是 zimbra-mailboxd 进程的一部分(Zimbra 邮箱服务器).

常见 IMAP 配置设置

以下全局和服务器级别配置属性可用于控制和调整 IMAP 服务。

  • zimbraImapServerEnabled。设置为 TRUE 时,将启用进程内 IMAP 服务器。当设置为 FALSE 时,进程内 IMAP 服务器被禁用。默认值为 TRUE。

  • zimbraImapSSLServerEnabled。当设置为 TRUE 时,将启用进程内 IMAP SSL 服务器。当设置为 FALSE 时,进程内 IMAP SSL 服务器被禁用。默认值为 TRUE

  • zimbraImapBindAddress(只能在服务器级别设置)。指定进程内 IMAP 服务器应侦听的接口地址;如果为空,则绑定到所有接口。

  • zimbraImapBindPort。指定进程内 IMAP 服务器应侦听的端口号。默认值为 7143。

  • zimbraImapSSLBindAddress(只能在服务器级别设置)。指定进程内 IMAP SSL 服务器应侦听的接口地址;如果为空,则绑定到所有接口。

  • zimbraImapSSLBindPort。指定进程内 IMAP SSL 服务器应侦听的端口号。默认值为 7993。

  • zimbraImapNumThreads。指定 IMAP 处理程序线程池中的线程数。 Zimbra Collaboration 默认使用 IMAP NIO,这允许每个 IMAP 处理程序线程处理多个连接。默认值 200 足以处理最多 10,000 个活动 IMAP 客户端。

  • zimbraImapCleartextLoginEnabled。指定是否允许通过非 SSL/TLS 连接进行明文登录。默认值为 FALSE。

  • zimbraImapProxyBindPort。指定 IMAP 代理服务器应侦听的端口号。默认值为 143。请参阅Zimbra 代理组件了解更多信息。

  • zimbraImapSSLProxyBindPort。指定 IMAP SSL 代理服务器应侦听的端口号。默认值为 993。请参阅Zimbra 代理组件了解更多信息。

  • zimbraImapMaxRequestSize。指定 IMAP 请求的最大大小(以字节为单位),不包括文字数据。 注意:此设置不适用于 IMAP LOGIN 请求。 IMAP 登录请求由 IMAP 代理(Zimbra 代理组件)处理,且长度限制为 256 个字符。

  • zimbraImapInactiveSessionCacheMaxDiskSize。指定逐出前非活动 IMAP 缓存的最大磁盘大小(以字节为单位)。默认情况下该值为 10GB。这是一个粗略的限制,因为由于 Ehcache 的内部结构,磁盘上的实际大小通常会稍微超出此限制。

  • zimbraImapInactiveSessionEhcacheSize。指定逐出前非活动会话缓存的最大堆大小(以字节为单位)。默认情况下该值为 1 MB。这是一个粗略的限制,因为由于 Ehcache 的内部结构,内存中的实际大小通常会稍微超出此限制。

  • zimbraImapActiveSessionEhcacheMaxDiskSize。指定 imap 活动会话缓存在逐出之前将消耗的最大磁盘空间量(以字节为单位)。默认情况下,该值为 100 GB。这是一个粗略的限制,因为由于 ehcache 的内部结构,内存中的实际大小通常会稍微超出此限制。

Zimbra LDAP 服务

LDAP 目录服务提供集中的信息存储库 有关被授权使用您的 Zimbra 服务的用户和设备的信息。 用于 Zimbra LDAP 数据的中央存储库是 OpenLDAP 目录服务器。

Zimbra Collaboration 支持与 Microsoft Active Directory 集成 服务器。 联系支持人员以获取有关特定目录的信息 实施场景。

安装 Zimbra 时会安装 LDAP 服务器。 每个 服务器有自己的 LDAP 条目,其中包括指定操作的属性 参数。 此外,全局配置对象设置默认值 其条目未指定每个属性的任何服务器。

这些属性的子集可以通过 Zimbra 进行修改 管理控制台和其他通过 zmprov 命令。

LDAP 流量

LDAP 目录流量图显示 Zimbra-LDAP 之间的流量 目录服务器和 Zimbra 协作系统中的其他服务器。 的 Zimbra MTA 和 Zimbra Collaboration 邮箱服务器读取或写入 目录服务器上的 LDAP 数据库。

Zimbra 客户端通过 Zimbra 服务器进行连接,该服务器连接到 LDAP。

LDAP Traffic Flow

LDAP 目录层次结构

LDAP 目录以层次树状结构排列,有两个 分支类型、邮件分支和配置分支。 邮局 按域组织。 条目属于一个域,例如帐户, 组、别名是在目录中的域 DN 下配置的。 的 config 分支包含不属于域的管理系统条目。 配置分支条目包括系统管理员帐户、全局配置、全局配置 拨款、COS、服务器、mime 类型和 Zimlet。

Zimbra LDAP 层次结构图显示了 Zimbra LDAP 层次结构。 每个 条目(对象)的类型具有某些关联的对象类。

LDAP Directory Hierarchy

LDAP 目录条目由属性集合组成,并具有 全局唯一的专有名称 (dn)。 允许的属性 条目由与该条目关联的对象类确定。 对象类属性的值决定了模式规则 条目必须遵循。

确定条目类型的条目的对象类称为 结构对象类且无法更改。 其他对象类是 称为辅助,可以添加到条目或从条目中删除。

在 LDAP 中使用辅助对象类允许对象类 与现有的对象类相结合。 例如,一个条目 结构对象类inetOrgPerson和辅助对象类 zimbraAccount,将是一个帐户。 具有结构对象的条目 类zimbraServer是 Zimbra 系统中的一台服务器,具有一个或 安装了更多 Zimbra 软件包。

Zimbra 协作 LDAP 架构

每个 LDAP 实现的核心是一个使用 架构。

Zimbra LDAP 模式扩展了 OpenLDAP 中包含的通用模式 软件。 它旨在与现有目录安装共存。

专为 Zimbra Collaboration 创建的所有属性和对象类 以“zimbra”开头,例如zimbraAccount对象类或 zimbraAttachmentsBlocked属性。

OpenLDAP 实现中包含以下架构文件:

  • core.schema

  • 余弦.schema

  • inetorgperson.schema

  • zimbra.schema

  • amavisd.schema

  • dyngroup.schema

  • nis.schema

您无法修改 Zimbra 架构。

Zimbra 协作对象

对象 描述 对象类

帐户

表示 Zimbra 邮箱服务器上可登录的帐户。 帐户条目可以是管理员帐户,也可以是用户帐户。 对象类名称为zimbraAccount。 该对象类扩展了zimbraMailRecipient对象类。
所有帐户都具有以下属性:

  • 格式为 user@example.domain 的名称 永不更改且永不重复使用的唯一 ID。

  • 一组属性,其中一些属性是用户可修改的(首选项),另一些属性只能由管理员配置。

  • 所有用户帐户都与域关联,因此在创建任何帐户之前必须创建域。

zimbraAccount

服务等级 (COS)

定义帐户具有的默认属性以及允许的功能 或被拒绝。 COS 控制功能、默认首选项设置、邮箱 配额、消息生命周期、密码限制、附件阻止以及 用于创建新帐户的服务器池。

zimbraCOS

表示电子邮件域,例如example.comexample.org。 一个 域必须存在,然后才能发送发送给该域中用户的电子邮件 已交付。

zimbraDomain

分发列表

也称为邮件列表,用于向列表中的所有成员发送邮件 通过向列表地址发送一封电子邮件。

zimbraDistributionList

动态组

类似于通讯组列表。 区别在于动态组的成员 由 LDAP 搜索动态计算。 LDAP 搜索过滤器是 在动态组条目的属性中定义。

通讯组列表和动态组都可以用作受让人或目标 在委派管理员框架中。

zimbraGroup

服务器

代表 Zimbra 系统中的特定服务器,该服务器具有一个或多个 安装的 Zimbra 软件包。 属性描述服务器 配置信息,例如哪些服务正在运行 服务器。

zimbraServer

全局配置

指定以下对象的默认值:服务器和域。 如果 没有为其他对象设置属性,值继承自 全局设置。 全局配置值是必需的并且已设置 作为 Zimbra 核心包的一部分安装期间。 这些成为 系统的默认值。

zimbraGlobalConfig

别名

表示帐户、通讯组列表或动态组的别名。 这zimbraAliasTarget属性指向此别名的目标条目 条目。

zimbraAlias

Zimlet

定义在 Zimbra 中安装和配置的 Zimlet。

zimbraZimletEntry

日历资源

定义日历资源,例如会议室或设备,可以 被选中参加会议。 日历资源是一个帐户 上的附加属性zimbraCalendarResource对象类。

zimbraCalendarResource

身份

表示用户的角色。 角色包含用户的身份 例如显示名称和用于传出的签名条目的链接 电子邮件。 一个用户可以创建多个角色。 创建身份条目 在 DIT 中用户的 LDAP 条目下。

zimbraIdentity

数据源

表示用户的外部邮件源。 两个数据源示例 是 POP3 和 IMAP。 数据源包含 POP3/IMAP 服务器名称、端口、 以及用户外部电子邮件帐户的密码。 数据来源还 包含角色信息,包括显示名称和指向的链接 代表外部发送的外发电子邮件的签名条目 帐户。 数据源条目在用户的 LDAP 条目下创建 数字信息技术。

zimbraDataSource

签名

表示用户的签名。 一个用户可以创建多个签名。 签名条目是在 DIT 中用户的 LDAP 条目下创建的。

zimbraSignature

帐户身份验证

支持的身份验证机制包括内部、外部 LDAP 和 外部活动目录。 身份验证方法类型设置在 每个域的基础。 如果未设置zimbraAuthMech属性,则默认为 使用内部身份验证。

内部身份验证方法使用在 Zimbra 上运行的架构 OpenLDAP 服务器。

可以启用zimbraAuthFallbackToLocal属性,以便系统 如果外部身份验证失败,则回退到本地身份验证。 默认值为 FALSE。

内部身份验证机制

内部身份验证方法使用在 OpenLDAP 目录服务器。 对于存储在 OpenLDAP 服务器中的帐户, userPassword属性存储用户的 salted-SHA512 (SSHA512) 摘要 密码。 用户提供的密码被计算到 SSHA 摘要中 然后与存储的值进行比较。

外部 LDAP 和外部 AD 身份验证机制

可以使用外部 LDAP 和外部 Active Directory 身份验证,如果 电子邮件环境使用另一个 LDAP 服务器或 Microsoft Active 用于身份验证的目录和用于所有其他的 Zimbra LDAP Zimbra 协作相关交易。 这要求用户存在于 OpenLDAP 和外部 LDAP 服务器中。

外部身份验证方法尝试绑定到指定的 LDAP 使用提供的用户名和密码的服务器。 如果这次绑定成功, 连接被关闭并且密码被认为是有效的。

zimbraAuthLdapURLzimbraAuthLdapBindDn属性是必需的 用于外部身份验证。

  • zimbraAuthLdapURL属性ldap://ldapserver:port/标识 IP 外部目录服务器的地址或主机名,端口是 端口号。 您还可以使用完全限定的主机名来代替 端口号。

    例如:

    ldap://server1:3268
    ldap://exch1.acme.com

    如果是 SSL 连接,请使用ldaps:而不是ldap:。 SSL协议 服务器使用的证书必须配置为可信证书。

  • zimbraAuthLdapBindDn属性是一个格式字符串,用于确定 绑定到外部目录服务器时使用哪个 DN。

    在身份验证过程中,用户名以 格式:user@example.com

    用户名可能需要转换为有效的 LDAP 绑定DN (专有名称)在外部目录中。 主动的情况下 绑定dn的目录可能位于不同的域中。

自定义身份验证

您可以实现自定义身份验证以集成外部 对您的专有身份数据库进行身份验证。 当 身份验证请求进来,Zimbra 检查指定的身份验证 域的机制。 如果验证机制设置为自定义 身份验证,Zimbra 调用注册的自定义身份验证处理程序 对用户进行身份验证。

要设置自定义身份验证,请准备用于自定义身份验证的域并 注册自定义身份验证处理程序。

为自定义身份验证准备域

要为自定义身份验证启用域,请设置域属性, zimbraAuthMech 自定义:{registered-custom-auth-handler-name}.

在以下示例中,“sample”是自定义的名称 认证已注册。

示例 1. 启用域进行自定义身份验证
zmprov modifydomain {domain|id} zimbraAuthMech custom:sample
注册自定义身份验证处理程序

要注册自定义身份验证处理程序,请在扩展的 init 方法中调用:

ZimbraCustomAuth.register( handlerName, handler )

  • 类:com.zimbra.cs.account.ldap.ZimbraCustomAuth

  • 方法:public synchronized static void register (String handlerName, ZimbraCustomAuth handler)

    定义:

    • handlerName是此自定义身份验证处理程序的名称 已注册到 Zimbra 的身份验证基础设施。 这个名字是 在域的 zimbraAuthMech 属性中设置。

    • handler是调用authenticate 方法的对象 对于这个自定义身份验证处理程序。 该对象必须是一个实例 ZimbraCustomAuth(或其子类)。

示例 2. 注册自定义身份验证处理程序
public class SampleExtensionCustomAuth implements ZimbraExtension {

  public void init() throws ServiceException {
  /*
   * Register to Zimbra's authentication infrastructure
   * custom:sample should be set for domain attribute zimbraAuthMech
   */
   ZimbraCustomAuth.register("sample", new SampleCustomAuth());
  }
...
}
自定义身份验证如何工作

当身份验证请求传入并且指定域使用自定义身份验证时,身份验证框架将调用ZimbraCustomAuth实例上的身份验证方法,该实例作为处理程序参数传递给ZimbraCustomAuth.register().

要进行身份验证的主体的帐户对象和输入的明文密码用户传递给ZimbraCustomAuth.authenticate().

帐户的所有属性都可以从帐户对象中检索。

Kerberos5 身份验证机制

Kerberos5 身份验证机制根据外部身份验证用户 Kerberos 服务器。

  1. 将域属性zimbraAuthMech设置为kerberos5.

  2. 将域属性zimbraAuthKerberos5Realm设置为 Kerberos5 在 Kerberos 中创建此域中的用户的领域 数据库。 当用户使用电子邮件密码和域登录时, zimbraAuthMech设置为kerberos5,服务器构造 Kerberos5 主体由 {localpart-of-the-email}@{value-of-zimbraAuthKerberos5Realm}和 使用它来向 kerberos5 服务器进行身份验证。

要为单个帐户指定 Kerberos5,请设置该帐户的zimbraForeignPrincipal作为kerberos5:{kerberos5-principal}。 对于 例如:kerberos5:user1@MYREALM.COM。

全局地址列表

全局地址列表 (GAL) 是用户的公司目录,通常 在组织内部,该电子邮件的所有用户都可以使用 系统。 Zimbra Collaboration 使用公司目录来查找用户 公司内部的地址。

对于每个 Zimbra Collaboration 域,您可以将 GAL 配置为使用:

  • 外部 LDAP 服务器

  • Zimbra Collaboration 内部 LDAP 服务器

  • GAL 搜索中的外部 LDAP 服务器和 Zimbra Collaboration LDAP

Zimbra Collaboration Web 客户端可以搜索 GAL。 当用户搜索时 对于名称,该名称将转换为 LDAP 搜索过滤器,类似于 以下示例,其中字符串%s是用户正在搜索的名称 为.

示例 3. 在 Zimbra Collaboration
(|(cn = %s*)(sn=%s*)(gn=%s*)(mail=%s*))
  (zimbraMailDeliveryAddress = %s*)
  (zimbraMailAlias=%s*)
  (zimbraMailAddress = %s*)

中搜索 GAL

GAL 属性 映射到 Zimbra 协作联系人的属性 表将通用 GAL 搜索属性映射到其 Zimbra 协作 联系领域。

LDAP 属性映射到 GAL 条目字段。 例如,LDAP 属性displayNamecn可以映射到 GAL 条目字段fullName。 该映射在zimbraGalLdapAttrMap属性中配置。

表 8. 映射到 Zimbra 协作联系人
标准 LDAP 属性 Zimbra 协作联系人字段

co

workCountry

company

Company 的属性

givenName/gn

名字

sn

姓氏

cn

全名

initials

缩写

l

工作城市

street, streetaddress

工作街道

postalCode

工作邮政编码

telephoneNumber

工作电话

mobile

手机

pager

寻呼机

facisimileTelephoneNumber

传真号码

st

工作状态

title

职位名称

mail

电子邮件

thumbnailPhoto

缩略图

objectClass

当前未映射

Zimbra 协作 GAL 搜索参数

GAL 是按域配置的。 要配置属性,您 可以从管理控制台运行 GAL 配置向导。

修改属性

GAL 属性的添加、更改和删除是通过 Zimbra 管理控制台或通过zmprov命令。

用户可以在目录中修改其帐户的属性。当用户 从 Zimbra Classic Web 应用程序更改他们的选项,他们还修改 当他们改变偏好时的属性。

刷新 LDAP 缓存

当您修改 Zimbra LDAP 服务器中的以下类型的条目时, 您可能需要刷新 LDAP 缓存才能使更改在 服务器。

  • 主题

  • 区域设置

  • 帐户

  • COS

  • 全局配置

  • 服务器

  • Zimlet 配置

刷新主题和区域设置的缓存

添加或更改主题(皮肤)属性文件和区域设置资源时 服务器上的 Zimbra 文件,您必须刷新缓存才能使 可用的新内容。

To flush skins:
zmprov flushCache skin
To flush locales
zmprov flushCache locale

Flush Accounts, Groups, COS, Domains, and Servers

When you modify the account, COS, groups, domain, and server attributes, 更改立即在修改的服务器上生效 完成了。 在其他服务器上,LDAP 条目会自动更新 如果属性被缓存一段时间后。

更新服务器的默认 Zimbra 设置为 15 分钟。 缓存周期在本地配置键上配置。

要更改设置:
zmlocalconfig ldap_cache_<object>_maxage
要立即启用更改:
zmprov flushCache {account|cos|domain|group|server|...} [name|id]...

如果您没有指定名称或 ID 以及类型,则中的所有条目 该类型的缓存将被刷新并重新加载缓存。

某些服务器属性即使在缓存关闭后也需要重新启动服务器 脸红了。 例如,绑定端口或处理数量等设置 线程。

刷新全局属性

修改全局配置属性后,更改生效 立即在完成修改的服务器上。 关于其他 邮箱服务器,您必须刷新缓存以使更改可用,或者 重新启动服务器。 全局配置属性的 LDAP 条目不 过期。

一些全局配置属性被计算到内部表示中 每个服务器仅重新启动一次。 出于效率原因,对这些进行更改 属性只有在服务器重新启动后才生效,即使在 缓存被刷新。 另外,一些全局配置设置和服务器 从全局配置继承的设置仅在服务器上读取一次 启动,例如端口或处理线程数。 修改这些 类型的属性需要重新启动服务器。

要刷新所有服务器上全局配置更改的缓存:

  1. 修改本地服务器上的设置

    zmprov mcf zimbraImapClearTextLoginEnabled TRUE

    更改是通过 localconfig 键标识的服务器执行的zimbra_zmprov_default_soap_serverzimbra_admin_service_port.

  2. 要刷新所有其他服务器上的全局配置缓存,zmprov flushCache必须在所有服务器上发布,一次一个(或使用zmprov flushCache -a).

    例如:

    zmprov –s server2 flushCache config
    zmprov –s server3 flushCache config
  3. 确定该操作是否需要重新启动

    zmprov desc -a <attributename>

    如果需要重新启动,则requiresRestart值将添加到输出中。

Zimbra 邮件传输代理

Zimbra MTA(邮件传输代理)通过 SMTP 接收邮件并路由 每封邮件均使用本地邮件传输协议 (LMTP) 发送至 合适的 Zimbra 邮箱服务器。

您可以使用管理控制台和 命令行界面。但是,强烈建议您使用 CLI 进行 MTA 配置以确保获得最佳效果。

Zimbra MTA 服务器包括以下程序:

MTA 服务器程序 用途/描述

Postfix MTA

邮件路由、邮件中继和附件阻止

Clam Anti-Virus

扫描电子邮件和电子邮件中的附件是否存在病毒

Spam Assassin

识别未经请求的商业电子邮件(垃圾邮件)

Amavisd-New

Postfix 和 ClamAV / SpamAssassin 之间的接口

Zimbra Milter Server

对可以发送到的地址实施限制 分发列表并添加回复X-Zimbra-DL标头 从通讯组列表发送的消息

Zimbra 策略服务器

帮助保护 Alias 域免受反向散射垃圾邮件的影响

Cluebringer

用于执行速率限制等操作的策略守护进程/cbpolicyd。 有关更多信息,请参阅https://www.zimbra.com.cn/wiki/Postfix_Policyd

Opendkim

签署外发电子邮件(如果已配置)。 了解更多 信息,请参阅https://www.zimbra.com.cn/wiki/Configuring_for_DKIM_Signing

在 Zimbra Collaboration 配置中,邮件传输和投递 是不同的功能:Postfix 充当 MTA,而 Zimbra 邮件 服务器充当邮件传送代理 (MDA)。

MTA 配置存储在 LDAP 中。zmconfigd进程轮询 LDAP目录每两分钟进行修改和更新 Postfix 配置文件进行了更改。

传入邮件路由概述

Zimbra 邮箱服务器从 Zimbra MTA 接收邮件 服务器并将它们传递给已创建的任何过滤器。

MTA 服务器通过 SMTP 接收邮件并将每封邮件路由至 使用 LMTP 的适当邮箱服务器。当每封邮件到达时, 它的内容被索引,以便可以搜索所有元素。

Zimbra MTA 部署

Zimbra 包含 Postfix 的预编译版本,用于路由和中继邮件 并管理附件。 Postfix 通过 SMTP 接收入站消息, 执行防病毒和反垃圾邮件过滤并关闭邮件 通过 LMTP 向 Zimbra 协作服务器发送消息。

Postfix 还在传输出站消息中发挥作用。留言 由 Zimbra Classic Web 应用程序组成并由 Zimbra 服务器发送 通过 Postfix,包括发送给同一网络上其他用户的消息 服务器。

Zimbra MTA Deployment
Edge MTA 可以是任何邮件边缘安全解决方案。你可能会 已经为过滤等功能部署了此类解决方案。一些 边缘 MTA 和 Zimbra MTA 之间可能会重复过滤。

Postfix 配置文件

Zimbra 修改了 Postfix 文件 — main.cf 和 master.cf — 专门用于工作 与津布拉:

  • 主文件 — 修改为包含 LDAP 表。这zmconfigd在 Zimbra MTA 从 Zimbra LDAP 中提取数据并修改 Postfix 配置文件。

  • master.cf — 修改为使用 Amavisd-New。

对 postfix 配置文件所做的更改将被覆盖 升级并应有详细记录。如果可能的话,尝试实施任何 使用 Zimbra 定义的参数进行必要的配置更改。

SMTP 身份验证

SMTP 身份验证允许来自外部的授权邮件客户端 网络通过 Zimbra MTA 中继消息。用户 ID 和 当 SMTP 客户端发送邮件时,密码会发送到 MTA,以便 MTA 可以验证是否允许用户中继邮件。

当 SMTP 客户端发送邮件时,用户 ID 和密码将发送到 MTA 邮件。这确保了 MTA 可以验证用户是否被允许 通过使用 LDAP 检查关联的凭据来中继邮件 帐户。

通过 Zimbra LDAP 提供用户身份验证 目录服务器,或者如果实现的话,通过 Microsoft Active 目录服务器。

SMTP 限制

您可以启用限制,以便 Postfix 不接受邮件 当某个人表现出不标准或其他不被认可的行为时 传入 SMTP 客户端。这些限制提供了一些保护 垃圾邮件发件人。默认情况下,不完全打招呼的客户端 合格域名受到限制。基于 DNS 的限制也是 可用。

之前了解这些限制的含义 你实施它们。您可能必须在这些检查上做出妥协 容纳系统之外执行不力的人员 邮件系统。

将非本地邮件发送到不同的服务器

您可以配置 Postfix 将非本地邮件发送到不同的 SMTP 服务器,通常称为中继或智能主机。

中继主机的一个常见用例是当 ISP 要求您的所有 电子邮件通过指定的主机转发,或者如果您有过滤功能 SMTP 代理服务器。

中继主机设置不得与 Web 邮件 MTA 设置混淆。 中继主机是 Postfix 将非本地电子邮件中继到的 MTA。网络邮件 MTA 由 Zimbra 服务器用于组合消息,并且必须是 Zimbra MTA 包中 Postfix 服务器的位置。

使用管理控制台为外部配置中继 MTA 交货:

管理控制台:

主页 → 配置 → 全局设置 → MTA → 网络

为防止邮件循环,设置中继主机时请务必小心。
MTA Settings

防病毒和反垃圾邮件保护

Amavisd-New 实用程序是 Zimbra MTA 和 Clam 之间的接口 防病毒 (ClamAV) 和 SpamAssassin 扫描仪。

防病毒保护

ClamAV 软件是为每个 Zimbra 启用的病毒防护引擎 服务器。

防病毒软件配置为放置已被 确认有病毒,发送至病毒隔离邮箱。由 默认情况下,Zimbra MTA 每两小时检查一次是否有新的防病毒软件 来自 ClamAV 的更新。

您可以在管理控制台中更改防病毒设置。

管理控制台:

主页 → 配置 → 全局设置 → AS/AV → 防病毒设置

Anti-Virus Protection
通过 HTTP 从 ClamAV 网站获取更新。
扫描外发邮件中的附件

您可以启用实时扫描已发送的外发电子邮件中的附件 使用 Zimbra Classic Web 应用程序。如果启用,当附件添加到 电子邮件,在发送消息之前使用 ClamAV 对其进行扫描。如果 ClamAV 检测到病毒,它会阻止将文件附加到邮件中。 默认情况下,扫描配置为单节点安装。

要使用单个节点启用扫描:

zmprov mcf zimbraAttachmentsScanURL clam://localhost:3310/
zmprov mcf zimbraAttachmentsScanEnabled TRUE

要在多节点环境中启用扫描:

  1. 指定 MTA 节点来处理 ClamAV 扫描。

  2. 启用,如下:

    zmprov ms <mta_server> zimbraClamAVBindAddress <mta_server>
    zmprov mcf zimbraAttachmentsScanURL clam://<mta_server>:3310/
    zmprov mcf zimbraAttachmentsScanEnabled TRUE

反垃圾邮件保护

Zimbra 使用 SpamAssassin 识别未经请求的商业电子邮件(垃圾邮件) 学习到的数据存储在 Berkeley DB 数据库或 MariaDB 中 数据库。您还可以使用 Postscreen 功能来提供额外的 防止邮件服务器过载。描述了两种策略 在以下主题中:

避免垃圾邮件的垃圾邮件刺客方法

以下主题中提供了使用指南:

有关如何自定义 SpamAssassin 的信息,请参阅 https://www.zimbra.com.cn/wiki/Anti-spam_strategies。

管理垃圾邮件刺客分数:SpamAssassin 使用预定义规则 以及贝叶斯数据库,用于对具有数值范围的消息进行评分。 Zimbra 使用百分比值来确定“垃圾程度” SpamAssassin 得分为 20 为 100%。任何标记在 33%-75% 之间的消息都是 被视为垃圾邮件并发送到用户的垃圾文件夹。已标记的消息 超过 75% 的邮件始终被视为垃圾邮件并被丢弃。

您可以更改垃圾邮件百分比设置和主题前缀 管理控制台。

管理控制台:

主页 → 配置 → 全局设置 → AS/AV → 垃圾邮件检查设置

Spam Assassin Settings

默认情况下,Zimbra 使用 Berkeley DB 数据库进行垃圾邮件训练。你 还可以使用 MariaDB 数据库。

在 MTA 服务器上使用 MariaDB 方法:

zmlocalconfig -e antispam_mysql_enabled=TRUE

启用此选项后,不会启用 Berkeley DB 数据库。

训练垃圾邮件过滤器 — 反垃圾邮件过滤器的有效性是 根据用户输入来区分垃圾邮件或正常邮件。垃圾邮件刺客 过滤器从用户专门标记为垃圾邮件的邮件中学习 将它们发送到垃圾邮件文件夹,或者通过将它们从中删除而不是垃圾邮件 他们的垃圾文件夹。这些标记消息的副本将发送到 适当的垃圾邮件培训邮箱。

安装时,垃圾邮件/火腿清理过滤器仅在 第一个 MTA。 Zimbra 垃圾邮件训练工具zmtrainsa被配置为 自动检索这些邮件并训练垃圾邮件过滤器。的 zmtrainsa脚本每天都会清空这些邮箱。

新安装的 Zimbra 将垃圾邮件/非垃圾邮件训练限制在第一位 MTA 已安装。如果您卸载或移动此 MTA,您将需要 在另一个 MTA 上启用垃圾邮件/火腿训练,因为一个主机应该有这个 启用运行zmtrainsa --cleanup.

要在新的 MTA 服务器上设置此功能:

zmlocalconfig -e zmtrainsa_cleanup_host=TRUE

最初,您可能希望手动训练垃圾邮件过滤器以快速 建立垃圾邮件和非垃圾邮件标记、单词或短字符的数据库 垃圾邮件或火腿邮件中常见的序列。为此,您可以 手动将邮件作为邮件/rfc822 附件转发到垃圾邮件并 非垃圾邮件邮箱。当zmtrainsa运行时,这些消息用于教导 垃圾邮件过滤器。确保添加足够多的消息样本 获得准确的分数。至少确定是否将邮件标记为垃圾邮件 必须识别 200 个已知垃圾邮件和 200 个已知火腿邮件。

SpamAssassin 的sa-update工具包含在 SpamAssassin 中。这个工具 更新 SA 组织的 SpamAssassin 规则。该工具是 安装到/opt/zimbra/common/bin.

配置垃圾邮件的最终目的地 — 您可以配置Amavis 使用以下方法处理垃圾邮件项目的最终目的地的行为 属性:

zimbraAmavisFinalSpamDestiny

默认为D_DISCARD(这不会将电子邮件发送到 收件人)。

设置最终垃圾邮件命运属性:

zmprov mcf "zimbraAmavisFinalSpamDestiny" D_PASS
zmprov ms serverhostname.com D_PASS
表 9. 可配置属性值
说明

D_PASS

将电子邮件传送给收件人。该电子邮件可能会被放置在 收件人的垃圾文件夹(尽管有些网站禁用垃圾邮件)。

D_BOUNCE

电子邮件被退回给发件人。因为这个设置可以创建 反向散射 — 因为“发送者”并不是实际发送消息的人 电子邮件 — 不建议这样做。

D_REJECT

拒绝电子邮件。此设置可减少反向散射的可能性:

  • 如果发件人有效,MTA 将通知此人有关拒绝的情况。

  • 如果发件人无效,关联的 MTA 将丢弃该电子邮件(即由垃圾邮件发送者欺骗其他人发送的电子邮件)。

D_DISCARD

电子邮件被默默丢弃(未送达)。

设置可信网络:Zimbra 配置允许 仅针对本地网络进行中继,但您可以配置受信任的网络 允许转发邮件。您将 MTA 可信网络设置为 全局设置,但您可以将受信任网络配置为服务器 设置。服务器设置覆盖全局设置。

使用管理控制台将 MTA 可信网络设置为 全局设置:

管理控制台:

主页 → 配置 → 全局设置 → MTA → 网络

MTA Trusted Networks

当使用管理控制台设置 MTA 可信网络时 以每台服务器为基础,首先确保已设置 MTA 可信网络 作为全局设置。

管理控制台:

主页 → 配置 → 服务器 →服务器→ MTA → 网络

MTA Trusted Networks

输入以逗号和/或空格分隔的网络地址。继续 长行通过用空格开始下一行,类似于 以下示例:

127.0.0.0/8, 168.100.189.0/24
127.0.0.0/8 168.100.189.0/24 10.0.0.0/8 [::1]/128 [fe80::%eth0]/64

启用 Milter 服务器:可以启用 Milter 服务器来强制执行 限制哪些地址可以发送到通讯组列表并添加从分发发送的消息的回复X-Zimbra-DL标头 列表。这可以全局启用,也可以针对特定服务器启用 管理控制台。

仅在运行 MTA 的服务器上启用 Milter 服务器。

对于全局配置,从以下位置启用 milter 服务器 管理控制台:

管理控制台:

主页 → 配置 → 全局设置 → MTA → Milter 服务器

MTA Milter Server

使用管理控制台启用特定的 milter 服务器,并 为各个服务器设置绑定寻址。

管理控制台:

主页 → 配置 → 服务器 →服务器→ MTA → Milter 服务器

MTA Milter Server
避免垃圾邮件的 Postscreen 方法

Zimbra Postscreen 是 Zimbra Collaboration 的 8.7 增强功能 反垃圾邮件策略,提供针对邮件服务器的额外保护 超载。根据设计,Postscreen 不是 SMTP 代理。其目的是 让垃圾邮件机器人远离 Postfix SMTP 服务器进程,同时最大限度地减少 合法流量的开销。单个 Postscreen 进程处理 多个入站 SMTP 连接并决定哪些客户端可以通信 到 Post-fix SMTP 服务器进程。通过阻止垃圾邮件机器人,Postscreen 为合法客户端释放 SMTP 服务器进程,并延迟启动 服务器过载情况。

在典型部署中,Postscreen 处理 TCP 端口 25 上的 MX 服务, 当 MUA 客户端通过 TCP 端口 587 上的提交服务提交邮件时, 这需要客户端身份验证。或者,站点可以设置一个 提供提交的专用、非 Postscreen、“端口 25”服务器 无需 MX 服务的服务和客户端身份验证。

Postscreen 不应在从最终用户接收邮件的 SMTP 端口上使用 客户(MUA)。

Zimbra Collaboration Postscreen 维护临时白名单 通过多项测试的客户。当 SMTP 客户端 IP 地址 被列入白名单,Postscreen 立即将连接传递给 Postfix SMTP 服务器进程。这最大限度地减少了合法邮件的开销。

在使用Postscreen服务的典型场景中,这是合理的 预计潜在的恶意电子邮件实体 — 例如机器人和 僵尸 — 在电子邮件中与友好的候选人混在一起 负载。这个概念如下图所示,其中 不良实体用红色表示;好的电子邮件候选人是 绿色。

Postscreen

Postscreen 执行基本检查并拒绝明确的连接 来自机器人或僵尸。如果连接不在临时白名单中, Postscreen 将电子邮件传递给本地反垃圾邮件和反病毒引擎, 它可以接受它,也可以拒绝它。良好的连接通过以下方式接受 Postscreen 安全性,然后允许直接与 SMTP 守护进程对话, 它使用 AS/AV 扫描电子邮件(像往常一样)。默认情况下,所有机器人或 僵尸被拒绝。

使用 Zimbra CLI 属性设置 Postscreen 操作的参数。对于 任何后屏幕属性提供 忽略、强制执行或删除指令,请使用如下准则:

  • 忽略 — 忽略此结果。允许其他测试完成。重复此操作 使用后续客户端连接进行测试。这是默认设置,即 对于测试和收集统计数据而不阻止邮件很有用。

  • 强制 — 允许其他测试完成。拒绝递送尝试 带有 550 SMTP 回复的邮件,并记录 hello/sender/recipient 信息。对后续客户端连接重复此测试。

  • drop — 通过 521 SMTP 回复立即断开连接。 对后续客户端连接重复此测试。

后屏幕属性:

转到zmprov mcf提示符(版本 8.7+)以使用 Postscreen 命令。 您可以在以下位置查看这些属性的示例用法 启用后屏幕.

  • zimbraMtaPostscreenAccessList — 默认 = Permit_mynetworks

    Postconfpostscreen_access_list设置,即永久白色/ 远程 SMTP 客户端 IP 地址的黑名单。 Postscreen(8) 搜索这个 远程 SMTP 客户端连接后立即列出。指定逗号或 空格分隔的命令列表(大写或小写)或查找 表。搜索在为客户端触发的第一个命令时停止 IP 地址。

  • zimbraMtaPostscreenBareNewlineAction — 默认 = 忽略

    当远程 SMTP 客户端发送 裸换行符,即前面没有回车符的换行符 — 可以忽略、强制执行或删除。

  • zimbraMtaPostscreenBareNewlineEnable — 默认 = no

    启用(是)或禁用(否)“裸换行”SMTP 协议测试 postscreen(8) 服务器。这些测试的成本很高:远程 SMTP 客户端必须 通过测试后断开连接,然后才能与真正的 Postfix 通信 SMTP 服务器。

  • zimbraMtaPostscreenBareNewlineTTL — 默认 = 30d

    postscreen(8) 使用 a 结果所允许的时间量 成功的“裸换行”SMTP 协议测试。在此期间,客户 IP 地址不包括在本次测试中。默认设置很长 因为远程 SMTP 客户端在通过测试后必须断开连接, 在它可以与真正的 Postfix SMTP 服务器通信之前。

    指定一个非零时间值(整数值加上可选的 指定时间单位的一个字母后缀)。时间单位:s(秒)、m (分钟)、h(小时)、d(天)、w(周)。

  • zimbraMtaPostscreenBlacklistAction — 默认 = 忽略

    当远程 SMTP 客户端处于关闭状态时 postscreen(8) 将采取的操作 使用postscreen_access_list参数永久列入黑名单,如下 要么忽略,要么强制执行,要么放弃。

  • zimbraMtaPostscreenCacheCleanupInterval — 默认 = 12h

    postscreen(8) 缓存清理运行之间允许的时间量。 缓存清理会增加缓存数据库的负载,因此应该 不宜频繁运行。该功能需要缓存数据库 支持“删除”和“序列”运算符。指定零间隔 禁用缓存清理。

    每次缓存清理运行后,postscreen(8) 守护进程会记录 保留和删除的条目。清理运行记录为 当守护进程在postfix reload, postfix stop之后提前终止,或者没有请求时,为“部分”$max_idle秒。

    时间单位:s(秒)、m(分钟)、h(小时)、d(天)、w(周)。

  • zimbraMtaPostscreenCacheRetentionTime — 默认 = 7d

    允许 postscreen(8) 缓存过期的时间量 删除之前的临时白名单条目。这可以防止客户 仅仅因为他们的缓存条目过期一小时而被记录为“NEW” 以前。它还可以防止缓存被通过的客户端填满 一些深度协议测试一次就再也没有回来。

    时间单位:s(秒)、m(分钟)、h(小时)、d(天)、w(周)。

  • zimbraMtaPostscreenCommandCountLimit — 默认 = 20

    设置每个 SMTP 会话命令总数限制的值 postscreen(8) 的内置 SMTP 协议引擎。此 SMTP 引擎延迟或 拒绝所有投递邮件的尝试,因此无需强制执行 对垃圾命令和错误命令的数量进行单独的限制。

  • zimbraMtaPostscreenDnsblAction — 默认 = 忽略

    当远程 SMTP 客户端的 组合 DNSBL 分数等于或大于阈值(如定义 与postscreen_dnsbl_sitespostscreen_dnsbl_threshold参数),如忽略、强制或删除。

  • zimbraMtaPostscreenDnsblSites

    DNS 白/黑名单域、过滤器和权重的可选列表 因素。当列表非空时,dnsblog(8)守护进程将查询 这些域具有远程 SMTP 客户端的 IP 地址,以及 postscreen(8) 将在每次无错误时更新 SMTP 客户端的 DNSBL 分数 回复。

    当 postscreen 拒绝邮件时,它会回复 DNSBL 域名。使用 postscreen_dnsbl_reply_map隐藏“密码”信息的功能 DNSBL 域名。

    当客户的分数等于或大于指定的阈值时 使用postscreen_dnsbl_threshold, postscreen(8) 可以断开连接 与远程 SMTP 客户端。

    指定domain=filter*weight条目列表,以逗号或 空白。

    • 当未指定=filter时,postscreen(8) 将使用任何非错误 DNSBL 回复。否则,postscreen(8) 仅使用匹配的 DNSBL 回复 过滤器。过滤器具有以下形式d.d.d.d,其中每个 d 是一个数字,或者 里面的图案[]包含一个或多个“;”分隔的 数字或数字..数字范围。

    • 当未指定*weight时,postscreen(8) 会递增远程 SMTP 客户端的 DNSBL 分数除 1。否则,权重必须是整数 number,postscreen(8) 将指定的权重添加到远程 SMTP 客户端的 DNSBL 分数。为白名单指定一个负数。

    • 当一个postscreen_dnsbl_sites条目产生多个 DNSBL 响应,postscreen(8) 最多应用一次权重。

    示例:

    使用 example.com 作为高可信度阻止列表并阻止邮件 仅当 example.net 和 example.org 都同意时:

    postscreen_dnsbl_threshold = 2
    postscreen_dnsbl_sites = example.com*2, example.net, example.org

    仅过滤包含 127.0.0.4 的 DNSBL 回复:

    postscreen_dnsbl_sites = example.com=127.0.0.4
  • zimbraMtaPostscreenDnsblThreshold — Default = 1

    用于定义阻止远程 SMTP 的包含下限的值 客户端,基于其定义的组合 DNSBL 分数 postscreen_dnsbl_sites参数。

  • zimbraMtaPostscreenDnsblTTL — 默认 = 1h

    postscreen(8) 使用结果所允许的时间量 在需要客户端 IP 地址之前成功进行基于 DNS 的信誉测试 再次通过那个测试。

    指定一个非零时间值(整数值加上可选的 指定时间单位的一个字母后缀)。时间单位:s(秒)、m (分钟)、h(小时)、d(天)、w(周)。

  • zimbraMtaPostscreenDnsblWhitelistThreshold — 默认 = 0

    允许远程 SMTP 客户端跳过“220 问候语之前”和“之后” 协议测试,基于其组合 DNSBL 分数(如定义) postscreen_dnsbl_sites参数。

    指定负值以启用此功能。当客户通过 postscreen_dnsbl_whitelist_threshold没有失败其他测试,所有 待处理或禁用的测试被标记为已完成并具有生存时间 值等于postscreen_dnsbl_ttl。当测试已经完成时,它的 如果生存时间值小于postscreen_dnsbl_ttl.

  • zimbraMtaPostscreenGreetAction,则更新该值  — 默认 = 忽略

    当远程 SMTP 客户端讲话时 postscreen(8) 将采取的操作 在postscreen_greet_wait指定的时间内轮到之前 参数,可以是忽略、强制执行或删除。

  • zimbraMtaPostscreenGreetTTL — 默认 = 1d

    允许 postscreen(8) 使用结果的时间量 成功的 PREGREET 测试。在此期间,客户端IP地址为 排除在本次测试之外。默认比较短,因为好 客户端可以立即与真正的 Postfix SMTP 服务器通信。

    指定一个非零时间值(整数值加上可选的 指定时间单位的一个字母后缀)。时间单位:s(秒)、m (分钟)、h(小时)、d(天)、w(周)。

  • zimbraMtaPostscreenNonSmtpCommandAction — 默认 = drop

    当远程 SMTP 客户端发送邮件时 postscreen(8) 执行的操作 使用postscreen_forbidden_命令指定的非 SMTP 命令 参数,可以是忽略、强制执行或删除。

  • zimbraMtaPostscreenNonSmtpCommandEnable — 默认 = no

    在后屏幕中启用(是)或禁用(否)“非 SMTP 命令”测试(8) 服务器。这些测试成本高昂:客户端在通过后必须断开连接 测试,然后才能与真正的 Postfix SMTP 服务器通信。

  • zimbraMtaPostscreenNonSmtpCommandTTL — 默认 = 30d

    postscreen(8) 使用结果所允许的时间量 成功的“non_smtp_command”SMTP 协议测试。在此期间, 客户端 IP 地址不包括在此测试中。默认值很长,因为 客户端必须在通过测试后断开连接,然后才能与 真正的 Postfix SMTP 服务器。

    指定一个非零时间值(整数值加上可选的 指定时间单位的一个字母后缀)。时间单位:s(秒)、m (分钟)、h(小时)、d(天)、w(周)。

  • zimbraMtaPostscreenPipeliningAction — 默认 = 执行

    当远程 SMTP 客户端发送邮件时 postscreen(8) 将采取的操作 多个命令,而不是发送一个命令并等待服务器 做出回应,要么忽略,要么强制执行,要么放弃。

  • zimbraMtaPostscreenPipeliningEnable — 默认 = no

    启用(是)或禁用(否)“管道化”SMTP 协议测试 postscreen(8) 服务器。这些测试很昂贵:好的客户必须 通过测试后断开连接,然后才能与真正的 Postfix 通信 SMTP 服务器。

  • zimbraMtaPostscreenPipeliningTTL — 默认 = 30d

    允许后筛选 (8) 使用成功结果的时间 “管道化”SMTP 协议测试。在此期间,客户端IP地址为 排除在本次测试之外。默认值很长,因为好的客户必须 通过测试后断开连接,然后才能与真正的 Postfix 通信 SMTP 服务器。

    指定一个非零时间值(整数值加上可选的 指定时间单位的一个字母后缀)。时间单位:s(秒)、m (分钟)、h(小时)、d(天)、w(周)。

  • zimbraMtaPostscreenWatchdogTimeout — 默认 = 10s

    postscreen(8) 进程响应远程 SMTP 所允许的时间 客户端命令,或执行缓存操作,然后再终止 内置看门狗定时器。这是一种安全机制,可以防止 postscreen(8) 由于 Postfix 本身的错误而变得无响应 或者在系统软件中。避免误报和不必要的缓存 腐败此限制不能设置在 10 秒以下。

    指定一个非零时间值(整数值加上可选的 指定时间单位的一个字母后缀)。时间单位:s(秒)、m (分钟)、h(小时)、d(天)、w(周)。

  • zimbraMtaPostscreenWhitelistInterfaces

    本地 postscreen(8) 服务器 IP 地址列表,其中非白名单 远程SMTP客户端可以获得postscreen(8)的临时白名单 状态。在客户端可以与 Postfix 对话之前需要此状态 SMTP 服务器进程。默认情况下,客户端可以获得 postscreen(8) 的 任何本地 postscreen(8) 服务器 IP 地址上的白名单状态。

    当 postscreen(8) 监听主 MX 地址和备份 MX 地址时, postscreen_whitelist_interfaces参数可以配置为给出 仅当客户端连接到主 MX 时才处于临时白名单状态 地址。一旦客户端被列入白名单,它就可以与 Postfix SMTP 服务器通信 在任何地址上。因此,仅连接到备份 MX 地址的客户端将 永远不会被列入白名单,也永远不会被允许与 Postfix 对话 SMTP 服务器进程。

    指定网络地址或网络/网络掩码模式的列表,分隔 通过逗号和/或空格。网络掩码指定了位数 主机地址的网络部分。通过开始继续长线 下一行有空格。

    您还可以指定/file/nametype:table模式。/file/name 模式被其内容替换;匹配type:table查找表 当表条目与查找字符串匹配时(查找结果被忽略)。

    列表从左到右匹配,搜索到第一个就停止 比赛。指定!pattern从地址或网络块中排除 列表。

    里面必须指定IPv6地址信息[]在 的postscreen_whitelist_interfaces值,并在指定的文件中 /file/name。 IP 版本 6 地址包含“:”字符,并且会 否则会与type:table图案。

    示例:

    /etc/postfix/main.cf:
    
    # Don't whitelist connections to the backup IP address.
    postscreen_whitelist_interfaces = !168.100.189.8, static:all
  • zimbraMtaPostscreenDnsblMinTTL — 默认 = 60s

    允许 postscreen(8) 的最短时间 — 由 成功的基于 DNS 的信誉测试 — 在客户端 IP 地址被配置之前 需要再次通过该测试。如果 DNS 回复指定了更大的 TTL 值,将使用该值,除非它大于 postscreen_dnsbl_max_ttl.

    指定一个非零时间值(整数值加上可选的 指定时间单位的一个字母后缀)。时间单位:s(秒)、m (分钟)、h(小时)、d(天)、w(周)。

  • zimbraMtaPostscreenDnsblMaxTTL — 默认 = postscreen dnsbl ttl

    postscreen(8) 使用结果所允许的最长时间 在客户端 IP 地址被配置之前,通过成功的基于 DNS 的信誉测试 需要再次通过该测试。如果 DNS 回复指定较短的 TTL 值,将使用该值,除非它小于 postscreen_dnsbl_min_ttl.

    指定一个非零时间值(整数值加上可选的 指定时间单位的一个字母后缀)。时间单位:s(秒)、m (分钟)、h(小时)、d(天)、w(周)。

    请注意,默认设置向后兼容 Postscreen 3.1 之前的版本。

启用后屏幕:

本节中的示例演示了适用于全局的设置 配置具有中到高级的后屏幕保护。

示例 4. Postscreen 的全局配置
zmprov mcf zimbraMtaPostscreenAccessList permit_mynetworks
zmprov mcf zimbraMtaPostscreenBareNewlineAction ignore
zmprov mcf zimbraMtaPostscreenBareNewlineEnable no
zmprov mcf zimbraMtaPostscreenBareNewlineTTL 30d
zmprov mcf zimbraMtaPostscreenBlacklistAction ignore
zmprov mcf zimbraMtaPostscreenCacheCleanupInterval 12h
zmprov mcf zimbraMtaPostscreenCacheRetentionTime 7d
zmprov mcf zimbraMtaPostscreenCommandCountLimit 20
zmprov mcf zimbraMtaPostscreenDnsblAction enforce
zmprov mcf \
  zimbraMtaPostscreenDnsblSites 'b.barracudacentral.org=127.0.0.2_7' \
  zimbraMtaPostscreenDnsblSites 'dnsbl.inps.de=127.0.0.2*7' \
  zimbraMtaPostscreenDnsblSites 'zen.spamhaus.org=127.0.0.[10;11]*8' \
  zimbraMtaPostscreenDnsblSites 'zen.spamhaus.org=127.0.0.[4..7]*6' \
  zimbraMtaPostscreenDnsblSites 'zen.spamhaus.org=127.0.0.3*4' \
  zimbraMtaPostscreenDnsblSites 'zen.spamhaus.org=127.0.0.2*3' \
  zimbraMtaPostscreenDnsblSites 'list.dnswl.org=127.0.[0..255].0*-2' \
  zimbraMtaPostscreenDnsblSites 'list.dnswl.org=127.0.[0..255].1*-3' \
  zimbraMtaPostscreenDnsblSites 'list.dnswl.org=127.0.[0..255].2*-4' \
  zimbraMtaPostscreenDnsblSites 'list.dnswl.org=127.0.[0..255].3*-5' \
  zimbraMtaPostscreenDnsblSites 'bl.mailspike.net=127.0.0.2*5' \
  zimbraMtaPostscreenDnsblSites 'bl.mailspike.net=127.0.0.[10;11;12]*4' \
  zimbraMtaPostscreenDnsblSites 'wl.mailspike.net=127.0.0.[18;19;20]*-2' \
  zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.10*8' \
  zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.5*6' \
  zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.7*3' \
  zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.8*2' \
  zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.6*2' \
  zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.9*2'
zmprov mcf zimbraMtaPostscreenDnsblTTL 5m
zmprov mcf zimbraMtaPostscreenDnsblThreshold 8
zmprov mcf zimbraMtaPostscreenDnsblTimeout 10s
zmprov mcf zimbraMtaPostscreenDnsblWhitelistThreshold 0
zmprov mcf zimbraMtaPostscreenGreetAction enforce
zmprov mcf zimbraMtaPostscreenGreetTTL 1d
zmprov mcf zimbraMtaPostscreenNonSmtpCommandAction drop
zmprov mcf zimbraMtaPostscreenNonSmtpCommandEnable no
zmprov mcf zimbraMtaPostscreenNonSmtpCommandTTL 30d
zmprov mcf zimbraMtaPostscreenPipeliningAction enforce
zmprov mcf zimbraMtaPostscreenPipeliningEnable no
zmprov mcf zimbraMtaPostscreenPipeliningTTL 30d
zmprov mcf zimbraMtaPostscreenWatchdogTimeout 10s
zmprov mcf zimbraMtaPostscreenWhitelistInterfaces static:all

测试 Postscreen:

测试使用 Postscreen 查看结果,无需采取任何操作。在一个 测试场景中,您指示 Postscreen 记录电子邮件连接,而无需 对他们采取行动。对结果满意后,您可以设置 根据需要强制执行或删除电子邮件的后屏幕值。

  1. 设置基于 DNS 的黑洞列表 (DNSBL)。

  2. 将后屏幕设置为忽略。

以下实际示例演示了从以下位置返回 550 错误: 测试会话期间的后屏幕:

Mar 1 02:03:26 edge01 postfix/postscreen[23154]: DNSBL rank 28 for [112.90.37.251]:20438

Mar 1 02:03:26 edge01 postfix/postscreen[23154]: CONNECT from [10.210.0.161]:58010 to [10.210.0.174]:25

Mar 1 02:03:26 edge01 postfix/postscreen[23154]: WHITELISTED [10.210.0.161]:58010

Mar 1 02:03:27 edge01 postfix/postscreen[23154]: NOQUEUE: reject: RCPT from [112.90.37.251]:20438: 550 5.7.1 Service unavailable; client [112.90.37.251] blocked using zen.spamhaus.org; from=<hfxdgdsggfvfg@gmail.com>, to=<Zimbra Support>, proto=ESMTP, helo=<gmail.com>

Mar 1 02:03:27 edge01 postfix/postscreen[23154]: DISCONNECT [112.90.37.251]:20438

接收和发送邮件

Zimbra MTA 传送传入和传出的邮件消息。对于 发出邮件时,Zimbra MTA 确定收件人的目的地 地址。如果目标主机是本地主机,则消息将传递到 用于交付的 Zimbra 服务器。如果目标主机是远程邮件 服务器,Zimbra MTA 必须建立一种通信方法来传输 向远程主机发送消息。对于传入邮件,MTA 必须能够 接受来自远程邮件服务器的连接请求并接收消息 对于本地用户。

要发送和接收电子邮件,必须在 DNS 中配置 MTA,同时使用 A 记录和 MX 记录。为了发送邮件,MTA 使用 DNS 来解析 主机名和电子邮件路由信息。接收邮件时,MX记录 必须正确配置才能将邮件路由到邮件服务器。

如果不启用 DNS,则必须配置中继主机。

消息队列

当 Zimbra MTA 接收邮件时,它会通过一系列路由来路由邮件 队列来管理交付;传入、活动、延迟、保留和损坏。

Message Queues

传入消息队列保存已收到的新邮件。 每条消息都用唯一的文件名标识。消息已移至 有空间时的活动队列。如果没有问题,消息转移 很快就通过了这个队列。

active消息队列保存准备发送的消息。的 MTA 对活动队列中的邮件数量设置限制 在任何一个时间。从这里,消息被移入和移出防病毒软件 和反垃圾邮件过滤器,然后再传递到另一个队列。

无法投递的消息被放置在延迟队列。 的 交付失败的原因记录在延期的文件中 队列。经常扫描该队列以重新发送消息。 如果 在设定的传递尝试次数后无法发送消息, 消息失败并被退回给原始发件人。您可以选择 向发件人发送消息已被推迟的通知。

hold消息队列保留无法处理的邮件。 留言 保留在此队列中,直到管理员移动它们。无定期交货 尝试获取保留队列中的消息。

腐败队列存储损坏的不可读消息。

您可以从以下位置监视邮件队列的传递问题: 管理控制台。参见 监控 Zimbra 服务器.

来自外部域的邮件的消息横幅

可以为来自外部域的邮件添加邮件中的消息横幅。这将帮助用户识别源自其组织外部的邮件。该功能由 localconfig 属性控制,默认情况下处于禁用状态。

以下是属性的详细信息:

  • zimbra_external_email_warning_enabled- 用于启用/禁用该功能的属性。

  • zimbra_external_email_warning_message- 自定义要在邮件中显示的消息的属性。

以下是要以 zimbra 用户身份执行的说明:

  1. 启用该功能:

    su - zimbra
    zmlocalconfig -e zimbra_external_email_warning_enabled=true
  2. 重新启动邮箱服务:

    zmmailboxdctl restart

当用户收到来自外部域的邮件时,邮件横幅将显示在邮件正文的顶部。

修改消息

外部域的消息也可以修改。

以下是说明:

  1. 编辑 localconfig 属性zimbra_external_email_warning_message随着新消息:

    zmlocalconfig -e zimbra_external_email_warning_message="The external domain warning has been edited"
  2. 重启邮箱服务:

    zmmailboxdctl restart

当用户从外部域接收邮件时,编辑后的邮件横幅将显示在邮件正文的顶部。

Zimbra 代理服务器

Zimbra Proxy 是一个高性能代理服务器,可以配置为 POP3/IMAP/HTTP代理用于反向代理IMAP/POP3和HTTP客户端 向一组后端服务器发出请求。

Zimbra 代理包在以下过程中安装和配置 Zimbra 协作安装。您可以在邮箱上安装此软件包 服务器、MTA 服务器或在其自己的独立服务器上。当 Zimbra 代理 安装包后,代理功能已启用。大多数情况下,没有 修改是必要的。

使用 Zimbra 代理的好处

使用 Zimbra 代理的好处包括:

  • Zimbra 代理集中对邮箱服务器的访问

  • 负载平衡

  • 安全性

  • 身份验证

  • SSL 终止

  • 缓存

  • 集中式日志记录和审核

  • URL 重写

  • 严格的服务器名称强制执行(可选)

欲了解更多信息,请参阅维基页面 Zimbra_Proxy_Guide.

Zimbra 代理组件

Zimbra 代理旨在提供快速的 HTTP/POP/IMAP 代理, 可靠且可扩展。 Zimbra 代理包括以下内容:

组件 描述

Nginx

处理所有传入的高性能 HTTP/IMAP/POP3 代理服务器 HTTP/POP/IMAP 请求。

Memcached

高性能分布式内存对象缓存系统,其中路由 信息被缓存以提高性能。

Zimbra 代理路由查找处理程序

Servelet — 位于 Zimbra 邮箱服务器上 — 用于处理对 用户帐户路由信息。该路由信息包括 用户帐户所在的服务器和端口号。

代理架构和流程

本节介绍 Zimbra 代理的架构和流程顺序。

  1. 最终客户端使用 HTTP/HTTPS/POP/IMAP 端口连接到 Zimbra 代理。

  2. 当 Zimbra Collaboration Proxy 收到传入连接时, Nginx 组件向 Zimbra 协作代理路由发送 HTTP 请求 查找处理程序组件。

    Proxy Architecture

  3. Zimbra 协作代理路由查找处理程序定位路由 正在访问的帐户的信息并将其返回给 Nginx。

  4. Memcached组件存储配置的路由信息 一段时间(默认为一小时)。 Nginx 使用此路由信息 而不是查询 Zimbra 协作代理路由查找处理程序 直到默认期限到期。

  5. Nginx 使用路由信息连接到 Zimbra Collaboration 邮箱。

  6. Zimbra 协作代理连接到 Zimbra 协作邮箱并 启动 Web/邮件代理会话。最终客户端的行为就像 直接连接到 Zimbra 协作邮箱。

更改 Zimbra 代理配置

配置 Zimbra 代理时,Zimbra 代理配置执行关键字 根据需要用 LDAP 配置中的值进行替换 本地配置。

如果 Zimbra 代理设置后需要更改,请修改 Zimbra LDAP 属性或 localconfig 值并运行 zmconfigd 生成 更新了 Zimbra 代理配置。 Zimbra 代理配置文件是 在/opt/zimbra/conf/nginx.conf中。 nginx.conf 包括主要配置, memcache 配置、邮件配置和 Web 配置文件。

Zimbra 代理配置的常见更改是 IMAP/POP 配置 相对于原始默认设置的更改

  • HTTP 反向代理配置相对于原始默认设置的更改

  • Kerberos 的 GSSAPI 身份验证。在这种情况下,您手动识别 Kerberos Keytab 文件的位置,包括 Zimbra 代理密码

Zimbra 代理

Zimbra 代理允许最终用户访问其 Zimbra 协作帐户 使用 Microsoft Outlook、Mozilla Thunderbird 或其他客户端 POP/IMAP 终端客户端软件。最终用户可以使用 POP3、IMAP、POP3S 进行连接 (安全 POP3)或 IMAPS(安全 IMAP)。

例如,代理允许用户输入 imap.example.com 作为其 IMAP 服务器。 imap.example.com 上运行的代理检查其 IMAP 流量, 进行查找以确定用户邮箱的后端邮箱服务器 依赖并透明地代理来自用户 IMAP 客户端的连接 到正确的邮箱服务器。

Zimbra 代理端口

以下端口由 Zimbra 代理或 Zimbra 邮箱使用 (如果未配置代理)。如果您有任何其他服务正在运行 这些端口,将其关闭。

最终客户端使用 Zimbra 代理直接连接到 Zimbra 代理 港口。 Zimbra 代理连接到路由查找处理程序或 Zimbra 邮箱 使用 Zimbra 邮箱端口。

表 10. 代理端口
Zimbra 代理端口(Zimbra 外部) 端口

HTTP

80

HTTPS

443

POP3

110

POP3S(安全 POP3)

995

IMAP

143

IMAPS(安全 IMAP)

993

Zimbra 邮箱端口(Zimbra 内部)

端口

路由查找处理程序

7072

HTTP 后端(如果配置了代理)

8080

HTTPS 后端(如果配置了代理)

8443

POP3 后端(如果配置了代理)

7110

POP3S 后端(如果配置了代理)

7995

IMAP 后端(如果配置了代理)

7143

IMAPS 后端(如果配置了代理)

7993

严格服务器名称强制

Zimbra 代理能够严格强制Host标头中允许哪些值 由客户端传入。

这是默认启用的新安装上但保留禁用用于升级从以前的 版本除非在安装过程中切换。

可以通过设置zimbraReverseProxyStrictServerNameEnabled布尔配置来更改功能 选项,然后重新启动代理服务器。

  • TRUE - 启用严格服务器名称强制

  • FALSE - 禁用严格服务器名称强制

zmprov mcf zimbraReverseProxyStrictServerNameEnabled TRUE

启用严格服务器名称功能时,可以指定其他有效服务器名称 在域级别使用zimbraVirtualHostNamezimbraVirtualIPAddress配置项。

zmprov md example.com zimbraVirtualHostName mail.example.com zimbraVirtualIPAddress 1.2.3.4
每个域只需要一个虚拟 IP 地址,但可以接受多个虚拟 IP 地址。

在 HTTP 代理安装后设置 IMAP 和 POP 代理

IMAP 代理随 Zimbra Collaboration 一起安装,并在安装期间设置 从配置菜单安装。要设置 HTTP 代理, 代理必须安装在识别的代理节点上才能设置 HTTP 代理。通常不需要其他配置。

如果需要,请在安装 HTTP 代理后设置 IMAP/POP 代理,并设置邮箱服务器和代理节点。

您可以将命令运行为zmproxyconfig -r,以针对远程运行 主机。这需要在 LDAP 中正确配置服务器 大师。
使用单独的代理节点设置 IMAP/POP 代理

如果您的配置包括 单独的代理服务器。

  1. 在您想要代理的每个 Zimbra 邮箱服务器上,启用 IMAP/POP 代理的代理。

    /opt/zimbra/libexec/zmproxyconfig -e -m -H mailbox.node.service.hostname

    这配置以下内容:

    端口属性 设置

    zimbraImapBindPort

    7143

    zimbraImapProxyBindPort

    143

    zimbraImapSSLBindPort

    7993

    zimbraImapSSLProxyBindPort

    993

    zimbraPop3BindPort

    7110

    zimbraPop3ProxyBindPort

    110

    zimbraPop3SSLBindPort

    7995

    zimbraPop3SSLProxyBindPort

    995

    zimbralmapCleartextLoginEnabled

    TRUE

    zimbraReverseProxyLookupTarget

    TRUE

    zimbraPop3CleartextLoginEnabled

    TRUE

  2. 重新启动代理和邮箱服务器上的服务。

    zmcontrol restart

设置代理节点

在安装了代理服务的每个代理节点上,启用代理 对于网络。

/opt/zimbra/libexec/zmproxyconfig -e -m -H proxy.node.service.hostname

这配置以下内容:

端口属性 设置

zimbraImapBindPort

7143

zimbraImapProxyBindPort

143

zimbraImapSSLBindPort

7993

zimbraImapSSLProxyBindPort

993

zimbraPop3BindPort

7110

zimbraPop3ProxyBindPort

110

zimbraPop3SSLBindPort

7995

zimbraPop3SSLProxyBindPort

995

zimbraReverseProxyMailEnabled

TRUE

设置单节点

如果使用 Zimbra Collaboration 安装 Zimbra 代理,请使用本节中的步骤 在同一台服务器上。

  1. 启用网络代理。

    /opt/zimbra/libexec/zmproxyconfig -e -m -H mailbox.node.service.hostname

    这将配置以下内容:

    端口属性 设置

    zimbraImapBindPort

    7143

    zimbraImapProxyBindPort

    143

    zimbraImapSSLBindPort

    7993

    zimbraImapSSLProxyBindPort

    993

    zimbraPop3BindPort

    7110

    zimbraPop3ProxyBindPort

    110

    zimbraPop3SSLBindPort

    7995

    zimbraPop3SSLProxyBindPort

    995

    zimbraImapCleartextLoginEnabled

    TRUE

    zimbraReverseProxyLookupTarget

    TRUE

    zimbraPop3CleartextLoginEnabled

    TRUE

    zimbraReverseProxyMailEnabled

    TRUE

  2. 重新启动代理和邮箱服务器上的服务。

    zmcontrol restart

配置 Zimbra HTTP 代理

Zimbra 代理还可以将 HTTP 请求反向代理到正确的后端 服务器。

例如,用户可以使用 Web 浏览器连接到位于https://mail.example.com的代理服务器。邮箱位于 mbs1.example.com 上的用户的连接由 mail.example.com 服务器上运行的代理代理到 mbs1.example.com。该代理还支持 REST 和 CalDAV 客户端、Zimbra Connector for Outlook 和 Zimbra Mobile Sync 设备。

HTTP 反向代理按如下方式路由请求:

  • 如果可以检查请求 URL 以确定用户名,则 请求被路由到用户的后端邮箱服务器 网址。通过此支持 REST、CalDAV 和 Zimbra Mobile Sync 机制。

  • 如果请求有身份验证令牌 cookie (ZM_AUTH_TOKEN),请求是 路由到经过身份验证的用户的后端邮箱服务器。

  • 如果上述方法不起作用,则使用IP hash方法加载 平衡后端邮箱服务器之间的请求,这些服务器能够 处理请求或进行任何必要的内部代理。

设置 HTTP 代理

要设置 HTTP 代理,必须在已识别的设备上安装 Zimbra 代理 节点。

您可以运行命令/opt/zimbra/libexec/zmproxyconfig -r来运行 针对远程主机。注意,这需要服务器正常 在 LDAP 主服务器中配置。
将 HTTP 代理设置为单独的代理节点

如果您的配置包含单独的代理,请使用本节中的步骤 服务器。

  1. 在您想要代理的每个 Zimbra 邮箱服务器上,启用 网络代理。

    /opt/zimbra/libexec/zmproxyconfig -e -w -H mailbox.node.service.hostname

    这将配置以下内容:

    属性 设置

    zimbraMailReferMode

    反向代理。

    zimbraMailPort

    8080(避免端口冲突)

    zimbraMailSSLPort

    8443(避免端口冲突)

    zimbraReverseProxyLookupTarget

    TRUE

    zimbraMailMode

    HTTP

  2. 重新启动代理和邮箱服务器上的服务。

    zmcontrol restart
  3. 使用要用于的公共服务主机名配置每个域 REST URL、电子邮件和公文包文件夹。

    zmprov modifyDomain <domain.com> zimbraPublicServiceHostname <hostname.domain.com>

设置代理节点

在每个安装了代理服务的代理节点上,启用代理 对于网络。

/opt/zimbra/libexec/zmproxyconfig -e -w -H proxy.node.service.hostname

这将配置以下内容:

属性 设置

zimbraMailReferMode

反向代理。 要设置代理服务器邮件模式,请在命令中添加 -x 选项,即 特定模式为 http、https、两者、重定向或混合。

zimbraMailProxyPort

80(避免端口冲突)。

zimbraMailSSLProxyPort

443(避免端口冲突)。

zimbraReverseProxyHttpEnabled

TRUE(表示已启用 Web 代理)。

zimbraReverseProxyMailMode

HTTP(默认)

要设置代理服务器邮件模式,请在命令中添加-x选项 使用特定模式:http, https, 两者, 重定向, 混合.

为 HTTP 代理设置单个节点

如果 Zimbra 代理与 Zimbra 一起安装,请使用本节中的步骤 同一个服务器。

  1. 在您想要代理的每个 zimbra 邮箱服务器上,启用 网络代理。

    /opt/zimbra/libexec/zmproxyconfig -e -w -H mailbox.node.service.hostname

    这将配置以下内容:

    属性 设置

    zimbraMailReferMode

    反向代理。

    zimbraMailPort

    8080(避免端口冲突)

    zimbraMailSSLPort

    8443(避免端口冲突)

    zimbraReverseProxyLookupTarget

    TRUE

    zimbraMailMode

    HTTP(唯一支持的模式)

    zimbraMailProxyPort

    80(避免端口冲突)

    zimbraMailSSLProxyPort

    443(避免端口冲突)

    zimbraReverseProxyHttpEnabled

    TRUE(表示 Web 代理 已启用)

    zimbraReverseProxyMailMode

    HTTP(默认)

    要设置代理服务器邮件模式,请将-x选项添加到命令中 使用特定模式:http, https, 两者, 重定向, 混合.

  2. 重新启动代理和邮箱服务器上的服务。

    zmcontrol restart

    使用要用于 REST 的公共服务主机名配置每个域 URL、电子邮件和公文包文件夹。

    zmprov modifyDomain <domain.com> zimbraPublicServiceHostname <hostname.domain.com>

设置代理以使用明文进行上游连接

设置代理以使用明文进行上游连接时,设置 zimbraReverseProxySSLToUpstreamEnabled为 FALSE。

该属性默认为 TRUE。在“开箱即用”的代理设置中, 上游通信默认为 SSL。

REST URL 生成

对于 REST URL,您可以设置主机名、服务协议和服务端口 全局或针对特定域的以下属性。

  • zimbraPublicServiceHostname

  • zimbraPublicServiceProtocol

  • zimbraPublicServicePort

生成 REST URL 时:

  • 如果domain.zimbraPublicServiceHostname已设置,使用zimbraPublicServiceProtocol + zimbraPublicServiceHostname + zimbraPublicServicePort

  • 否则,它将回退到服务器(帐户的主服务器)属性:

    • 协议是根据server.zimbraMailMode

    • 计算得出的 主机名是server.zimbraServiceHostname

  • 端口是根据协议计算得出的。

关于使用zimbraMailReferMode- 在早期版本中,本地配置 变量 —zimbra_auth_always_send_refer— 确定执行哪个操作 当用户的邮箱不在服务器上时,后端服务器会采取 用户登录的。默认值 FALSE 重定向用户 如果用户登录到错误的后端主机。

在多服务器 Zimbra 上,如果需要负载平衡名称来创建 友好的登陆页面,用户总是需要被重定向。在那 案例,zimbra_auth_always_send_refer被设置为 TRUE。

现在有了成熟的反向代理,用户不需要 重定向。本地配置变量zimbraMailReferMode与使用 nginx 反向代理。

设置代理可信 IP 地址

当使用 Zimbra 配置代理时,每个代理服务器的 IP 必须在 LDAP 属性zimbraMailTrustedIP中配置地址 当用户通过以下方式登录时,将代理地址识别为可信 代理。代理 IP 地址添加到X-Forwarded-For标头中 信息。这X-Forwarded-For标头会自动添加到 localconfigzimbra_http_originating_ip标头属性。当用户登录时 其中,该 IP 地址和用户地址在 Zimbra 中进行验证 邮箱日志。

在属性中设置每个代理 IP 地址。例如,如果您有两个 代理服务器:

zmprov mcf +zimbraMailTrustedIP {IP of nginx-1} +zimbraMailTrustedIP {IP of nginx-2}

要验证 X-Forwarded-For 是否已正确添加到本地配置中,请输入

zmlocalconfig | grep -i http

您应该看到

zimbra_http originating_ip_header = X-Forwarded-For

配置 Zimbra 代理进行 Kerberos 身份验证

如果您使用 Kerberos5 身份验证,请使用本节中的步骤 机制,并希望将其配置为 IMAP 和 POP 代理。

确保您的 Kerberos5 身份验证机制正确 配置。请参阅Zimbra LDAP 服务
  1. 在每个代理节点上,设置 zimbraReverseProxyDefaultRealm 服务器 属性为代理服务器对应的域名。例如:

    zmprov ms [DNS name.isp.net] zimbraReverseProxyDefaultRealm [ISP.NET]
  2. 必须配置电子邮件客户端连接的每个代理 IP 地址 由邮件服务器进行 GSSAPI 身份验证。在每个代理节点上 代理 IP 地址:

    zmprov mcf +zimbraReverseProxyAdminIPAddress [IP address]
  3. 在每个代理服务器上:

    zmprov ms [proxyexample.net] zimbraReverseProxyImapSaslGssapiEnabled TRUE
    
    zmprov ms proxyl.isp.net zimbraReverseProxyPop3SaslGssapiEnabled TRUE
  4. 重新启动代理服务器

    zmproxyctl restart

Zimbra 管理控制台

Zimbra 管理控制台是基于浏览器的用户界面,用于集中管理 Zimbra 服务器和用户帐户。

管理员帐户

当您登录到管理控制台时,您有权执行的任务将显示在导航窗格中。 这些任务取决于分配给您的管理员角色的权限。

您可以创建两种类型的管理员帐户来管理 Zimbra Collaboration:

  • 全局管理员拥有管理服务器的完全权限, 全局设置、域和帐户以及创建其他管理员。 软件安装过程中会自动创建一个全局管理员帐户。 稍后随时创建其他全局管理员帐户。 您可以从管理控制台或命令行执行管理任务。

  • 全局管理员授予委派管理员自定义管理员角色,以通过管理控制台管理不同的任务。 看委托管理了解更多详情。

登录管理控制台

  1. 要在典型安装中启动管理控制台,请使用以下 URL 模式。

    https://server.domain.com:7071/

    参数 说明

    server.domain.com

    Zimbra 服务器名称或 IP 地址。

    7071

    默认 HTTP 侦听端口。

  2. 在登录屏幕上,输入完整的管理员地址 - 例如admin@domain.com- 以及在 Zimbra Collaboration 的服务器安装过程中为其配置的密码。

    Administration Console

管理控制台登录的双因素身份验证

登录管理控制台时可以使用双因素身份验证 (2FA) 登录机制。可以为管理员和委派管理员启用它。启用后,管理员在登录管理控制台时必须完成额外的验证步骤。

有关该功能以及如何启用 2FA 功能的详细信息,请参阅:双因素身份验证

为管理员帐户设置 2FA(通过 Web 邮件)

管理员帐户必须从 Web 客户端界面配置自己的 2FA。

  1. 使用管理员帐户登录 Web 客户端

  2. 转到首选项

  3. 选择帐户安全(基于 UI 版本)

  4. 打开双因素身份验证

  5. 单击设置双因素身份验证

  6. 选择首选验证方法:

    • 身份验证器应用程序(TOTP)

    • 基于电子邮件的验证

  7. 按照屏幕上的步骤完成设置

  8. 使用验证码确认设置

启用后,管理员在登录两者时将需要输入 2FA 代码: - 网页客户端 - 管理控制台

注意
  • 一旦为管理员帐户启用,管理控制台登录将强制执行 2FA

  • 支持的验证方法包括验证器应用程序和电子邮件(如果已启用)

  • 2FA 配置必须通过 Web 客户端管理

修改管理员密码

您可以更改密码 -从管理控制台或 CLI - 随时。

在管理控制台中,使用更改密码屏幕可设置新密码字符串,并定义用户密码修改策略。

管理控制台:

主页 → 管理 → 账户

双击选择用户帐户 齿轮图标,选择更改密码从弹出菜单中。

Change Password
zmprov sp adminname@domain.com password

自定义登录和注销页面

可以将不同的登录和注销页面配置为全局设置或域设置。

指定管理员登录失败或身份验证已过期时重定向到的 URL:

全球的:

zmprov mcf zimbraAdminConsoleLoginURL <https://example.com>

领域:

zmprov md <domain> zimbraAdminConsoleLoginURL <https://example.com>

要指定将管理员重定向到的 URL(用于注销):

全局:

zmprov mcf zimbraAdminConsoleLogoutURL <https://example.com>

域:

zmprov md <domain> zimbraAdminConsoleLogoutURL <https://example.com>

管理任务

大多数 Zimbra 任务 - 例如创建帐户和服务等级、服务器状态监控、域管理、备份计划和会话管理 - 可以从管理控制台进行管理。

其他配置和维护任务需要使用 Zimbra CLI,因为您无法在管理控制台中执行这些任务。 例如:启动和停止服务以及管理本地服务器配置。

在管理控制台中,如果您需要查看与特定功能关联的属性,您可以单击当前可见配置页面的文本标签以在弹出窗口中打开信息。 这些弹出窗口还提供了指南文本,如下图所示。

在管理控制台查看属性

单击字段标签可查看“属性”弹出窗口。

Viewing Attributes

在视图中弹出属性后,单击更多查看有关该字段的指南文本。

Viewing Attributes

导航用户界面

Zimbra 协作管理控制台的组织提供了与您的登录权限相关的配置和监控工具以及视图的快速导航。 它还可以轻松访问各种类型的帮助以及屏幕上的指南文本。

登录管理控制台后,页面提供状态信息和选项,您可以选择导航至本用户指南中描述的配置和查看选项。

Administration Console
<1> Go to Previous or Next page
<2> Current Location/Path
<3> Search
<4> Screen Refresh
<5> Current User and Logout Option
<6> Help
<7> Gear Icon
<8> Status Pane
<9> Viewing Pane
<10> Navigation Pane

导航窗格和查看窗格中的显示和选项根据您的选择而变化。 UI 的其他部分 - 箭头按钮、搜索字段、屏幕刷新、当前位置/路径、当前登录和帮助 - 始终保留在视图中。

齿轮图标Gear Icon与一些屏幕一起显示,以能够快速访问与屏幕中提供的功能相关的功能。 有关齿轮图标的更多信息,请参阅使用齿轮图标

主页导航窗格

中提供的选项主页导航窗格被分类在主页下目录。 一些选项会引导至配置页面;其他人则引导至包含与您的选择相关的报告的页面。

右图是导航窗格当前支持的选项的展开视图。

视图中页面的上部栏始终显示您在层次结构中的当前位置,并且您可以使用多个选项来关闭当前视图:

  • 要返回上一页或转到下一页,请单击向左或向右箭头。

  • 要返回 UI 的特定部分,请从“主页”下拉列表中选择一个选项。

  • 要直接转到特定选项,请单击导航窗格中的层次结构。

导航窗格选项在以下主题中进行介绍:

主页用户界面

屏幕是默认的登录视图,它提供主页 导航窗格和主页。 此页面提供系统状态的快照视图以及一系列基本任务的快速访问链接。

Home UI
<1> Go to Previous or Next page
<2> Search
<3> Screen Refresh
<4> Current User and Logout Option
<5> Help
<6> System Status
<7> Status Pane
<8> Quick Start
<9> Navigation Pane
表 11. 主界面
主题 描述

摘要

显示当前正在运行和查看的 Zimbra Collaboration 版本, 以及检测到的与此会话关联的服务器、帐户、域和服务类别的数量。

维护

显示最近执行的软件备份。

运行时

显示服务、活动会话和队列长度的运行时统计信息。

1 开始

显示开始使用 Zimbra Collaboration 所需的基本步骤 操作,并提供此 UI 中功能的快速链接:

  1. 安装许可证

  2. 配置备份

  3. 安装证书

  4. 配置默认 COS

2 设置域

显示用于建立要由协作者管理的域的步骤。 每个步骤都是指向此 UI 中的功能的链接:

  1. 创建域

  2. 配置 GAL...​

  3. 配置身份验证

3 添加帐户

显示添加帐户以供协作者管理的步骤。 每个步骤都是指向此 UI 中的功能的链接:

  1. 添加帐户

  2. 管理帐户

  3. 迁移和共存

监控界面

监控屏幕提供监控导航窗格和监控页面,其中显示有关协作者监控的服务器的各种详细信息。

Monitor UI
<1> Go to Previous or Next page
<2> Search
<3> Screen Refresh
<4> Current User and Logout Option
<5> Help
<6> Status Pane
<7> Navigation Pane
监控导航窗格和页面

中提供的选项监视器页面提供了各种方法- 动态图表或表格 - 用于查看下表中列出的单个或系统范围内受监视的服务器和服务。

必须激活 Adobe Flash Player 才能查看动态图表。
表 12. 监视器 UI
选项 说明

服务器状态

协作者监控的每台服务器的服务器、服务和时间详细信息。

高级统计

高级统计的系统范围信息页面,允许您使用此页面提供的选择字段中的参数设置新的监控图表:服务器、组、开始、结束和计数器。

在此高级统计页面中,您还可以选择执行以下操作:

  • 隐藏图表设置

  • 更新图表

  • 删除图表

消息计数

系统范围信息页面,用于消息计数,用于检查描述过去 48、30、60 和 365 天计数的图表。 该信息总结了使用 SMTP 或 LMTP 的邮件收件人数量。 计数的轮询间隔直接发布在每个图表的下方。

邮件量

系统范围信息页面,针对邮件量,可查看描述使用 SMTP 或 LMTP 的邮件收件人数量以及相关邮件大小的图表。 这些计数按过去 48、30、60 和 365 天的时间段进行汇总。 计数的轮询间隔直接发布在每个图表的下方。

反垃圾邮件/反病毒

系统范围信息页面,用于反垃圾邮件/反病毒

活动

活动,描述 AS/AC 系统在过去 48、30、60 和 365 天内处理的唯一邮件数。 计数的轮询间隔直接发布在每个图表的下方。

服务器统计信息

访问选定服务主机的统计信息。 您可以查看选定主机的信息,如下所示:

  • 将光标放在服务主机名上并按住可查看弹出许可证信息。

    License

  • 右键单击​​服务主机名,然后从弹出窗口中选择查看以转到其统计信息页面。 您还可以双击服务主机名来访问统计页面。

    View

对于选定的服务器,服务器统计信息导航窗格提供用于查看磁盘、会话、邮箱配额、消息计数、消息量和反垃圾邮件/反病毒活动的选项。

邮件队列

选项卡页面,可从中查看延迟、传入、活动、保留、 检测到的邮件队列的损坏统计信息。 每个标签页提供摘要过滤信息和消息详细信息。

管理用户界面

管理屏幕提供管理导航窗格和管理 页面,显示分类提供为帐户的表格, 当前由协作者管理的别名、通讯组列表和资源。

Manage UI
<1> Go to Previous or Next page
<2> Search
<3> Screen Refresh
<4> Current User and Logout Option
<5> Help
<6> Gear Icon
<7> Status Pane
<8> Navigation Pane
表 13. 管理 UI
选项 描述

帐户(计数)

由协作者管理的帐户表。 您可以执行的操作:

  • 从弹出显示中查看 ID 信息:将光标悬停在“帐户”行上。

  • 右键单击​​表格行,或使用齿轮图标访问以下功能:删除, 编辑, 更改密码, 新管理员, 查看邮件, , 无效会话, 查看权限, 配置拨款, 移动邮箱, 搜索邮件.

别名(计数)

由协作者管理的别名表。 每个别名都是一个电子邮件地址,用于将所有电子邮件转发到指定帐户。

您可以执行的操作:

  • 在弹出显示中查看 ID 信息:将光标悬停在别名行上。

  • 右键单击表格行,或使用齿轮图标访问以下功能: 删除, 编辑, 新管理员, 查看邮件, 移动别名, 新建, 使会话无效, 查看权限, 配置授权, 移动邮箱, 搜索邮件.

通讯组列表(数)

由协作者管理的通讯组列表表。 通讯组列表是包含在列表中的一组邮件地址,以及该列表的邮件地址。 当您向通讯组列表发送消息时,您就是在发送该消息隐含地地址出现在列表中的每个人。 这到:地址行显示通讯组列表地址。

您可以执行的操作:

  • 查看 ID 信息:将光标悬停在通讯组列表行上。

  • 右键单击​​表格行,或使用齿轮图标访问以下功能:删除, 编辑, 新管理员, 查看邮件, , 查看权限, 配置拨款, 搜索邮件.

资源(计数)

协作者管理的资源表。 资源是支持会议安排的位置或设备。

您可以执行的操作:

  • 查看 ID 信息:将光标悬停在资源行上。

  • 右键单击表行,或使用齿轮图标访问以下功能:删除, 编辑, 新管理员, 查看邮件、新建, 查看权限, 配置授权, 搜索邮件.

配置 UI

配置屏幕提供配置导航窗格和配置页面,可启用单个或全局组件的配置。

Configure UI
<1> Go to Previous or Next page
<2> Search
<3> Screen Refresh
<4> Help
<5> Gear Icon
<6> Status Pane
<7> Configure Navigation Pane
表 14. 配置 UI
选项 说明

服务类别

显示从此管理控制台管理的 COS。

  • 双击表行以访问所选 COS 的配置屏幕,

  • 右键单击​​表格行,或使用齿轮图标访问以下功能:新建, 删除, 编辑, 重复

显示从此管理控制台管理的域。

  • 双击表行可访问所选域

  • 的配置屏幕 右键单击表行,或使用齿轮图标访问以下功能: 新建, 删除, 编辑, 配置 GAL, 配置身份验证, 查看帐户, 添加域别名, 配置授权

服务器

显示从此管理控制台管理的服务器。

  • 双击表行以访问所选服务器的配置屏幕,

    或者

  • 右键单击表格行,或使用齿轮图标访问以下功能: 编辑, 刷新缓存, 启用代理, 禁用代理

全局设置

提供对用于设置各种全局参数的工具的访问 Zimbra 合作。

齿轮图标:保存, 下载, 更新许可证, 激活许可证, 手动激活许可证

Zimlets

显示从此管理控制台管理的 Zimlet。

  • 双击表行可访问所选 Zimlet 的配置屏幕,

    或者

  • 右键单击表格行,或使用齿轮图标访问以下功能: 部署, 取消部署, 切换状态

管理扩展

显示从此管理控制台管理的管理扩展。

  • 双击表行可访问所选管理扩展

    或的配置屏幕

  • 右键单击表行,或使用齿轮图标访问以下功能:部署, 取消部署

证书

显示从此管理控制台管理的证书。

  • 双击表行可访问所选证书

  • 的一般信息屏幕 右键单击表行,或使用齿轮图标访问以下功能: 安装证书, 查看证书

权限

显示适用于此管理控制台的各种权限。

  • 双击表格行可访问所选权利的“一般信息”屏幕,

  • 右键单击​​表格行,或使用齿轮图标访问以下功能:看法

全局访问控制列表

显示从此管理控制台管理的全局访问控制列表。

  • 双击表行以访问所选全局 ACL 的编辑 ACE 屏幕,

    或者

  • 右键单击表行,或使用齿轮图标访问以下功能:添加, 删除, 编辑

全局设置 UI

全局设置定义服务器、帐户、COS 和域的默认全局值。 当特定项目的设置中没有特定值和参数时,将应用这些默认值和参数。

您可以在安装过程中配置全局设置的默认值。 您可以随时通过管理控制台的全局设置更改设置。

表 15. 全局设置 UI
选项 说明

一般信息

  • 设置 GAL 搜索结果数量的全局上限。

  • 定义默认域。

  • 配置可用于从远程数据源获取内容的线程数。

欲了解更多信息, 请参阅常规信息配置

附件

  • 启用规则以拒绝包含特定附件的邮件 扩展。

  • 禁止读取附件。

  • 将附件转换为 HTML 以便查看。

欲了解更多信息, 请参阅附件配置.

MTA

  • 启用身份验证。

  • 设置最大消息大小。

  • 启用或禁用协议和 DNS 检查。

  • 添加 X-Originating-IP 消息标头。

欲了解更多信息, 请参阅MTA 配置.

IMAP

启用 IMAP 服务。 对这些设置的更改只有在服务器重新启动后才会生效。

POP

启用 POPS3 服务。 对这些设置的更改只有在服务器重新启动后才会生效。

AS/AV

设置反垃圾邮件和防病毒规则。 对垃圾邮件检查设置的更改只有在服务器重新启动后才会生效。

主题

  • 自定义现有主题的配色方案

  • 向主题添加徽标。

对主题设置的更改需要使用Flush Cache 刷新服务器主题缓存在服务器设置的工具栏上。

欲了解更多信息, 请参阅颜色和徽标管理.

高级

  • 配置要在用于登录与外部来宾共享的公文包文件夹的“需要身份验证”对话框的提示中显示的公司名称

  • 添加帐户电子邮件验证的正则表达式规则。

保留策略

设置用户文件夹中项目的保留和删除时间阈值。 您可以将保留和删除策略配置为全局设置,或者配置 COS 级别策略而不是从全局设置继承。

代理

设置Web代理和邮件代理的参数。 还提供了用于设置高级代理参数的工具。

S/MIME

(安全多用途 Internet 邮件扩展):在 S/MIME 选项卡上配置 LDAP 设置(如果启用了 S/MIME 功能)。 用户从 LDAP 服务器检索私钥。

前交叉韧带

(访问控制列表):转至 ACE(访问控制条目)配置以获取在选定目标上授予的委派管理权限,以添加、 编辑或删除 ACE。

备份/恢复

设置标准或自动分组模式的备份参数。 有关详细信息,请参阅备份和恢复.

SM

(存储管理):在消息移动到辅助卷之前配置消息的老化。

许可证

  • 更新并安装您的 Zimbra 许可证。

  • 查看当前许可证信息。

工具和迁移 UI

工具和迁移屏幕提供工具和迁移导航窗格,用于访问系统软件管理和系统备份/恢复。 管理员可以从此页面访问和下载特定的向导和工具。

Tools and Migration UI
<1> Go to Previous or Next page
<2> Search
<3> Screen Refresh
<4> Current User and Logout Option
<5> Help
<6> Status Pane
<7> _Tools and Migration_ Navigation Pane
表 16. 工具和迁移
选项 描述

下载

访问 Zimbra 实用程序,其中提供可下载的zip包 - 用于一般管理用途,并同步单个最终用户 - 包含各种平台的迁移向导和 Outlook 连接器。 附加信息提供于可下载的向导和连接器.

软件更新

了解您的系统是否需要 Zimbra 服务器更新,并使用此页面查看与您的系统软件更新相关的轮询和电子邮件联系信息。

另请参阅检查 Zimbra 协作软件更新.

帐户迁移

查看系统检测到的有关帐户迁移的表格详细信息。 此页面列出了导入总量以及每个导入的状态。 此页面还提供列出的每个帐户迁移的所有者姓名。 另请参阅从 Zimbra 服务器迁移帐户.

客户端上传

使用此页面浏览要上传到您系统的最新版本的软件。 选择图像后,您可以使用上传在此页面完成软件上传。

备份

根据最新的系统备份访问当前可用空间和总空间 (MB) 的摘要视图。 您还可以从此导航窗格中选择管理员以查看其备份历史记录。 历史记录列出了每次备份发生的标签、开始和结束时间以及成功或失败。 这些列表中的每一个都与备份目标的相同显示目录路径相关联。 该部分备份和恢复提供了附加信息。

可下载的向导和连接器

使用工具和迁移屏幕下载选项获取本节中描述的工具。

表 17. 管理员工具和迁移选项

适用于 Exchange/PST 的 Zimbra 协作迁移向导(32 位)
适用于 Exchange/PST 的 Zimbra 协作迁移向导(64 位)

获取zip文件以执行邮件、日历和联系人从 Microsoft Exchange 或 PST 文件到 Zimbra Collaboration Server 的服务器到服务器迁移。

该软件包已被弃用! 我们推荐audriga的自助迁移解决方案 作为所有帐户迁移的首选替代方案。

Domino 的 Zimbra 协作迁移向导

该软件包已被弃用! 我们推荐Audriga 的自助迁移解决方案 作为所有帐户迁移的首选替代方案。

Exchange 旧版 Zimbra Collaboration 迁移向导

该软件包已被弃用! 我们推荐Audriga 的自助迁移解决方案 作为所有帐户迁移的首选替代方案。

Zimbra Connector for Outlook MSI 定制器

提供包含可用于自定义标准 ZCO MSI 的函数的文本文件。 可以自定义服务器名称、端口和组织特有的其他变量。

用于 Outlook 品牌 MSI 的 Zimbra 连接器

获取 Windows Visual Basic 脚本版本(VBScript 脚本文件)以自定义标准 ZCO MSI。 定制替换了 Zimbra 产品名称和徽标的所有实例。

表 18. 最终用户桌面应用程序和实用程序/迁移和导入工具

Zimbra Connector for Outlook(32 位)
Zimbra Connector for Outlook(64 位)(用户说明)

该应用程序使 Outlook 能够与 Zimbra 服务器同步日历、联系人和邮件,并访问 Zimbra Collaboration 的业务功能。 地址簿、联系人、日历、任务和邮件直接与 Zimbra Collaboration 服务器同步。

(旧版)Microsoft Outlook PST 导入工具

该软件包已被弃用! 用户应使用常规迁移向导进行 PST 导入。

(旧版)Microsoft Exchange 迁移向导

该软件包已被弃用! 我们推荐Audriga 的自助迁移解决方案 作为所有帐户迁移的首选替代方案。

常规迁移向导

此工具将 Microsoft Exchange 服务器和 Outlook PST 文件中的数据导入到 Zimbra 服务器。

此包仅支持 PST 文件导入。 我们推荐Audriga 的自助迁移解决方案 作为所有帐户迁移的首选替代方案。

搜索界面

搜索屏幕显示搜索在管理控制台标题的搜索字段中进行查询的结果。

  • 当您打开此页面而不输入搜索查询时,所有结果是默认搜索,它在内容窗格中显示帐户、域和通讯组列表。

  • 自动完成功能允许您输入部分名称,然后从显示的匹配字符串列表中选择可搜索的名称。

  • 您还可以使用 Zimbra 邮箱 ID 号搜索帐户。 但是,要从邮箱 ID 返回搜索,必须在搜索中输入完整的 ID 字符串。

Search UI
<1> Go to Previous or Next page
<2> Search Options
<3> Search
<4> Screen Refresh
<5> Current User and Logout Option
<6> Help
<7> Gear Icon
<8> Status Pane
<9> Search Navigation Pane
表 19. 搜索 UI
选项 说明

所有结果

查看所有搜索结果的计数和表格。

帐户

查看帐户查询所产生的计数和表。

查看域查询所产生的计数和表。

分发列表

查看分发列表查询所产生的计数和表格。

基本属性

按名字、姓氏、显示名称或帐户 ID 号搜索用户。 您只能搜索管理员或委派管理员。

状态

按状态搜索帐户:活动、关闭、锁定、注销、待处理或维护。

上次登录时间

按上次登录时间搜索帐户。 您可以指定要搜索的日期范围。

外部电子邮件地址

搜索具有外部电子邮件地址的帐户。

COS

按 COS 搜索对象或未分配 COS 的对象。

服务器

搜索选定服务器上的帐户。

搜索选定域上的帐户。

已保存的搜索

默认情况下,此部分包括预定义的常见搜索查询。 您还可以创建并保存您的查询。 输入查询语法后,单击保存搜索并提供搜索名称。 然后,搜索将添加到此“已保存的搜索”部分。

  1. 搜索字段中,使用下拉选择器中的搜索选项来定义搜索类型,如帐户, 通讯组列表, 别名, 资源, , 服务类别所有对象.

    对于帐户,您可以按显示名称、名字/姓氏、电子邮件地址的第一部分、别名、递送地址或邮箱 ID 进行搜索。

  2. 搜索字段中输入搜索字符串。

    允许使用部分条目作为搜索条件,但基于邮箱 ID 的搜索必须包含完整的 ID 字符串。

  3. 点击搜索.

    将出现“搜索”页面,其中包含根据您的条件搜索的结果。

  4. 在导航窗格中查看结果总数,位于搜索 > 所有结果.

帮助中心 UI

帮助中心是在线帮助和文档中提供的资源参考,您可以通过帮助 中心中提供的链接进行访问屏幕。 还可以使用此页面访问社区论坛并查看专家对热门迁移问题的答复。

Help Center UI
<1> Go to Previous or Next page
<2> Search
<3> Screen Refresh
<4> Current User and Logout Option
<5> Help
<6> Status Pane
<7> Help Center Navigation Pane

协作者表中的工具

从导航窗格中选择类别通常会导致以表格形式显示所选类别的所有托管对象。 所有表格均显示带标签的列,可在其中查看电子邮件地址、显示名称、状态、上次登录和说明(如果已配置)等信息。

如果您需要其他信息或访问所选表条目的配置,表中的每一行都可以执行您可以执行的操作。

表行的操作 结果

保持光标

显示所选内容的 ID 详细信息,类似于右侧的示例(从“帐户”行调用)。

Tools

右键单击​​

访问选定表行的弹出菜单。 典型表格中的弹出菜单可能因行而异,如以下示例所示。

帐户和别名: 分区列表和资源:

Tools

双击

离开当前页面,然后转到可用于选择的配置工具。

每日消息

全局管理员可以创建管理员在登录管理控制台时查看的每日消息 (MOTD)。

MOTD 在管理登录期间显示在管理控制台的左上角,类似于以下示例。

Message of the Day

该消息可以关闭、替换或删除。

关闭每日消息

要从视图中删除消息,请单击关闭位于消息内容旁边。

创建当日消息

使用zimbraAdminConsoleLoginMessage属性,按照本节中的指南,创建单条当日消息,或创建要显示的多条消息。

使用命令条目创建消息时,请始终在要显示的消息的开头和结尾放置双引号。

创建全局消息或特定于域的消息。

zmprov md <domain> zimbraAdminConsoleLoginMessage "message to display"

创建多条消息显示:

zmprov md <domain> +zimbraAdminConsoleLoginMessage "second message to display"

删除当日消息

使用zimbraAdminConsoleLoginMessage属性,按照本节中的指导,删除当日的单条消息,或删除多条消息。

使用命令条目删除消息时,请遵循以下准则进行单独删除和多次删除:
  • 在属性前放置减号 (-),并在要删除的单个消息 ID 的开头和结尾处放置双引号。

  • 使用带单引号的属性来删除所有消息。

删除特定消息:

zmprov md <domain> -zimbraAdminConsoleLoginMessage "message to display"

删除所有消息:

zmprov md <domain> zimbraAdminConsoleLoginMessage ''

功能参考

本节提供了导航管理控制台时可以使用的功能的鸟瞰图,主题如下:

GUI 路线图

下图提供了管理控制台 UI 的高级视图。

管理控制台 UI 的高级视图
High-level View of Administration Console UI

您可以从导航窗格中的齿轮图标或主题弹出菜单中选择要对选定实体执行的选项。

使用齿轮图标

如果与显示页面中的可选项目相关,齿轮图标始终位于页面视图的右上角。

The Gear Icon

要查看可用选项,请在导航窗格或页面视图中突出显示主题: 在弹出窗口中,不适用于您的选择的选项被禁用 — 其余启用的选项对您的选择有效。 以下示例演示了基于导航栏主题选择的 Gear 选项,以及同一页面视图中的表行条目。

The Gear Icon

下表提供了从齿轮图标派生的操作的高级视图,这些操作因特定功能而异。

表 20. 齿轮图标操作
导航窗格主题 选择 选项Gear Icon

主监视器

服务器统计信息

视图

邮件队列

刷新

管理

帐户

新建、新管理员、编辑、删除、更改密码、使会话无效、 查看邮件、移动邮箱、查看权限、配置授权

别名

新建、新管理员、编辑、删除、移动别名、使会话无效、查看邮件、移动邮箱、查看权限、配置授权

通讯组列表

新建、新管理员、编辑、删除、查看邮件、查看权限、配置授权

资源

新建、新管理员、编辑、删除、查看邮件、查看权限、配置权限

配置

服务等级

新建、删除、编辑、复制

新建、删除、编辑、配置 GAL、配置身份验证、查看帐户、 添加域别名、配置授权

服务器

编辑、刷新缓存、启用代理、禁用代理

全局设置

保存、下载、更新许可证、激活许可证、手动激活许可证

Zimlets

部署、取消部署、切换状态

管理扩展

部署、取消部署

证书

安装证书、查看证书

语音/聊天服务

新建、删除、编辑、生成会话 ID

权限

查看

全局ACL

添加、删除、编辑

工具和迁移

帐户迁移

删除任务、刷新、迁移向导

软件更新

保存、立即检查

备份

查看、备份、恢复、配置、刷新

搜索

所有结果

删除、编辑、更改密码、查看邮件、移动别名、使会话无效、移动邮箱、下载

帐户

别名

通讯组列表

使用主题弹出菜单

您可以使用弹出菜单选择访问选项以对选择执行操作:

导航窗格中没有弹出菜单。

以下示例演示了页面视图中特定选择提供的弹出选项。

示例 5. 弹出选项
Popup Options

容器

管理控制台按逻辑将各种配置选项分组到容器中。 这些容器内的适用配置选项列于 管理控制台 UI 的高级视图

默认情况下,页面上的所有容器都会打开(展开)。 您可以选择关闭(折叠)容器 - 这可以释放页面视图中的额外空间 - 通过单击位于容器左上角的折叠/展开

Containers

管理配置

Zimbra 组件是在初始安装期间配置的 软件。安装后,您可以管理以下组件 从管理控制台或使用 CLI 实用程序。

帮助可以从管理控制台了解如何执行 来自管理控制台的任务。如果该任务只能从 CLI,请参阅Zimbra CLI 命令了解如何操作的说明 使用 CLI 实用程序。

全局配置

全局设置适用于 Zimbra 服务器中的所有帐户。他们是 最初在安装过程中设置。您可以从以下位置修改设置 管理控制台。

全局设置中设置的配置定义继承的默认值 对于以下对象:服务器、帐户、COS 和域。如果这些 属性在服务器中设置,服务器设置覆盖 全局设置。

管理控制台:

要配置全局设置,请导航至:
主页 → 配置 → 全局设置

配置的全局设置为:

  • 默认域

  • GAL 搜索返回的最大结果数。默认值 = 100。

  • 不允许用户查看电子邮件附件和附件类型。

  • 身份验证过程配置,外部中继 MTA 传送、DNS 查找和协议检查。

  • 垃圾邮件检查控件和防病毒选项,用于检查收到的邮件。

  • 跨 Zimbra 协作服务器的组合进行忙/闲调度 第三方电子邮件服务器。

  • 主题定制:修改颜色并添加您的徽标。

  • 外部访客登录时公司名称显示的配置 查看共享公文包文件夹。

  • 备份默认目录和备份通知信息。

  • 全局 SM 计划,定义何时应将消息移动到 辅助存储空间。

  • 查看当前 Zimbra 许可证信息、许可证更新和查看 创建的帐户数量。

一般信息配置

管理控制台:

主页 → 配置 → 全局设置

使用一般信息屏幕用于查看和设置全局参数 对于已安装并启用的服务器。

服务器上定义的设置会覆盖常规中配置的设置 信息屏幕。

General Information

  1. 根据您的要求修改参数。

  2. 来自齿轮图标,选择保存以使用您的设置。

表 21. 一般信息参数
选项 说明

GAL 搜索返回的大多数结果

从用户搜索返回的 GAL 结果的最大数量。这个值 可以按域设置:域设置覆盖全局设置。
默认 = 100。

默认域

用户登录进行身份验证的域。

可同时运行的计划任务数

用于从远程数据获取内容的线程数 来源。 * 如果设置太低,用户将无法经常从外部来源获取邮件。 * 如果设置得太高,服务器可能会因下载此邮件而消耗资源,而不是为“主要”用户请求提供服务。
默认值 = 20

后续邮箱清除之间的睡眠时间

服务器在清除之间应“休息”的持续时间 邮箱。 如果消息清除计划设置为 0,则不会清除消息 即使邮件、垃圾邮件和垃圾邮件的生存时间已设置,也会被清除。
默认 = 消息清除计划每 1 分钟运行一次。

公文包文件上传的最大大小 (KB)

公文包中可上传的文件的最大大小。

电子邮件和附件的最大邮件大小 发送在主页 → 配置 → 全局设置 → MTA页面的消息部分中进行配置。

管理员帮助 URL
委派管理员帮助 URL

要使用 Zimbra 协作帮助,您可以指定以下 URL: 从管理控制台帮助链接

附件配置

设置电子邮件附件规则

全局电子邮件附件设置允许您指定全局规则 处理电子邮件的附件。您还可以通过 COS 设置规则, 对于个人账户。当在全局中配置附件设置时 设置中,全局规则优先于 COS 和账户设置。

管理控制台:

主页 → 配置 → 全局设置 → 附件

Attachment Rules
参见 按文件类型阻止电子邮件附件有关屏幕此部分的信息。

表 22. 全局设置高级
选项 说明

无论 COS 如何,都无法查看附件

用户无法查看任何附件。该全局设置可以设置为 防止病毒从附件中爆发,因为邮件附件不能被传播 打开。

无论 COS 如何,都可以以 HTML 形式查看附件

电子邮件附件只能以 HTML 形式查看。 COS 可能还有另一个 设置,但此全局设置会覆盖 COS 设置。

根据 COS 查看附件

此全局设置说明 COS 设置电子邮件附件的规则 查看

向收件人发送阻止的扩展程序通知

按文件类型阻止电子邮件附件

您还可以拒绝附加了某些类型文件的邮件。你 从通用扩展名中选择未经授权的文件类型 列表。您还可以将其他扩展类型添加到列表中。消息与 这些类型的附加文件将被拒绝。默认情况下,收件人和 发件人会收到邮件被阻止的通知。

如果您不想在收到消息时向收件人发送通知 被阻止,您可以禁用此选项。

管理控制台:

主页 → 配置 → 全局设置 → 附件

电子邮件消息大小限制

作为管理员,您可以使用 LDAP 属性配置每用户消息大小限制zimbraMailAttachmentMaxSize。 这允许将全局最大消息大小 (zimbraMtaMaxMessageSize) 与用户特定的设置解耦。

功能摘要

  • zimbraMtaMaxMessageSize定义系统允许的全局最大消息大小(默认值:10MB)。 这是一个硬限制,任何用户或 COS 级别设置都不能超过。

  • zimbraMailAttachmentMaxSize可以设置为服务等级 (COS)用户级别。

  • 继承适用:COS → 用户。用户级值覆盖 COS 级值。

  • 每用户或 COS 级别限制不得超过 zimbraMtaMaxMessageSize.

硬限制: zimbraMtaMaxMessageSize是全局属性,不能设置为超过 150MB。 所有 COS 和用户级消息大小限制 (zimbraMailAttachmentMaxSize) 必须等于或小于该值。

支持的客户端

此设置适用于:

  • Web 客户端

  • 桌面

  • ZCO(Zimbra Connector for Outlook)

管理控制台配置

对于 COS
管理控制台:

主页 → 配置 → COS → [COS 名称] → 偏好设置 → 撰写电子邮件

  • 字段:最大消息大小 (MB)

  • 适用于 COS 下的所有用户,除非在用户级别覆盖。

对于用户
管理控制台:

主页 → 管理 → 帐户 → [用户名] → 首选项 → 撰写电子邮件

  • 场地:最大消息大小 (MB)

  • 覆盖 COS 级别设置。

MTA 配置

使用 MTA 页面中的选项来启用或禁用身份验证和 配置中继主机名、最大消息大小、启用 DNS 查找、 协议检查和 DNS 检查。

管理控制台:

主页 → 配置 → 全局设置 → MTA

MTA Configuration

表 23. MTA 页面选项
选项 描述

验证

  • 验证应启用,以支持移动 SMTP 身份验证 用户,以便他们的电子邮件客户端可以与 Zimbra MTA 对话。

  • 仅 TLS 身份验证强制所有 SMTP 身份验证使用事务级别 安全性以避免明文传递密码。

网络

  • Web 邮件 MTA 主机名和 Web 邮件 MTA 端口。网络上的 MTA 连接到服务器以发送邮件。默认端口号为 25。

  • 用于外部传送的中继 MTA是中继主机名。这是 Postfix 将非本地电子邮件中继到的 Zimbra MTA。

  • 如果您的 MX 记录指向垃圾邮件中继或任何其他外部非 Zimbra 服务器,在入站 SMTP 主机名中输入该服务器的名称场地。此检查将域 MX 设置与 zimbraInboundSmtpHostname 设置(如果设置)。如果没有设置该属性, 根据 zimbraSmtpHostname 检查域 MX 设置。

  • MTA 可信网络。配置允许的可信网络 中继邮件。指定网络地址列表,以逗号和/或分隔 一个空间。

  • 如果启用 DNS 查找被选中,Zimbra MTA 会创建显式 DNS 查询收件人域的MX记录。如果这个选项是 禁用,在中继 MTA 中设置中继主机以进行外部传送。

  • 如果允许域管理员检查 MX 记录 从管理控制台已检查,域 管理员可以检查其域的 MX 记录。

Milter 服务器

  • 如果启用 Milter 服务器被选中,milter 强制执行以下规则: 为谁可以向通讯组列表发送电子邮件而设置。

存档

  • 如果您安装了存档功能,则可以在此处进行配置。

消息

  • 设置最大消息大小获取可发送的消息及其附件。

    要设置公文包上传文件的最大大小,请转至常规 信息页面。
  • 您可以启用消息的 X-Originating-IP 标头复选框。的 X-Originating-IP头信息指定了原始发送IP 服务器正在转发的电子邮件。

策略服务

  • 自定义zimbraMtaRestriction(拒绝检查的限制 怀疑 SMTP 客户端)。

协议检查

  • 拒绝未经请求的商业电子邮件 (UCE),以进行垃圾邮件控制。

DNS 检查

  • 如果客户端的 IP 地址未知,则拒绝邮件, 问候语未知,或者发件人的域未知。

  • 将其他电子邮件收件人限制添加到RBL 列表字段。

RBL(实时黑洞列表)可以从 Zimbra 打开或关闭 命令行界面。

全局 IMAP 和 POP 配置

使用 IMAP 和 POP 页面启用全局访问。

管理控制台:

主页 → 配置 → 全局设置 → IMAP
主页 → 配置 → 全局设置 → POP

当您更改 IMAP 或 POP 设置时,必须重新启动 更改生效前的 Zimbra Collaboration。

可以从管理控制台设置 IMAP 和 POP3 轮询间隔 COS 高级页面。
默认 = 无轮询间隔。

如果设置了 IMAP/POP 代理,请确保配置端口号 正确。

使用 POP3,用户可以检索存储在 Zimbra 服务器上的邮件并 将新邮件下载到他们的计算机上。用户的 POP 配置 首选项 → 邮件页面决定如何下载和发送邮件 已保存。

使用域

在安装过程中会识别一个域。您可以添加 安装后的域。从管理控制台您可以管理 以下域功能。

  • 全局地址列表

  • 身份验证

  • 域的虚拟主机为用户建立默认域 login

  • 用于 REST URL 的公共服务主机名,常用于 分享。

  • 可在域上创建的最大帐户数

  • 用于 Microsoft Exchange 的忙/闲互操作设置。

  • 域 SSL 证书

可以重命名域以及所有帐户、通讯组列表、别名和 资源地址更改为新域名。 CLI 实用程序是 用于更改域名。 请参阅重命名域.

域设置覆盖全局设置。

域一般信息配置

使用用于设置本节中描述的选项的新域向导。

管理控制台:

Home → 2 设置域 → 1. 创建域...​

Create Domain

表 24. 新域 — 一般信息
选项 说明

域名 *
公共服务主机名

输入 REST URL 的主机名。这通常用于共享。看设置公共服务主机

公共服务协议

从下拉字段中选择 HTTP 或 HTTPS。

公共服务端口

入站 SMTP 主机名

如果您的 MX 记录指向垃圾邮件中继或任何其他外部非 Zimbra 服务器,在此输入服务器的名称。

描述

默认服务等级

此 COS(针对域)自动分配给在 如果未设置其他 COS,则为域。

状态

正常状态下域状态为active。用户可以登录并发送邮件 已交付。更改状态可能会影响帐户的状态 域也。域状态显示在域 → 常规上 页。域状态可以设置如下:

Active

Active 是域的正常状态。可以创建帐户 并且可以投递邮件。

如果帐户的状态设置与域设置不同,则 帐户状态覆盖域状态。
已关闭

当域名状态标记为已关闭时,请登录以下帐户: 该域被禁用并且邮件被退回。关闭状态 覆盖个人帐户的状态设置。

已锁定

当域名状态标记为已锁定时,用户无法登录 检查他们的电子邮件,但电子邮件仍会发送到帐户。 如果一个 帐户的状态设置标记为维护或已关闭,该帐户的 状态覆盖域状态设置。

维护

当域状态标记为维护时,用户 无法登录,他们的电子邮件已在 MTA 排队。如果帐户的状态 设置被标记为关闭,帐户的状态覆盖域 状态设置。

已暂停

当域名状态标记为已暂停时,用户无法 登录,他们的电子邮件在 MTA 排队,帐户和分配 无法创建、删除或修改列表。如果帐户的状态 设置被标记为关闭,帐户的状态覆盖域 状态设置。

设置公共服务主机名

您可以使用要使用的公共服务主机名配置每个域 对于 REST URL。这是共享电子邮件文件夹时使用的 URL 公文包文件夹以及共享任务列表、地址簿和 日历。

当用户共享 Zimbra Collaboration 文件夹时,默认是创建 包含 Zimbra 服务器主机名和 Zimbra 服务主机的 URL 名字。这显示为https://server.domain.com/service/home/username/sharedfolder。的 属性生成如下:

  • 主机名是 server.zimbraServiceHostname

  • 协议由 server.zimbraMailMode 确定

  • 端口由协议计算

配置公共服务主机名时,将使用此名称而不是 服务器/服务名称,如https://publicservicename.domain.com/home/username/sharedfolder。的 要使用的属性有:

  • zimbraPublicServiceHostname

  • zimbraPublicServiceProtocol

  • zimbraPublicServicePort

您可以使用其他 FQDN,只要该名称具有正确的 DNS 条目即可 指向内部和外部的“服务器”。

全局地址列表 (GAL) 模式配置

全局地址列表 (GAL) 是公司范围内的用户列表, 可供电子邮件系统的所有用户使用。 GAL是一个常用的功能 在邮件系统中,用户可以通过以下方式查找其他用户的信息 名字或姓氏,无需知道完整的电子邮件地址。

GAL 是按域配置的。每个的 GAL 模式设置 域决定在哪里执行 GAL 查找。

使用GAL 模式设置工具与您的域配置来定义 全局地址列表。

管理控制台:

Home → 2 设置域 → 1 创建域...​ → GAL 模式设置

GAL Mode Settings

表 25. 新域 — GAL 模式设置
选项 描述

GAL 模式

  • 内部。 Zimbra LDAP 服务器用于目录查找。

  • 外部。外部目录服务器用于 GAL 查找。你可以 为 GAL 配置多个外部 LDAP 主机。所有其他目录 服务使用 Zimbra LDAP 服务(配置、邮件路由等)。 配置外部 GAL 时,可以配置不同的搜索 设置和同步设置。您可能想要配置不同的搜索 设置(如果您的 LDAP 环境设置为通过以下方式优化 LDAP 搜索) 设置 LDAP 缓存服务器,但用户还需要能够 同步到 GAL。

  • 都是。内部和外部目录 使用服务器 用于 GAL 查找。

GAL 搜索返回的大多数结果

一次 GAL 搜索可返回的搜索结果的最大数量。 如果此处未定义该值,系统将使用中定义的值 全局设置。
默认 = 100 个结果。

GAL 同步帐户名称*

显示 galsync 名称和关联域的只读字段。

内部 GAL 的数据源名称

显示内部 GAL 名称的只读字段。

内部 GAL 轮询间隔

定义频率 — 天、小时、分钟或秒 — GAL 同步 帐户要与 LDAP 服务器同步。 第一次同步到 LDAP 服务器上,LDAP 中的所有 GAL 联系人都会添加到 galsync 帐户的 地址簿。在后续同步中,帐户会更新信息 关于新联系人、修改联系人和删除联系人。

使用 GAL 同步帐户更快地访问 GAL

当内部或外部访问时,会为域创建 GAL 同步帐户 GAL创建完成,如果你有多个邮箱服务器,可以 为域中的每个邮箱服务器创建一个 GAL 同步帐户。 使用 GAL 同步帐户使用户可以更快地访问来自 加尔。

在服务器上创建 GAL 同步帐户时,GAL 请求将被定向 到服务器的 GAL 同步帐户而不是域的 GAL 同步 帐户。 GalSyncResponse 包含一个对 GAL 同步进行编码的令牌 帐户 ID 和当前更改编号。客户端存储它然后使用 它在下一个 GalSyncRequest 中。用户使用 GAL 同步执行 GAL 同步 他们最初同步的帐户。如果 GALsync 帐户不可用 由于某些原因,传统的基于 LDAP 的搜索正在运行。

GAL 同步帐户是系统帐户,不使用 Zimbra 许可证。

配置 GAL 同步帐户时,您可以定义 GAL 数据源并 联系人数据从数据源同步到 GAL 同步帐户' 地址簿。如果模式两个都被选中,地址簿被创建 在每个 LDAP 数据源的帐户中。

GAL 同步的 GAL 轮询间隔决定 GALsync 的频率 帐户与 LDAP 服务器同步。同步间隔可以是 x 天, 小时、分钟或秒。为每个数据设置轮询间隔 来源。

当 GAL 同步帐户同步到 LDAP 目录时,所有 GAL 联系人 从 LDAP 中添加到该 GAL 的地址簿中。在同步过程中, 地址簿已更新为新联系人、已修改联系人和已删除 联系信息。您不应直接修改地址簿。当 LDAP 将 GAL 同步到地址簿,您直接进行的更改 地址簿被删除。

您可以从管理控制台创建 GALsync 帐户。命令行界面 与此功能相关的是zmgsautil。

创建额外的 GALsync 帐户

当 Zimbra 配置了多个服务器时,您可以添加额外的服务器 每个服务器的 GAL 同步帐户。

管理控制台:

主页 → 配置 → 域

  1. 选择域以添加另一个 GAL 同步帐户。

  2. 齿轮中图标,选择配置 GAL.

  3. 单击添加 GAL 帐户.

  4. 在 GAL 同步帐户名称字段中,输入此帐户的名称。 做 不使用默认名称。

  5. 选择此帐户将应用到的邮箱服务器。

  6. 输入GAL 数据源名称。如果GAL模式为BOTH,则输入数据 内部 GAL 和外部 GAL 的源名称。

  7. GAL 轮询间隔设置为 GAL 同步帐户的频率 与 LDAP 服务器同步进行更新。

  8. 单击完成.

更改 GAL 同步帐户名称

GAL 同步帐户的默认名称是galsync。当您配置时 GAL模式,可以指定其他名称。 GAL 同步帐户后 创建后,您无法重命名帐户,因为同步数据失败。

要更改帐户名称,请删除现有的 GAL 同步帐户并 为域配置新的 GAL。

管理控制台:

主页 → 配置 → 域

  1. 选择要更改 GAL 同步帐户名称的域。

  2. 齿轮图标中,选择配置 GAL打开配置向导 并将 GAL 模式更改为内部。不要配置任何其他 字段。单击完成.

  3. 在域的帐户内容窗格中,删除域的 galsync 帐户。

  4. 再次选择域并选择“配置 GAL”以重新配置 加尔。在 GAL 同步帐户名称字段中,输入帐户的名称。 完成 GAL 配置并单击完成。新账户是 显示在“帐户内容”窗格中。

身份验证模式

身份验证是向服务器识别用户或服务器的过程 目录服务器并根据用户名授予合法用户访问权限 以及用户登录时提供的密码信息。

基于每个域设置身份验证方法。

管理控制台:

Home → 2 设置域 → 1 创建域...​ → 身份验证模式

表 26. 新域 — 身份验证模式
选项 说明

身份验证机制

  • 内部。内部身份验证使用 Zimbra 目录服务器 用于域上的身份验证。 当您选择内部时,没有其他 需要配置。

  • 外部 LDAP。用户名和密码是身份验证 在目录服务器的绑定操作中提供的信息。你 必须配置 LDAP URL、LDAP 过滤器并使用 DN 密码绑定到 外部服务器。

  • 外部活动目录。用户名和密码是 提供给 Active Directory 服务器的身份验证信息。你 识别 Active Directory 域名和 URL。

虚拟主机

虚拟主机允许您在一台主机上托管多个域名 服务器。一般域配置不会改变。

当您创建虚拟主机时,这将成为用户登录的默认域;用户无需指定域名作为其用户名的一部分即可登录。

管理控制台:

主页 → 2 设置域 → 1 创建域...​ → 虚拟主机

表 27. 新域 — 虚拟主机
选项 说明

添加虚拟主机

字母数字字符串以标识此域的虚拟主机。的 虚拟主机需要具有 A 记录的有效 DNS 配置。 至 从域中删除虚拟主机,单击消除与主机名一起 显示在此向导屏幕中。

要打开 Zimbra Classic Web App 登录页面,用户输入虚拟主机 名称作为 URL 地址。例如,https://mail.company.com.

当 Zimbra 登录屏幕显示时,用户仅输入其用户名 和密码。身份验证请求搜索具有该域名的域 虚拟主机名。当找到虚拟主机时,进行身份验证 针对该域完成。

设置帐户限制

您可以限制可在某个帐户上配置的帐户数量。 域。可以配置的最大帐户数 域可以在创建域时设置。您还可以编辑域 配置以添加或更改号码。

在管理控制台中,这是为帐户中的域设置的 限制页面。如果不配置此页面,则不限制域名 设置。

资源、垃圾邮件和非正常帐户不计入此限制。

您不能超出 Zimbra Collaboration 设置的账户限制 许可证。

当有多个服务等级 (COS) 可用时,您可以选择哪个 可以配置服务类别以及域上的帐户数量 可以分配给 COS。这是在域的帐户中配置的 限制页面。跟踪使用的 COS 账户类型数量。 限制 所有 COS 的最大账户数不能超过设置的最大账户数 域。

跟踪分配给账户的 COS 数量。你可以看到号码 任何帐户的“一般信息”页面中已分配/剩余的号码。

重命名域

重命名域时,您实际上是在创建一个新域,移动所有域 帐户到新域并删除旧域。所有帐户、别名、 分发列表,资源地址更改为新域 名字。 LDAP 已更新以反映更改。

重命名域之前

  • 确保在 DNS 中为新域名创建 MX 记录

  • 确保您拥有该域的有效且当前的完整备份

重命名域之后

  • 更新您为旧域名设置的外部引用 到新域名。这可能包括自动生成的电子邮件 发送到管理员邮箱的信息,例如备份会话 通知。立即运行新域的完整备份:

zmprov -l rd [olddomain.com] [newdomain.com]
域重命名过程

当您运行此zmprov命令时,域重命名过程将进行 通过以下步骤:

  1. 旧域的状态更改为内部状态 关闭,域的邮件状态更改为暂停。用户 无法登录,他们的电子邮件被 MTA 退回,帐户、日历 无法创建、删除或修改资源和分发列表。

  2. 新域已创建,状态为关闭和邮件状态 暂停。

  3. 帐户、日历资源、通讯组列表、别名和资源 全部复制到新域。

  4. LDAP 已更新以反映新的域地址。

  5. 旧域已删除。

  6. 新域的状态更改为活动。新域名可以 开始接受电子邮件。

添加域别名

域别名允许不同的域名定向到单个域 地址。例如,您的域名是domain.com,但您希望用户拥有 地址example.com,您可以创建example.com作为别名 domain.com地址。发送邮件至user@example.com与发送相同 邮寄至user@domain.com.

域别名是一个域名,就像您的主域名一样。你 必须拥有该域名并验证您的所有权,然后才能将其添加为 别名。
管理控制台:

主页 → 配置 → 域,来自齿轮图标选择,添加域别名.

启用对域免责声明的支持

免责声明是按域设置的。升级时,现有的全局 免责声明将转换为每个域上的域特定免责声明 保留以前版本的行为。

可以使用以下步骤启用每个域免责声明支持:

  1. 创建一个新域(例如example.com)和帐户(例如 user2@example.com).

    $ zmprov cd example.com cb9a4846-6df1-4c18-8044-4c1d4c21ccc5
    $ zmprov ca user2@example.com test123 95d4caf4-c474-4397-83da-aa21de792b6a
    $ zmprov -l gaa user1@example.com user2@example.com
  2. 启用免责声明的使用

    $ zmprov mcf zimbraDomainMandatoryMailSignatureEnabled TRUE
    $ zmprov gcf zimbraDomainMandatoryMailSignatureEnabled
    zimbraDomainMandatoryMailSignatureEnabled: TRUE
  3. 将免责声明添加到新域

    $ zmprov md example.com
    zimbraAmavisDomainDisclaimerText "text disclamer"
    zimbraAmavisDomainDisclaimerHTML "HTML disclaimer"
    
    $ zmprov gd example.com zimbraAmavisDomainDisclaimerText zimbraAmavisDomainDisclaimerHTML
    # name example.com
    zimbraAmavisDomainDisclaimerHTML: HTML disclaimer
    zimbraAmavisDomainDisclaimerText: text disclamer
    
    $ zmprov gd eng.example.com
    # name eng.example.com
    zimbraAmavisDomainDisclaimerText
    zimbraAmavisDomainDisclaimerHTML
    1. 在第一个 MTA 上:

      /opt/zimbra/libexec/zmaltermimeconfig -e example.com
      
      Enabled disclaimers for domain: example.comm
      Generating disclaimers for domain example.com.
    2. 在所有其他 MTA 上:

      /opt/zimbra/libexec/zmaltermimeconfig
      • 要进行测试,请从以下帐户(例如user2@example.com)发送电子邮件: html 和纯文本格式

      • 要验证,请检查收到的电子邮件,其中包含正确的 HTML 免责声明和 纯文本免责声明。

      • 对域 example.com 禁用

        1. 在第一个 MTA 上,作为 Zimbra 用户:

          /opt/zimbra/libexec/zmaltermimeconfig -d example.com
        2. 在所有其他 MTA 上:

          /opt/zimbra/libexec/zmaltermimeconfig

禁用域内电子邮件的免责声明

您可以为同一域中的个人之间的电子邮件启用该选项 不附加免责声明。

将属性attachedzimbraAmavisOutboundDisclaimersOnly设置为TRUE.

为了保持向后兼容性,该属性默认为FALSE.

禁用免责声明功能

可以通过设置 域FALSE.

zmprov mcf zimbraDomainMandatoryMailSignatureEnabled FALSE

Zimlet 的相关属性 部署的所有 Zimlet 都显示在域的Zimlet中 页。如果您不希望所有已部署的 Zimlet 可供用户使用 在域上,从列表中选择可用于 域。这会覆盖 COS 中或帐户的 Zimlet 设置。

管理服务器设置

服务器是具有一个或多个 Zimbra 服务包的机器 安装。安装过程中,Zimbra 服务器会自动 在 LDAP 服务器上注册。

在管理控制台中,您可以查看所有的当前状态 配置有 Zimbra 软件的服务器,您可以编辑或 删除现有的服务器记录。您不能直接添加服务器 LDAP。必须使用 Zimbra Collaboration 安装程序来添加新的 服务器,因为安装程序包旨在注册新的 安装时的主机。

可以从管理控制台查看的服务器设置, 特定服务器的配置服务器链接包括:

  • 有关服务主机名和 LMTP 通告名称的一般信息 和绑定地址,以及可以同时进行的线程数 处理数据源导入。

  • 已启用服务的列表。您可以禁用和启用服务。

  • 为服务器启用身份验证类型,设置 Web 邮件 MTA 主机名与全局主机名不同。设置中继 MTA 进行外部传送, 并在需要时启用 DNS 查找。启用 Milter 服务器并设置 绑定地址。

  • 启用 POP 和 IMAP 并设置服务器的端口号。如果 IMAP/POP 代理已设置,确保端口号已配置 正确。

  • 索引和消息卷配置。制定 SM 政策。

  • IP 地址绑定。如果服务器有多个IP地址,则IP地址 绑定允许您指定要绑定到哪个接口。

  • 代理设置(如果配置了代理)。

  • 备份和恢复服务器配置。备份和恢复时 为服务器配置,这会覆盖全局备份和恢复 设置。

如果服务器中未设置这些值,服务器将继承全局设置 配置。可以从全局配置继承的设置 包括 MTA、SMTP、IMAP、POP、防病毒和反垃圾邮件配置。

常规服务器设置

常规信息页面包括以下配置 信息:

  • 服务器显示名称和描述字段

  • 服务器主机名

  • LMTP 信息,包括通告名称、绑定地址和数量 可以同时处理数据源导入的线程。
    默认 = 20 个线程。

  • 清除设置:服务器管理消息清除计划。你 配置服务器应“休息”的持续时间 从管理控制台、全局设置或清除邮箱 服务器设置或一般信息页面。
    默认 = 消息清除计划每分钟运行一次。

安装反向代理时代理服务器之间的通信 并且后端邮箱服务器必须是纯文本。检查此服务器 是反向代理查找目标自动设置以下内容 参数:

zimbraImapCleartextLoginEnabled TRUE
zimbraReverseProxyLookupTarget TRUE
zimbraPop3CleartextLoginEnabled TRUE

注释文本框可用于记录要保存的详细信息。

更改 MTA 服务器设置

管理控制台:

主页 → 配置 → 服务器 →服务器→ MTA

MTA页面显示以下设置:

  • 身份验证已启用。

    启用 SMTP 客户端身份验证,以便用户可以进行身份​​验证。仅 允许经过身份验证的用户或来自可信网络的用户进行中继 邮件。启用 TLS 身份验证后,强制使用所有 SMTP 身份验证 传输层安全(SSL 的后继者)以避免传递密码 清晰的。

  • 网络设置,包括 Web 邮件 MTA 主机名、Web 邮件 MTA 超时、 用于外部传送的中继 MTA、MTA 可信网络 ID 以及 为服务器启用 DNS 查找的能力。

  • 米尔特服务器。

    如果启用 Milter 服务器被选中,milter 强制执行以下规则: 为谁可以向服务器上的通讯组列表发送电子邮件而设置。

设置IP地址绑定

如果服务器有多个IP地址,可以使用IP地址绑定 指定您希望特定服务器访问哪些特定 IP 地址 绑定到.

管理控制台:

主页 → 配置 → 服务器 →服务器→ IP 地址绑定

表 28. IP 地址绑定
选项 说明

Web 客户端服务器 IP 地址

HTTP 服务器监听的接口地址

Web 客户端服务器 SSL IP 地址

HTTPS 服务器监听的接口地址

Web 客户端服务器 SSL 客户端证书 IP 地址

HTTPS 服务器接受客户端证书的接口地址 监听

管理控制台服务器 IP 地址

管理员控制台 HTTPS 服务器监听的接口地址

管理 Zimbra 的 SSL 证书

证书是用于安全通信的数字身份 不同的主机或客户端和服务器。证书用于证明 该网站归您所有。

可以使用两种类型的证书 - 自签名和商业 证书。

  • 一个自签名证书是由以下人员签名的身份证书 它自己的创造者。

    您可以使用证书安装向导生成新的 自签名证书。当您使用自签名时这很有用 证书并想要更改到期日期。自签名 证书通常用于测试。
    默认 = 1825 天(5 年)

  • 一个商业证书由证书颁发机构 (CA) 颁发 证明证书中包含的公钥属于 证书中注明的组织(服务器)。

安装 Zimbra Collaboration 时,会自动安装自签名证书,可用于测试 Zimbra Collaboration。 在生产环境中使用 Zimbra Collaboration 时,您应该安装商业证书。

自签名环境中的 ZCO 用户将遇到以下警告 连接安全,除非根 CA 证书添加到客户端的 窗口证书存储。请参阅Zimbra 维基文章ZCO连接 安全性了解更多信息。

安装证书

要生成证书签名请求 (CSR),您需要填写表格 包含有关域名、公司和国家/地区的详细信息,然后生成 带有 RSA 私钥的 CSR。 您将此文件保存到您的计算机上 并将其提交给您的商业证书授权者。

要获取商业签名证书,请使用 Zimbra 证书 管理控制台中的向导用于生成 RSA 私钥并 企业社会责任。

管理控制台:

主页 → 1 开始 → 2. 安装证书

使用安装证书表中的指南设置参数 你的证书。

表 29. 安装证书
选项 说明

公用名称 (CN)

应用于安全访问您的网站的确切域名。 您要使用通配符通用名称吗? 如果你想管理 服务器上单个域上的多个子域 证书,请选中此框。通用名称中添加星号 (*) 场。

国家/地区名称 (C)

您希望证书显示为我们公司所在地的国家/地区名称

州/省 (ST)

您希望证书显示为您公司的州/省 位置。

城市 (L)

您希望证书显示为您的公司所在地的城市。

组织名称 (O)

您的公司名称

组织单位 (OU)

单位名称(如果适用)

主题备用名称 (SAN)

如果要使用 SAN,则输入必须是有效的域名。当 使用SAN,将域名与通用名进行比较,然后 SAN 查找匹配项。您可以创建多个 SAN。 当替补 此处输入名称,客户端忽略通用名称并尝试匹配 服务器名称更改为 SAN 名称之一。

从 Zimbra 服务器下载 CSR 并将其提交到证书 权威机构,例如 VeriSign 或 GoDaddy。他们发布了数字签名的 证书。

收到证书后,再次使用证书向导在 Zimbra Collaboration 上安装证书。安装证书后,必须重新启动服务器才能应用证书。

查看已安装的证书

您可以查看当前部署的证书的详细信息。详情 包括证书主题、颁发者、验证日期和主题 替代名称。

管理控制台:

主页 → 配置 → 证书 →zmhostname

显示不同 Zimbra 服务的证书,例如 LDAP、mailboxd、MTA 和代理。

维护有效证书

保持 SSL 证书有效以确保客户端和 环境正常工作,因为如果出现以下情况,Zimbra 系统可能无法正常工作: 证书允许过期。您可以查看已部署的 SSL 证书 从 Zimbra 管理员控制台,包括其验证天数。它是 建议定期检查证书,以便您知道它们何时 过期并保持其有效性。

为域安装 SSL 证书

您可以为 Zimbra Collaboration 上的每个域安装 SSL 证书 服务器。 Zimbra Proxy 必须正确安装在 Zimbra Collaboration 上 配置为支持多个域。每个域都有一个虚拟主机 name 和 Virtual IP 地址配置为虚拟域名和 IP 地址。

每个域都必须颁发一个签名的商业证书来证明 证书中包含的公钥属于该域。

配置 Zimbra 代理虚拟主机名和 IP 地址。

zmprov md <domain> +zimbraVirtualHostName {domain.example.com} +zimbraVirtualIPAddress {1.2.3.4}
虚拟域名需要带有 A 的有效 DNS 配置 记录。

编辑域的证书:

管理控制台:

首页 → 1 开始 → 2. 安装证书

将域颁发的签名商业证书和私钥文件复制到所选域的域证书部分。

Certificate Domain Load

  1. 按降序复制根证书和中间证书 订单,从您的域证书开始。这允许充分 要验证的证书链。

  2. 从私钥中删除之前的任何密码(密码短语) 证书已保存。

    有关如何删除的详细信息,请参阅您的商业证书提供商 密码。

  3. 单击上传.

    域证书部署到/opt/zimbra/conf/domaincerts

使用 DKIM 对电子邮件进行身份验证

域密钥识别邮件 (DKIM) 定义域级身份验证 让您的组织负责传输的机制 收件人可以验证的电子邮件消息。你的 组织可以是始发发送站点或中介。你的 组织的声誉是评估是否信任该组织的基础 消息传递。

您可以将 DKIM 数字签名添加到外发电子邮件中, 将消息与您组织的域名相关联。你可以 为托管的任意数量的域启用 DKIM 签名 津布拉。不需要所有域都启用 DKIM 签名 该功能可以工作。

DKIM 使用

  • 域名标识符

  • 公钥加密定义电子邮件身份验证机制

  • 基于 DNS 的公钥发布服务。

DKIM 签名添加到电子邮件标头字段中。标题 信息类似于以下示例。

DKIM-Signature a=rsa-sha1; q=dns;
     d=example.com;
     i=user@eng.example.com;
     s=jun2021.eng; c=relaxed/simple;
     t=1117574938; x=1118006938;
     h=from:to:subject:date;
     b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZVoG4ZHRNiYzR

成功验证 DKIM 签名的接收者可以使用信息 关于签名者的信息,作为限制垃圾邮件、欺骗、网络钓鱼或限制计划的一部分 其他不良行为。

配置 Zimbra Collaboration 以进行 DKIM 签名

对传出邮件的 DKIM 签名在域级别完成。

要设置 DKIM,您必须运行 CLI zmdkimkeyutil 来生成 DKIM 密钥 和选择器。然后,您使用选择器更新 DNS 服务器,该选择器是 公钥。

  1. 以 zimbra 身份登录 Zimbra 服务器:

    /opt/zimbra/libexec/zmdkimkeyutil -a -d <example.com>

    必须为域添加到您的 DNS 的公共 DNS 记录数据 显示服务器。公钥 DNS 记录显示为 DNS TXT 记录 必须将该域添加到您的 DNS 服务器。

    选修的。要指定新密钥的位数,请包括-b在 命令行,-b <####>。如果不添加-b,则默认 设置为2048位。

    DKIM Data added to LDAP for domain example.com with selector B534F5FC-EAF5-11E1-A25D-54A9B1B23156
    
    Public signature to enter into DNS:
    B534F5FC-EAF5-11E1-A25D-54A9B1B23156._domainkey IN TXT
    "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+ycHjGL/mJXEVlRZnxZL/VqaN/Jk9VllvIOTkKgwLSFtVsKC69kVaUDDjb3zkpJ6qpswjjOCO+0eGJZFA4aB4BQjFBHbl97vgNnpJq1sV3QzRfHrN8X/gdhvfKSIwSDFFl3DHewKDWNcCzBkNf5wHt5ujeavz2XogL8HfeL0bTwIDAQA B" ; ----- DKIM B534F5FC-EAF5-11E1-A25D-54A9B1B23156 for example.com

    生成的 DKIM 数据作为数据的一部分存储在 LDAP 服务器中 域 LDAP 条目。

  2. 与您的服务提供商合作,更新域的 DNS DKIM DNS 文本记录。

  3. 重新加载 DNS 并验证 DNS 服务器是否返回 DNS 记录。

  4. 验证公钥与私钥是否匹配。有关描述,请参阅-d, -s标识符-x表。

    /opt/zimbra/common/sbin/opendkim-testkey -d <example.com> -s <0E9F184A-9577-11E1-AD0E-2A2FBBAC6BCB> -x /opt/zimbra/conf/opendkim.conf
    表 30. 标识符
    参数 描述

    -d

    域名

    -s

    选择器名称

    -x

    配置文件名。

更新域的 DKIM 数据

更新 DKIM 密钥时,必须使用以下命令重新加载 DNS 服务器 新的TXT记录。

好的做法是将以前的 TXT 记录在 DNS 中保留一段时间 时间,以便使用先前密钥签名的电子邮件可以 仍有待验证。

以 zimbra 身份登录 Zimbra 服务器:

/opt/zimbra/libexec/zmdkimkeyutil -u -d <example.com>

选修的。要指定新密钥的位数,请包括-b在 命令行-b <####>。如果不添加-b,则默认 设置为2048位。

  1. 与您的服务提供商合作,更新域的 DNS DKIM DNS 文本记录。

  2. 重新加载 DNS 并验证 DNS 服务器是否返回 DNS 记录。

  3. 验证公钥是否与私钥匹配:请参阅标识符 表为-d, -s-x描述。

    /opt/zimbra/common/sbin/opendkim-testkey -d <example.com> -s <0E9F184A-9577-11E1-AD0E-2A2FBBAC6BCB> -x /opt/zimbra/conf/opendkim.conf

从 Zimbra

删除 DKIM 签名 删除 DKIM 签名将从 LDAP 中删除 DKIM 数据,并且不再为该域签名新电子邮件。从域中删除 DKIM 时,最好将以前的 TXT 记录在 DNS 中保留一段时间,以便仍然可以验证使用以前的密钥签名的电子邮件。

使用以下命令语法删除该文件:

/opt/zimbra/libexec/zmdkimkeyutil -r -d example.com

检索域的 DKIM 数据

使用以下命令语法查看域的存储的 DKIM 信息 域、选择器、私钥、公共签名和身份:

/opt/zimbra/libexec/zmdkimkeyutil -q -d example.com

反垃圾邮件设置

Zimbra 使用 SpamAssassin 来控制垃圾邮件。 SpamAssassin 使用预定义规则 以及用于对消息进行评分的贝叶斯数据库。 Zimbra 将垃圾邮件评估为百分比值。标记为 33%-75% 垃圾邮件的邮件将被传送到用户的垃圾邮件文件夹。标记超过 75% 的消息不会发送给用户并被丢弃。

您可以更改反垃圾邮件设置。

管理控制台

主页 → 配置 → 全局设置 → AS/AV

Anti-Spam Settings

  1. 在反垃圾邮件字段中,输入适合您的参数 要求。

  2. 齿轮图标中,选择保存以使用您的设置。

    表 31. 反垃圾邮件
    选项 说明

    查杀百分比

    邮件被视为垃圾邮件并因此不被视为垃圾邮件的百分比 已交付。
    默认 = 75%

    标记百分比

    将邮件视为垃圾邮件的百分比,应为 传送到垃圾文件夹。
    默认 = 33%

    主题前缀

    要添加到标记为垃圾邮件的邮件的主题行的文本字符串。

当邮件被标记为垃圾邮件时,该邮件将被传递到 收件人的垃圾文件夹。用户可以查看未读消息数 位于垃圾文件夹中,可以打开垃圾文件夹来查看 邮件被标记为垃圾邮件。如果您有反垃圾邮件培训过滤器 启用后,当用户在垃圾文件夹中添加或删除邮件时,他们的操作 帮助训练垃圾邮件过滤器。

RBL(实时黑洞列表)可以在 SpamAssassin 中打开或关闭 来自 Zimbra CLI。

反垃圾邮件训练过滤器

自动垃圾邮件训练过滤器默认启用,并且有两个 创建反馈系统邮箱,用于接收邮件通知。

  • 垃圾邮件培训用户用于未标记为垃圾邮件但应标记为垃圾邮件的邮件。

  • 非垃圾邮件(称为火腿)培训用户对于已标记的邮件 作为垃圾邮件,但不应该。

这些训练禁用邮箱配额和附件索引 账户。禁用配额可防止邮箱被退回时退回邮件 满。

反垃圾邮件过滤器的工作效果取决于对垃圾邮件过滤器的识别 被视为垃圾邮件。 SpamAssassin 过滤器从用户的消息中学习 通过将它们发送到垃圾邮件文件夹或不是垃圾邮件来专门标记为垃圾邮件 通过将它们从垃圾文件夹中删除。这些标记消息的副本是 发送到相应的垃圾邮件培训邮箱。

安装 Zimbra 时,垃圾邮件/火腿清理过滤器仅配置在 第一个 MTA。 Zimbra 垃圾邮件训练工具zmtrainsa被配置为 自动检索这些邮件并训练垃圾邮件过滤器。这zmtrainsa 脚本通过 crontab 作业启用,将邮件发送到 SpamAssassin 应用程序,允许 SpamAssassin“了解”什么标志 可能意味着垃圾邮件或火腿邮件。 zmtrainsa 脚本清空这些邮箱 每一天。

新安装的 Zimbra 将垃圾邮件/非正常邮件培训限制为第一个安装的 MTA。如果 如果您卸载或移动此 MTA,则需要启用垃圾邮件/非垃圾邮件训练 在另一个 MTA 上,因为一台主机应启用此功能才能运行zmtrainsa --cleanup.

要在新的 MTA 服务器上设置此功能

zmlocalconfig -e zmtrainsa_cleanup_host=TRUE

禁用垃圾邮件训练邮箱

Zimbra 默认设置是所有用户在添加或删除时都可以提供反馈 垃圾文件夹中的项目。

如果您不希望用户训练垃圾邮件过滤器,您可以禁用此功能 功能。

  1. 修改全局配置属性ZimbraSpamIsSpamAccountZimbraSpamIsNotSpamAccount

  2. 从属性中删除帐户地址。

    zmprov mcf ZimbraSpamIsSpamAccount ''
    zmprov mcf ZimbraSpamIsNotSpamAccount ''

修改这些属性后,邮件将被标记为垃圾邮件或非垃圾邮件 不复制到垃圾邮件培训邮箱。

手动训练垃圾邮件过滤器

最初,您可能希望手动训练垃圾邮件过滤器以快速 建立垃圾邮件和非垃圾邮件标记、单词或短字符的数据库 垃圾邮件或火腿邮件中常见的序列。为此,您可以 手动将邮件作为邮件/rfc822 附件转发到垃圾邮件并 非垃圾邮件邮箱。

zmtrainsa运行时,这些消息用于教导垃圾邮件过滤器。 确保添加足够大的消息样本以获得准确的结果 分数。确定是否将邮件标记为垃圾邮件 至少 200 条已知邮件 必须识别垃圾邮件和 200 个已知的火腿邮件。

保护别名域免受反向散射垃圾邮件的影响

要降低反向散射垃圾邮件的风险,您可以运行一个服务,该服务运行 Zimbra 访问策略守护程序,用于验证RCPT 至:专门针对内容 对于别名域。

有关创建域别名的信息,请参阅Zimbra 维基文章 管理域.
  1. 设置 Postfix LC 密钥。

    zmlocalconfig -e postfix_enable_smtpd_policyd=yes
  2. 定义 MTA 限制。

    zmprov mcf +zimbraMtaRestriction "check_policy_service unix:private/policy"

设置postfix_policy_time_limit键是因为默认情况下 Postfix spawn(8) 守护进程在 1000 秒后终止其子进程。这也太 策略守护程序的缩写,只要 SMTP 客户端存在,该守护程序就可能运行 连接到 SMTP 进程。

禁用 Postfix 策略守护进程

禁用 SMTPD 策略。

zmlocalconfig -e postfix_enable_smtpd_policyd=no
管理控制台:

主页 → 配置 → 全局设置 → MTA

定义策略限制。设置电子邮件收件人 限制实时黑洞列表和实时右侧 可以在 MTA 中打开或关闭阻止/黑名单。

对于协议检查,可以启用以下三个 RBL:

  • tname

  • 客户端必须使用完全限定的主机名 - reject_non_fqdn_hostname

  • 发件人地址必须完全限定 -reject_non_fqdn_sender

问候语中的主机名违反 RFC -reject_invalid_host

zmprov mcf -zimbraMtaRestriction "check_policy_service unix:private/policy"

还可以设置以下 RBL。

  • reject_rbl_client cbl.abuseat.org

  • reject_rbl_client bl.spamcop.net

  • reject_rbl_client dnsbl.sorbs.net

  • reject_rbl_client sbl.spamhaus.org

作为收件人限制的一部分,您还可以使用 reject_rbl_client <rbl hostname>选项。

管理控制台:

主页 → 配置 → 全局设置 → MTA → DNS 检查

使用 MTA 配置中的 DNS 工具来定义限制列表。

DNS Checks

有关当前 RBL 的列表,请参阅 DNS比较 黑名单文章。

使用 CLI 添加 RBL

  1. 查看当前 RBL。

    zmprov gacf zimbraMtaRestriction
  2. 添加新的 RBL:在同一命令中列出现有的 RBL 和新的添加 条目。对于 2 字 RBL 名称,请在条目中用引号将名称引起来。

    zmprov mcf zimbraMtaRestriction [RBL type]
示例 6. 添加所有可能的限制
zmprov mcf \
 zimbraMtaRestriction reject_invalid_hostname \
 zimbraMtaRestriction reject_non-fqdn_hostname \
 zimbraMtaRestriction reject_non_fqdn_sender \
 zimbraMtaRestriction "reject_rbl_client cbl.abuseat.org" \
 zimbraMtaRestriction "reject_rbl_client bl.spamcop.net" \
 zimbraMtaRestriction "reject_rbl_client dnsbl.sorbs.net" \
 zimbraMtaRestriction "reject_rbl_client sbl.spamhaus.org"

为标记为垃圾邮件和白名单的邮件设置全局规则

当您之前使用第三方应用程序过滤邮件中的垃圾邮件时 消息由 Zimbra 接收,Zimbra 全局规则是发送所有消息 被第三方标记为垃圾邮件到垃圾文件夹的邮件。这个 包括被识别为垃圾邮件以及被识别为 列入白名单。

如果您不希望发送被识别为白名单的邮件 到垃圾文件夹,您可以配置zimbraSpamWhitelistHeaderzimbraSpamWhitelistHeaderValue将这些消息传递给用户 邮箱。此全局规则与 Zimbra MTA 垃圾邮件过滤无关 规则。消息仍然通过用户的过滤规则传递。

在邮件中搜索白名单标头:

zmprov mcf zimbraSpamWhitelistHeader <X-Whitelist-Flag>

设置值:

zmprov mcf zimbraSpamWhitelistHeaderValue <value_of_third-party_white-lists_messages>

防病毒设置

当 Zimbra 软件启用时,为每个服务器启用防病毒保护 已安装。防病毒软件配置为发送消息 已被识别为病毒隔离邮箱中存在病毒。安 电子邮件通知将发送给收件人,让他们知道有消息 已被隔离。隔离邮箱邮件生存期设置为7 天。

从管理控制台,您可以指定如何积极发送垃圾邮件 在您的 Zimbra Collaboration 中进行过滤。

管理控制台:

主页 → 配置 → 全局设置 → AS/AV

AS/AV

  1. 在防病毒字段中,输入适合您的情况的参数 要求。

  2. 来自齿轮图标,选择保存以使用您的设置。

表 32. 防病毒
选项 说明

定义更新频率

默认情况下,Zimbra MTA 每两个小时检查一次是否有任何新的防病毒软件 来自 ClamAV 的更新。频率可以设置在 1 到 24 小时之间。

阻止加密档案

限制加密文件,例如受密码保护的压缩文件。

向收件人发送通知

警告邮件带有病毒且未送达。

在 Zimbra Collaboration 安装过程中,管理员通知 已配置防病毒警报地址。默认是设置 用于接收通知的管理员帐户。当病毒出现时 找到后,通知会自动发送到该地址。

通过 HTTP 从 ClamAV 网站获取更新。

Zimbra 闲/忙日历安排

空闲/忙碌功能允许用户查看彼此的日历 有效安排会议。您可以跨区域设置忙/闲安排 Zimbra 和 Microsoft Exchange 服务器。

Zimbra 可以查询支持的 Microsoft Exchange 服务器上用户的忙/闲时间表,也可以将 Zimbra 用户的忙/闲时间表传播到 Exchange 服务器。

要设置忙/闲互操作性,必须将 Exchange 系统设置为 中描述的Exchange 设置要求部分,以及 Zimbra Collaboration 全局配置、域、COS 和帐户设置必须是 配置。配置 Zimbra Collaboration 的最简单方法是从 管理控制台。

Exchange 设置要求

设置忙/闲功能需要满足以下条件:

  • 系统中必须有一个 Active Directory (AD),或者全局中必须有一个 Active Directory (AD)。 目录必须可用。

  • Zimbra 协作服务器必须能够访问 HTTP(S) 端口 至少一台 Exchange 服务器上的 IIS。

  • Exchange 公用文件夹的 Web 界面需要通过以下方式提供 IIS。 (http://server/public/)

  • Zimbra Collaboration 用户必须配置为 AD 上的联系人 对每个邮件域使用相同的管理组。这是必需的 仅适用于 Zimbra 到 Exchange 忙/闲复制。

  • 对于 Zimbra Collaboration 到 Exchange 忙/闲复制,Exchange 必须在帐户属性中配置用户电子邮件地址 zimbra-ForeignPrincipal适用于所有 Zimbra Collaboration 用户。

在 Zimbra 协作上配置忙/闲

要从管理控制台设置忙/闲互操作性, 全局配置、域、COS 和帐户设置必须配置为 此处描述。

  • 配置全局或每个域的 Exchange 服务器设置。

    • Microsoft Exchange 服务器 URL。这是 Web 界面 交流。

    • Microsoft Exchange 身份验证方案,要么Basic表单.

      • Basic 是通过 HTTP 基本身份验证对 Exchange 进行身份验证。

      • 表单是对 Exchange 的身份验证,作为基于 HTML 表单的身份验证。

    • Microsoft Exchange 服务器类型,或者WebDavews

      • 选择 WebDAV 以支持 Exchange 2003 或 Exchange 2007 的忙/闲状态。

        这仅供参考,因为这些版本的 Exchange 不再受支持。
      • 选择 ews(Exchange Web 服务)以支持 Exchange 忙/闲 2010 SP1 及更高版本。

  • 包括 Microsoft Exchange 用户名和密码。这是名字 Active Directory 中的帐户和有权访问该帐户的密码 公共文件夹。这些用于针对 Exchange 服务器进行身份验证 在 REST 和 WebDAV 接口上。

  • 添加LegacyExchangeDN中配置的oou值 全局配置忙/闲互操作页面上的 Exchange 属性, 域忙/闲互操作页面或高级服务等级 (COS) 页。在全局级别设置,这适用于与之通信的所有帐户 交流。

  • 在账户的忙/闲互操作页面中,配置外部主体 帐户的电子邮件地址。这设置了一个映射 Zimbra Collaboration 帐户到 AD 中的相应对象。

要在 Exchange 服务器上查找这些设置,您可以运行 Exchange ADSI 编辑工具并搜索LegacyExchangeDN属性以获取o= , ou=cn=设置。

Zimbra Collaboration 到 Zimbra Collaboration 忙/闲互操作性

您可以在 Zimbra 服务器之间设置忙/闲互操作性。 空闲/忙碌 在每台服务器上配置互操作性。

每台服务器必须运行 Zimbra Collaboration 8.0.x 或更高版本。
  1. 输入服务器主机名和端口。

    zmprov mcf zimbraFreebusyExternalZimbraURL http[s]://[user:pass@]host:port

    如果user:pass不包括在内,服务器运行匿名忙/闲 查找。

  2. 重新启动服务器。

    zmcontrol restart
  3. 在所有其他服务器上重复这些步骤。

设置 S/MIME

S/MIME 是发送安全电子邮件的标准。 S/MIME 消息使用 用于验证和加密消息的数字签名。

目前,有两种不同的方法提供 S/MIME 功能

  1. 基于旧客户端的解决方案,需要在客户端计算机上部署 Java 1.6 SE

  2. 新的基于服务器的解决方案不需要在客户端计算机上安装 Java。服务器执行所有加密操作。 (受到推崇的)

仅经典 Web 应用程序支持此功能。

使用基于客户端的解决方案进行设置以使用 S/MIME 功能

先决条件
  • 要使用 S/MIME,用户必须拥有 PKI 证书和私钥。 的 私钥必须安装在用户的本地证书存储中 Windows 和 Apple Mac 以及浏览器证书存储中(如果它们使用 火狐浏览器。请参阅相应的计算机或浏览器文档 如何安装证书。

  • 用户可以使用以下任何浏览器:

    • Mozilla Firefox 4 或更高版本

    • Internet Explorer 8、9

    • Chrome 12 或更高版本

  • 用户计算机必须部署 Java 1.6 SE 才能使用 S/MIME。如果他们这样做 不,他们看到一个错误,要求他们安装它。

S/MIME 许可证

您必须拥有为 S/MIME 启用的 Zimbra 许可证。

启用 S/MIME 功能
管理控制台:

主页 → 配置 → 服务等级 →COS→ 功能
主页 → 管理 → 账户 →账户→ 功能

可以从 COS 或账户启用 S/MIME 功能 特征选项卡。

  1. 选择要编辑的 COS 或账户。

  2. 在功能选项卡 S/MIME 功能部分中,选中启用 S/MIME.

  3. 单击保存.

导入 S/MIME 证书

如果用户拥有以下信息,则可以向收件人发送加密邮件: 收件人的公钥证书存储在以下位置之一:

  • 收件人地址簿中的联系页面。

  • 本地操作系统或浏览器密钥库。

  • 外部 LDAP 目录。

证书应发布到 LDAP 目录中,以便它们 可以从 GAL 中检索。 S/MIME 证书的格式必须 是 X.509 Base64 编码的 DER。

配置证书的外部 LDAP 查找

如果您使用外部 LDAP 来存储证书,则可以配置 Zimbra 服务器从外部 LDAP 查找和检索证书, 代表客户。

管理控制台:

主页 → 配置 → 全局设置 → S/MIME
主页 → 配置 → 域 →→ S/MIME

您可以从全局配置外部 LDAP 服务器设置 设置 → S/MIME选项卡或域 → S/MIME选项卡。

全局设置覆盖域设置
  1. 编辑全局设置页面或选择要编辑的域。打开 S/MIME选项卡。

  2. 配置名称字段中,输入名称以识别外部 LDAP 服务器。例子,companyLDAP_1

  3. LDAP URL字段,输入 LDAP 服务器的 URL。例如, ldap://host.domain:3268

  4. 要使用 DN 绑定到外部服务器,请在S/MIME LDAP 绑定 DN 字段中,输入绑定 DN。例子,administrator@domain

    如果您想使用匿名绑定,请保留 Bind ND 和 Bind 密码 字段为空。

  5. S/MIME Ldap 搜索库字段中,输入 应搜索以查找证书的 LDAP 服务器。

    示例,ou=Common Users, DC=host, DC=domain

    或者,选中自动发现搜索库以自动发现 搜索基础 DN。为此,S/MIME 搜索库字段必须是 空的。

  6. S/MIME Ldap 过滤器中字段中,输入过滤器模板 搜索。过滤器模板可以包含以下转换变量 用于扩展:

    • %n- 搜索键@(或者没有,如果没有@已指定)

    • %u- 与@已删除(例如,mail=%n)

  7. S/MIME Ldap Attribute字段,在外部输入属性 包含用户的 S/MIME 证书的 LDAP 服务器。多种属性 可以用逗号分隔(,).

    例如,“userSMIMECertificate, UserCertificate”

  8. 单击保存.

要设置另一个外部 LDAP 服务器,请单击添加配置.

使用基于服务器的解决方案进行设置以使用 S/MIME 功能

先决条件

与基于客户端的 S/MIME 解决方案相同,只是客户端计算机上不需要 Java。私钥也不需要位于客户端计算机的本地/浏览器证书存储中。

S/MIME 许可证

与基于客户端的 S/MIME 解决方案相同

启用 S/MIME 功能

与基于客户端的 S/MIME 解决方案相同

导入 S/MIME 证书

与基于客户端的 S/MIME 解决方案相同,除了接收者的公钥证书不再需要存储在本地操作系统或浏览器密钥库中。 该证书可以发布到之前S/MIME版本中提到的所有其他地方。

为支持基于服务器的 S/MIME 解决方案而引入的 LDAP 属性列表
  1. zimbraSmimeOCSPEnabled

    • 由服务器在验证用户和公共证书时使用

    • 如果TRUE,则在证书验证期间执行吊销检查

    • 如果FALSE,则在证书验证期间不执行吊销检查

  2. zimbraSmimePublicCertificateExtensions

    • 支持的公共证书文件扩展名,以逗号分隔

    • 包含userCertificateLDAP 属性支持的格式列表

    • 默认值:cer, crt, der, spc, p7b, p7r, sst, sto, pem

    • Zimbra Classic Web App 检索支持的文件格式或扩展名以从服务器上传公共证书

  3. zimbraSmimeUserCertificateExtensions

    • 支持的公共证书文件扩展名以逗号分隔

    • 包含 userSmimeCertificate LDAP 属性支持的格式列表

    • 默认值:p12, pfx

    • Zimbra Classic Web App 检索支持的文件格式或扩展名以从服务器上传公共证书

将 CA 证书添加到 S/MIME 邮箱信任存储的过程

S/MIME 使用邮箱信任存储路径及其密码在 localconfig.xml 中定义

键名称为:

  • Mailboxd_truststore

  • Mailboxd_truststore_password

如果在 localconfig.xml 中未定义 Mailboxd_truststore 键,则默认情况下,mailboxd_truststore 的值为:

  • <zimbra_java_home>/jre/lib/security/cacerts

可以通过执行以下命令将 CA 证书导入到邮箱信任存储中:

keytool -import -alias -keystore <mailboxd_truststore path> -trustcacerts -file <CA_Cert>

电子邮件保留管理

您可以为用户帐户的电子邮件、垃圾邮件和邮件配置保留策略。 垃圾文件夹。基本的电子邮件保留策略是设置电子邮件、垃圾箱 以及垃圾邮件在 COS 或个人账户中的生命周期。

您可以设置用户可以为以下内容启用的特定保留策略: 其帐户中的收件箱和其他电子邮件文件夹。用户还可以创建自己的 自己的保留政策。

您可以启用转储程序功能来保存从垃圾箱中删除的邮件。当邮件达到其保留生命周期结束时,根据电子邮件生命周期规则或删除策略,该邮件将被移至垃圾箱(如果启用)。用户可以从垃圾箱中恢复已删除的项目,直到 最终用户设置的垃圾箱中的可见性生命周期中设置的阈值。

如果未启用转储程序,则当达到电子邮件保留寿命时,邮件将从服务器中清除。

您还可以对帐户设置合法保留,以防止邮件被删除。

配置电子邮件生命周期规则

您可以配置何时从帐户中删除电子邮件 文件夹,以及 COS 或个人账户的垃圾文件夹。

表 33. 电子邮件生命周期选项
电子邮件生命周期选项 说明

电子邮件生命周期

消息在被清除之前可以保留在文件夹中的天数。这个 包括 RSS 文件夹中的数据。
默认 = 0
最小值 = 30 天

已删除邮件的生命周期

邮件在被清除之前保留在“已删除邮件”文件夹中的天数。
默认 = 30 天。

垃圾邮件生存期

邮件在被清除之前可以保留在垃圾邮件文件夹中的天数。
默认 = 30 天。

清除电子邮件

默认情况下,服务器会清除超出其限制的电子邮件。 一生的每一分钟。您可以更改服务器的持续时间 应该在清除邮箱之间“休息”。

使用全局睡眠时间设置来定义持续时间(以分钟为单位) 邮箱清除。

管理控制台:

主页 → 配置 → 全局设置 → 一般信息

Purge Interval

例如,如果清除间隔设置为 1 分钟,则服务器清除mailbox1,等待1分钟,然后开始清除mailbox2。

如果消息清除计划设置为 0,即使消息清除,也不会清除消息 邮件、垃圾邮件和垃圾邮件的生命周期已设置。

由于用户无法查看消息生命周期设置,因此您将 需要告知他们您的清除政策。

配置消息保留和删除策略

保留和删除策略可以配置为全局设置或 作为 COS 设置。用户可以选择这些策略来应用到他们的 他们帐户中的邮件文件夹。他们也可以建立自己的 保留和删除政策。用户启用您设置的策略或 从文件夹的“编辑属性”对话框创建自己的策略 盒子。

全局保留策略

系统范围的保留和删除策略可以从 管理控制台。

使用全局保留策略页面设置全局保留或删除 政策。

管理控制台:

主页 → 配置 → 全局设置 → 保留策略

Global Retention Policy

COS 保留策略

使用 COS 保留策略页面设置保留或删除 选定的COS。

管理控制台:

主页 → 配置 → 服务等级 →COS→ 保留策略

COS Retention Policy

确保启用 COS 级别策略,而不是继承自 全局设置中定义的策略已启用。

不会在文件夹上自动实施保留策略。如果用户 选项文件夹中未达到保留阈值的项目 策略时,将显示以下消息,您正在删除一条消息 即在其文件夹的保留期内。您想删除 留言?

当达到删除策略的阈值时,项目被删除 从帐户中。它们不会发送到垃圾箱文件夹。如果垃圾箱 功能已启用,它们将被发送到垃圾箱,如果未启用, 它们将从服务器中清除。

生命周期和保留/删除策略如何协同工作

如果电子邮件消息生命周期设置为非零 (0) 的值,则此 除了处置或保留策略值之外,设置也适用 应用于文件夹。例如:

电子邮件消息生命周期设置为 120 天

  • 文件夹 A 的策略的处置阈值为 360 天。留言于 文件夹 a 将在 120 天内处理。

  • 文件夹 B 的政策为 90 天的处置阈值。留言于 文件夹 B 将在 90 天内处理。

  • 文件夹 C 的保留范围为 150 天。留言于 文件夹 C 将在 120 天内处理。

管理垃圾箱

当邮件、垃圾邮件或垃圾邮件的生命周期已达到时,如果启用该功能,该邮件将被移至垃圾箱。 当用户右键单击“废纸篓”时,他们可以单击恢复已删除的项目以从垃圾箱中检索过去 x 天内删除的项目。 此阈值基于最终用户设置的垃圾箱中的可见性生命周期。

清除设置前垃圾箱中的保留寿命设置设置保留 垃圾箱中物品的使用寿命。垃圾箱中的物品早于阈值 已被清除且无法检索。

管理员可以访问各个垃圾箱的内容,包括 垃圾邮件,他们可以在邮件生命周期结束之前随时删除数据 达到了。

在垃圾箱文件夹中搜索项目
zmmailbox -z -m <user@example.com> search --dumpster -l <#> --types <message,contact,document> <search-field>

搜索字段可以是日期范围:'before:mm/dd/yyyy 和 之后:mm/dd/yyyy' 或来自或发送给特定人员的电子邮件: “来自:乔”等

删除转储文件夹

中的项目 转储文件夹中的项目可以使用 CLI 或从 管理控制台:

zmmailbox -z -m <user@example.com> -A dumpsterDeleteItem <item-ids>
管理控制台:

主页 → 配置 → 服务等级 →COS→ 功能 → 一般功能

  1. 启用(选中)垃圾箱文件夹复选框。

  2. 设置最终用户在垃圾箱中的可见寿命,请转至 COS 的高级上的超时策略

  3. 部分 要在清除之前设置在垃圾箱中的保留寿命, 前往 COS 高级页,电子邮件保留政策部分。

如果启用了转储文件夹功能,您可以设置合法保留 保留用户帐户中的所有项目。

当垃圾箱启用时,可以清除垃圾箱文件夹也已启用。 禁用此功能将关闭清除用户的项目 垃圾箱。这可以在 COS 上或个人账户上设置。当可以时 清除转储文件夹已启用,在该文件夹上设置的任何删除策略 帐户的文件夹将被忽略。

配置合法保留:

管理控制台:

主页 → 配置 → 服务等级 →COS→ 功能
主页 → 管理 → 帐户 →帐户→ 功能

取消选择可以清除垃圾箱文件夹功能页面上。

自定义管理扩展

开发人员可以创建自定义模块并将其添加到 Zimbra 管理中 控制台用户界面,提供新视图,管理新数据对象, 使用新属性扩展现有对象,并自定义现有视图。

有关如何创建的最新且全面的信息 扩展管理控制台 UI 模块,请访问 Zimbra wiki 扩展管理 UI 文章位于 Extending_Admin_UI.

目前在管理控制台中合并的所有 Zimbra 扩展 UI 在内容窗格中仅作为视图列出。

只能删除您创建的扩展(另请参阅删除管理扩展 模块)。

部署新的管理控制台 UI 模块

管理控制台:

主页 → 配置 → 管理扩展

将模块zip文件保存到您用来访问的计算机 管理控制台。

  1. 来自齿轮图标,选择部署以呈现部署 Zimlet 或扩展对话。

  2. 浏览到您需要上传的自定义模块zip文件。

  3. 单击部署.

    文件上传,扩展立即部署在 服务器。

删除管理扩展模块

删除管理扩展会导致删除所选扩展 以及所有相关文件。此操作不会删除原始zip 文件。

管理控制台:

主页 → 配置 → 管理扩展

使用本节中的步骤删除自定义管理扩展。

  1. 选择要删除的模块,然后从Gear中选择取消部署 图标。提出确认查询。

  2. 在确认查询中,单击继续。

临时数据

在 Zimbra Collaboration 正常运行期间,LDAP 中存储有 3 种主要类型的临时数据。

  • 上次登录时间戳 (zimbraLastLogonTimestamp)

  • 身份验证令牌 (zimbraAuthTokens)

  • CSRF 令牌) (zimbraCsrfTokenData)

在小型系统上,这些类型的临时数据的存储可以在 LDAP 服务器中完成。 然而,我们发现,拥有大量活动用户的邮件系统会导致 LDAP 因短期数据存储而超载。 因此,首选选项是使用外部服务器存储这些临时数据。

本文档不介绍如何安装和维护临时存储服务器。

配置临时数据的存储位置是通过以下 LDAP 属性完成的:

属性

格式

描述

zimbraEphemeralBackendURL

[后端名称]:[params]

临时后端 URL 配置

当前支持的两个临时数据后端是:

后端

格式

描述

LDAP

ldap://default

默认配置

SSDB

ssdb:127.0.0.1:8888

SSDB 服务器和端口

频繁的身份验证请求会给临时数据存储后端带来很高的负载。请参阅以下 Zimbra wiki 页面,了解基于身份验证的负载测试的结果:

配置正在运行的 Zimbra Collaboration 以使用 SSDB

配置已运行的 Zimbra Collaboration 安装 使用SSDB代替LDAP对于短期数据存储,通过以下过程完成:

  1. 安装SSDB并记下配置的 IP 地址和端口,因为您将 需要此数据用于后续步骤。参考 配置选项概述了解更多信息。

  2. 将任何现有的短期数据迁移到SSDB使用/opt/zimbra/bin/zmmigrateattrs命令。

  3. 配置 Zimbra Collaboration 以利用SSDB.

迁移过程

  1. 在安装中的一台计算机上访问命令提示符。

  1. 使用SSDB实用程序将现有临时数据迁移到zmmigrateattrs后端

sudo su - zimbra
/opt/zimbra/bin/zmmigrateattrs ssdb:<ip address|hostname>:port # substituting your server values

您可以使用 IP 地址或主机名作为目标 URL 的主机部分。 无论哪种方式,您都需要确保它解析为集群中所有计算机上的正确 IP 地址。 如果提供的 SSDB 地址无法解析到正常运行的后端,迁移过程将终止。

  1. 配置 Zimbra Collaboration 以使用SSDB:

sudo su - zimbra
zmprov mcf zimbraEphemeralBackendURL ssdb:<ip address|hostname>:port # substituting your server values

与迁移一样,主机和端口必须解析为正常运行的 SSDB 后端。否则, 的价值zimbraEphemeralBackendURL不会改变。

迁移详细信息

迁移信息

可以通过命令zmmigrateattrs --status查看最新的迁移过程信息。 如果迁移当前正在进行中,则可能必须从新的终端窗口运行此命令。 此命令将输出三条信息:

  1. 迁移状态:IN_PROGRESS、COMPLETED 或 FAILED 之一

  2. 作为目标的 SSDB 后端的 URL

  3. 启动迁移过程的时间戳

可以使用命令zmmigrateattrs --clear重置迁移信息。仅当以下情况时才应执行此操作: 该状态并不反映系统的真实状态。

更改临时后端 URL

当修改zimbraEphemeralBackendURL的值时,Zimbra Collaboration 将检查上次已知迁移的状态。 这可能会导致以下几种情况之一:

  1. 如果迁移完成并且此迁移的 URL 与新提供的值匹配,则zimbraEphemeralBackendURL 更改为新值并重置迁移信息。这是预期的用例。

  2. 如果当前正在进行迁移,则zimbraEphemeralBackendURL将不会更改。

  3. 如果没有可用的迁移信息,则迁移失败,或者新 URL 与迁移 URL 不匹配, zimbraEphemeralBackendURL将被更改;但是,将记录一条警告,指出数据不能保证具有 已迁移。

转发临时数据

在迁移过程中,在后端 URL 更改之前,Zimbra Collaboration 将存储新的临时数据 在 LDAP 和SSDB中;这可以防止两个后端不同步。如果zimbraEphemeralBackendURL的新值 更改以匹配迁移 URL,重置迁移信息并关闭转发机制。 如果值不匹配,则不会重置迁移信息,并且转发保持不变。 请注意,这意味着迁移只需要运行一次,即使初始迁移之间存在间隙 和网址更改。只要目标后端从未离线,它就会保持最新状态。然而,如果SSDB是 在迁移结束和后端 URL 更改之间离线,需要重新运行迁移。

这些场景如下所示:

ephemeral data migration

高级迁移选项

zmmigrateattrs工具提供了几个迁移选项,使用时要仔细考虑:

  • -r或者--dry-run选项将对每个帐户进行的更改输出到控制台,而不实际执行迁移。

  • -n或者--num-threads选项指定将使用多少个线程进行迁移。忽略此操作将导致迁移同步发生。

  • -a--account选项允许迁移以逗号分隔的特定帐户列表。这应该仅用于测试或调试。

  • -d--debug选项启用调试日志记录。

如果没有显式传入属性名称作为参数,则所有已知的临时属性都会发生迁移,如上例所示。

迁移限制

临时数据迁移是一种单向过程。这zmmigrateattrs脚本不支持从SSDB迁移数据 返回到 LDAP,也不支持在SSDB的不同实例之间迁移数据。这意味着如果 zimbraEphemeralBackendURL在迁移后恢复为 LDAP,之前的身份验证数据将变得无法访问, 并且所有用户会话都将失效。如果需要迁移到新的SSDB后端,则数据应该是 在更改值之前复制到新位置zimbraEphemeralBackendURL.

有一个例外是:在切换到 LDAP 后,后端可以立即安全地恢复回 LDAP。 SSDB数据丢失最少。这是因为迁移期间 LDAP 中保留了原始值;切换 后端到SSDB切换时在 LDAP 中留下临时数据的“快照”。迁移实用程序 目前不提供删除此数据以释放空间的方法;但是,它允许恢复后端。 初始更改和恢复之间的时间间隔越长,LDAP 快照反映的真实状态就越少 临时数据。

对 zmprov 的更改

由于多值临时数据的存储方式发生变化,属性zimbraAuthTokenszimbraCsrfTokenData 不再作为zmprov ga <account>响应的一部分返回。返回zimbraLastLogonTimestamp的值 和以前一样,尽管只有在不使用 -l 标志的情况下,因为添加 -l 标志将限制服务器访问属性 仅在 LDAP 中。仍然可以使用zmprov ma <account>命令修改这些属性,无论 短暂的后端。为此,提供的属性值必须与其 LDAP 格式匹配:tokenId|expiration|serverVersion对于授权令牌; data:crumb:expiration用于 CSRF 令牌。

迁移 CSV 输出

每次运行zmmigrateattrs都会在/opt/zimbra/data/tmp/文件夹。该文件包含迁移信息 对于每个迁移的帐户,例如迁移的属性数量。请注意,该值有可能为零, 如果帐户的所有临时数据已存在于目标存储中,则可能会发生这种情况。

如果任何迁移失败,还会创建一个仅详细说明错误的缩减 CSV 文件报告 在同一目录中。文件名在运行结束时记录。

帐户删除行为

SSDB 和 LDAP 后端之间的临时数据删除行为略有不同。以SSDB为后端,删除账户 导致zimbraLastLogonTimestamp属性被显式从 SSDB 中删除。 zimbraAuthTokenszimbraCsrfTokenData, 但是,当达到令牌生命周期(默认为 2 天)时,SSDB 会让它们过期。相反,临时数据 作为帐户删除过程的一部分,LDAP 中的数据会立即被擦除。

SSDB 安装和配置

安装

Zimbra Collaboration 软件包不包括 SSDB 服务器,并且 Zimbra Collaboration 安装和配置实用程序不会更改 SSDB 配置。要安装最新版本的 SSDB,请按照 SSDB 开发人员社区提供的说明进行操作:SSDB 安装文档。请注意,Zimbra Collaboration 已使用 SSDB 版本 1.9.5 进行了测试。要安装 SSDB 1.9.5,请按照SSDB 安装说明下载stable-1.9.5.zip而不是master.zip.

SSDB 没有加密或身份验证支持,这意味着您必须在网络级别保护对其的访问。

配置选项概述

本指南的目的是讨论一些可用选项 与SSDB,特别是关于:

  • 通过主从复制实现高可用性

  • 通过主从复制实现高可用性

  • 通过多主实现水平扩展,具有高可用性 配置。

本指南并不是对该主题的详尽处理。 另外,截至撰写本文时,SSDB以及任何相关的包 必须由系统管理员安装和配置之前 更新zimbraEphemeralBackendURL并迁移属性。

SSDBRedis客户端兼容 Zimbra Collaboration 目前使用Redis- 兼容客户端 与SSDB通信,这里描述了很多概念 适用于Redis后端。

主从复制高可用

正常运行

本文档介绍的实现主从的方法 复制利用Keepalived来 维护已配置的与主设备绑定的虚拟IP地址 正常情况下的SSDB实例。

ssdb master slave normal

故障转移

如果Keepalived检测到主实例出现故障,则 通过重新绑定虚拟IP将backup实例提升为master 备份地址。

ssdb master slave failover

通过主-主复制实现高可用性

这与主-从复制不同,因为SSDB 实例在线且可访问。 每个都复制来自 其他。 在后面描述的示例设置中,我们使用HAProxy作为前端。 请记住, 对于生产,您必须使用本身具有高可用性的代理服务。

ssdb master master

通过多主配置进行水平扩展

通常情况下,两者SSDBRedis包含整个键空间 单实例。 可以使用前端多个实例 诸如twemproxy之类的服务。 它 支持各种哈希模式,以便与关联的数据 特定密钥始终存储在同一服务器上。 这允许 非常大的安装的水平扩展。

通过在主从配置中配置每个SSDB实例,您可以 同时获得水平扩展和高可用性。

ssdb multi master

主从复制

确保SSDB保持高可用性的一种方法是设置 主从复制并配置一个允许 备份SSDB实例以在以下情况下自动接管 主实例出现故障。 本文档将描述一个 实现该目标的技术。

概述

SSDB将安装在两台服务器上。 它将被配置为这样 一台服务器是指定的主服务器,另一台服务器是指定的主服务器 指定的从属或备份,将不断复制更改 来自主服务器。

Keepalived也将安装在这两台服务器上。 每个Keepalived实例将监视另一个实例。 如果 主服务器宕机,Keepalived将检测到该故障并 将从属服务器或备份服务器提升为主服务器。 Keepalived将 维持一个虚拟 IP地址绑定到当前主服务器。

Zimbra Collaboration 将进行配置,以便 zimbraEphemeralBackendURL将绑定到虚拟 IP 地址那就是 由Keepalived.

维护 一旦安装并配置了两者SSDB 主从设置和Zimbra协作已经完成,按照 中的说明临时数据用于更新 zimbraEphemeralBackendURL相应。

此处记录的示例是在运行的服务器上完成的 Ubuntu 16.04.

所需软件包

先决条件

安装SSDBKeepalived在两台服务器上按照 适用于您所使用的 Linux 发行版的过程 使用。

配置

以下配置步骤假设您已安装 SSDB/var/lib/ssdb并且所有SSDB配置文件都是 位于同一目录中。 它进一步假设内部 主机地址位于192.168.56/24网络上。

  • 192.168.56.111- 这是初始主站SSDB的 IP 地址 server

  • 192.168.56.112- 这是初始从属SSDB的 IP 地址 server

  • 192.168.56.120- 这是将由以下人员维护的虚拟 IP 地址 Keepalived.

SSDB 配置,指定(初始)Master

本机的 IP 地址是192.168.56.111.

/var/lib/ssdb/ssdb_master.conf

以下块中的关键配置项是:

  • server/ip- 绑定到所有可用的 IP 地址

  • server/port- 绑定到标准SSDB端口

  • server/deny, server/allow- 限制SSDB访问localhost和内部(主机)地址。`

仅与以下相关的配置项主从复制是 此处显示。

# ssdb-server config
# MUST indent by TAB!

# relative to path of this file, directory must exists
work_dir = ./var
pidfile = ./var/ssdb.pid

server:
        ip: 0.0.0.0
        port: 8888
        deny: all
        allow: 127.0.0.1
        allow: 192.168.56

replication:
        binlog: yes
        # Limit sync speed to *MB/s, -1: no limit
        sync_speed: -1
        slaveof:
                # sync|mirror, default is sync
                #type: sync

/var/lib/ssdb/ssdb_slave.conf

以下块中的关键配置项是:

  • server/ip- 绑定到localhost

  • server/port- 绑定到标准SSDB端口

  • slaveof/type - sync

  • slaveof/host - 192.168.56.112是另一个SSDB服务器

  • slaveof/port - 8888- 标准SSDBport

再次强调,只有主从相关的配置项 复制显示。

# ssdb-server config

# relative to path of this file, must exist
work_dir = ./var_slave
pidfile = ./var_slave/ssdb.pid

server:
        ip: 127.0.0.1
        port: 8888

replication:
        binlog: yes
        # Limit sync speed to *MB/s, -1: no limit
        sync_speed: -1
        slaveof:
                # sync|mirror, default is sync
                type: sync
                # Can use host: <hostname> with SSDB 1.9.2 or newer
                ip: 192.168.56.112
                port: 8888
SSDB配置,指定(初始)从属

这台机器的IP地址是192.168.56.112.

ssdb_master.conf文件与指定的文件相同 主服务器。

ssdb_slave.conf文件几乎与 指定主服务器。 仅以下项目有所不同;

  • slaveof/ip (or host) - 192.168.56.111是另一个SSDB服务器

Keepalived 配置,指定(初始)Master

/etc/keepalived/keepalived.conf

需要注意的关键配置项有:

  • state- State 设置为BACKUPfor两者指定的 (初始)主服务器和备份服务器。 在这种情况下, priority用于协商哪个服务器将采用MASTER 最初的状态。

  • nopreempt- 如果主服务器发生故障并且 备份服务器提升为主服务器,此配置指令 将使原始主人无法收回该角色 自动恢复上线。 这是必需的,因为它将 可能已经过时了。 在这种情况下,当它恢复时,它会 保持备份模式并将开始复制信息 新主人。 注意:可能需要人为干预才能带来 故障主站重新投入使用。

  • interface- 在此示例中,enp0s8是接口标识符 为此virtual_ipaddress将被定义。 你会选择 适合您的安装的值。

  • priority- 指定的初始主机必须具有更高的 优先级高于指定的初始备份。

  • advert_int- 就本文档而言,默认值 1秒被使用。 如果您安装Keepalived 1.2.21或更新版本,您 可以在这里指定一个浮点值;例如。,0.1(秒)。 这将使Keepalived能够更快地检测主站故障。

  • notify- 这是将调用的脚本的路径 状态转换。 脚本的完整内容如下所示

  • virtual_ipaddress- 这是虚拟IP地址 由Keepalived.

vrrp_instance VRRP1 {
        state BACKUP
        nopreempt
        interface enp0s8
        virtual_router_id 41
        priority 200
		advert_int 1
        notify /var/lib/ssdb/notify.sh

        authentication {
                auth_type PASS
                auth_pass 1234
        }
        virtual_ipaddress {
                192.168.56.120 dev enp0s8 label enp0s8:vip
        }
}

/var/lib/ssdb/notify.sh

维护 这是在状态期间由Keepalived调用的脚本 过渡。 请注意,分配给USER的值应该是 拥有SSDB进程的用户名。

#!/bin/bash
# This must be run as root.

ENDSTATE=$3
NAME=$2
TYPE=$1

LOG=/var/log/keepalived-state-transition.log
LOG_ERROR=0
LOG_WARNING=1
LOG_INFO=2
LOG_DEBUG=3
LOG_LEVEL=$LOG_INFO

KPCFG=/etc/keepalived/keepalived.conf
USER=<SSDB-user-name>
PREFIX=/var/lib/ssdb


function log {
    lvl=$1
    msg="$2"
    if [ $lvl -le $LOG_LEVEL ]
    then
        now=$(date)
        echo "$now [$lvl] $msg" >> $LOG
    fi
}

function log_error {
    log $LOG_ERROR "$1"
}
function log_warning {
    log $LOG_WARNING "$1"
}
function log_info {
    log $LOG_INFO "$1"
}
function log_debug {
    log $LOG_DEBUG "$1"
}

function backup {
    log_info "Transitioning to BACKUP state"
    runuser -l $USER -c "${PREFIX}/ssdb-server ${PREFIX}/ssdb.conf -s stop"
    runuser -l $USER -c "cp ${PREFIX}/ssdb_slave.conf ${PREFIX}/ssdb.conf"
    runuser -l $USER -c "${PREFIX}/ssdb-server -d ${PREFIX}/ssdb.conf"

}

function fault {
    log_error "keepalived is in FAULT state"
}

function master {
    log_info "Transitioning to MASTER state"
    runuser -l $USER -c "${PREFIX}/ssdb-server ${PREFIX}/ssdb.conf -s stop"
    runuser -l $USER -c "cp ${PREFIX}/ssdb_master.conf ${PREFIX}/ssdb.conf"
    runuser -l $USER -c "${PREFIX}/ssdb-server -d ${PREFIX}/ssdb.conf"
}


case $ENDSTATE in
    "BACKUP") # Perform action for transition to BACKUP state
        backup
        exit 0
        ;;
    "FAULT")  # Perform action for transition to FAULT state
        fault
        exit 0
        ;;
    "MASTER") # Perform action for transition to MASTER state
        master
        exit 0
        ;;
    *)    echo "Unknown state ${ENDSTATE} for VRRP ${TYPE} ${NAME}"
        exit 1
        ;;
esac
Keepalived 配置,指定(初始)备份

/etc/keepalived/keepalived.conf

该文件与主节点上的同一个文件几乎完全相同。 例外:

  • priority- 它被赋予较低的初始优先级。

  • 它不包含nopreempt选项。 一旦备份服务器 由于原主人失败而成为主人, 系统在恢复之前应该允许一些人为干预 原来的服务器变为master状态。

vrrp_instance VRRP1 {
        state BACKUP
        interface enp0s8
        virtual_router_id 41
        priority 100
        advert_int 1
        notify /var/lib/ssdb/notify.sh

        authentication {
                auth_type PASS
                auth_pass 1234
        }
        virtual_ipaddress {
                192.168.56.120 dev enp0s8 label enp0s8:vip
        }
}

备份服务器的/var/lib/ssdb/notify.sh与 主人。

主主复制

概述

确保的另一种方法SSDB保持高可用性的方法是设置 主-主复制并配置一个能够理解的代理 两个Redis服务器前面的SSDB协议。 代理是 负责监控两台服务器的健康状况并删除 一个来自船尾的故障服务器。

以下简化示例使用单个HAProxy实例 两台SSDB服务器的前面。

所需软件包

  • SSDB。 在下面所示的示例中,假设 安装了1.9.2或更高版本。

  • HAProxy

先决条件

安装SSDB在两台服务器上按照 适用于您所使用的 Linux 发行版的过程 使用。安装HAProxy在额外的服务器上。 注意Keepalived可用于配置 高可用的HAProxy服务器池。

配置

SSDB 配置,第一个主控

注:

  • 仅与主主复制相关的配置 显示。

# ssdb-server config
## ssdb-server config MUST indent by TAB!

# relative to path of this file, directory must exists
work_dir = ./var
pidfile = ./var/ssdb.pid

server:
        ip: 0.0.0.0
        port: 8888
        deny: all
        allow: 127.0.0.1
        # e.g., 192.168.56
        allow: <ip-address-prefix>


replication:
        binlog: yes
        # Limit sync speed to *MB/s, -1: no limit
        sync_speed: -1
        slaveof:
                id: svc_2
                type: mirror
                host: <hostname-of-other-master>
                port: 8888
SSDB 配置,第二主

注:

  • 仅与主主复制相关的配置 显示。

# ssdb-server config
# MUST indent by TAB!

# relative to path of this file, directory must exists
work_dir = ./var
pidfile = ./var/ssdb.pid

server:
        ip: 0.0.0.0
        port: 8888
        deny: all
        allow: 127.0.0.1
        # e.g., 192.168.56
        allow: <ip-address-prefix>


replication:
        binlog: yes
        # Limit sync speed to *MB/s, -1: no limit
        sync_speed: -1
        slaveof:
                id: svc_1
                type: mirror
                host: <hostname-of-other-master>
                port: 8888
HAProxy 配置

注意:

  • 仅显示与SSDB相关的配置。

  • SSDB支持Redis网络协议。您可以使用Redis客户端 连接到SSDB服务器并对其进行操作。这就是 Zimbra 协作做到了。

defaults REDIS
        mode tcp
        timeout connect  4s
        timeout server  30s
        timeout client  30s

frontend ft_redis
        bind <published-ip-address>:8888 name redis
        default_backend bk_redis

backend bk_redis
        option tcp-check
        server R1 <first-master-ip-address>:8888 check inter 1s
        server R2 <second-master-ip-address>:8888 check inter 1s

多主扩展/复制

概述

多主配置的细节将不在本文中介绍 文档。 本质上,您将安装和配置多个 使用包含的指令的独立SSDB主从对 上面。每对将负责存储总数的子集 键空间。

与主-主配置一样,池中的所有对SSDB服务器将由代理服务作为前端,该代理服务能够理解 Redis协议。 它还必须能够一致地散列 所提供的数据密钥使得与某个相关的所有请求 特定的密钥总是被路由到相同的主从对。

其中一款产品是twemproxy 来自Twitter.

LDAP 属性

SSDB 后端利用资源池来管理对 SSDB服务器;尝试临时数据操作的线程必须首先 从该池中获取资源。为此,有两个 LDAP 属性 被引入来控制池配置。

zimbraSSDBResourcePoolSize控制池的大小。这决定了 有多少客户端线程可以同时执行临时 API 操作。 默认情况下,此值设置为 0,这会导致池大小不受限制。

zimbraSSDBResourcePoolTimeout控制线程运行的时间量 在抛出异常之前等待资源。默认为 0, 这不会导致超时。当池大小变大时,该属性无效 为 0,因为线程永远不必等待资源按顺序释放 执行临时数据操作。

当池大小有限时,建议使用非零超时值。 不然就丢了SSDB连接可能会导致邮箱线程保留 即使重新建立连接后,也会无限期地阻止。 一般来说,资源池的大小应使得邮箱服务器 并不缺乏资源。

使所有用户会话无效

根据您的环境,运行此命令将需要一些时间,并且不会有进度指示。使用cd命令进入SSDB安装目录:

./ssdb-cli -h 127.0.0.1 -p 8888
flushdb

SSDB复制可能会受到影响,因此最好先中断复制并在SSDB的单个master上运行此命令,然后恢复SSDB复制。

通过 Zimbra 协作扩展 SSDB 以适应生产负载

影响 SSDB 服务器负载的 Zimbra Collaboration 生产负载的主要特征是身份验证请求的频率以及 Zimbra Collaboration Web 客户端和第 3 方 SOAP 客户端发送的 SOAP 请求的频率。每个身份验证请求都会导致 SSDB 执行 2 或 3 次写入操作。写入操作更新 zimbraLastLogonTimestamp、zimbraAuthTokens 和 zimbraCsrfTokenData 值。请注意,仅当使用支持 CSRF 的 SOAP 客户端(例如 Zimbra Collaboration Web 客户端)时,zimbraCsrfTokenData 才会更新。每个经过身份验证的 SOAP 请求都会导致 SSDB 执行 2 次读取操作。

我们建议您的 SSDB 服务器至少具有 2GB RAM 和 1 个 CPU。如果您计划在 SSDB 服务器上运行其他工具(例如监控和配置管理),请考虑增加内存并添加一个 CPU 核心以容纳其他软件。查看Zimbra 和 SSDB 身份验证负载测试了解更多信息。

结论

对于满足临时数据存储要求的安装 在单实例中,简单的主从复制是最简单的 实施并需要最少的资源。 大师-大师 复制确实允许请求在两者之间进行负载平衡 大师;然而,每个大师也在不断地复制 其他,所以SSDB必须做额外的工作来维护 一致性。

服务等级和帐户

分配给帐户的服务等级 (COS) 确定用户帐户的默认属性以及要启用或拒绝的功能。 每个账户都分配有一个 COS。 COS 控制邮箱配额、消息生命周期、密码限制、附件阻止和服务器池使用。

COS 是全局对象,不限于特定域或域集。

您可以从管理控制台创建和编辑服务类别:

管理控制台:

主页 → 配置 → 服务等级 →COS

使用 COS 管理功能和设置

安装 Zimbra Collaboration 时会创建默认 COS。 您可以修改默认 COS 并创建新的 COS。

从 COS,您可以管理以下功能:

  • 用户可以访问的功能和首选项。

  • 用户可以访问的主题和 Zimlet。

  • 高级设置,包括附件设置、配额和密码登录策略。

  • Web 应用程序版本(现代 Web 应用程序和经典 Web 应用程序)。

  • Web 服务和桌面客户端(EWS、MAPI 等)。

  • 离线模式。

  • 保留政策。

例如,您可以创建一个执行 COS,将其配置为启用所有功能、提供无限的邮箱配额并且从不清除消息。 还可以创建另一个普通员工 COS,仅启用邮件功能,设置邮箱配额,并每 60 天清除一次邮件。 将账户分组到特定 COS 允许您批量更新或更改账户功能。 因此,当 COS 发生更改时,分配给该 COS 的所有账户都会发生更改。

如果未为新账户显式设置 COS,或者分配给用户的 COS 不再存在,则自动分配默认COS。

您可以创建 COS 并将其指定为在该域上创建的所有帐户的默认 COS。 您可以创建不同的 COS 并指定哪些可用于域。 如果域未定义 COS,且您未指定 COS,则创建账户时会自动分配原始默认 COS。

某些 COS 设置可以由全局设置或用户设置覆盖。 例如:

  • 传出消息是否保存到已发送可以在用户首选项中从 Zimbra Classic Web 应用程序进行更改。

  • 将附件阻止设置为全局设置可以覆盖 COS 设置。

分配给帐户的某些 COS 设置不会对 IMAP 客户端强制执行。

选择功能和首选项

COS 可用的所有功能均显示在其功能页面中。 从那里,您可以选择或取消选择您不想包含在 COS 中的功能。

在账户级别所做的更改会覆盖分配给该账户的 COS 中的规则。

您可以在首选项页面中定义保存和查看消息的初始首选项。 您还可以为经典 Web 应用程序和现代 Web 应用程序选择特定区域设置。 如果未指定区域设置,则浏览器区域设置为默认值。

有关功能和首选项的说明,请参阅自定义帐户.

禁用首选项

默认情况下,启用首选项,并且您的用户可以修改为其帐户配置的默认首选项。

作为管理员,您可以禁用首选项。 因此,“首选项”页面不会显示在用户邮箱中:因此他们无法修改为其帐户设置的功能的默认配置。

用户可以在 Modern Web App 的“设置”下更改其首选项。 禁用首选项不会对 Modern Web App 产生任何影响。

设置默认时区

使用经典 Web 应用程序或现代 Web 应用程序时,计算机上的时区设置用作显示收到的消息和日历活动的时间戳。

日历设置中的时区值仅用于确定工作时间开始和结束时间的锚定位置,以及它们在忙/闲信息中的显示方式。

使用服务器池

在具有多个邮箱服务器的环境中,COS 用于将新帐户分配给邮箱服务器。 配置 COS 时,您可以选择将哪些服务器添加到服务器池中。 在每个服务器池中,随机算法将新邮箱分配给任何可用的服务器。

当您在“新建帐户向导”的“服务器”字段中创建帐户时,可以将帐户分配给特定邮箱服务器。 取消选中auto并在服务器字段中输入邮箱服务器。

设置帐户配额

帐户配额是帐户允许的存储限制。 电子邮件、地址簿、日历、任务和公文包文件都会占用配额量。 可以从管理控制台为 COS 或个人帐户设置帐户配额。

如果将配额设置为 0,则帐户没有配额。

查看账户配额

要查看域中所有帐户的帐户配额:

管理控制台:

主页 → 配置 → 域 →→ 邮箱配额

当接近最大配额时通知用户

可以通知用户其邮箱已接近其配额。 可以设置配额百分比并修改警告消息文本: 转至指定服务等级的配额容器:

管理控制台:

主页 → 配置 → 服务等级 →COS→ 高级 → 配额

当达到显示/配置的阈值时,将向用户发送配额警告消息。

在域中设置配额

您可以为域设置最大邮箱配额。 域邮箱配额默认是无限制的。 域配额是域内所有邮箱可以使用的最大存储量。

您还可以设置总计配额。 域中所有帐户的配额总和可以超过聚合大小。

可以设置聚合配额策略,用于在达到聚合配额后如何处理发送或接收的消息。 策略选项包括:

  • 继续允许照常发送和接收消息。

  • 不允许发送消息。

  • 不允许发送或接收消息。

当配额处于聚合配额的配置百分比范围内时,可以自动发送通知。 cron 选项卡作业每天运行以检查聚合配额百分比,如果达到该百分比,则会发送配额警告电子邮件。

设置域配额后,帐户的有效配额为域或帐户的最小配额设置。

要配置域配额,请转至域配额设置指定域的容器:

管理控制台:

主页 → 配置 → 域 →→ 高级 → 域配额设置

管理超额配额

您可以设置当用户的邮箱超出配置的配额时如何处理邮件传送。 MTA 的默认行为是暂时将邮件发送到延迟队列。 当邮箱有足够空间时,消息就会被传递。 您可以更改此行为,让邮件退回给发件人,而不是首先发送到延迟队列,或者您可以配置为即使超出配额也将邮件发送到邮箱。

退回消息而不是将其发送到延迟队列:

zmprov mcf zimbraLmtpPermanentFailureWhenOverQuota TRUE

即使超出配额也将邮件发送到邮箱:

zmprov mc {cos-name} zimbraMailAllowReceiveButNotSendWhenOverQuota TRUE

当此属性设置为 TRUE 时,超出配额的邮箱仍可以接收新邮件和日历邀请。 此报价绕过仅针对消息实现。 所有其他邮件仍受配额影响。

管理密码

如果您使用内部身份验证,您可以从帐户的工具栏快速更改帐户的密码。 必须告知用户新密码才能登录。

如果使用 Microsoft Active Directory (AD) 进行用户认证,则必须在 COS 中禁用修改密码功能。 AD 密码策略不受 Zimbra 管理。

如果您想确保用户更改您创建的密码,您可以启用必须更改密码对于帐户。 用户下次登录时必须更改密码。

密码限制可以在 COS 级别或账户级别设置。 您可以配置设置,要求用户创建强密码并定期更改密码,还可以设置参数以在输入错误密码时锁定帐户。

将用户引导至您的更改密码页面

如果身份验证配置为外部身份验证,您可以配置 Zimbra Collaboration 以将用户引导至您的密码更改页面当用户更改密码时。 您可以将此 URL 设置为全局设置或每个域设置。

zimbraChangePasswordURL属性设置为密码更改页面的 URL。

更改密码在经典 Web 应用程序下首选项 → 常规链接到此 URL,当密码过期时,用户将被发送到此页面。 在现代网络应用程序中,更改密码出现在帐户头像菜单下,并且它还将链接到所提供的 URL。

修改域的密码:

zmprov md example.com zimbraChangePasswordURL https://auth.example.com

配置密码策略

如果为域配置了内部身份验证,您可以要求用户创建强密码以防止简单的密码收集攻击。 如果用户在达到配置的最大尝试次数后仍无法登录,则其帐户可能会被锁定。

要设置密码策略,请使用指定服务等级的密码容器:

管理控制台:

主页 → 配置 → 服务等级 →COS→ 高级 → 密码

下面列出了可以配置的密码设置。

表 34. 密码选项
密码选项 说明

最小/最大密码长度

指定所需的密码长度。 默认最小值和最大值分别为 6 和 64 个字符。

最短/最长密码期限

配置密码到期日期。 用户可以随时在最小密码和最大密码之间更改密码。 当达到密码最长期限时,他们必须更改它。

以下设置要求用户增加密码的复杂性。

最小大写字符

大写 A - Z

最小小写字符

小写 a - z

最小标点符号

非字母数字,例如 !、$、#、&、%

最小数字字符

基本字符10 位数字 0 - 9

最少数字字符或标点符号

非字母数字和数字组合

唯一密码历史记录的最小数量

在重新使用旧密码之前用户必须创建的唯一新密码的数量。

最短密码期限(天)

密码更改之间的最短天数

密码最长期限(天)

密码更改之间的最长天数

密码锁定

用户无法更改其密码。 如果身份验证是外部的,则应设置此项。

必须更改密码

用户首次登录时需要更改密码。

更改密码

启用后,用户可以在帐户“首选项”选项卡的密码期限设置内随时更改密码。

密码过期提醒

Zimbra Daffodil (v10.1.10) 现在支持密码过期提醒,管理员用户将能够提前通知用户密码即将过期。这有助于防止意外的帐户锁定,并确保用户及时更新密码。

概述

启用此功能后,用户将在密码过期前 10 天收到自动提醒电子邮件。这些提醒将每天持续进行,直到密码更新或过期。

LDAP 属性

密码过期提醒功能基于以下 LDAP 属性工作:

  • zimbraFeaturePasswordExpiryReminderEnabled::
    类型:布尔值
    默认: FALSE
    描述:启用或禁用密码到期提醒。

  • zimbraPasswordModifiedTime::
    类型:日期时间
    说明:表示上次更改密码的时间。

  • zimbraPasswordMaxAge::
    类型:整数(以天为单位)
    默认值: 0(无有效期限制)
    描述:指定密码在需要更改之前保持有效的最大天数。

提醒资格标准

仅当满足以下所有条件时,用户才会收到密码到期提醒:

  1. zimbraFeaturePasswordExpiryReminderEnabled设置为TRUE

  2. zimbraPasswordMaxAge设置为大于0

  3. 的值 密码过期之前剩余的天数为10 或更少

执行和调度

密码过期提醒由在00:00 UTC运行的每日 cron 作业触发。该作业执行zmpasswordexpiryreminder脚本,该脚本执行以下任务:

  • 标识邮箱服务器上的所有合格用户

  • 向每个符合条件的用户发送提醒电子邮件

这可确保用户及时收到通知,并可以在密码过期之前采取适当的操作。

密码到期提醒电子邮件示例

主题:您的密码过期时间为{days_remaining}
从:密码过期通知 <no-reply@{mail_domain}>
到: {用户名}

电子邮件正文:

“亲爱的{用户名},

您的帐户密码将于{days_remaining}天后于{expiry_date}.

到期。要保持对帐户的访问权限,请在到期日期之前重置您的密码。

您将继续每天收到通知,直到密码更改或过期。

这是自动电子邮件通知。"

阻止常用密码

阻止常用密码功能使组织能够在创建用户时限制常用密码的使用。常用密码列表维护在服务器上,当管理员尝试使用常用密码创建用户时,将引用该列表。

该功能由本地配置属性zimbra_block_common_passwords_enabled控制,默认值设置为FALSE.

启用此功能后,它还将阻止最终用户通过以下选项将其密码设置为常用密码:

  • 个人资料 → 更改密码在右上角的 Modern Web App 中。

  • 登录页面上的忘记密码选项。 (如果为用户启用了忘记密码功能)。

启用阻止通用密码功能
  1. zimbra用户登录:

su - zimbra
  1. 将 localconfigzimbra_block_common_passwords_enabled值设置为TRUE:

zmlocalconfig -e zimbra_block_common_passwords_enabled=TRUE
  1. 重新启动邮箱服务:

zmmailboxdctl restart

启用此功能后,如果尝试创建用户,则显示密码无效错误,并且未创建用户。

管理登录策略

您可以设置在指定的锁定时间内锁定帐户之前尝试登录失败的最大次数。 此类策略用于防止密码攻击。

要设置用户登录策略,请使用指定服务等级的归档登录策略容器:

管理控制台:

主页 → 配置 → 服务等级 →COS→ 高级 → 失败登录策略

表 35.登录策略选项
登录策略选项 说明

启用失败登录锁定

这将启用“失败登录锁定”功能。 您可以配置以下设置。

允许连续登录失败的次数

帐户被锁定之前尝试登录失败的次数。 默认值为 10。 如果设置为 0,则帐户永远不会被锁定。

锁定帐户的时间

帐户被锁定的时间。 如果设置为 0,则帐户将被锁定,直到输入正确的密码,或者管理员手动更改帐户状态并创建新密码。 默认值为 1 小时。

必须发生失败登录才能锁定帐户的时间窗口

连续失败登录尝试次数从日志中清除后的持续时间。 如果将此设置为 0,则无论连续发生多少次登录尝试失败,用户都可以继续尝试进行身份验证。 默认值为 1 小时。

关于 2 因素身份验证

通过 2 因素身份验证 (FA) 功能,您可以对 COS 和/或用户帐户应用其他安全策略,以便在尝试访问系统期间提供另一层身份验证。 必须在管理控制台中启用或禁用此功能,才能管理适用于用户邮箱的 2FA 功能。

2 Factor Authentication

有关详细信息,请参阅2 因素身份验证.

管理会话超时策略

您可以根据各种条件设置为用户会话分配的时间段。

要设置会话超时策略,请使用指定服务类别的超时策略容器:

管理控制台:

主页 → 配置 → 服务等级 →COS→ 高级 → 超时策略

表 36. 会话超时策略选项
会话超时策略选项 说明

管理控制台身份验证令牌生存期

设置包含管理员身份验证令牌的浏览器 cookie。 管理员可以打开管理控制台,而无需再次登录,直到身份验证令牌过期。 默认值为 12 小时。

身份验证令牌生存期

设置包含 Web 应用程序身份验证令牌的浏览器 cookie。 用户可以打开经典 Web 应用程序或现代 Web 应用程序,而无需再次登录,直到身份验证令牌过期。 默认值为 2 天。 过期后,将显示登录页面,用户必须登录才能继续。

会话空闲生命周期

如果没有活动发生,用户会话保持活动状态的时间。 活动包括任何可单击的鼠标操作,例如查看文件夹内容或单击按钮。 默认无限制。

您可以从管理控制台手动使用户的 Web 客户端会话过期过期会话关联。 这会强制帐户的当前会话立即过期。

管理默认外部 COS

defaultExternalCOS 分配给外部虚拟帐户,这些帐户是在外部用户接受 Zimbra 配置的用户的帐户时创建的。 邀请分享他们的日历或公文包项目。

服务器上未配置此帐户,但外部用户可以登录经典 Web 应用程序、创建显示名称并设置密码以查看共享项目。 唯一可用的文件夹是他们有权访问的内容。

defaultExternalCOS 配置有以下一般功能: 更改密码、更改 UI 主题、HTML 撰写、导出和搜索。 主要功能均未配置。

Modern Web App 目前不支持外部用户登录。

自定义帐户

本章介绍可以从分配的 COS 或个人帐户中为帐户配置的功能和用户首选项。

为 Zimbra Classic Web App 用户启用邮箱功能。 当使用 IMAP 或 POP 客户端时,用户可能无法使用这些功能。
以下部分中提到的某些功能当前可能不适用于 Modern Web App。
对于经典 Web 应用程序,Chrome 版本 85 及更高版本不再支持离线模式。用户仍然可以继续在以前的浏览器版本中使用离线模式。

消息传递和协作应用程序

您的 COS 配置和 COS 到账户的分配决定了账户功能的默认设置以及应用于账户组的限制。 各个帐户可以进行不同的配置,您所做的任何更改都会覆盖 COS 设置。 更新 COS 时,更改不会反映在具有 COS 覆盖的账户中。

电子邮件消息功能

您可以配置启用哪些电子邮件消息功能。 然后,用户可以将许多已启用的功能作为首选项进行管理。

默认情况下,用户管理自己的首选项,但您可以通过管理方式选择不允许用户修改其帐户首选项。 当前支持的 Web 应用程序电子邮件消息传递功能在中列出并进行了描述电子邮件功能.

表 37. 电子邮件功能
电子邮件消息传送功能 说明

邮件

启用电子邮件应用程序。 默认启用。

请参阅管理控制台中的COS→ 功能 → 主要功能容器。

对话

消息可以通过公共线程分组为对话。 默认情况下,通过引用标头将消息串联到对话中。 如果没有 References 标头,则使用主题来确定对话线程。

要更改默认值,请更新属性zimbraMailThreadingAlgorithm来自 COS 或个人账户。 请参阅更改对话线程默认值.

如果启用此功能,则默认对话视图。 您可以在 COS 首选项页面更改默认值。 用户还可以更改默认值。

请参阅管理控制台中的COS→ 功能 → 邮件功能容器。

HTML 撰写

用户可以使用 HTML 编辑器撰写电子邮件。 他们可以指定默认字体设置作为首选项。

请参阅管理控制台中的COS→ 首选项 → 撰写邮件容器。

草稿自动保存间隔

保存草稿消息的频率。 默认值为每 30 秒一次。 用户无法更改频率,但可以关闭保存草稿功能。

参见COS→ 首选项 → 在管理控制台中撰写邮件容器。

稍后发送邮件

启用后,用户可以选择稍后发送稍后发送消息。 用户配置发送的数据和时间。 消息保存在草稿文件夹中。

请参阅管理控制台中的COS→ 功能 → 邮件功能容器。

消息优先级

启用后,用户可以设置消息的优先级。 从 Web 应用程序查看的收件人会看到优先级标志(无论优先级标志是高还是低)。

请参阅管理控制台中的COS→ 功能 → 邮件功能容器。

启用附件索引

附件已编制索引。 可以搜索索引附件。

参见COS→ 高级 → 管理控制台中的附件设置容器。

允许用户指定转发地址

您可以指定用户可以使用的默认转发地址。 用户可以从其帐户“首选项”选项卡更改转发地址。

您还可以指定对用户隐藏的转发地址。 发送到该帐户的消息副本将立即转发到指定的转发地址。

请参阅管理控制台中的COS→ 功能 → 邮件功能容器。

外出回复

用户可以创建自动回复传入消息的电子邮件。 默认情况下,每 7 天只会向每个收件人发送一次邮件,无论该人向该地址发送了多少条邮件。 可以在 COS 首选项页面的外出缓存寿命字段中更改此设置。

请参阅管理控制台中的COS→ 功能 → 邮件功能容器。

新邮件通知

允许用户选择指定接收新邮件通知的地址。 他们可以打开或关闭此功能,并从其帐户“首选项”选项卡中指定一个地址。

参见自定义通知电子邮件作为更改电子邮件模板的示例。

请参阅管理控制台中的COS→ 功能 → 邮件功能容器。

角色

启用后,用户可以创建其他帐户名称来管理不同的角色。 可以为从该角色帐户发送的消息的From名称选择帐户别名,并且可以为该角色帐户设置特定签名。 可创建的角色数量可根据您的要求进行配置。 最小值为 0,默认为 20 (zimbraIdentityMaxNumEntries).

仅经典 Web 应用程序支持此功能。

请参阅管理控制台中的COS→ 功能 → 邮件功能容器。

邮件签名的最大长度

签名中可以包含的最大字符数。 默认值为 1024 个字符。

用户可以创建的签名数量在zimbraSignatureMaxNumEntries.

中配置,参见COS→ 首选项 → 在管理控制台中撰写邮件容器。

高级搜索

允许用户按日期、域、状态、标签、大小、附件、Zimlet 和文件夹构建复杂的搜索。

请参阅管理控制台中的COS→ 功能 → 搜索功能容器。

保存的搜索

用户可以保存他们之前执行或构建的搜索。

请参阅管理控制台中的COS→ 功能 → 搜索功能容器。

初始搜索首选项

启用后,可以更改默认搜索邮箱。

请参阅管理控制台中的COS→ 功能 → 常规选项容器。

外部 POP 访问

启用后,用户可以直接从其 Zimbra 帐户检索其 POP 帐户的电子邮件。 他们将外部帐户地址添加到其帐户设置中。

请参阅管理控制台中的COS→ 功能 → 邮件功能容器。

外部 IMAP 访问

启用后,用户可以直接从其 Zimbra 帐户检索其 IMAP 帐户的电子邮件。 他们可以将外部帐户地址添加到其帐户设置中。

参见COS→ 功能 → 管理控制台中的邮件功能容器。

此账户的别名

您可以为该账户创建别名。 用户无法更改此设置。

邮件过滤器

用户可以定义一组规则和相应的操作以应用于传入和传出的邮件以及日历约会。 当传入电子邮件与过滤器规则的条件匹配时,将应用与该规则关联的相应操作。

在运行用户的邮件过滤器之前,已完成对收到邮件的垃圾邮件检查。 被识别为垃圾邮件的邮件将被移至垃圾邮件文件夹。 为了避免邮件被错误地标记为垃圾邮件,用户可以从“首选项邮件”文件夹创建垃圾邮件白名单,以识别不应标记为垃圾邮件的电子邮件地址。

参见COS→ 功能 → 邮件功能管理控制台中的容器。

标记

用户可以创建标记并将其分配给公文包文件夹中的消息、联系人和文件。 (此功能仅在经典 Web 应用程序中受支持。)

请参阅管理控制台中的COS→ 功能 → 邮件功能容器。

启用键盘快捷键

用户可以在其邮箱中使用键盘快捷键。 可以在经典 Web 应用程序中的用户名下拉菜单中查看快捷方式列表。

键盘快捷键在 Modern Web App 中始终可用。 可以通过键入来查看快捷方式列表Ctrl-Q.

请参阅管理控制台中的COS→ 首选项 → 常规选项容器。

全局地址列表 (GAL) 访问

用户可以访问公司目录以查找其电子邮件的名称。

请参阅管理控制台中的COS→ 功能 → 常规功能容器。

GAL 自动完成

启用后,用户在撰写标题中输入几个字母,GAL 中列出的名称将按使用情况排名。 另请参阅自动完成排名名称.

请参阅COS→ 功能 → 常规功能 管理控制台中的容器。

Web 应用程序的离线支持

启用后,用户在使用 Zimbra Modern Web 应用程序时可以使用离线模式访问其数据,而无需网络连接。 另请参见离线模式.

请参阅管理控制台中的COS→ 功能 → 常规功能容器。

IMAP 访问

用户可以使用第三方邮件应用程序通过 IMAP 协议访问其邮箱。

您可以从 COS 或账户设置轮询间隔先进的页,数据源 → IMAP轮询间隔部分。 默认情况下不设置轮询间隔。

请参阅管理控制台中的COS→ 功能 → 邮件功能容器。

POP3 访问

用户可以使用第三方邮件应用程序通过 POP 协议访问其邮箱。 当他们检索 POP 电子邮件时,邮件和附件将保存在 Zimbra 服务器上。

用户可以从其首选项 → 邮件页面进行配置

  • 如何下载消息。

  • 是否包含他们的垃圾邮件。 垃圾邮件被下载到他们的收件箱中。

  • 如何从 POP 帐户中删除邮件。

您可以从 COS 或账户设置轮询间隔高级页,数据源 → POP3轮询间隔部分。 默认情况下不设置轮询间隔。

参见COS→ 功能 → 管理控制台中的邮件功能容器。

自动完成对姓名进行排名

自动完成功能会显示姓名排名,最常调用的联系人列在顶部。 如果最先出现的联系人姓名不应列在顶部,用户可以单击忘记并且联系人姓名会重新排序。 (仅限经典 Web 应用程序。)

用户管理的电子邮件首选项

本节中列出的许多首选项的默认行为可以从 COS 或帐户首选项页面进行设置。 用户可以从经典 Web 应用程序或新式 Web 应用程序中的帐户首选项或设置修改以下邮件首选项。

  • Web 客户端检查新邮件的频率(以分钟为单位):

    检查新邮件每隔...​

  • 设置或更改电子邮件警报。 警报可以设置为播放声音、在消息到达时突出显示“邮件”选项卡以及闪烁浏览器,具体取决于他们使用的 Web 应用程序。

  • 设置经典 Web 应用程序和现代 Web 应用程序的显示语言。 如果 Zimbra Collaboration 上安装了多种语言区域设置,用户可以选择与浏览器语言设置不同的区域设置。

现代 Web 应用程序当前支持经典 Web 应用程序中可用语言的子集,如果尚不支持用户的语言区域设置,则将回退到美国英语。
  • 是否将出站邮件的副本保存到“已发送”文件夹。

  • 是否保存转发的邮件的本地副本或将其从邮箱中删除。 (当前只有经典 Web 应用程序可以管理此设置。)

  • 是否在单独的窗口中撰写消息。 (此功能仅在经典 Web 应用程序中受支持。)

  • 对于包含 HTML 的邮件,是否以 HTML 形式查看邮件,或者以纯文本形式查看邮件。 (此功能仅在经典 Web 应用程序中受支持。)

  • 是否在请求时发送已读回执。

  • 调整打印消息的默认字体大小。 默认值为 12 点。 (此功能仅在经典 Web 应用程序中受支持。)

  • 用户可以设置自己的白名单和黑名单电子邮件地址的垃圾邮件选项,用于过滤来自其首选项邮件文件夹的传入邮件。 每个列表中默认的白名单和黑名单地址最大数量均为 100 个。 可以使用 CLI 更改该值zmprov用于账户和 COS。 属性为zimbraMailWhitelistMaxNumEntrieszimbraMailBlacklistMaxNumEntries.

  • 用户可以在签名下修改以下邮件首选项:

    • 是否自动将签名附加到外发邮件。

    • 关于如何将签名应用于回复或转发的消息的首选项。

使用导入和导出来保存用户数据

从经典 Web 应用程序中的首选项导入/导出页面 或以下账户 → 主账户在现代网络应用程序中 用户可以导出所有帐户数据,包括邮件、联系人、日历和任务。 通过选择导出选项,他们可以导出帐户中的特定项目并将数据保存到计算机上。

帐户数据保存为 tar-gzipped (.tgz) 存档文件,以便可以导入该文件来恢复其帐户。 各个联系人保存为.csv文件,各个日历文件保存为.ics文件。 数据被复制,而不是从用户的帐户中删除。

导出的帐户数据文件可以使用存档程序(例如WinZip)查看。 这些文件中的任何一个都可以从同一页面导入到他们的帐户中。

您可以从COS账户特点页,一般特点部分。

设置 RSS 轮询间隔

用户可以订阅提供 RSS 和播客源的网站,并直接在其邮箱中接收更新信息。 最多可返回 50 个 Feed。 RSS 源会计入用户的帐户配额。

默认每 12 小时更新一次 RSS 数据。 用户可以右键单击 RSS 源文件夹来手动加载新源。

您可以从管理控制台、COS 或帐户更改轮询间隔高级页面,数据源 → RSS 轮询间隔部分。

联系人功能

Zimbra Contacts 允许用户创建多个联系人列表,并在接收或发送邮件时自动添加联系人姓名。 用户可以将联系人导入到他们的地址簿中。

要允许用户共享其邮件文件夹、地址簿和日历,请在一般功能容器上启用共享:

主页 → 配置 → 服务等级 →COS→ 功能 → 常规功能

表 38. 地址簿功能
功能 说明 COS/帐户选项卡

地址簿

用户可以创建个人联系人列表。 默认情况下,会创建“联系人”列表和“通过电子邮件发送的联系人”列表。

功能

地址簿大小限制

用户在所有地址簿中可以拥有的最大联系人数量。 0表示无限制。

高级

用户可以从其帐户修改以下地址簿首选项首选项地址簿页。

设置默认行为:

管理控制台:

主页 → 配置 → 服务等级 →COS→ 首选项
主页 → 管理 → 帐户 →帐户→ 首选项

  • 启用自动添加联系人功能,以便在联系人向新地址发送电子邮件时自动将联系人添加到其通过电子邮件发送的联系人列表。

  • 启用在使用联系人选取器查找姓名时使用全局访问列表的功能。

  • 启用选项以在使用自动完成功能寻址邮件时将 GAL 地址和名称包含在共享通讯簿中。

日历功能

Zimbra Calendar 允许用户安排约会和会议、建立重复活动、创建多个日历、与其他人共享日历以及委托经理访问其日历。 他们可以订阅外部日历并从 Zimbra Classic Web App 或 Modern Web App 查看日历信息。 他们还可以在日历中搜索约会。

要允许用户共享其日历、地址簿和公文包文件,请在一般特征容器。

管理控制台:

主页 → 配置 → 服务等级 →COS→ 功能 → 一般功能

表 39. 日历功能
日历功能 说明 COS/账户选项卡

日历

允许用户维护日历、安排会议、委派对其日历的访问、创建多个个人日历等等。

功能

群组日历

未选中群组日历时,用户只能创建个人约会并接受会议邀请。 不显示“查找与会者”、“安排”和“查找资源”选项卡。

现代 Web 应用程序中始终提供组日历功能。

功能

嵌套日历

日历可以嵌套在 Zimbra 文件夹中,例如“邮件”、“联系人”和“日历”文件夹。 管理员使用 CLI 创建日历的嵌套列表。 也可以通过迁移导入嵌套日历分组。 请参阅下面的示例。

仅经典 Web 应用程序支持此功能。

时区

设置用于日历安排的时区。 域管理员在“帐户”、“一般信息”页面中进行设置。

首选项

将日历邀请转发到特定地址

您可以指定电子邮件地址来转发用户的日历邀请。 用户还可以从“首选项日历”文件夹中指定转发地址。

仅经典 Web 应用程序支持此功能。

邀请转发到的帐户必须具有共享日历的管理员权限才能回复邀请。

帐户转发

创建嵌套在“日历名称”文件夹下的日历:

zmmailbox -z -m user1 cf -V appointment "/Calendar Name/Sub Calendar"

排除日历预约问题

Use the zmcalchk command to check for discrepancy between different users' calendars for the same meeting, and send an email notification regarding the discrepancies.

You can also use this command to notify the organizer and/or all attendees when an appointment is out of sync.

Changing Remote Calendar Update Interval

Remote calendars are updated every 12 hours, by default. The frequency can be modified at the Admin Console.

To modify the frequency of calendar updates in the Admin Console go to the desired COS or Account Advanced page, Data Source → Calendar polling interval field.

禁止与会者编辑约会

与会者可以在其日历中编辑约会,但他们的更改不会影响其他任何人。 如果约会组织者进行更改,这些更改将覆盖与会者的编辑。 您可以修改 COS 属性zimbraPrefCalendarApptAllowAtendeeEdit以防止与会者编辑其日历中的约会。

zmprov mc <cosname> zimbraPrefCalendarApptAllowAtendeeEdit FALSE
仅经典 Web 应用程序支持此功能。

设置其他用户日历首选项

用户可以修改日历首选项表中列出的日历首选项。 您可以在 COS 或帐户首选项页面中设置默认行为。

日历首选项 说明

时区

用户首选项中显示的时区。 看设置默认时区。 如果在 COS 中配置了时区,则忽略域中配置的时区。

约会前显示提醒的分钟数

设置会议前发送提醒通知的分钟数。

初始日历视图

设置默认视图。 选项包括“日”、“工作周”、“7 天周”、“月”、“列表”或“计划”。

一周的第一天

设置用户工作周的默认第一天。

默认约会可见性

选项为公共或私人。 设置新约会页面上的默认可见性选项。

默认为公开,其他人可以查看预约详情。

当默认设置为“私人”时,所有传入的日历邀请都会在用户的日历上标记为私人,并且在共享日历时隐藏详细信息。

将 iCal 委派模型用于 CalDAV 的共享日历

Apple iCal 可以配置为使用 CalDAV 协议访问用户的日历。 启用后,共享日历将显示在用户 iCal 帐户的“委派”选项卡中,并且他们可以委派对其日历的访问权限。

自动轮询,可以在 COS 或账户中设置轮询间隔高级页面,数据源 → CalDAV 轮询间隔字段。

启用逾期提醒

用户登录Classic Web App或Modern Web App,对于未关闭的会议提醒,会弹出最近两周的提醒通知。 禁用此功能后,Zimbra Collaboration 会默默地忽略旧的提醒。

为新日历事件启用烤面包机通知

收到新日历事件时,经典 Web 应用程序中会显示一个弹出窗口。

仅经典 Web 应用程序支持此功能。

允许向组织者发送取消电子邮件

当用户收到无法在预定时间参加的邀请时,他们可以选择单击建议新时间并选择其他时间。 会议组织者会收到一封包含建议时间的电子邮件。

仅经典 Web 应用程序支持此功能。

使用 PUBLISH 方法自动添加邀请

日历邀请电子邮件的日历对象中应包含method=REQUEST,但某些第三方电子邮件客户端错误地设置了method=PUBLISH。 默认情况下,这些电子邮件不会作为邀请处理。 您可以通过启用此选项来放宽规则。

自动将转发的邀请添加到日历

已转发给用户的邀请会自动添加到转发收件人的日历中。

约会提醒上的 Flash 浏览器标题

弹出约会提醒时,浏览器会闪烁,直到用户关闭弹出窗口。

仅经典 Web 应用程序支持此功能。

启用声音预约通知

当弹出预约提醒时,用户可以通过计算机上的蜂鸣声收到通知。 用户必须安装 QuickTime 或 Windows Media。

仅经典 Web 应用程序支持此功能。

自动拒绝来自被拒绝邀请此用户的用户的邀请

用户可以配置谁可以向他们发送日历邀请。 启用后,系统会向这些用户发送一条自动回复消息,让他们知道他们没有邀请该用户的权限。

仅经典 Web 应用程序支持此功能。

受邀请时自动添加约会

启用后,约会会自动添加到用户的主日历中。

现代 Web 应用程序中未提供此设置。

显示拒绝的会议

启用后,拒绝的约会会以褪色视图显示在经典 Web 应用程序日历上。

此设置仅影响 Zimbra Classic Web 应用程序。 在 Modern Web App、第三方日历应用程序和移动设备中查看约会的用户可能看不到拒绝的事件。

通过委派访问通知所做的更改

委派其日历的用户会收到委派访问被授权者对约会所做的更改的通知。

现代 Web 应用程序中未提供此设置。

始终显示迷你日历

迷你日历自动显示在日历视图中。

现代 Web 应用程序中未提供此设置。

创建新约会时使用“快速添加”对话框

启用后,当用户双击或拖动 Zimbra Classic Web 应用程序中的日历时,将显示“快速添加”对话框。

QuickAdd 在现代 Web 应用程序中始终可用。

在约会视图中显示时区列表

启用后,时区列表与事件时间一起显示在事件编辑器中,使他们有机会在预约时更改时区。

设置 Zimbra 任务

Zimbra 任务允许用户创建待办事项列表并管理任务直至完成。

要允许用户共享其任务列表,请在“功能”页面中启用共享。 任务列表可以与个人、团体和公众共享。
仅经典 Web 应用程序支持此功能。

要启用或禁用任务功能:

管理控制台:

主页 → 配置 → 服务等级 →COS→ 功能
主页 → 管理 → 账户 →账户→ 功能

Zimbra Classic Web App 用户界面主题

Zimbra Classic Web App 用户界面的外观可以更改。 Zimbra 中包含许多 Zimbra 主题,您还可以创建其他主题。 您可以选择一个主题作为默认主题,也可以选择用户可以选择的主题来自定义其用户体验。 要开发主题,请参阅颜色和徽标管理.

仅经典 Web 应用程序支持此功能。

以下主题使用选项可以从 COS 或个人账户进行配置。

  • 限制用户使用一个主题

    在功能页面上,删除复选标记更改 UI 主题。 经典 Web 应用程序主题是“主题”页面上的“当前 UI 主题”字段中列出的主题。

  • 让用户访问任何已安装的 Zimbra 主题

    如果更改 UI 主题选中后,用户可以访问可用 UI 主题列表中列出的任何主题。

双因素身份验证

双因素身份验证 (2FA) 功能允许您配置可能适用于环境中的任何或所有关键邮箱或用户的辅助安全要求集。 您可以为用户帐户和/或服务类别设置 2FA。

新用户帐户的 2FA

在新用户帐户的向导设置中,您将找到 2FA 的设置以及其他设置高级选项。

管理控制台:

首页 → 3 添加账户 → 1. 添加账户
 — 下一步直到高级,向下滚动到双因素身份验证

New Account Two Factor Authentication

请参阅双因素身份验证参数 用于参数说明。

现有用户帐户的 2FA

对于现有用户帐户,您可以从高级应用 2FA 设置选项。

管理控制台:

主页 → 管理 → 帐户

找到二因素身份验证帐户的可编辑配置中的容器:

  1. 选择一个帐户从帐户列表中。

  2. 选择编辑齿轮图标。

     —  的一般信息帐户现在显示。

  3. 选择先进的从左侧面板。

  4. 向下滚动到主面板中的双因素身份验证容器。

Edit Account Two Factor Authentication

请参阅二因素身份验证参数 用于参数说明。

服务类别的 2FA

可用于为服务类别设置 2FA 的参数包含在其他高级功能中。

要将 2FA 应用于服务类别,请使用双因素身份验证容器来设置参数。

管理控制台:

主页 → 配置 → 服务等级 →COS→ 高级 → 二因素身份验证

Class of Service Two Factor Authentication

请参阅二因素身份验证参数 用于参数说明。

表 40. 双重身份验证参数
参数 说明

启用双重身份验证

为所选 COS 账户启用(选中)或禁用(取消选中)此功能。

需要两步验证

为所选 COS 账户启用(勾选)或禁用(取消勾选)强制使用此功能。

生成的一次性代码的数量

用于分配帐户在尝试访问系统时可以查看/使用的最大数量的 6 位密码的值。 一旦接受初始登录凭据,密码就会呈现给帐户。

每个密码都有 15 秒的生命周期。

启用应用程序密码

用户可以为不支持双因素身份验证的旧应用程序生成异常代码。

电子邮件作为双因素身份验证中的附加因素

电子邮件作为双因素身份验证中的附加因素功能允许用户使用其恢复电子邮件作为附加身份验证因素。此功能通过添加额外的验证层来增强帐户安全性。

特点
  • 电子邮件作为 2FA 设置:用户可以将其恢复电子邮件配置为用作身份验证的附加因素。

  • 验证过程:即使已经验证,系统也会提示用户验证其恢复电子邮件。

  • 后备选项:如果用户无法访问其恢复电子邮件,则可以使用替代的 2FA 方法。

  • 偏好选择:用户可以在电子邮件和身份验证器应用程序之间选择自己喜欢的 2FA 方法。

  • 管理控制:管理员可以查看和管理用户的 2FA 首选项,并根据需要重置 2FA 设置。

将电子邮件配置为 2FA

要将电子邮件配置为 2FA 方法:

  1. 导航至安全设置:

    • 转至 Zimbra 管理控制台。

    • 访问用户或服务等级 (COS) 的安全设置。

  2. 启用电子邮件作为 2FA:

    • 确保恢复电子邮件字段已设置并经过验证。如果没有,请提示用户配置并验证其恢复电子邮件。

    • 启用电子邮件选项作为有效的 2FA 方法。

当“密码重置功能状态”(zimbraFeatureResetPasswordStatus) 未启用时,用户可以直接配置“电子邮件作为 2FA”。在设置过程中,系统会要求用户输入电子邮件地址(恢复地址)。

管理员可以通过以下位置访问此功能:账户或 COS 设置 > 功能 > 管理控制台中的“密码重置功能状态”。

验证流程

系统将验证码发送到用户的恢复电子邮件。验证后,该电子邮件将成为有效的 2FA 方法。每次配置“电子邮件作为 2FA”时,用户都需要验证恢复地址。

后备选项

如果用户无法访问其恢复电子邮件,则可以使用其他配置的 2FA 方法,例如身份验证器应用程序。

管理用户首选项
  • 查看用户 2FA 首选项:

    • 在管理控制台中,导航到用户的帐户设置。

    • 查看活动的 2FA 方法和用户的首选方法。

  • 覆盖用户 2FA 首选项:

    • 管理员可以重置或覆盖用户的 2FA 设置。这在安全漏洞或出于管理目的的情况下非常有用。

使用命令行选项
  • 为用户启用电子邮件作为 2FA:

    'zmprov ma user@example.com zimbraTwoFactorAuthEnabled TRUE zimbraTwoFactorAuthMethodAllowed email'
    'zmprov ma user@example.com zimbraTwoFactorAuthEnabled TRUE zimbraTwoFactorAuthMethodAllowed app'
    If no 2FA method is configured yet and internal secrets data for the user has not been generated, the command `zmprov ma zimbraTwoFactorAuthEnabled TRUE` does not work.
  • 相关属性:

    • zimbraFeatureTwoFactorAuthAvailable– 控制用户是否可以配置和使用 2FA。

    • zimbraTwoFactorAuthEnabled– 控制用户是否启用 2FA(应用程序和/或电子邮件方法)。

    • zimbraTwoFactorAuthMethodAllowed– 控制哪些方法可用作用户的 2FA 方法。

    • zimbraTwoFactorAuthMethodEnabled– 控制用户(应用程序和/或电子邮件)启用(配置)的方法。

强制执行特定的 2FA 方法

管理员可以使用服务等级 (COS) 设置为用户组强制执行特定的 2FA 方法:

  1. 导航到管理控制台中的 COS 设置。

  2. 更新 2FA 设置:

    • 启用特定的 2FA 方法(电子邮件或身份验证器应用程序)。

    • 保存更改。

升级时
  • 如果在升级之前使用了使用身份验证器应用程序的 2FA,则升级后zimbraTwoFactorAuthMethodAllowed必须具有“app”。空值被视为“app”。

  • 如果在升级之前使用了使用身份验证器应用程序的 2FA,并且管理员希望允许用户同时使用应用程序和电子邮件方法,则zimbraTwoFactorAuthMethodAllowed必须同时具有“应用程序”和“电子邮件”。

  • 如果在升级之前使用了使用身份验证器应用程序的 2FA,并且管理员希望允许用户仅使用电子邮件方法:

    1. 需要在所有帐户上禁用 2FA。

    2. 那么zimbraTwoFactorAuthMethodAllowed必须设置为“电子邮件”。

委派管理员的 2FA

委派管理员可以控制用户的 2FA 功能。默认情况下,该选项未启用,需要进行设置。您可以为 DA 设置查看编辑权限。

编辑权限
  1. 向 DA 提供编辑权限。作为zimbra用户,执行以下命令:

    zmprov grr global usr <da@example.com> domainAdminZimletRights
    zmprov grr domain <domain_name> usr <da@example.com> set.account.zimbraTwoFactorAuthEnabled
    zmprov grr domain <domain_name> usr <da@example.com> set.account.zimbraFeatureTwoFactorAuthRequired

    zmprov grr domain <domain_name> usr <da@example.com> set.account.zimbraFeatureTwoFactorAuthAvailable

  2. 作为 DA,登录到管理控制台。

  3. 转至管理 → 帐户 → <帐户名称> → 高级.

  4. 二因素身份验证选项应可用,并且 DA 可以编辑设置。

查看权限
  1. 提供 DA 的查看权限。作为zimbra用户,执行以下命令:

    zmprov grr global usr <da@example.com> domainAdminZimletRights
  2. 作为 DA,登录管理控制台。

  3. 转至管理 → 帐户 → <帐户名称> → 高级.

  4. 二因素身份验证选项应在查看模式下可用。

  5. DA 将无法编辑任何 2FA 设置。

帐户的其他配置设置

启用共享

启用共享功能后,用户可以共享其任何文件夹,包括邮件文件夹、日历、地址簿、任务列表和公文包文件夹。

用户指定授予受让人的访问权限类型。 他们可以与拥有完全管理员访问权限的内部用户、必须使用密码才能查看文件夹内容的外部来宾以及公共访问权限共享,以便任何拥有 URL 的人都可以查看文件夹的内容。

当内部用户共享邮件文件夹时,共享文件夹的副本将放置在“概述”窗格上的受让人的文件夹列表中。 用户可以从经典 Web 应用程序首选项共享页面管理其共享文件夹。

目前,Modern Web App 仅支持从文件夹和日历上下文菜单进行共享管理。

配置短信通知

经典 Web 应用程序首选项 → 通知页面允许用户配置电子邮件地址或短信提醒到其移动设备,以接收日历上任务或会议的提醒消息。 默认情况下禁用短信通知。

短信通知可以按域、COS 或个人帐户配置。 COS 中设置的短信通知会覆盖域中设置的短信通知。 在管理控制台中,这是在域、COS 或帐户的功能页面上设置的。

用户在设置短信提醒时选择区域和运营商。 SMS/电子邮件网关列表位于ZmSMS.properties中。 您可以自定义此列表以添加未列出的 SMS/电子邮件网关。

仅经典 Web 应用程序支持此功能。

配置附件查看

您可以通过 COS 将附件查看规则设置为全局设置或针对特定账户。 全局设置优先于 COS 和账户设置。 您可以从四个选项中进行选择。

现代 Web 应用程序始终提供高清附件预览,无需用户设置。
表 41. 附件查看功能
功能名称 说明 COS/帐户选项卡

禁用从 Web 邮件 UI 中查看附件

无法查看附件。 这也可以设置为全局设置。

高级

附件只能以 HTML 格式查看

以其他格式收到的附件在 HTML 视图中打开。

高级

附件只能以其原始格式查看

用户可能无法打开需要其计算机上不存在的特定应用程序的附件。

高级

附件可以以 HTML 及其原始格式查看

用户可以选择以原始格式或 HTML 格式打开。

高级

当用户尝试离开时显示警告

用户可以单击浏览器中的后退和前进箭头,或者关闭浏览器而不注销其帐户。

  • 如果选中此首选项,系统会要求用户确认是否要离开其帐户。

  • 如果未选中此首选项,则不会提出该问题。

现代 Web 应用程序中未提供此设置。

启用 Web 客户端的复选框

如果显示选择复选框,用于在列表视图中选择电子邮件、联系人、语音邮件项目以进行批量操作已启用,当用户在内容窗格中查看电子邮件、联系人和任务列表时,每个项目都会显示一个复选框。 用户可以选择项目,然后执行一些操作,例如标记为已读/未读、移动到特定文件夹、拖放到文件夹、删除以及为所有选定的项目添加标签。

默认情况下,Modern Web App 上启用复选框。

首选项导入/导出

从经典 Web 应用程序中的首选项导入/导出页面 或在 Modern Web App 中的帐户 → 主帐户下 用户可以导出所有帐户数据,包括邮件、联系人、日历和任务。 通过选择导出选项,他们可以导出帐户中的特定项目并将数据保存到计算机上。

帐户数据保存为 tar-gzipped (.tgz) 存档文件,以便可以导入该文件来恢复其帐户。 各个联系人保存为.csv文件,各个日历文件保存为.ics文件。 数据被复制,而不是从用户的帐户中删除。

导出的帐户数据文件可以使用存档程序(例如WinZip)查看。 这些文件中的任何一个都可以从同一页面导入到他们的帐户中。

您可以从COS 关闭导入/导出功能帐户功能页,一般特性部分。

将单词添加到拼写词典

如果 Classic Web App 用户经常使用在 Classic Web App 拼写检查期间标记为拼写错误的单词、缩写词或首字母缩略词,您可以更新 COS 或域属性zimbraPrefSpellIgnoreWord运行拼写检查时应忽略的单词。

配置要为域忽略的字:

zmprov md example.com +zimbraPrefSpellIgnoreWord <word> +zimbraPrefSpellIgnoreWord <word2>
仅经典 Web 应用程序支持此功能。

Zimbra 中的分层地址簿 (HAB)

什么是 HAB?

分层通讯簿 (HAB) 允许用户使用组织层次结构在其通讯簿中查找收件人。通常情况下,用户只能看到默认的全局地址列表 (GAL),其结构无助于了解谁向谁汇报,也无助于识别一个 John Doe。能够自定义 HAB(映射到组织的独特业务结构),为您的用户提供查找内部收件人的有效方法。

使用分层地址簿

在分层地址簿 (HAB) 中,您的根组织(例如 Zimbra)是顶层。在此顶级层下,您可以添加多个子层以创建按部门、部门或您要指定的任何其他组织级别进行分段的自定义 HAB。下图说明了具有以下结构的 Zimbra HAB:

  • 顶层代表根组织——“Zimbra”。

  • 第二级子层代表 Zimbra 内的业务部门 — 公司办公室、工程、产品支持以及销售和营销。

  • 第三级子层代表公司办公室部门内的部门 - 人力资源、会计和行政。

HABHierarchy
图 1. 层次结构示例

资历索引

资历索引提供层次结构中的附加级别。创建 HAB 时,使用此参数按组织层级内的资历对个人或组织组进行排名。此排名指定 HAB 显示收件人或组的顺序。较高的资历指数可确保用户或组显示在具有较低资历指数的另一个用户或组之上。

  • 100副总裁

  • 50行政运营经理

  • 25业务管理员

如果两个或多个用户的资历索引参数未设置或相等,则 HAB 排序顺序按字母升序列出用户和组。

配置分层地址簿

创建组织单位 (OU)

格式
zmprov createHABOrgUnit <domain name of OU> <OU Name>
示例
zmprov createHABOrgUnit example.com ZimbraOU
说明

ZimbraOU作为创建的组织单位。

在此 OU

中创建组 您必须创建一个组并为每个部门分配一个电子邮件地址。

格式
zmprov createHABGroup <name of the group> <name of OU> <group email address>
示例

在这一系列命令中,我们创建8HAB 组 — 按照示例层次结构.

zmprov createHABGroup Zimbra ZimbraOU zimbra@example.com
zmprov createHABGroup CorporateOffice ZimbraOU CorpOffice@example.com
zmprov createHABGroup Engineering ZimbraOU eng@example.com
zmprov createHABGroup ProdSupport ZimbraOU prodsupport@example.com
zmprov createHABGroup SalesAndMarketing ZimbraOU sales-mark@example.com
zmprov createHABGroup HumanResources ZimbraOU hr@example.com
zmprov createHABGroup Accounts ZimbraOU accounts@example.com
zmprov createHABGroup Administration ZimbraOU administration@example.com

创建层次结构

这些组中的每一个(Zimbra 除外)都需要分配用于创建层次结构的父组。

格式
zmprov addHABGroupMember ParentGroupEmailAddress ChildGroupEmailAddress

在这一系列命令中,我们指定7HAB groups — Zimbra 除外,因为它是根 — 按照图中的层次结构示例层次结构.

为此,我们添加人力资源, 帐户,和行政公司办公室;并将公司办公室, 工程, 产品支持销售与营销添加到Zimbra.

zmprov addHABGroupMember CorpOffice@example.com hr@example.com
zmprov addHABGroupMember CorpOffice@example.com accounts@example.com
zmprov addHABGroupMember CorpOffice@example.com administration@example.com
zmprov addHABGroupMember zimbra@example.com CorpOffice@example.com
zmprov addHABGroupMember zimbra@example.com eng@example.com
zmprov addHABGroupMember zimbra@example.com prodsupport@example.com
zmprov addHABGroupMember zimbra@example.com sales-mark@example.com

获取 Zimbra ID

zimbraId是关联的唯一标识符带有电子邮件地址。它用于将用户分配到组将组指定为 root.

对于此示例以及其他任何地方,我们都使用占位符 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) 表示zimbraId.
格式
zmprov gdl <group email address> zimbraId
示例
zmprov gdl zimbra@example.com zimbraId
示例输出
# distributionList zimbra@example.com memberCount=4
zimbraId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
说明

zimbra@example.com是要成为 root 的组的电子邮件地址。

将用户添加到组

此示例将用户Jane DoeJohn Smith添加到名为CorporateOffice的组,而不影响其他现有成员。

格式
zmprov addHABGroupMember <group email address> <user's email address>
示例
zmprov addHABGroupMember hr@example.com jane.doe@example.com
zmprov addHABGroupMember accounts@example.com john.smith@example.com

设置排序顺序

配置 HAB 中组的排序顺序。资历指数较高的组出现在资历指数较低的组之上。

格式
zmprov modifyHABGroupSeniority <zimbra ID> <seniority index>
示例

要让Engineering出现在CorporateOffice —  无论其姓名和字母顺序如何,获取Zimbra ID,决定一个数字来代替SeniorityIndexNumber,然后运行以下命令。

CorporateOffice分配资历指数 90

zmprov modifyHABGroupSeniority xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 90

工程分配资历指数 100

zmprov modifyHABGroupSeniority xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 100
用于设置组资历索引的命令还设置资历索引对于用户。

指定HAB 的根组织

需要将组指定为根,以便可以将其他组添加为子组以符合组织层次结构。运行以下命令使zimbra@example.com作为 root。

格式
zmprov md <domain name> zimbraHierarchicalAddressBookRoot <ZimbraID of the group to be made root>
示例
zmprov md 'example.com' zimbraHierarchicalAddressBookRoot xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
示例输出
# distributionList zimbra@example.com memberCount=4
zimbraId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

有效吗?

  1. 登录 Zimbra 客户端。

  2. 单击新消息.

  3. 撰写窗口中,单击字段。

  4. 选择地址窗口中,找到显示姓名来自:右上角的下拉菜单。

  5. 选择组织通讯簿.

  6. 分层格式的通讯簿出现在左窗格中。

    HABStructure zimbra
  7. 单击任意组可查看并选择该组的用户。

管理组织单位 (OU)

列出组织单位 (OU)

域中可以有多个组织单位。此命令列出指定域中的所有 OU。

格式
zmprov listHABOrgUnit <domain name of OU>
示例
zmprov listHABOrgUnit example.com ZimbraOU
说明

列出example.com中的所有 OU。

重命名组织单位 (OU)

此命令重命名域中的指定 OU。

格式
zmprov renameHABOrgUnit <domain name of OU> <OU Name> <New name for OU>
示例
zmprov renameHABOrgUnit example.com ZimbraOU ZMXOU
说明

ZimbraOU重命名为ZMXOU.

重命名组织单位 (OU)

此命令删除域中指定的 OU。

格式
zmprov renameHABOrgUnit <domain name of OU> <OU Name>
示例
zmprov renameHABOrgUnit example.com ZimbraOU
说明

ZimbraOU已删除。

配置用户帐户

配置帐户后,您将创建邮箱、分配主邮箱 帐户电子邮件地址,并分配服务类别 (COS) 以启用 Zimbra 协作应用程序和功能。

您可以一次配置一个帐户或迁移多个现有帐户 来自服务器的帐户。

创建单个用户帐户

在添加用户帐户之前,确定哪些功能和访问权限 应分配特权。 您可以指定服务等级 (COS),并在创建帐户时启用功能,或者您可以 配置个人帐户的功能。 对于描述 功能,请参见 服务类别和帐户.

如果您分配的 COS 具有适合该帐户的正确功能,则您可以 不需要执行任何额外的配置。

创建帐户会在 Zimbra LDAP 上设置适当的条目 目录服务器。 当用户第一次登录或者当 电子邮件被发送到用户的帐户,邮箱在 邮箱服务器。

基本用户帐户设置:

管理控制台:

首页 → 3 添加账户 → 1. 添加账户

  1. 账户名称部分,输入账户名称和最后一个 配置帐户的最小名称。

    默认 COS 分配给该账户。

  2. 单击完成创建帐户。

您可以继续配置特性和功能 个人账户。 您对帐户所做的更改会覆盖 COS 分配给该帐户。

迁移账户并导入账户电子邮件

不再支持 Zimbra 管理 UI 内的 Zimbra 协作帐户迁移, 技术指南将于 2019 年 12 月 17 日结束。 我们推荐Audriga 的自助迁移解决方案 作为所有帐户迁移的首选替代方案。

您可以使用帐户迁移一次配置多个帐户 来自管理控制台的向导。 您可以从以下位置导入帐户 通用 IMAP 服务器或来自另一个 Zimbra 服务器。

仅 Zimbra Collaboration 7.2 或更高版本上的帐户可以迁移到 Zimbra Collaboration 8。

您还可以从您创建的 XML 文件导入要配置的帐户名称。 创建。

您可以运行一次迁移向导来配置帐户并导入 数据,或者您可以第一次运行迁移向导来配置 帐户,然后再次运行向导以导入配置的帐户 数据。

是否从 LDAP 目录获取帐户记录或使用 XML 文件中,您需要为新配置的密码设置要求 账户。 选项是让 Zimbra 为每个随机创建密码 帐户或为每个帐户设置相同的密码。 你可以选择 强制用户在第一次登录时更改密码。

配置完成后,向导会生成一个.csv文件,其名称为 新帐户列表。 这包括生成的密码。 你 应下载此文件以供将来参考。 选择一个安全的位置 存储文件,因为它可以包含用户的密码信息 您配置的帐户。

如果您正在运行分割域配置,则可以设置 SMTP 主机和 向导中的端口。 有关分割域的更多信息,请参阅 wiki 有关拆分域的文章,请访问https://www.zimbra.com.cn/wiki/Split_Domain.

从 Zimbra 服务器迁移帐户

要将帐户从运行 Zimbra Collaboration 7.2 或更高版本的服务器迁移到 Zimbra Collaboration 8。

管理控制台:

主页 → 3 添加帐户 → 3. 迁移和共存

  1. 邮件服务器类型字段中,选择Zimbra 协作。

  2. 如果您要配置帐户,请选择以导入帐户的 记录。 如果您此时不打算导入数据,请在 您要导入邮件吗,选择.

  3. 单击下一步.

  4. 概述上对话框中,从另一个 Zimbra LDAP 目录导入是 已选择。 单击下一步.

  5. 批量配置选项页面上,选择是否生成 随机密码或为每个帐户分配相同的密码。

    表 42. 批量配置功能
    批量配置功能 说明

    生成随机密码

    如果选择为每个帐户生成随机密码,请设置长度 密码。 密码可以是 6 到 64 个字符。

    默认 = 8 个字符

    如果您选择生成随机密码,则必须下载.csv 创建的文件,以便您可以为每个人提供密码信息 用户。

    使用相同的密码

    如果您选择对所有新帐户使用相同的密码,请输入密码 使用。

    要求用户在首次登录后更改密码

    建议选中此项以强制用户更改密码 第一次登录时的密码。

    SMTP 主机/SMTP 端口

    对于分割域配置,请设置 SMTP 主机名和端口。

  6. 点击下一步.

  7. 目录连接对话框中输入要连接的信息 服务器。

    表 43. 目录连接选项
    目录连接选项 说明

    自动创建缺失的域

    启用此选项可在导入帐户且 他们所在的域未创建。

    如果您不启用此功能,则来自不存在于网络上的域的帐户 服务器未创建。 禁用此选项可以轻松导入 来自预先创建的特定域的帐户。

    要获取的最大记录

    输入一次要导入的最大帐户数。 默认为 0,表示没有设置限制。

    服务器名称、LDAP URL、端口和 SSL 的使用

    • LDAP URL 输入为:ldap://<ldapdirectory.example.com>

    • 默认端口为 389,但您可以更改此值。

    • 检查 SSL(如果使用)。

    绑定 DN

    Zimbra 设置默认为 uid=zimbra,cn=admins,cn=zimbra

    绑定密码

    输入服务器的密码。

    LDAP 过滤器

    在此字段中输入要运行的 LDAP 搜索过滤器。 在这里你可以定义 搜索条件以收集您想要的帐户信息类型 进口。 该字段中的默认过滤器是 (objectclass=zimbraAccount)。 此过滤器包括电子邮件地址、帐户 ID 和属性 帐户。

    LDAP 搜索库

    配置要搜索的 LDAP 林的子部分。

  8. 点击下一个.

    帐户迁移向导连接到目录服务器并 生成一份报告,显示找到的域数量;账户数量 在服务器上找到的帐户以及其中已经创建了多少个帐户 津布拉。 此对话框还显示您配置的密码选项。

  9. 查看生成的报告,然后单击下一步。 账户是 在 Zimbra 协作服务器上配置。

  10. 下载.csv文件列出了配置的帐户及其 密码。 这.csv关闭向导时文件将被删除。 如果你这样做 如果不下载该文件,您以后将无法访问该报告。

从通用 IMAP 服务器迁移帐户

使用本节中的步骤在 Zimbra 服务器上配置帐户。

管理控制台:

主页 → 3 添加帐户 → 3. 迁移和共存

  1. 邮件服务器类型字段中,选择通用 IMAP 服务器.

  2. 如果您要配置帐户,请选择以导入帐户的 记录。 如果您此时不打算导入数据,请在 您要导入邮件吗,请选择.

  3. 单击下一步.

  4. 概述对话框中,从另一个 LDAP 目录导入为 已选择。 单击下一步.

  5. 批量配置选项页面上,选择是否生成 随机密码或为每个帐户分配相同的密码。

    表 44. 批量配置功能
    批量配置功能 说明

    生成随机密码

    如果选择为每个帐户生成随机密码,请设置长度 密码。 密码可以是 6 到 64 个字符。

    默认 = 8 个字符

    如果您选择生成随机密码,则必须下载.csv 创建的文件,以便您可以为每个人提供密码信息 用户。

    使用相同的密码

    如果您选择对所有新帐户使用相同的密码,请输入密码 使用。

    要求用户在首次登录后更改密码

    建议选中此项以强制用户更改密码 第一次登录时的密码。

    SMTP 主机/SMTP 端口

    对于分割域配置,请设置 SMTP 主机名称和端口。

  6. 单击下一步.

  7. 目录连接对话框中输入要连接到的信息 服务器。

    表 45. 目录连接选项
    目录连接选项 说明

    自动创建缺失的域

    启用此选项可在导入帐户且 他们所在的域未创建。

    如果您不启用此功能,则来自不存在于网络上的域的帐户 服务器未创建。 禁用此选项可以轻松导入 来自预先创建的特定域的帐户。

    要获取的最大记录数

    输入一次要导入的最大帐户数。 默认为 0,表示没有设置限制。

    服务器名称、LDAP URL、端口和 SSL 的使用

    • LDAP URL 输入为:ldap://<ldapdirectory.example.com>

    • 默认端口为 389,但您可以更改此值。

    • 检查 SSL(如果使用)。

    绑定 DN

    默认情况下,Zimbra 设置在该字段中为 uid=zimbra,cn=admins,cn=zimbra

    绑定密码

    输入服务器的密码。

    LDAP 过滤器

    在此字段中输入要运行的 LDAP 搜索过滤器。 在这里你可以定义 搜索条件以收集您想要的帐户信息类型 进口。 该字段中的默认过滤器是 (objectclass=zimbraAccount)。 此过滤器包括电子邮件地址、帐户 ID 和属性 帐户。

    LDAP 搜索库

    配置要搜索的 LDAP 林的子部分。

  8. 点击接下来.

    迁移向导连接到目录服务器并生成 显示找到的域数量的报告;上找到的帐户数量 服务器以及 Zimbra 上已创建了多少个帐户。 这个 对话框还显示您配置的密码选项。

  9. 查看生成的报告,然后单击下一步。 账户是 在 Zimbra 协作服务器上配置。

  10. 下载.csv文件,其中列出了配置的帐户及其 密码。 这.csv关闭向导时文件将被删除。 如果你这样做 如果不下载该文件,您以后将无法访问该报告。

使用 XML 文件迁移帐户

使用本节中的步骤创建包含帐户的 XML 文件 信息并将其保存到您可以访问的计算机上。

管理控制台:

首页 → 3 添加账户 → 3. 迁移与共存

  1. 邮件服务器类型字段中,选择您的服务器类型 迁移自.

  2. 如果您要配置帐户,请选择以导入帐户的 记录。 如果您此时不打算导入数据,请在 您要导入邮件吗,请选择.

  3. 单击下一步.

  4. 概述对话框中,选择从 XML 导入文件。

  5. 点击下一个.

  6. 审查选项对话框显示域的数量;数量 XML 文件中配置的帐户和密码选项。

  7. 如果此信息正确,请单击下一步。 如果此信息不是 正确,请先修复您的 XML 文件,然后再继续。

    如果您单击接下来,在 Zimbra Collaboration 上配置帐户 服务器。

  8. 下载.csv文件列出了配置的帐户及其 密码。 这.csv关闭向导时文件将被删除。 如果你这样做 如果不下载该文件,您以后将无法访问该报告。

导入所选帐户的电子邮件

使用本节中的步骤指定您向其发送邮件的帐户列表 想要通过选择要导入数据的帐户或使用 用于选择帐户的 XML 文件。

在尝试之前,请确保在 Zimbra 服务器上配置了帐户 这个程序。
管理控制台:

首页 → 3 添加账户 → 3. 迁移与共存

  1. 邮件服务器类型字段中,选择您的服务器类型 从导入数据。

  2. 中 您要导入账户记录吗菜单中,选择.

  3. 是否要导入邮件菜单中,选择.

  4. 单击下一步.

  5. 导入选项上对话框中,选择您要采取的方式 指定正在导入其邮件的帐户。

  6. 单击下一步.

    如果您要选择帐户,请转至步骤 7。如果您使用的是 XML 文件转至步骤 9。

  7. 如果您选择要导入的帐户,请在选定帐户上 对话框中,搜索要添加的帐户。 您可以按域名或 用户名。 如果您单击“搜索”而不输入文本,则所有帐户都会被搜索到。 回来了。

    将帐户添加到用于数据导入的帐户列。

  8. 单击下一步.

  9. 如果您使用的是列出帐户的 XML 文件,请浏览到 要使用的 XML 文件。

  10. 单击下一步.

  11. 在 IMAP 连接详细信息对话框中,输入信息 连接到导出服务器的 IMAP 所必需的,这包括 IMAP 主机名、端口和管理员登录信息。

  12. 单击下一步.

  13. 查看数据导入选项。 如果信息正确,请点击 下一页.

XML 文件示例

本节包含 XML 文件结构的三个示例 配置帐户并导入数据。

示例 7. 使用 XML 文件配置帐户

以下示例显示用于配置多个帐户的 XML 文件 不导入邮件的电子邮件帐户:

<?xml version="1.0" encoding="UTF-8"?>
<ZCSImport>
<ImportUsers>
<User>
<sn>Sample</sn>
<givenName>Sam</givenName>
<displayName>Sam Sample</displayName>
<RemoteEmailAddress>ssample@example.com</RemoteEmailAddress>
<password>test123</password>
<zimbraPasswordMustChange>TRUE</zimbraPasswordMustChange>
</User>
<User>
<sn>Zackry</sn>
<givenName>Zak</givenName>
<displayName>Zak Zackry</displayName>
<RemoteEmailAddress>zzackry@example.com</RemoteEmailAddress>
<password>test123</password>
<zimbraPasswordMustChange>TRUE</zimbraPasswordMustChange>
</User>
</ImportUsers>
</ZCSImport>
示例 8. 使用 XML 文件从外部托管域

配置帐户 以下示例显示用于配置多个帐户的 XML 文件 外部托管域的电子邮件帐户,无需导入邮件。

在此示例中,zimbraMailTransport新配置的属性 帐户将设置为指向外部 SMTP 服务器而不是 Zimbra 服务器。

<?xml version="1.0" encoding="UTF-8"?>
<ZCSImport>
<SMTPHost>smtp.example.com</SMTPHost>
<SMTPPort>25</SMTPPort>
<ImportUsers>
<User>
<sn>Sample</sn>
<givenName>Sam</givenName>
<displayName>Sam Sample</displayName>
<RemoteEmailAddress>sam@example.com</RemoteEmailAddress>
</User>
<User>
<sn>Zackry</sn>
<givenName>Zak</givenName>
<displayName>Zak Zackry</displayName>
<RemoteEmailAddress>zzackry@example.com</RemoteEmailAddress>
</User>
</ImportUsers>
</ZCSImport>
示例 9. 使用 XML 文件导入电子邮件

以下示例显示用于导入电子邮件的 XML 文件 通过 Gmail 帐户通过 IMAP 建立一个帐户,无需配置电子邮件 Zimbra 帐户。 运行此命令之前,必须在 Zimbra 上配置该帐户 XML 文件的类型。

<?xml version="1.0" encoding="UTF-8"?>
<ZCSImport>
<IMAPHost>imap.gmail.com</IMAPHost>
<IMAPPort>993</IMAPPort>
<ConnectionType>ssl</ConnectionType>
<UseAdminLogin>0</UseAdminLogin>
<ImportUsers>
<User>
<sn>Sample</sn>
<givenName>Sam</givenName>
<displayName>Sam Sample</displayName>
<RemoteEmailAddress>sam@example.com</RemoteEmailAddress>
<RemoteIMAPLogin>sam@example.com</RemoteIMAPLogin>
<remoteIMAPPassword>test123</remoteIMAPPassword>
</User>
</ImportUsers>
</ZCSImport>

从外部 LDAP 自动配置新帐户

通过以下方式支持从外部 LDAP 自动配置新帐户 命令行界面。 本节介绍支持的 CLI 属性和自动 配置方法。

概述

当外部 LDAP 身份验证机制 - 例如外部 LDAP 身份验证、预身份验证或 SPNEGO - 为 Zimbra 域配置,您 可以设置 Zimbra 自动在 Zimbra 上创建用户帐户。 主要电子邮件地址 地址和帐户属性是从外部目录映射的。你 可以配置如何以及何时从外部创建新帐户 目录数据。

自动供应配置支持三种模式。

模式 描述

Eager

Zimbra 轮询外部目录以查找要自动配置的帐户。 为此 模式,您可以配置轮询外部目录以查找新目录的频率 users,每个时间间隔要处理的最大用户数,以及 域计划在指定服务器上自动配置帐户。

中提供了指南 Eager 模式配置.

Lazy

如果用户第一次通过其中一种身份验证登录经典 Web 应用程序 支持自动配置的机制,并且如果用户不存在 在 Zimbra 目录中,Zimbra 中会自动创建一个新帐户 这个用户。

中提供了指南 惰性模式配置.

手动

不会发生自动配置:而是由管理员手动配置 从配置的外部自动配置 LDAP 源搜索并 从搜索结果中选择一个条目来创建相应的 Zimbra 外部条目的帐户。

中提供了指南 手动模式配置.

创建账户时,账户名称(由字符组成) 旁边的@符号)是从外部的用户属性映射的 您在zimbraAutoProvAccountNameMap中定义的目录。 其他账户 信息,例如姓名、电话号码和地址 根据从外部目录映射的属性填充 zimbraAutoProvAttrMap。 您可以查看外部目录的 属性来确定应映射到 Zimbra 属性的属性。

自动配置帐户的 COS 分配与以下方式相同 COS 是针对手动配置的账户确定的:

  • 如果为域定义了 COS,则该 COS 会分配给账户 被创建的。

  • 如果未定义域 COS,则分配 Zimbra 默认 COS。

您可以配置欢迎要发送到新创建的电子邮件 账户。 此电子邮件的主题和正文可以配置为 域上的AutoProvNotification属性。

自动配置属性

本节中列出的属性可与zmprov命令一起使用 使用外部 LDAP 配置新帐户的自动配置 目录。

zimbraAutoProvMode

将自动配置模式设置为 EAGER、LAZY 和/或 MANUAL。 一个域上可以启用多种自动配置模式。

zimbraAutoProvAuthMech

设置身份验证机制的类型 - LDAP、PREAUTH、KRB5、 或 SPNEGO - 启用 LAZY 模式。 一旦用户通过身份验证 指定的身份验证机制,并且如果用户帐户这样做 Zimbra 目录中尚不存在,则将创建一个帐户 自动在 Zimbra 目录中创建。

zimbraAutoProvLdapURL

设置外部 LDAP 源的 LDAP URL 以进行自动配置

zimbraAutoProvLdapStartTlsEnabled

访问时启用 (TRUE) 或禁用 (FALSE) StartTLS 协议 用于自动配置的外部 LDAP 服务器。
默认值 = 假。

zimbraAutoProvLdapAdminBindDn

定义用于自动配置的 LDAP 搜索绑定 DN。

zimbraAutoProvLdapAdminBindPassword

设置自动配置的 LDAP 搜索管理员绑定密码。

zimbraAutoProvLdapSearchBase

设置自动配置的LDAP搜索库,配合使用 与 zimbrazimbraAutoProvLdapSearchFilter.
如果未设置,将使用 LDAP 根 DSE。

zimbraAutoProvLdapSearchFilter

定义帐户自动配置的 LDAP 搜索过滤器模板。 对于 LAZY 模式,zimbraAutoProvLdapSearchFilter或者zimbraAutoProvLdapBindDn必须设置。

如果两者都设置,则zimbraAutoProvLdapSearchFilter将优先。 请参阅占位符对于支持的 占位符。

zimbraAutoProvLdapBindDn

定义用于帐户自动配置的 LDAP 外部 DN 模板。 对于 LAZY 模式,zimbraAutoProvLdapSearchFilter或者zimbraAutoProvLdapBindDn必须设置。

如果两者都设置了,zimbraAutoProvLdapSearchFilter将采取 优先。 请参阅占位符为了 支持的占位符。

zimbraAutoProvAccountNameMap

定义包含以下内容的外部目录中的属性名称 帐户名称的本地部分。 这是用于创建的名称 Zimbra 帐户。 如果未指定,则本地部分 帐户名是用于向 Zimbra 进行身份验证的主要用户。

zimbraAutoProvAttrMap

定义用于映射属性值的属性映射 Zimbra 帐户属性的外部条目。 值的格式为 的{external attribute}={zimbra attribute}。 如果没有设置,则不会 外部目录中的属性填充在 Zimbra 中 帐户。

无效的映射配置将导致帐户创建失败。 错误的映射可能是由于以下情况造成的:

  • 外部属性名称无效。

  • Zimbra 属性名称无效。

  • 外部属性包含多个值; Zimbra 属性 仅包含单个值。

  • 语法违规(例如 external attribute=string,但 Zimbra 属性=整数)。

zimbraAutoProvNotificationFromAddress

定义要放入From标题中的欢迎邮件地址 电子邮件发送到新创建的帐户。 如果没有设置,则不通知 电子邮件将发送到新创建的帐户。

zimbraAutoProvNotificationSubject

用于构造通知消息主题的模板 当用户的帐户自动配置时发送给用户。

支持的变量:${ACCOUNT_ADDRESS}, ${ACCOUNT_DISPLAY_NAME}

zimbraAutoProvNotificationBody

用于构造通知消息正文的模板 当用户的帐户自动配置时发送给用户。

支持的变量:${ACCOUNT_ADDRESS}, ${ACCOUNT_DISPLAY_NAME}

zimbraAutoProvListenerClass

域设置,用于定义自动配置侦听器的类名。 该类必须实现 com.zimbra.cs.account.Account.AutoProvisionListener接口。 的 每个帐户自动后调用单例侦听器实例 在 Zimbra 中创建。 监听器可以作为服务器插入 用于处理更新帐户自动配置等任务的扩展 外部 LDAP 目录中的状态。

在每个急切配置间隔,Zimbra 都会进行 LDAP 搜索 基于zimbraAutoProvLdapSearchFilter中配置的值。 此搜索返回的条目是自动的候选条目 本批次提供。 zimbraAutoProvLdapSearchFilter 应包含一个仅命中外部条目的断言 尚未在 Zimbra 中配置的目录, 否则,相同的条目可能会被重复拉入 津布拉。 自动配置帐户后 津布拉, com.zimbra.cs.account.Account.AutoProvisionListener.postCreate (Domain domain, Account acct, String external DN)将被调用 自动配置框架。 客户可以实施 Zimbra 服务器扩展中的 AutoProvisionListener 接口 并让他们的AutoProvisionListener.postCreate()接到电话。 的 客户的帖子创建方法的实现可以是,例如, 只需在帐户的外部目录中设置属性 在 Zimbra 中配置。 该属性可以作为 条件在zimbraAutoProvLdapSearchFilter,所以该条目不会 在下一个时间间隔中由 LDAP 搜索再次返回。

zimbraAutoProvBatchSize

域名 |用于定义最大帐户数的全局设置 在每个间隔进行 EAGER 自动配置。

zimbraAutoProvScheduledDomains

列出为 EAGER auto 计划的域的服务器属性 在此服务器上提供。 计划域必须具有 EAGER 模式 在zimbraAutoProvMode中启用。 可以安排多个域 用于 EAGER 自动配置的服务器。 此外,还可以将域安排在 用于 EAGER 自动配置的多个服务器。

zimbraAutoProvPollingInterval

域名 |全局设置来定义连续之间的间隔 在 EAGER 模式下轮询和配置帐户。 实际间隔 可能需要更长的时间,因为它可能受到其他两个因素的影响:zimbraAutoProvBatchSize以及配置的域数量 zimbraAutoProvScheduledDomains.

在每个时间间隔,自动配置线程都会迭代所有 域在zimbraAutoProvScheduledDomains并自动创建帐户 最多domain.zimbraAutoProvBatchSize。 如果这个过程需要更长的时间 比zimbraAutoProvPollingInterval比下一次迭代开始 立即而不是等待zimbraAutoProvPollingInterval时间量。

  • 如果服务器启动时设置为 0,则自动配置线程将不会 开始。

  • 如果在服务器运行时从非 0 值更改为 0,则自动 提供线程将被关闭。

  • 如果在服务器运行时从 0 更改为非 0 值,则自动 供应线程将启动。

占位符

表 46. 用于自动配置属性的占位符
标记 描述 结果

%/n

用户名和 @ 符号

这将返回user1@example.com

%u

不带 @ 符号的用户名

这将返回user1.

%d

Domain

这将返回example.com

%D

Domain as dc

这将返回example,dc=com

Eager 模式配置

使用 Eager 模式,Zimbra 会轮询外部目录以自动查找帐户 规定。 您可以配置轮询外部目录的频率 新用户、每个时间间隔要处理的最大用户数以及 要计划在指定服务器上自动配置帐户的域。

  1. 以 zimbra 身份登录到 Zimbra 服务器并输入zmprov在命令下 提示。

    zmprov
  2. 在域上启用 EAGER 模式。

    md <example.com> zimbraAutoProvMode EAGER
  3. 设置每个时间间隔内要处理的最大帐户数

    md <example.com> zimbraAutoProvBatchSize <#>
  4. 配置轮询和配置之间的时间间隔(以分钟为单位) 账户。 对于自动配置,必须将其设置为非 0 值 线程启动。默认 = 15 分钟。

    ms <server.com> zimbraAutoProvPollingInterval <x minutes>
  5. 选择要计划自动配置的域。 多个 可以在服务器上安排域。

    一个域可以调度到多个服务器上。

    ms <server.com> +zimbraAutoProvScheduledDomains <domain1.com> \
      +zimbraAutoProvScheduledDomains <domain2.com>
  6. 配置外部 LDAP 设置:

    1. LDAP URL

      md <example.com> zimbraAutoProvLdapURL "ldap://xxx.xxx.xxx.xxx:<port>"

      LDAP 端口通常为 389。

    2. (可选)启用 StartTls。

      md <example.com> zimbraAutoProvLdapStartTlsEnabled TRUE
    3. 用于自动配置的 LDAP 管理员绑定 DN:

      md <example.com> zimbraAutoProvLdapAdminBindDn "cn=admin, dc=autoprov, dc=company, dc=com"
    4. 用于自动配置的管理员 LDAP 搜索绑定密码。

      md <example.com> zimbraAutoProvLdapAdminBindPassword <password>
    5. 搜索要自动配置的用户时使用的搜索模板。

      使用 LDAP 搜索过滤器的示例:

      md <example.com> zimbraAutoProvLdapSearchFilter "(uid=<%placeholder>)"

      请参阅占位符了解支持的信息 占位符。

    6. 用于自动配置的 LDAP 搜索库

      这是 LDAP 搜索开始的目录位置。 这与zimbraAutoProvLdapSearchFilter一起使用。 如果未设置此项,则 LDAP 目录根rootDSE是起点。

      md <example.com> zimbraAutoProvLdapSearchBase "dc=autoprov,dc=company,dc=com"
      md <example.com> zimbraAutoProvLdapBindDn <"placeholder1">

      参考占位符对于支持的 占位符。

  7. (可选)定义映射到本地部分的属性名称 外部目录上的帐户名。 这用于定义 Zimbra 上的帐户名。 如果未指定,则本地部分 帐户名是用于向 Zimbra 进行身份验证的主要用户名。

    md <example.com> zimbraAutoProvAccountNameMap <value>
  8. (可选)将属性值从外部条目映射到 Zimbra 帐户属性。 如果未设置,则没有来自外部的属性 目录填充在 Zimbra 目录中。 该值映射在 的形式{external attribute}={zimbra attribute}.

    无效的映射配置会导致账户创建失败。

    将外部条目上的“sn”值映射到外部条目上的“displayName” Zimbra 帐户和外部条目上的地图描述值 关于 Zimbra 帐户的说明,请输入

    md <example.com> +zimbraAutoProvAttrMap sn=displayName +zimbraAutoProvAttrMap description=description
  9. (可选)如果您想向新帐户发送欢迎电子邮件,请输入 来自发起者的地址。

    md <example.com> zimbraAutoProvNotificationFromAddress <name@example.com>
  10. 要退出 zmprov,请键入

    exit

惰性模式配置

惰性模式自动配置会在执行后自动创建一个新帐户 用户通过外部身份验证机制(LDAP、 preauth、Kerberos 5 和/或 SPNEGO)。

  1. 以 zimbra 身份登录到 Zimbra 服务器并输入zmprov在命令下 提示。

  2. 启用 LAZY 模式,

    md <example.com> zimbraAutoProvMode LAZY
  3. 选择LAZY模式的外部认证机制:LDAP、 PREAUTH、KRB5、SPNEGO。 您可以指定多种身份验证机制。

    md <example.com> zimbraAutoProvAuthMech <type> +zimbraAutoProvAuthMech <type2>
  4. 配置外部 LDAP 设置

    1. LDAP 网址:

      md <example.com> zimbraAutoProvLdapURL "ldap://xxx.xxx.xxx.xxx:<port>"

      LDAP 端口通常为 389。

    2. (可选)启用 StartTls

      md <example.com> zimbraAutoProvLdapStartTlsEnabled TRUE
    3. LDAP 管理员绑定 DN 以采用以下格式自动配置 cn=<LDAPadmin_name>, dc=autoprov, dc=<company_name>, dc=<com>

      md <example.com> zimbraAutoProvLdapAdminBindDn <"bindDN">

      例如,"cn=admin, dc=autoprov, dc=company, dc=com"

    4. 用于自动配置的管理员 LDAP 搜索绑定密码。

      md <example.com> zimbraAutoProvLdapAdminBindPassword <password>
    5. (可选)搜索要自动运行的用户时使用的搜索模板 规定。

      示例:使用 LDAP 搜索过滤器:

      md <example.com> zimbraAutoProvLdapSearchFilter <"placeholder">

      请参阅占位符了解支持的信息 占位符。

      zimbraAutoProvLdapSearchFilter 或 zimbraAutoProvLdapBindDn 必须是 配置为 LAZY 模式。
    6. 用于自动配置的 LDAP 搜索库。 这是 LDAP 搜索开始的目录位置。 这与使用zimbraAutoProvLdapSearchFilter。 如果没有设置, LDAP 目录根rootDSE是起点。

      md <example.com> zimbraAutoProvLdapSearchBase <"location">

      例如,"dc=autoprov,dc=company,dc-com"

    7. (可选)定义帐户的 LDAP 外部 DN 模板 供应。

      md <example.com> zimbraAutoProvLdapBindDn "uid=%<placeholder1>, %<placeholder2>"

      参考占位符对于支持的 占位符。

  5. (可选)标识外部条目上的属性名称 包含要在 Zimbra 中配置的帐户名的本地部分。 如果 未指定,帐户名的本地部分是主体 用户用于向 Zimbra 进行身份验证。

    md <example.com> zimbraAutoProvAccountNameMap <value>
  6. (可选)将属性值从外部条目映射到 Zimbra 帐户属性。 如果未设置,则没有来自外部的属性 目录填充在 Zimbra 目录中。 值的形式为 {external attribute}={zimbra attribute}.

    映射sn外部条目上的值显示名称在津布拉 帐户并将外部条目上的描述值映射到描述 Zimbra 帐户,输入

    md <example.com> +zimbraAutoProvAttrMap sn=displayName +zimbraAutoProvAttrMap description=description
  7. (可选)如果您想发送欢迎发送电子邮件至新帐户,请输入 的来自发起者的地址。

    md <example.com> zimbraAutoProvNotificationFromAddress <name@example.com>
  8. 退出 zmprov,输入exit.

手动模式配置

使用手动模式设置禁用外部自动配置 LDAP 服务器。

  1. 以 zimbra 身份登录到 Zimbra 服务器并输入zmprov在 命令提示符。

  2. 启用手动模式:

    md <example.com> zimbraAutoProvMode MANUAL

管理资源

资源是可以安排会议的位置或设备。 每个会议室位置和其他非位置特定资源(例如 AV 设备)都设置为资源帐户。 管理控制台中的管理 → 资源部分显示为 Zimbra Collaboration 配置的所有资源。

具有日历功能的用户帐户可以选择这些资源 他们的会议。 资源帐户自动接受或拒绝 邀请函视供应情况而定。

管理员不需要定期监控这些邮箱。 根据邮件清除资源邮箱的内容 清除政策。

资源向导将指导您完成资源配置。 你可以 使用有关资源的以下详细信息配置帐户:

  • 资源类型,位置或设备

  • 调度策略

  • 用于接收邀请副本的转发地址

  • 资源描述

  • 联系信息,可以是出现问题时的联系人

  • 位置信息,包括房间名称、具体建筑位置 包括建筑物和地址以及房间容量

  • 自定义在回复中使用的自动回复消息和签名 电子邮件

创建资源帐户时,会在 LDAP 服务器。

为了调度资源,用户邀请设备资源和/或位置 去开会。 当他们选择资源时,他们可以查看描述 资源的联系信息和忙/闲状态, 如果这些都设置了。

发送会议邀请后,系统会向资源帐户发送一封电子邮件, 并且,根据调度策略,如果资源空闲,则会议 自动输入资源的日历并显示资源 为忙。

设置计划策略

计划策略确定资源日历的运行方式 维持。 可以设置以下资源调度值:

  • 自动拒绝所有定期约会 — 该值在以下情况下启用 该资源一次只能安排用于一次会议。 无重复发生 可以为此资源安排预约。

  • 如果可用则自动接受,冲突则自动拒绝 — 当此选项时 选择后,资源帐户将自动接受预约,除非 该资源已被安排。 可以查看空闲/忙碌时间。 你 可以修改自动拒绝规则以接受一些冲突的会议。

  • 手动接受,冲突时自动拒绝 — 选择此选项时, 资源帐户自动拒绝所有冲突的约会。 不冲突的预约请求在 资源日历,必须手动接受。 如果你这样设置, 配置转发地址,以便将邀请的副本发送到 可以手动接受邀请的帐户。 您可以修改 自动拒绝规则以接受一些冲突的会议。

  • 始终自动接受 — 资源帐户自动接受 所有已安排的约会。 在这种情况下,忙/闲信息是 未维护,因此多个会议可以将资源安排在 同时。 由于资源始终接受邀请,因此 建议将此策略用于经常使用的位置 您希望将位置地址包含在邀请中的前提 参加者。

  • 不自动接受或拒绝 — 资源帐户是手动管理的。 委派用户必须登录资源帐户并接受或拒绝 所有请求。

冲突规则 — 对于包含冲突自动拒绝的帐户 值,您可以设置一个阈值,可以是冲突的数量,也可以是 所有定期约会中部分接受定期约会的百分比 约会。

允许的最大冲突数和/或允许的最大百分比 冲突配置为允许安排重复资源 即使它不适用于所有请求的定期预约 日期。

即使存在冲突,资源也会接受预约,直到 冲突数量达到允许的最大数量或最大数量 允许的冲突百分比。 为了部分接受 要使系列工作,两个字段都必须设置为非零值。

管理资源帐户

您可以登录资源帐户并设置首选项 资源。 这资源帐户首选项 → 日历可以配置 让用户管理资源的日历。 您可以配置 以下选项来管理资源。

  • 转发邀请的地址。 如果转发地址设置时 帐户已配置,您可以更改地址

  • 谁可以使用此资源。 在“权限”部分的“邀请”中,选择 仅允许以下内部用户邀请我参加会议并添加 将适当用户的电子邮件地址添加到列表中。

您可以与用户共享资源日历并给用户管理员 权利。 被委派为经理的用户拥有完整的管理权限 那个日历。 他们可以查看、编辑、添加、删除、接受或拒绝 邀请。

管理用户帐户

用户帐户状态

管理控制台:

主页 → 管理 → 帐户

帐户的状态决定用户是否可以登录和接收邮件。 账户状态显示在管理控制台的帐户窗格。

表 47. 状态 - 用户帐户
状态 说明

活动

邮箱帐户的正常状态。 邮件已送达,用户可以登录客户端界面。

维护

日志记录已禁用,发送到此帐户的任何邮件都会在 MTA 中排队。

请注意,在备份期间或导入/导出/恢复帐户时会自动为帐户设置此状态。

帐户已创建但尚未准备好激活时,待处理

分配。 待处理期间,登录将被禁用并且消息将被退回。

已锁定

用户无法登录,但邮件会继续发送到该帐户。 如果您怀疑邮件帐户已被盗用(以未经授权的方式使用),则可以设置锁定状态。

已关闭

登录已禁用且消息被退回。 此状态用于在从服务器删除帐户之前软删除该帐户。 关闭帐户不会更改帐户许可证。

锁定

用户尝试使用不正确的密码登录时出现的自动状态。 无法通过管理方式分配锁定,但会在用户尝试次数超过配置的允许尝试次数后发生。 锁定的持续时间也是可配置的。

管理员可以随时解除锁定状态。

删除帐户

管理控制台:

主页 → 管理 → 账户

您可以从管理控制台删除帐户。 这将从服务器中删除该帐户,删除消息存储中的消息,并更改针对您的许可证使用的帐户数量。

在删除帐户之前,请运行该帐户的完整备份以保存帐户信息。 另请参见备份和恢复.

查看帐户邮箱

您可以从管理控制台查看选定帐户的邮箱内容,包括所有文件夹、日历条目和标签。

管理控制台:

主页 → 管理 → 账户 →账户

选择帐户,从齿轮图标中选择查看邮件。 用户的 Zimbra 帐户将在新的浏览器窗口中打开。

此功能可用于帮助遇到邮件帐户问题的用户,因为您和帐户用户可以同时登录该帐户。

访问帐户的任何“查看邮件”操作都会记录到audit.log 文件。

使用电子邮件别名

电子邮件别名是将所有邮件重定向到指定邮件帐户的电子邮件地址。 别名不是电子邮件帐户。 每个帐户可以有无限数量的别名。

当您从“管理别名”导航窗格中选择“别名”时,配置的所有别名都会显示在内容窗格中。 您可以创建别名、查看特定别名的帐户信息、将别名从一个帐户移动到另一个帐户以及删除别名。

隐藏GAL 中的别名

10.1.1 版本开始,您可以隐藏GAL 中的别名。一旦隐藏,它们在撰写邮件或搜索收件箱时将不会出现在自动完成中。

该功能可以在帐户级别进行控制。默认情况下,该功能处于禁用状态。

该功能可以通过以下方式控制:

  • 管理控制台

    1. 登录到管理控制台.

    2. 转至主页 → 管理 → 帐户 → <帐户名称> → 一般信息 → 帐户名称 → 在 GAL 中隐藏别名

    3. 提供了用于启用/禁用该功能的复选框。

  • 命令行

添加了新的 LDAP 属性zimbraHideAliasesInGal来控制该功能。

  1. 作为zimbra用户,执行以下命令为账户启用该功能:

    zmprov ma <account_name> zimbraHideAliasesInGal TRUE
  2. 作为zimbra用户,执行以下命令强制同步更改并使更改生效:

    zmgsautil forceSync -a <galsync@domain.com> -n InternalGAL

使用通讯组列表

通讯组列表是包含在具有公共电子邮件地址的列表中的一组电子邮件地址。 当用户发送到通讯组列表时,他们会将邮件发送给地址包含在列表中的每个人。 地址栏显示通讯组列表地址;无法查看单个收件人地址。

您可以创建需要管理员管理成员列表的通讯组列表,并且可以创建自动管理在列表中添加和删除成员的动态通讯组列表。 有关动态通讯组列表的详细信息,请参阅 使用动态通讯组列表.

您可以从用户帐户的“成员”页面查看用户是哪个通讯组列表的成员。 当 Zimbra 用户的电子邮件地址添加到通讯组列表时,用户的帐户成员页面将使用通讯组列表名称进行更新。 删除通讯组列表后,通讯组列表名称会自动从帐户的“成员”页面中删除。

设置通讯组列表的订阅策略

可以设置订阅策略来管理通讯组列表的成员资格。 列表的所有者从通讯组列表的“属性”页面管理订阅策略。

分发选项 描述

新订阅请求

  • 自动接受 — 会员资格向任何订阅者开放。

  • 需要列表所有者批准 —  要订阅,用户向通讯组列表的所有者发送电子邮件,所有者回复此电子邮件请求。

  • 自动拒绝 — 无法将任何人添加到此通讯组列表中。

取消订阅请求

  • 自动接受 —  任何人都可以从列表中删除自己的名字。

  • 需要列表所有者批准 — 要从通讯组列表中删除,用户需要向所有者发送电子邮件。 所有者必须接受电子邮件请求才能删除该名称。

  • 自动拒绝 — 用户无法将自己从列表中删除。

通讯组列表所有者的管理选项

您可以将所有者添加到通讯组列表,他们可以从 Zimbra 帐户的地址簿、通讯组列表文件夹中管理该列表。 列表的所有者可以右键单击通讯组列表,然后单击编辑组链接以编辑列表。

除了添加和删除成员之外,所有者可以配置的通讯组列表属性包括:

  • 将列表标记为私有,以便将其隐藏在全局地址列表中

  • 管理谁可以向列表发送消息

  • 设置成员订阅策略

  • 添加其他所有者

创建通讯组列表

使用本节中的步骤创建通讯组列表:

管理控制台:

主页 → 管理 → 通讯组列表

  1. 齿轮图标中,单击新建.

  2. 成员页面上,添加通讯组列表名称。 不要使用空格。 其他字段是可选的。

  3. 查找要添加到右列中的通讯组列表的成员。 选择要添加的成员,然后单击添加选定的。 如果要添加页面上的所有地址,请单击添加此页面。 如果您要添加不在公司列表中的成员,请在或在下面输入地址部分中,键入完整的邮件地址。

  4. 单击下一步配置属性页面。

    表 48. 分发属性选项
    分发属性选项 说明

    可以接收邮件

    默认情况下启用。 如果此通讯组列表不应接收邮件,请选择此框。

    在 GAL 中隐藏用户

    启用以创建不在全局地址列表 (GAL) 中显示的通讯组列表。 您可以使用此功能将通讯组列表的公开范围仅限于那些知道该地址的人。

    邮件服务器

    默认情况下设置为自动。 要选择特定邮件服务器,请取消选中auto并从列表中选择特定服务器。

    动态组

    如果选中此框,则会显示成员 URL字段,并创建动态通讯组列表。

    新订阅请求

    从以下选项中选择:

    • 自动接受

    • 需要列表所有者批准

    • 自动拒绝

    取消订阅请求

    从以下选项中选择:

    • 自动接受

    • 需要列表所有者批准

    • 自动拒绝

  5. Members Of页面中,选择应该是列表的直接或间接成员的通讯组列表。

  6. 如果通讯组列表应有别名,请创建它。

  7. 如果其他用户可以管理此通讯组列表,请在所有者页面中输入这些电子邮件地址。

  8. 设置如何回复收到到通讯组列表的消息。

  9. 单击完成。 通讯组列表已启用并创建 URL。

管理对通讯组列表的访问

创建通讯组列表后,您可以管理谁可以查看通讯组列表的成员以及谁可以向通讯组列表发送消息。 默认情况下,所有用户都有权访问所有通讯组列表。 本节介绍如何使用 CLI 来管理访问。

要限制谁可以访问通讯组列表,请向域中的各个用户授予权限,或者如果您希望仅域成员访问通讯组列表,则可以授予对该域的权限。 当您授予域上的权限时,该域上的所有通讯组列表都会继承该授予。

您可以授予对各个通讯组列表的权限,并配置允许访问通讯组列表的特定用户。

您可以通过 CLIzmprov grantRight (grr) 命令限制对通讯组列表的访问。

有关授予权限如何运作的更多信息,请参阅委派管理.
谁可以查看通讯组列表的成员

默认情况下,所有用户都可以查看通讯组列表中的成员地址。 通讯组列表地址显示+在地址气泡中。 用户可以单击此按钮来展开通讯组列表。 将显示通讯组列表中的地址列表。 用户可以从展开的列表中选择单个地址。

将可以查看通讯组列表中的地址的人员限制为个人或域:

  • 对于个人用户:

    zmprov grr domain <domain_name> usr <user1@example.com> viewDistList
  • 对于域中的所有用户:

    zmprov grr domain <domain_name> dom <example.com> viewDistList
  • 授予通讯组列表的权限并让特定用户查看通讯组列表 list:

    zmprov grr dl <dll_name@example.com> usr <user1@example.com>
谁可以向通讯组列表发送消息

默认情况下,所有用户都可以向所有通讯组列表发送消息。 您可以向通讯组列表或定义谁可以向通讯组列表发送邮件的域授予权限。 当用户尝试向他们无权使用的通讯组列表发送消息时,系统会发送一条消息,指出他们无权向收件人通讯组列表发送邮件。

必须从主页 → 配置 → 全局设置 → MTA启用Milter 服务器.

限制谁可以将邮件发送到个人或域的通讯组列表:

  • 向域中的单个用户授予向所有通讯组列表发送消息的权限。

    zmprov grr domain <domain_name> usr <user1@example.com> sendToDistList
  • 向域中的所有用户授予向所有通讯组列表发送邮件的权限。

    zmprov grr domain <domain_name> dom <example.com> sendToDistList

限制访问并取消对不同用户类型的各个通讯组列表的限制。

  • 对特定内部用户的访问权限:

    zmprov grr dl <dlname@example.com> usr <username@example.com> sendToDistList

    撤销访问权限

    zmprov rvr dl <dlname@example.com> usr <username@example.com> sendToDistList
  • 仅对通讯组列表的成员具有访问权限:

    zmprov grr dl <dlname@example.com> grp <dlname2@example.com> sendToDistList

    撤销访问权限

    zmprov rvr dl <dlname@example.com> grp <dlname2@example.com> sendToDistList
  • 仅对域中的所有用户具有访问权限:

    zmprov grr dl <dlname@example.com> dom <example.com> sendToDistList

    撤销访问权限

    zmprov rvr dl <dlname@example.com> dom <example.com> sendToDistList
  • 仅对外部域中的所有用户具有访问权限:

    zmprov grr dl <dlname@example.com> edom <example.com> sendToDistList

    撤销访问权限

    zmprov rvr dl <dlname@example.com> edom <example.com> sendToDistList
  • 仅允许内部用户访问:

    zmprov grr dl <dlname@example.com> all sendToDistList

    撤销访问权限

    zmprov rvr dl <dlname@example.com> all sendToDistList
  • 仅访问所有公共电子邮件地址:

    zmprov grr dl <dlname@example.com> pub sendToDistList

    撤销访问权限

    zmprov rvr dl <dlname@example.com> pub sendToDistList
  • 仅访问特定外部电子邮件地址:

    zmprov grr dl <dlname@example.com> gst <someone@foo.com> "" sendToDistList

    撤销访问权限

    zmprov rvr dl <dlname@example.com> gst <someone@foo.com> "" sendToDistList
启用 AD 帐户的通讯组列表成员视图

要在消息或地址簿中查看 Active Directory 通讯组列表成员,必须在每个 Active Directory 的 Zimbra GALsync 帐户中配置 Active Directory 的 GAL 组处理程序。

使用本节中的步骤更新每个 Active Directory 的 GALsync 帐户。 此配置要求您知道 GALsync 帐户名称以及该 GALsync 帐户上的所有数据源。

  1. 显示 GAL 同步帐户的 Zimbra ID:

    zmprov gd {domain} zimbraGalAccountId

    要查找名称:

    zmprov ga {zimbraId-of-the-GAL-sync-account} name
  2. 显示 GALsync 帐户的数据源:

    zmprov gds {gal-sync-account-name-for-the-domain}
  3. 启用 Active Directory 的组处理程序:

    zmprov mds {gal-sync-account-name-for-the-domain} {AD-data-source-name} \
     zimbraGalLdapGroupHandlerClass com.zimbra.cs.gal.ADGalGroupHandler

使用动态通讯组列表

动态通讯组列表自动管理其成员资格。 用户会自动添加到通讯组列表中或从通讯组列表中删除。 创建动态通讯组列表时,会指定成员 URL。 此成员 URL 用于标识谁应该是列表的成员。 您可以从管理控制台通讯组列表的属性页面查看此 URL。

您可以从管理控制台或 CLI 创建动态通讯组列表。 在 URL 中,您可以指定特定的对象类,用于标识要添加到动态通讯组列表中的用户类型。 例如,您可以使用对象 class= zimbraAccount 配置动态通讯组列表。 在这种情况下,当配置帐户或删除帐户时,动态通讯组列表会更新。

您可以为所有移动用户或 POP/IMAP 用户创建动态通讯组列表。

您可以修改通讯组列表来更改过滤规则。 当您修改通讯组列表时,列表中的成员将发生更改以反映新规则。

创建动态通讯组列表

您可以使用管理控制台或 CLI 创建动态通讯组列表,如本节中所述。

管理控制台:

主页 → 管理 → 通讯组列表.

  1. 来自Gear图标,单击新建.

  2. 成员页面上,添加动态通讯组列表名称。 不要使用空格。 不要将成员添加到列表中。

  3. 单击下一步配置属性页面。

    表 49. 动态通讯组列表 选项
    选项 说明

    可以接收邮件

    默认情况下启用。 如果此通讯组列表不应接收邮件,请选择此框。

    在 GAL 中隐藏用户

    启用以创建不在全局地址列表 (GAL) 中显示的通讯组列表。 您可以使用此功能将通讯组列表的公开范围仅限于那些知道该地址的人。

    邮件服务器

    默认情况下设置为自动。 要选择特定邮件服务器,请取消选中auto并从列表中选择特定服务器。

    动态组

    选中此框。

    可用于权限管理

    取消选中此框。

    成员 URL

    成员 URL 是 LDAP 类型 URL,定义过滤器,确定将哪些用户添加到列表中或从列表中删除哪些用户。

    输入此列表的 URL。 在命令中,ldap://??sub?是网址。 您可以向其中添加任意过滤器组合,以创建不同类型的动态通讯组列表。

    示例 10. 所有用户、GAL 帐户名称和垃圾邮件/非正常邮件帐户列表
    ldap:///??sub?(objectClass=zimbraAccount)
    示例 11. 委派管理员列表
    ldap:///??sub?(&(objectClass=zimbraAccount)(zimbraIsDelegatedAdminAccount=TRUE))
    示例 12. 所有活动帐户
    ldap:///??sub?(&(objectClass=zimbraAccount)(ZimbraAccountStatus=active))
    示例 13. 具有职务经理

    的所有用户 职务取自帐户的联系信息 职务字段。 在此示例中,该字段将设置为“经理”。

    ldap:///??sub?(&(objectClass=zimbraAccount)(title=Manager))

    新订阅请求

    选择自动拒绝.

    取消订阅请求

    选择自动拒绝.

  4. 如果动态通讯组列表应有别名,请创建它。

  5. 如果此动态通讯组列表可由其他用户管理,请在所有者页面中输入这些电子邮件地址。

  6. 如果您想设置回复地址,请在此处输入。 对此通讯组列表的任何回复都会发送到此地址。

  7. 单击完成。 动态通讯组列表已创建。

根据您指定的过滤器,用户会自动添加到列表中。 如果您添加或删除用户,列表会更新。

如果您使用 CLI 修改最初在管理控制台上创建的动态通讯组列表,则必须设置zimbraIsACLGroup 错误的对于该动态通讯组列表。

使用 CLIzmprov用于管理动态通讯组列表的命令。 在命令中,ldap:///??sub?是网址。 您可以向其中添加任意过滤器组合,以创建不同类型的动态通讯组列表。

  1. 创建所有新帐户和现有帐户的动态通讯组列表

    包括所有用户、GAL 帐户名称和垃圾邮件/火腿帐户名称。 删除用户帐户后,它们也会从列表中删除。

    zmprov cddl <all@domain.com> zimbraIsACLGroup FALSE \
      memberURL 'ldap:///??sub?(objectClass=zimbraAccount)'
  2. 创建 COS 并分配用户

    如果您创建 COS 并根据特定条件(例如所有经理)将用户分配到 COS,则可以快速修改要用于特定 COS 的动态通讯组列表。

    示例 14. 动态通讯组列表,包括在特定 COS 中拥有活动帐户的所有用户
    zmprov cddl <allusers@domain.com>  zimbraIsACLGroup FALSE \
      memberURL 'ldap:///??sub?(&(objectClass-zimbraAccount) (zimbraCOSId=513e02e-9abc-4acf-863a-6dccf38252e3) (zimbraAccountStatus=active))'
    示例 15. 动态通讯组列表,包括基于职位的所有用户

    要使用此列表,帐户的联系信息职务字段必须包含职务。 在此示例中,它将设置为“Manager”。

    zmprov cddl <allmanagers@domain.com> zimbraIsACLGroup FALSE' \
      memberURL ldap:///??sub?(&(objectClass-zimbraAccount) (zimbraCOSId=513e02e-9abc-4acf-863a-6dccf38252e3) (title=Manager))'
    示例 16. 所有委派管理员的动态通讯组列表
    zmprov cddl <alldelegatedadmins@domain.com> zimbraIsACLGroup FALSE \
      memberURL 'ldap:///??sub?(&(objectClass-zimbraAccount) (zimbraCOSId=513e02e-9abc-4acf-863a-6dccf38252e3) (zimbraIsDelegatedADminAccount=TRUE))'

移动邮箱

邮箱可以在共享同一 LDAP 服务器的 Zimbra 服务器之间移动。

您可以从管理控制台或使用 CLI 命令移动邮箱zmmboxmove将邮箱从一台服务器重新定位到另一台服务器,而无需关闭服务器。

目标服务器管理邮箱移动过程。 移动在后台运行,并且帐户将保持活动模式,直到大部分数据被移动为止。 该帐户被短暂锁定以移动最后的数据,然后返回到活动模式。

邮箱移动过程经历以下步骤:

  • 邮箱 blob 移动到新服务器

  • 移动大部分内容后,帐户将进入维护模式

  • 数据库表、索引目录和任何更改的 blob 都会被移动

  • 帐户将恢复到活动模式

将邮箱移动到新服务器后,旧服务器上仍保留副本,但旧邮箱的状态已关闭。 用户无法登录,邮件也无法送达。 在清除旧邮箱之前,请检查所有邮箱内容是否已成功移动。

  • 将邮箱移动到新服务器

    zmmboxmove -a <email@address> --from <servername> --to <servername>
  • 从旧服务器清除邮箱

    zmpurgeoldmbox -a <email@address> -s <servernamee>

用于移动邮箱的全局配置选项

用于移动邮箱的全局配置选项可以设置为在移动邮箱时排除搜索索引、Blob 和 SM Blob。 可以在导出服务器或目标服务器上设置以下配置选项:

  • zimbraMailboxMoveSkipSearchIndex — 如果不包括搜索索引数据,则必须在移动后对邮箱重新建立索引。

  • zimbraMailboxMoveSkipBlobs — 与邮箱关联的 Blob(包括主卷和辅助卷 (SM))被排除。

  • zimbraMailboxMoveSkipHsmBlobs — 当要移动的邮箱已存在 SM Blob 时,这非常有用。 如果设置此项zimbraMailboxMoveSkipBlobs未配置,但您想要跳过 SM 卷上的 blob。

监控 Zimbra 服务器

Zimbra 协作 (Zimbra) 包括以下内容 帮助您监控 Zimbra 服务器、使用情况和邮件流:

  • Zimbra Logger 包用于捕获和显示服务器统计信息和服务器 状态,并创建夜间报告

  • 邮箱配额监控

  • MTA 邮件队列监控

  • 日志文件

此外,选定的错误消息会生成可监控的 SNMP 陷阱 使用 SNMP 工具。

检查整个系统的整体健康状况超出了 这份文件。

Zimbra Logger

Logger 包括用于系统日志聚合和报告的工具。 安装中 Logger 是可选的,但如果不安装它,服务器统计信息和 不捕获服务器状态信息。

在具有多个 Zimbra Collaboration 服务器的环境中,Logger 是 仅在一台邮箱服务器上启用。 该服务器被指定为 监控主机。 Zimbra Collaboration 监控主机负责 检查所有其他 Zimbra 协作服务器的状态以及 在 Zimbra 管理控制台上显示此信息。 实时服务状态、MTA、垃圾邮件、病毒流量和性能 可以显示统计数据。 记录器创建有关邮件的每日报告 活动,例如消息数量、平均传递延迟,以及 产生的错误。

在多服务器安装中,您必须设置 syslog 配置 每个服务器上的文件以使 Logger 显示服务器统计信息 管理控制台,并且您必须启用 Logger 主机。 如果你 安装 Zimbra Collaboration 时未配置此项,请立即进行配置。

启用服务器统计信息

启用服务器统计信息以显示系统范围和服务器特定的数据 关于入站邮件量、入站邮件计数、反垃圾邮件/防病毒 过去 48 条中处理的消息的活动和磁盘使用情况 小时、30 天、60 天和去年。

  1. 在每台服务器上,以 root 身份键入/opt/zimbra/libexec/zmsyslogsetup。 这个 更新系统日志配置以收集服务器统计信息。

  2. 在记录器监视器主机上,您必须配置syslog以接受 来自远程计算机的系统日志消息。 有关详细信息,请参阅https://www.zimbra.com.cn/wiki/Configuring-Logger-Host

对于单节点安装,这些步骤不是必需的。

查看服务器状态

管理控制台:

首页 → 监控

服务器状态页面列出了所有服务器和服务及其 状态,以及上次检查服务器状态的时间。 服务器包括 MTA、LDAP 和邮箱服务器。 这些服务包括 MTA、LDAP、 邮箱、SNMP、反垃圾邮件、反病毒、拼写检查器和记录器。

要启动未运行的服务器,请使用zmcontrolCLI 命令。 你 可以从管理控制台停止和启动服务。

启用或禁用服务器服务

管理控制台:

主页 → 配置 → 服务器 →服务器

服务器启用或禁用服务器服务 →服务器页。 选择服务在导航窗格中,然后选择启用或 禁用服务。

查看服务器性能统计信息

如果 Logger 软件包安装在 Zimbra 邮箱服务器上,服务器 统计显示消息计数、消息量的条形图, 反垃圾邮件和防病毒活动。 显示的信息为 过去 48 小时、30 天、60 天和 365 天。

在导航窗格中选择服务器统计信息时,将合并 显示所有邮箱服务器的统计信息。 选择特定的 展开视图中的服务器仅显示该服务器的统计信息。 服务器 具体信息还包括磁盘使用情况、会话信息和 邮箱配额详细信息。

以下显示系统范围的信息:

  • 消息计数 — 对消息事务进行计数。 定义了一个事务 作为每人邮件的 SMTP 接收(通过 Postfix)或 LMTP 每人递送(通过邮箱)。 例如,如果发送一条消息 对于三个人,显示六笔交易。 三个用于 SMTP 到 Postfix 三个用于 LMTP 发送至邮箱。 消息计数增加了 6。

  • 消息量 — 显示交易的总大小(以字节为单位) 每小时和每天发送和接收。 图表显示总入站数据 按体积(以字节为单位)。

  • 反垃圾邮件/反病毒活动 —  显示已收到邮件的邮件数量 检查了垃圾邮件或病毒以及标记的邮件数量 视为垃圾邮件或被视为包含病毒。 AS/AV 计数加一 每条扫描的消息。 发送给三个人的一条消息只算一条 由 AS/AV 处理的消息。

    邮件计数和反垃圾邮件/反病毒活动图显示 消息计数不同,因为:

    • 出站消息可能不会通过 Amavisd 过滤器,因为系统 体系结构可能不需要检查出站消息。

    • Amavisd 之前接收并检查邮件是否有垃圾邮件和病毒 被传递给消息中的所有收件人。 消息数显示 收到消息的收件人数量。

服务器特定的统计信息还包括以下详细信息:

  • 磁盘 — 对于选定的服务器显示使用的磁盘和磁盘 可用空间。 显示最近一小时、一天、 月份和年份。

  • 会话 — 显示有关活动 Web 客户端的信息, 管理员和 IMAP 会话。 您可以看到有多少活动会话 打开、谁登录、会话创建时间以及最后一次 会话已被访问。

  • 邮箱配额 — 显示已排序的每个帐户的信息 按邮箱大小降序排列。 参见 监控邮箱配额.

配置记录器邮件报告

记录器每天晚上 11:30 生成有关邮件活动的报告。和 将其发送到管理员的电子邮件地址。

您可以配置要包含在报告中的帐户数量。 的 默认为 25 个发件人帐户和 25 个收件人帐户。

  • 更改要添加到报告中的收件人数量:

    zmlocalconfig -e zimbra_mtareport_max_recipients=<number>
  • 更改要添加到报告中的发件人数量:

    zmlocalconfig -e zimbra_mtareport_max_senders=<number>

配置磁盘空间通知

您应该定期检查您的磁盘容量以及磁盘何时可用 全面、防患于未然,维护服务。 警告警报 当磁盘空间不足时,将向管理员帐户发送电子邮件通知 低。 默认是当阈值达到85%时发送警告警报 当阈值达到 95% 时发出严重警报。

您可以更改这些值。 使用zmlocalconfig配置 磁盘警告阈值。

  • 警告警报

    zmdisklog_warn_threshold
  • 严重警报:

    zmdisklog_critical_threshold

使用zmcontrol启动服务时,如果超过阈值 服务启动前会显示警告。 你应该清理干净 您的磁盘以释放空间。

监控服务器

Zimbra Collaboration 服务器收集许多与性能相关的内容 可以帮助您诊断问题和加载问题的统计信息。

管理控制台:

主页 → 监控 → 高级统计

高级统计页面包括高级图形 可让您根据统计生成各种图表的选项 CPU、IO、mailboxd、MTA 队列、MariaDB 等信息 组件。

要在高级统计中绘制图表,请选择以下组之一 然后从特定计数器列表中选择类型 要显示的信息。

这些信息涵盖了广泛的数据:

  • cpu.csv — CPU 利用率。 该组包含用于跟踪的计数器 CPU 使用情况(iowait、空闲、系统、用户、时间等)。 CPU信息可以 在服务器级别和进程级别进行跟踪。

  • df.csv — 捕获磁盘使用情况。 跟踪每个的磁盘利用率 磁盘分区。

  • fd.csv — 文件描述符计数。 跟踪系统文件描述符 随着时间的推移使用情况。 这主要用于追踪“文件外” 描述符”错误。

  • maild.csv — Zimbra 协作服务器和 JVM 统计信息。 Mailboxd 几乎将所有统计信息存储在这里。 有趣的数字 跟踪 heap_used、heap_free、imap_conn、soap_sessions、 pop_conn、db_conn_count。

  • mtaqueue.csv — 后缀队列。 这测量邮件队列大小 消息数量和大小(以字节为单位)。

  • proc.csv — Zimbra 进程的进程统计。 例如 maild/java、MariaDB、OpenLDAP 等)

  • 肥皂.csv — SOAP 请求处理时间。

  • threads.csv — JVM 线程计数。 计算线程数 通用名称前缀。

  • vm.csv — Linux VM 统计信息(来自 vmstat 命令)。

  • io-x.csvio.csv — 存储来自iostat(1)命令的数据 (io-x.csv 使用iostat -x).

配置拒绝服务过滤器参数

拒绝服务过滤器 (DoSFilter) 限制对请求的暴露 通过 HTTP/HTTPS 进行泛洪。 DoSFilter 限制客户端发送大量 短时间内提出请求。

DosFilter 仅适用于 HTTP 和 HTTPS 请求,换句话说,它不会影响任何其他协议(如 POP3、IMAP 或 SMTP)的请求。您可以修改配置以满足您的特定环境需求。 DoSFilter 在 Zimbra 上默认启用。不建议禁用 DoSFilter。有关防止多次失败登录尝试的信息,请参阅密码策略

识别误报

有时 Zimbra Connector for Outlook (ZCO)、移动 ActiveSync 客户端或 运行一些zmprov命令会触发 DoSFilter。 当这种情况发生时, Zimbra 邮箱服务不可用。 您可以查看以下日志 查看是否应用了 DoSFilter。

  • /opt/zimbra/log/sync.log.

示例 17. 显示 DoSFilter 的sync.log条目
2021-01-15 15:52:20,426 WARN [qtp1635701107-91:https://x.x.x.x/
Microsoft-Server-ActiveSync?User=zsupport2&DeviceId=Appl5ddddd3NR&DeviceType=iPhone&Cmd=FolderSync][name=zsupport2@domain.com;mid=64;ip=10.1.2.3;Cmd=FolderSync;DeviceID=Appl5K0113UN3NR;Version=12.1;] sync - Service exception com.zimbra.common.service.ServiceException: error while proxying request to target server: HTTP/1.1 503 Service Unavailable
ExceptionId:qtp1635701107-91:https://10.10.0.54:443/Microsoft-Server-ActiveSync?User=zsupport2&DeviceId=Appl5K0113UN3NR&DeviceType=iPhone&Cmd=FolderSync:1358286740426:c5ca7f36bb0a038f Code:service.PROXY_ERROR Arg:(url, STR,"http://mail.domain.com:80/service/soap/SyncRequest"
  • /opt/zimbra/log/zmmailboxd.out

示例 18. 显示 DoSFilter 的zmmailboxd.out条目
2021-01-15 15:57:32.537:WARN:oejs.DoSFilter:DOS ALERT:ip=127.0.1.1,session=null,user=null

自定义 DoSFilter 配置

以下属性与zmprov一起使用来配置 DoSFilter。 这些属性可以配置为全局设置和服务器 设置。 如果在服务器中设置了这些属性,则服务器设置 覆盖全局设置。

您可以修改这些设置,但默认配置是 推荐。

属性 说明

DoSFilter Delay
zimbraHttpDosFilterDelay-Millis

在超过速率限制的所有请求被处理之前给予的延迟 考虑过。 默认值为-1。

  • -1 = 拒绝请求

  • 0 = 无延迟

  • 任何其他值 = 延迟以毫秒为单位

zmprov mcf zimbraHttpDosFilterDelayMillis {x}

DoSFilter 每秒最大请求数
zimbraHttpDosFilterMaxRequestsPerSec

每秒来自连接的最大请求数。 请求于 超出的部分会受到限制。 默认值为 30,最小值为 1。

zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec {x}

DoSFilter IP 地址白名单
zmprov mcf zimbraHttpThrottleSafeIPs {x.x.x.x,192.168.x.x}

应用 DosFilter 时要忽略的 IP 地址。 这个属性的作用是 没有默认值,但是以下环回 IP 是 默认列入白名单。

  • 127.0.0.1

  • ::1

IP 地址应以逗号分隔。

zmprov mcf zimbraHttpThrottleSafeIPs {addresses}

修改这些属性后需要重新启动邮箱服务器。 类型:

zmmailboxdctl restart

Zimbra Collaboration 8.0.3 及更高版本的调整注意事项

  • Zimbra 成员服务器 — 单个控制下的 Zimbra 服务器 masterLDAP 服务器自动按 IP 地址列入白名单。 这些主机 使用GetAllServersRequest发现。 输入zmprov gas.

  • 外部配置主机/SOAP API — 外部配置主机可以 添加IP白名单,保证DoSFilter不拦截 一些要求。 例如,邮箱重新索引可能会每次调用多次 第二个可以触发DoSFilter。

使用邮件队列

当 Zimbra MTA 接收邮件时,它会通过一系列队列路由邮件 队列来管理交付;传入、活动、延迟、保留和损坏。

传入消息队列保存已收到的新邮件。 每条消息都用唯一的文件名标识。 消息已移至 有空间时的活动队列。 如果没有问题请留言 很快地穿过这个队列。

积极的消息队列保存准备发送的消息。 的 MTA 对活动队列中的邮件数量设置限制 在任何一个时间。 从这里,消息被移入和移出防病毒软件 和反垃圾邮件过滤器,然后再传递到另一个队列。

无法传递的消息被放置在延迟队列中。 的 交付失败的原因记录在延期的文件中 队列。 经常扫描该队列以重新发送消息。 如果 在设定的传递尝试次数后无法发送消息, 消息失败。 邮件被退回给原始发件人。 的 退回队列生存期的默认值为五天。

held消息队列保留无法处理的邮件。 留言 保留在此队列中,直到管理员移动它们。 无周期性 对保留队列中的消息进行传送尝试。

损坏的队列存储损坏的不可读消息。

更改退回队列生存期

  • MTA 服务器的退回队列生存期设置为五天。 改变 默认队列生存期设置

    zmlocalconfig -e bounce_queue_lifetime={#}
  • 永久将消息退回给发件人,而不是 首先发送到延迟队列

    zmlocalconfig -e zimbraLmtpPermanentFailureWhenOverQuota=TRUE

通知退回消息的发件人

在退回队列生存期将消息发送回发件人之前, 可以通知发送者他们发送的消息在延迟队列中 并且尚未交付。

配置以下属性以向发件人发送警告消息。

  • 配置发送方收到消息头的时间 仍在排队的电子邮件。

    zmlocalconfig -c postfix_delay_warning_time=0h
  • 使用消息配置邮局管理员通知的收件人 MTA 未投递的邮件标头。

    zmlocalconfig -c postfix_bounce_notice_recipient=postmaster
  • 配置报告给 postmaster 的错误类列表。

    zmlocalconfig -c postfix_notify_classes=resource,software
有关这些更改的影响的详细信息,请参阅 Postfix 文档 后缀属性。

您可以从以下位置监控邮件队列的投递问题: 管理控制台。

查看邮件队列

管理控制台:

主页 → 监控 → 邮件队列

如果您遇到邮件传送问题,您可以查看邮件队列 从管理控制台中的邮件队列页面,查看是否 您可以解决邮件发送问题。 当您打开邮件队列时, 延迟队列、传入队列、活动队列、保留队列和损坏队列的内容 可以查看时间点。 您可以查看消息数量和位置 他们来自,又要去。

对于每个队列,“摘要”窗格显示接收者的消息摘要 域、源 IP、发件人域、收件人地址、发件人地址以及 延迟队列,按错误类型。 您可以选择任何摘要 在“消息”窗格中按消息查看详细的信封信息。

消息窗格显示各个消息信封信息 从“摘要”窗格中选择的搜索过滤器。

可以对所有邮件执行以下邮箱队列函数 在队列中:

  • 按住选择要保留的一组消息。 传入, 活动、延迟和损坏的消息可以移至保留队列。 消息将保留在此队列中,直到管理员移动它们。

  • 释放以从保留队列中删除所有消息。 消息已移动 到延迟队列。

  • 重新排队正在查看队列中的所有消息。 重新排队消息可以 用于发送由于配置而延迟的消息 已修复的问题。 消息被重新评估并提前 惩罚被忘记了。

  • 删除正在查看的队列中的所有消息。

Zimbra MTA、Postfix 队列文件 ID 被重用。 如果您重新排队或 删除消息时,请注意消息信封信息,而不是队列 ID。 当您刷新邮件队列时,队列 ID 可能是 用于不同的消息。

刷新消息队列

您可以刷新服务器的所有消息。 当您单击“邮件”上的“刷新”时 队列工具栏,立即尝试传送队列中的所有消息 延迟队列、传入队列和活动队列。

监控邮箱配额

邮箱配额适用于电子邮件、附件、日历约会、 以及用户帐户中的任务。 当帐户配额达到时,所有邮件 消息被拒绝。 用户必须从其帐户中删除邮件才能获取 低于他们的配额限制 - 这包括清空他们的垃圾箱,或者您可以 增加他们的配额。

查看配额

您可以通过以下方式查看各个帐户的邮箱配额:服务器统计 在管理控制台上。 邮箱配额让您即时查看 每个帐户的邮箱大小和已用配额信息。

管理控制台:

主页 → 监控 → 服务器统计

  1. 选择服务器您想要查看其统计信息。

  2. 在导航窗格中,选择邮箱配额。 邮箱配额页面 显示以下信息:

    • 配额列显示分配给该帐户的邮箱配额。 配额 可以在 COS 中配置,也可以通过账户配置。

    • 邮箱大小列显示已使用的磁盘空间。

    • 已使用配额列显示已使用的配额百分比。

增加或减少配额

从 COS 或账户中,您可以配置配额阈值,当 已到达,发送一条消息提醒用户他们即将到达 邮箱配额。

管理控制台:

主页 → 配置 → 服务等级 →COS→ 高级
首页 → 管理 → 账户 →帐户→ 高级

  1. 向下滚动到配额部分。

  2. 修改配额设置。

  3. 单击保存.

查看 MobileSync 统计信息

管理员“监控”部分中的MobileSync 统计信息页面 控制台显示当前连接的 ActiveSync 设备的数量 位于 Zimbra 协作系统上。

监控身份验证失败

为了防止基于字典的分布式攻击,您可以 配置zmauditwatch。 该脚本尝试检测更高级的 通过查看身份验证失败的来源来进行攻击 Zimbra 邮箱上的所有帐户发生此类事件的频率 服务器并向管理员邮箱发送电子邮件警报。

检查的身份验证失败类型包括:

  • IP/帐户哈希检查 — 默认为发送电子邮件警报,如果 10 在 60 天内发生 IP/帐户组合的身份验证失败 第二个窗口。

  • 账户检查 — 默认为 15 时发送电子邮件提醒 来自任何 IP 地址的身份验证失败都会在 60 秒窗口内发生。 此检查尝试检测对单个节点的基于分布式劫持的攻击 帐户。

  • IP 检查 — 默认为 20 次验证时发送电子邮件警报 任何帐户在 60 秒内都会发生故障。 此项检查 尝试检测跨多个帐户的基于单一主机的攻击。

  • Total authentication failure check — The default is to send an email alert if1000 auth failures from any IP address to any account occurs within 60 seconds. The default should be modified to be 1% of the active accounts on the mailbox server.

The default values that trigger an email alert are changed in the following zmlocalconfig parameters:

  • IP/Account value, change zimbra_swatch_ipacct_threshold

  • Account check, change zimbra_swatch_acct_threshold

  • IP check, change zimbra_swatch_ip_threshold

  • Total authentication failure check, change zimbra_swatch_total_threshold

Configure zimbra_swatch_notice_user with the email address that should receive the alerts.

查看日志文件

Zimbra Collaboration 将其活动和错误记录到以下文件的组合中: 通过 syslog 守护程序进行系统日志以及 Zimbra 特定日志 本地文件系统。 下面描述的日志是主要日志 用于分析和故障排除。

包含 Zimbra 协作活动的本地日志位于/opt/zimbra/log中 目录。

  • 审核.log — 此日志包含用户的身份验证活动 以及管理员和登录失败。 此外,它还记录管理活动 能够跟踪配置更改。

  • clamd.log — 此日志包含来自防病毒应用程序的活动 蛤蜊。

  • freshclam.log — 该日志包含与 更新clamd病毒定义。

  • Mailbox.log — 此日志是一个 maild log4j 服务器日志,其中包含 来自邮箱服务器的日志。 这包括邮箱存储、LMTP 服务器、IMAP 和 POP 服务器以及索引服务器。

  • myslow.log — 此慢查询日志包含来自以下位置的所有 SQL 语句 邮箱服务器执行时间超过long_query_time秒。

    long_query_time/opt/zimbra/conf/my.cnf.
  • spamtrain.log 中定义 — 此日志包含zmtrainsa期间的输出 从 cron 定期安排执行。

  • 同步.log — 此日志包含有关 Zimbra 协作的信息 移动同步操作。

其他日志包括:

  • /opt/zimbra/jetty/logs/ — 这是 Jetty 特定活动所在的位置 已记录。

  • /opt/zimbra/db/data/<hostname>.err — 这是消息存储 数据库错误日志。

  • /opt/zimbra/logger/db/data/<主机名>.err — 这是记录器 数据库错误日志。

Zimbra 协作活动记录到系统日志

  • /var/log/zimbra.log — Zimbra 系统日志详细介绍了 ZimbraMTA(Postfix、amavisd、反垃圾邮件、防病毒)、记录器、身份验证 (cyrus-sasl) 和目录 (OpenLDAP)。 默认情况下记录 LDAP 活动 至zimbra.log.

Syslog

Zimbra Collaboration 修改系统 syslog 守护程序以从邮件和 本地系统日志工具到/var/log/zimbra.log。 这允许 syslogd 从多个 Zimbra Collaboration 组件捕获数据,包括 Postfix、Amavis、ClamAV、mailboxd、zmconfigd 和记录器。 SNMP 模块 使用日志文件中的数据生成严重错误的陷阱。 的 zmlogger 守护进程还收集此文件中的数据子集以提供 通过以下方式统计 Zimbra Collaboration 的使用情况 管理控制台。

默认情况下,mailboxd 配置为将其输出记录到 /opt/zimbra/log/mailbox.log。 您可以启用邮箱来利用 通过启用以下任一功能来建立集中式 syslogd 基础设施 全局或通过服务器:

zmprov mcf zimbraLogToSysLog TRUE

使用 log4j 配置日志记录

Zimbra Collaboration 服务器使用log4j,一个 Java 日志记录包作为 日志管理器。 默认情况下,Zimbra 协作服务器具有log4j 配置为登录到本地文件系统。 您可以配置log4j到 直接输出到另一个位置。 前往 Log4j 网站了解有关信息 使用log4j.

Zimbra 不会检查 log4j 更改。 删除所有帐户记录器和 在/opt/zimbra/conf/log4j.properties中重新加载,使用zmprov resetAllLoggers命令。

日志记录级别

默认日志记录级别设置为包括生成的日志 信息、警告、错误和致命。 当问题开始出现时,您可以转向 在 DEBUG 或 TRACE 日志级别上。

要更改日志记录级别,请编辑log4j属性,log4j.properties, log4j.logger.zimbra.

当启用DEBUG时,您可以指定特定类别进行调试。 对于 例如,要查看 POP 活动的调试详细信息,您可以键入 logger.zimbra.pop=DEBUG.

中预定义了以下类别log4j:

zimbra.account

帐户操作

zimbra.acl

ACL 操作

zimbra.backup

备份和恢复

zimbra.cache

内存缓存操作

zimbra.calendar

日历操作

zimbra.dav

DAV 操作

zimbra.dbconn

数据库连接跟踪

zimbra.extensions

服务器扩展加载

zimbra.filter

邮件过滤

zimbra.gal

GAL 操作

zimbra.imap

IMAP 协议操作

zimbra.index

索引操作

zimbra.io

文件系统操作

zimbra.ldap

LDAP 操作

zimbra.lmtp

LMTP 操作(传入邮件)

zimbra.mailbox

一般邮箱操作

zimbra.misc

其他

zimbra.op

邮箱状态更改

zimbra.pop

POP 协议操作

zimbra.redolog

重做日志操作

zimbra.security

安全事件

zimbra.session

用户会话跟踪

zimbra.smtp

SMTP 操作(外发邮件)

zimbra.soap

SOAP 协议

zimbra.sqltrace

SQL 跟踪

zimbra.store

邮件存储磁盘操作

zimbra.sync

同步客户端操作

zimbra.system

启动/关闭和其他系统消息

zimbra.wiki

Wiki 操作

zimbra.zimlet

Zimlet 操作

对日志级别的更改立即生效。
表 50. 记录事件
级别 本地? 系统日志 SNMP 陷阱 使用时

致命

Y

Y

Y

指定应用程序要中止或影响的非常严重的错误事件 大量的用户。 For example, being unable to contact the MariaDB 数据库。

ERROR

Y

Y

N

Designates error events that might still allow the application to continue running or impact a single user. For example, a single mailbox having a 索引损坏或无法从邮箱中删除邮件。

警告

Y

N

N

指定潜在有害情况,但通常是可恢复或 可以忽略。 例如,用户登录失败。

INFO

Y

N

N

指定突出显示进度的信息消息 应用程序,基本事务级日志记录。 例如,服务器 初创企业、邮箱创建/删除、帐户创建。

调试

Y

N

N

通常有助于帮助客户调试问题的事件。

(*) 一些非关键消息,例如服务启动消息,将 产生陷阱。

协议跟踪

协议跟踪可用于以下日志记录类别:

zimbra.smtp
zimbra.lmtp
zimbra.soap
zimbra.imap
zimbra.imap-client
zimbra.pop
zimbra.pop-client

查看mailbox.log记录

mailbox.log文件包含在邮箱服务器上执行的每个操作, 包括身份验证会话、LMTP、POP3 和 IMAP 服务器以及索引 服务器。 回顾mailbox.log查找有关健康的信息 您的服务器并帮助识别问题。

mailbox.log记录有效和无效的登录尝试、帐户活动 例如打开电子邮件、删除项目、创建项目、为新项目建立索引 邮件、服务器活动包括启动和停止。 的进展 邮件服务器上的活动记录为 INFO。 如果预期结果为 活动失败并发生错误,异常将写入日志。

您可以为单个帐户设置日志记录选项以便跟踪 一个用户的帐户活动,无需使用日志填充 mail.log 不相关帐户的消息。 请参阅命令行 实用程序zmprov杂项部分。

日志模式

默认情况下mailbox.log中的日志条目具有以下 Log4j 模式:

%d %-5p [%t] [%z] %c{1} - %m%n

该模式由 6 个数据块组成:

  • 日期和时间(例如:2021-01-22 19:23:07,100)

  • 日志级别(例如INFO)

  • 线程名称(例如[qtp1043351526-547:https:https://localhost:7071/service/admin/soap/DeleteAccountRequest], [Index-9]等))

  • Zimbra 协作上下文

  • 组件名称(例如soap, mailbox, mbxmgr等)

  • 日志消息。 注意:日志消息部分可能跨越多行。当日志消息包含异常时,堆栈跟踪将始终从错误消息下方的新行开始。

Mailbox.log 中的线程名称

Mailbox.log 中的线程名称带有前缀以标识内部组件。大多数线程具有以下命名约定之一:“{线程前缀}-{线程编号}”或“{线程前缀}-{线程编号}:{url}".

以下{线程前缀}Zimbra Collaboration 中当前使用的值用于线程名称:btpool, pool, LmtpServer, ImapServer,ImapSSLServer, Pop3Server, Pop3SSLServer, ScheduledTask, Timer, AnonymousIoService, CloudRoutingReaderThread, GC, SocketAcceptor, Thread, qtp.

前缀为qtp的线程由 JettyQueuedThreadPool创建,并具有以下命名约定:“qtp{哈希码}-{线程号}:{url}" 其中{哈希码}` 是拥有该线程的QueuedThreadPool实例的哈希码值(请参阅Object::hashCode在 Java 平台文档中)。

{线程编号} 线程名称中的是一个在每个线程工厂内单调递增的整数。当mailboxd进程停止或重新启动时,线程号会重置。提供 SOAP 请求的线程报告的

日志记录通常包含线程名称的{url}部分中所提供的请求的 URL,如下例所示:

Mailbox Log Entry for SOAP

由于 Zimbra Collaboration 中的已知错误{url}线程名称的部分可能包含重复的内容协议标识符,如下例:

[qtp1043351526-547:https:https://localhost:7071/service/admin/soap/DeleteAccountRequest]

Mailbox.log 日志模式中的

[%z]部分中的 Zimbra 协作上下文描述了 Zimbra 协作上下文,并由格式为key=value的键值对组成,并以分号 (;) 分隔。如果值包含分号,则分号将替换为双分号 (;;)。例如,浏览器 UserAgent 字符串通常包含分号,例如“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36”。在 mail.log 中,此 UserAgent 字符串将如下所示:

ua value with double semi-colon

目前支持以下键值对,并且可以以任意顺序和任意组合记录在日志条目中:

  • ip — 发出请求的 TCP/IP 客户端的 IP

  • oip — 源IP地址。当通过 NGINX 代理发出请求时,该值将包含客户端应用程序的 IP 地址,而ip值将包含代理服务器的 IP 地址

  • cid — 单调递增的服务器连接 ID - 用于跟踪各个连接

  • id — 目标帐户的 ID

  • name — 目标帐户的名称(电子邮件地址)

  • aid — 已验证帐户的ID。仅当目标帐户与经过身份验证的帐户不同时才出现

  • aname — 经过身份验证的帐户的名称。仅当目标帐户与经过身份验证的帐户

  • mid —  请求的邮箱的 ID 不同时才出现。仅当请求处理邮箱时才出现

  • ua — 客户端应用程序的名称(即用户代理)

  • via — 请求代理链的 IP 地址和用户代理列表

  • soapId — 分配给 SOAP 请求以跟踪特定请求的代理跃点的 ID

  • msgid — 

  • ds上操作的消息的 Message-ID 头的值  — 

  • port上操作的数据源名称  — 客户端连接的服务器端口

  • oport — 请求的发起端口号

  • oproto — 请求的发起协议。这可以由代表用户发出 SOAP 请求的内部组件(例如 MTA)传递

下面的示例是一条记录,显示 2021 年 10 月 25 日午夜后 28 分钟,具有 IP 地址的 POP3 客户端222.173.186.17已联系 Zimbra 协作服务器,并且该请求已通过 IP 为10.1.1.136.

Mailbox Log Entry for POP

的本地代理服务器进行代理。 以下示例显示了由以下人员发送的失败IMAP STATUS请求的记录:user1@mydomain.com使用 AquaMail 移动应用程序。用户的设备有IP地址72.83.144.255(据报道oip场地)。请求通过 Zimbra Collaboration nginx 代理到达 IMAP 服务器,该代理具有 IP 地址10.4.4.138(如ipvia字段)。

Mailbox Log Entry for IMAP

以下示例显示 LMTP 服务器下发消息的记录。此日志消息中的 IP 地址很可能属于在本地网络上运行的 Zimbra Collaboration MTA。

Mailbox Log Entry for LMTP

下一个示例显示MailboxPurge邮箱中 ID 为 462 的test@mydomain.net线程清除消息记录。此日志消息没有ip, oip, portvia字段,因为它源自内部进程而不是外部请求。

Mailbox Log Entry for Purge

处理程序异常和堆栈跟踪

如果在活动进行期间发生错误,则会出现处理程序异常 添加到日志记录的末尾以通知您发生了事件 在进程执行期间扰乱了正常流程。 这个 表示检测到某种类型的错误。

示例 19. 处理程序异常
007-06-25 00:00:10,379 INFO [btpool0-1064] [name=nriers@example.com;mid=228;ip=10.2.3.4;ua=zimbra Desktop/0.38;] SoapEngine - handler exception

有时,异常通知后会显示堆栈跟踪。 一个 堆栈跟踪报告 Zimbra 的邮箱中的线程和监视器 服务。 此信息有助于调试,因为跟踪显示了位置 发生错误。 堆栈中的最后几个条目通常表示 问题的根源。 当描述符引起的包含在 日志行,这是错误的根源。 在下面的例子中,错误 是由 501、错误的地址语法引起的。

示例 20. 堆栈跟踪
com.example.cs.mailbox.MailServiceException: Invalid address: Jon R
at com.example.cs.mailbox.MailServiceException.internal_SEND_FAILURE (MailServiceException.java:412)
at com.example.cs.mailbox.MailServiceException.SEND_ABORTED_ADDRESS_FAILURE MailServiceException.java:416)
...
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

Caused by: com.example.cs.mailbox.MailSender$SafeSendFailedException: 501 Bad address syntax; chained exception is: com.sun.mail.smtp.SMTPAddressFailedException: 501 Bad address syntax
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1196)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)
at com.example.cs.mailbox.MailSender.sendMessage(MailSender.java:409)
at com.example.cs.mailbox.MailSender.sendMimeMessage(MailSender.java:262)
... 30 more
邮箱日志文件

mailbox.log文件每天轮换。 邮箱日志文件保存在 /opt/zimbra/log。 以前的mailbox.log文件名包含日期 文件已制作。 不带日期的日志是当前日志文件。 你可以 备份并删除这些文件。

邮件问题疑难解答

要查看mailbox.log是否有错误,请搜索电子邮件地址或 遇到问题的服务。 另外,搜索 WARN 或 ERROR 日志级别,阅读消息文本。 当您发现错误时,请查看 记录,追踪问题出现之前发生的事件 记录了。

系统崩溃

当您的系统崩溃时,找到启动消息,然后查找 启动消息日期之前的错误。 这个例子展示了一个 2021 年 6 月 17 日出现内存不足错误。

示例 21. 启动消息
2021-06-25 01:56:18,725 INFO [main] [] soap - Servlet SoapServlet starting up

在启动消息之前查找错误。

示例 22. 错误消息
2021-06-17 20:11:34,194 FATAL [btpool0-3335] [name=samd@example.com;aname=abcadmin@example.com;mid=142;ip=10.3.4.5;ua=zimbraConnectorForBES/5.0.207;] system - handler exception java.lang.OutOfMemoryError: PermGen space
邮件传递问题

找到“LmtpServer”服务。 此示例包含堆栈跟踪 带有的报告,原因是解释说收件人地址是 被拒绝,因为该地址必须是完全合格的地址。

示例 23. 邮件传递问题
2021-06-25 10:47:43,008 INFO [LmtpServer-250]
[name=bigen@example.com;mid=30;msgid=<1291804360.35481182793659172.JavaMail.root@example.com>;] lmtp - rejecting message bigen@example.com: exception occurred
com.zimbra.cs.mailbox.MailServiceException: redirect to too failed
at com.zimbra.cs.mailbox.MailServiceException.internal_SEND_FAILURE (MailServiceException.java:412)
at com.zimbra.cs.mailbox.MailServiceException.SEND_FAILURE(MailServiceException.java:424)
at com.zimbra.cs.filter.zimbraMailAdapter.executeActions(zimbraMailAdapter.java:286)
at org.apache.jsieve.SieveFactory.evaluate(SieveFactory.java:151)
at com.zimbra.cs.filter.RuleManager.applyRules(RuleManager.java:177)
at com.zimbra.cs.lmtpserver.zimbraLmtpBackend.deliverMessageToLocalMailboxes(zimbraLmtpBackend.java:325)
at com.zimbra.cs.lmtpserver.zimbraLmtpBackend.deliver(zimbraLmtpBackend.java:140)
at com.zimbra.cs.lmtpserver.LmtpHandler.doDATA(LmtpHandler.java:441)
at com.zimbra.cs.lmtpserver.LmtpHandler.processCommand(LmtpHandler.java:205)
at com.zimbra.cs.tcpserver.ProtocolHandler.processConnection(ProtocolHandler.java:231)
at com.zimbra.cs.tcpserver.ProtocolHandler.run(ProtocolHandler.java:198)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Thread.java:619)

Caused by:
com.zimbra.cs.mailbox.MailSender$SafeSendFailedException: 504 <too>: Recipient address rejected: need fully-qualified address ;
chained exception is: com.sun.mail.smtp.SMTPAddressFailedException: 504 <too>: Recipient address rejected: need fully-qualified address
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1196)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:120)
at com.zimbra.cs.filter.zimbraMailAdapter.executeActions(zimbraMailAdapter.java:281)
... 10 more
帐户错误 - 登录错误

mailbox.log记录来自 IMAP 的任何成功或不成功的登录尝试, POP3 或 ZWC。 当您查找登录错误时,首先查找 “授权。” 此示例显示来自 IP 地址 10.4.5.6 的某人 尝试在 Zimbra Classic Web 应用程序上使用 Firefox 以管理员身份登录 Windows 操作系统。 权限被拒绝,因为它不是管理员帐户。

示例 24. 帐户错误 - 登录错误
2021-06-25 09:16:11,483 INFO [btpool0-251] [ip=10.4.5.6;ua=zimbraWebClient - FFX.X (Win);] SoapEngine - handler exception
com.zimbra.common.service.ServiceException: permission denied: not an admin account
at com.zimbra.common.service.ServiceException.PERM_DENIED(ServiceException.java:205)
at com.zimbra.cs.service.admin.Auth.handle(Auth.java:103)

当您因 IMAP 或 POP 问题而查找日志时,请查找 “Imap服务器/Pop3服务器。”此示例显示致命的 IMAP 服务器错误 尝试连接siress@example.com 时发生.

示例 25. 帐户错误 - IMAP 错误
mailbox.log.2021-06-19:2021-06-19 15:33:56,832 FATAL [ImapServer-2444] [name=sires@example.com;ip=127.0.0.1;] system - Fatal error occurred while handling connection

读取邮件标头

每封电子邮件都包含一个标头,显示电子邮件的路径 它的出发地到目的地。 此信息用于跟踪消息的 消息出现问题时的路由。 Zimbra 电子邮件 可以从 Zimbra Classic Web App 消息视图中查看标头。 右键单击 在邮件上,然后选择显示原始.

以下行位于邮件标题中:

  • 日期 — 邮件发送的日期和时间。 当你指定时间时, 您可以通过添加搜索消息的开始和停止时间来指定范围。

  • 来自 — 发件人姓名和电子邮件地址

  •  — 收件人姓名和电子邮件地址。 表示 主要收件人。

  • 消息 ID — 用于跟踪邮件路由的唯一编号

  • In-Reply-To — 作为回复的消息的消息 ID。 习惯于 将相关消息链接在一起。

  • 已接收:来自 — 发送消息的名称和 IP 地址。的 标题显示已接收:从 MTA 到 LMTP 的信息以及 来自本地主机。

修复损坏的邮箱索引

邮件消息和附件会在邮件被发送之前自动索引 存入邮箱。 每个邮箱都有一个与其关联的索引文件。 从邮箱检索搜索结果需要此索引文件。

如果邮箱的索引文件损坏或被意外删除,您 可以从管理控制台重新索引邮箱中的邮件。

当帐户上的文本搜索可能会或可能不会失败并出现错误时 索引已损坏。 您不能指望用户报告失败的文本 搜索以确定索引已损坏。 您必须监控索引 记录有关损坏索引的消息。 如果服务器检测到损坏 索引,一条消息被记录到 Zimbra mail.log 的 WARN 日志记录中 水平。 该消息以开头,可能损坏索引。 当这个 显示消息时,管理员必须更正问题。 在许多 纠正问题的情况可能意味着重新索引邮箱。

重新索引邮箱内容可能需要一些时间,具体取决于邮箱数量 邮箱中的邮件数量。 用户仍然可以访问他们的邮箱 重建索引正在运行,但由于搜索无法返回结果 未编入索引的邮件,搜索可能无法找到所有结果。

检查索引损坏

使用zmprov verifyIndex命令对特定邮箱索引运行健全性检查。

zmprov verifyIndex <user@example.com>

如果检测到问题,则返回故障状态并且可以进行修复 对索引执行。

修复和重新索引损坏的索引

使用reIndexMailbox命令修复并重新索引损坏的索引。

zmprov reIndexMailbox <user@example.com> start

这将返回已启动状态.

SNMP 监控和配置

SNMP 监控工具

您可能需要实施服务器监控软件,以便 监控系统日志、CPU 和磁盘使用情况以及其他运行时信息。

Zimbra Collaboration 使用样本来观察系统日志输出以生成 SNMP 陷阱。

SNMP 配置

Zimbra Collaboration 包含具有 SNMP 监控功能的安装程序包。 该软件包应在每台服务器上运行(Zimbra Collaboration、OpenLDAP、 和 Postfix),它是 Zimbra Collaboration 配置的一部分。

唯一的 SNMP 配置是陷阱应发送到的目标主机 被发送。

生成 SNMP 陷阱的错误

当服务出现时,Zimbra Collaboration 错误消息会生成 SNMP 陷阱 已停止或已启动。 您可以使用第三方捕获这些消息 SNMP 监控软件并将选定的消息定向到寻呼机或其他设备 警报系统。

检查 MariaDB

MariaDB 数据库每周自动检查以验证运行状况 数据库的。 这项检查大约需要一个小时。 如果发现任何错误, 报告将发送至管理员帐户。 运行的报告名称 MariaDB 检查是zmbintegrityreport,并且 crontab 会自动执行 配置为每周运行一次此报告。

当检查 MariaDB 数据库时,运行此报告可能会消耗 大量的 I/O。 这应该不会出现问题,但是如果您 发现运行这个报告确实影响你的操作,你可以更改 zmbintegrityreport 运行的频率。 参见 Zimbra Crontab 作业.

检查 Zimbra 协作软件更新

安装 Zimbra Collaboration 后,Zimbra Collaboration 软件更新 实用程序会自动配置为检查最新的 Zimbra Collaboration 每天更新一次,如有更新,发送通知至 在管理控制台中配置的地址服务器 更新.

Zimbra Collaboration 检查更新的日期和时间将保存到 更新选项卡,并发送电子邮件通知,直到您更新 津布拉版本。 如果您不想收到电子邮件 更新通知,禁用更新时发送通知电子邮件 可用.

您可以配置以下内容:

  • 检查更新的服务器 — 仅列出可用服务器 配置一台服务器。 所选服务器检查更新并 来自 www.zimbra.com 的更新响应结果存储在 LDAP 中。

  • 每 x检查更新  — 默认为每天检查一次。 你 可以更改频率间隔以每 x 小时、分钟或 秒。 配置 cron 作业来检查新更新。 如果 频率间隔小于2小时,必须修改crontab文件。

  • 更新 URL — 此地址是服务器连接到的 URL 检查更新时。 当 Zimbra Collaboration 服务器检查 更新时,它将其版本、平台和内部版本号传输给 Zimbra。 通常情况下,此 URL 不会更改。

  • 要获得更新通知,请选中发送通知电子邮件 更新可用并输入发送地址和发送地址。 的 默认地址是管理员地址。

  • 创建通用电子邮件。 电子邮件的主题和内容可以是 改变了。

  • 当服务器轮询指定的 URL 时,将显示响应。

更新 Zimbra Connector for Microsoft Outlook

Zimbra Connector for Microsoft Outlook (ZCO) msi 文件可从以下位置获取 管理控制台上的 Zimbra 实用程序下载页面。 当一个 新版本的 ZCO 在新版本的 Zimbra 之前发布,您可以 从管理将较新的 ZCO msi 文件上传到 Zimbra 服务器 控制台。 文件已上传到 /opt/zimbra/jetty/webapps/zimbra/downloads文件夹。

管理控制台:

主页 → 工具和迁移 → 客户端上传

  1. 将新的 ZCO 文件下载到您可以访问的计算机客户端上传在管理控制台中

  2. 点击浏览找到要上传的 ZCO 文件。

  3. 重新启动 Zimbra:

    zmcontrol restart

    或运行

    /opt/zimbra/libexec/zmupdatedownload

downloads/index.html文件已更新为最新的 ZCO 客户端 版本。 这个新文件可以从 ZCO 链接下载 管理控制台主页 → 工具和迁移 → 下载页面。

如果不重启服务器,Zimbra上的ZCO下载链接 实用程序下载页面不选择下载较新的版本。

Zimbra 协作发送的通知和警报

服务状态更改通知

当服务停止或重新启动时发送此通知。

服务器启动通知消息
Subject: Service <service_name> started on <zimbra_host>

Service status change: <zimbra_host> <service> changed from stopped to running
服务器停止通知消息
Subject: Service <service_name> stopped on <zimbra_host>

Service status change: <zimbra_host> <service> changed from running to stopped
磁盘使用通知

当磁盘使用时,将向管理员帐户发送警告警报电子邮件通知 空间低。 默认是当阈值达到时发送警告警报 达到 85%,当阈值达到 95% 时发出严重警报

Subject: Disk <volume> at ##% on <zimbra_host>

Disk warning: <zimbra_host> <volume> on device <device_name> at ##%

重复的 mysqld 进程运行通知

执行脚本以查看 mysqld 进程是否正在运行以检测案例 哪里有可能引起腐败。 如果找到,则会生成一封电子邮件 超过 1 个 mysqld 进程正在运行。

Subject: ZCS: Duplicate mysqld processes detected!

PID:$pid PPID:$ppid PGRP:$pgrp

CMD: $cmdline

More then $maxcnt mysqld processes are running Parent processes
include: $procs This should be investigated immediately as it may lead to
database corruption

SSL 证书过期通知

报告于每月第一天运行并警告证书过期 未来 30 天。

Subject: ZCS: SSL Certificates approaching expiration!

The Administration Console and CLI Certificate Tools guide provides
instructions on how to replace you self-signed or commercial certificate.

https://www.zimbra.com.cn/index.php?title=Administration_Console_and_CLI_Certificate_Tools SSL Certificate expiration checked with $0 on <zimbra_host>.

每日报告通知

安装记录器包后,会自动生成每日邮件报告 安排在 crontab 中。 该报告每天发送至管理员 邮箱。

Subject: Daily mail report for <day>

<daily report data>

数据库完整性检查通知

可以通过运行 zmdbintegrityreport 检查 MariaDB 数据库 在 crontab 中自动安排每周运行。 一份报告 已发送至管理员邮箱。

Subject: Database Integrity check report for <zimbra_host>

Generating report can't run $cmd: $!

Database errors found.

$cmd --password=XXXXXXXX

<cmd output>

No errors found

command failed $!

备份完成通知

配置应运行的备份类型时,您可以设置接收有关备份会话结果的通知。

Subject: ZCS BackupReport:SUCCESS

Server: <server>

Type: incremental

Status: completed

Started: Fri, 2021/07/13 01:00:05.488 PDT

Ended: Fri, 2021/07/13 01:10:09.842 PDT

Redo log sequence range: 2 ..  2

Number of accounts: 500

存档和发现

Zimbra 存档和发现是一项可选功能,可实现 归档由 Zimbra Collaboration 传送或发送的消息,以及 跨邮箱搜索。

存档功能的安装提供了 Zimbra Collaboration 发现工具 (也称为跨邮箱搜索)并设置允许的属性 在 Zimbra MTA 上启用归档。

存档是按帐户配置的。每个帐户启用 归档需要 Zimbra 归档许可证。当启用存档时 一个帐户,来自或发送到该帐户的所有电子邮件的副本均在 MTA 和邮件副本被传送到预定义的存档 邮箱。归档过程对帐户用户是透明的。

Discovery 允许您跨实时和动态搜索电子邮件消息 归档邮箱并将结果复制到指定邮箱。

归档的工作原理

当用户发送或接收消息时,消息始终会被路由 通过 Postfix MTA。 Postfix MTA 允许集成以下软件 可以对正在传输的消息执行操作。当归档时 为消息的发送者或接收者启用 Zimbra 存档 与 MTA 挂钩和 Amavisd-New 实用程序集成以分叉副本 消息。

收件人或发件人是否启用了存档” 检查 位于 SMTP 标准信封上,而不是位于“发件人”或“收件人/抄送”标头上。自从 对信封、密件抄送副本和发送至的邮件进行检查 捕获通讯组列表。

示例 26. 在启用存档的情况下发送消息

例如,如果用户 A 向用户 B 发送消息,并且用户 B 启用归档后,MTA 会发送两封邮件 — 一封发送到用户 B 的邮箱 一封发送至用户 B 的存档邮箱。用户B收到的消息 邮箱看起来正常,如下例所示:

Received: from localhost (localhost.localdomain [127.0.0.1])…
From: userA@example.com
To:userB@example.com
Subject: New License Key
Message-ID: <015f01c717fe$70f042d1$b1d6f61d@thom>
Date: Mon, 04 Nov 2021 23:48:18 -0000

Hi B,

Can you send me the license key for the software again?

Thanks, A

用户 B 的存档邮箱中收到的邮件包含附加信息 X-Envelope-FromX-Envelope-To标头。这些标题显示 发送邮件的真实电子邮件地址以及每封电子邮件 消息发送到的地址。

Received: from localhost (localhost.localdomain [127.0.0.1])…
From: userA@example.com
To:userB@example.com
Subject: New License Key
Message-ID: <015f01c717fe$70f042d1$b1d6f61d@thom>
X-Envelope-From: userA@example.com
X-Envelope-To: userB@example.com
Date: Mon, 04 Nov 2021 23:48:18 -0000

Hi B,

Can you send me the license key for the software again?

Thanks, A

Zimbra 存档可以设置为创建存档帐户 在 Zimbra Collaboration 内维护或与第三方合作 使用 SMTP 转发将邮件发送给第三方的归档系统 存档服务器。对于第三方存档,Zimbra Collaboration 是 配置为充当转发代理。

发现的工作原理

归档和发现的发现功能用于跨区域搜索 实时*以及电子邮件和附件的存档邮箱。 的 可以从管理控制台运行发现工具并显示结果 复制到您指定的目标邮箱。

*实时邮箱是系统上除存档帐户之外的帐户 和系统帐户。

您可以按日期、发件人、收件人、抄送、主题搜索发出和收到的电子邮件 关键字和附件。您还可以创建查询以按名称搜索, 日期和时间范围、分发列表、别名。

搜索结果放置在目标邮箱中。您可以组织您的搜索 通过创建不同的目标邮箱或创建单独的 您运行的每次搜索的目标邮箱中的文件夹。 X-zimbra-源 标头信息添加到复制到的每个消息标头中 目标邮箱。该标题标签包含账户ID、账户 名称以及帐户所在的服务器。

登录目标邮箱即可看到搜索结果 地址。

安装归档包

您可以在现有的单服务器上安装归档包 部署或多服务器部署。

如果邮箱服务器和 MTA 服务器位于同一节点上,则您 将归档配置并启用为单个进程。如果您的邮箱和 MTA 服务器位于不同的节点上,zimbra-archive软件包已安装 首先在至少一个邮箱服务器上,然后归档组件是 在部署中的每个 MTA 上启用。

安装中zimbra-archiving在单服务器环境中

以下场景假设 LDAP、MTA、邮件存储和归档 服务器位于同一节点上。

  1. 请参阅 Zimbra Collaboration 单服务器安装指南 打开与 Zimbra 协作服务器的 SSH 连接。登录到 作为root服务器并运行./install.sh命令开始升级 过程。

  2. 接受许可协议并键入以运行升级。

  3. 类型对于zimbra-archiving当与软件包一起提供时 安装。

升级过程开始并安装存档包。在 至此,Discovery功能已安装并可以使用。

要启用存档,请切换到zimbra用户并启用存档 MTA 服务器。

zmprov ms <zmhostname> +zimbraServiceEnabled archiving

重新启动服务器。

zmcontrol restart

安装中zimbra-archiving在多服务器环境中

以下升级方案是添加专用于 Zimbra 协作环境的存档服务器。

在开始安装过程之前,请记录以下信息。 安装存档服务器时需要此信息。运行zmlocalconfig -s命令来查找信息。

LDAP Admin Password _____________________
LDAP Hostname       _____________________
LDAP Port           _____________________

请参阅 Zimbra Collaboration 中的多服务器安装章节 多服务器安装指南,了解安装的详细步骤 包。

  1. 打开与正在配置的邮箱服务器的 SSH 连接 归档。以root 身份登录到服务器并打开 Zimbra 的包装 软件。运行./install.sh命令开始安装过程。

  2. 输入y并按输入以安装以下软件包:

    • zimbra-store

    • zimbra-archiving

      默认情况下会安装zimbra-core软件包。

  3. 类型y并按输入来修改系统。

  4. 主菜单显示您使用的 Zimbra 组件的默认条目 正在安装。要展开菜单,请键入x并按Enter.

  5. 选择通用配置菜单并配置 LDAP 主机名, LDAP 密码和 LDAP 端口。

  6. 选择zimbra-store菜单并配置管理员密码和 许可证文件位置。

按照多服务器中的步骤完成安装过程 安装指南,位于“安装 Zimbra 邮箱服务器”下。

至此,Discovery 功能已安装并可以使用。

从管理控制台管理存档

安装存档后,您可以从以下位置设置存档并对其进行管理 管理控制台。

启用存档

管理控制台:

主页 → 配置 → 全局设置 → MTA, 从归档配置检查启用归档

从命令行重启 Zimbra

zmcontrol restart

创建专用存档 COS

您可以在 COS 中配置属性来设置邮箱功能、配额、 和密码,关闭垃圾邮件和病毒检查,并隐藏存档 来自 GAL 的帐户。

管理控制台:

主页 → 配置 → 服务等级,从Gear图标中选择New

  1. ChangeFeaturesPreferences(根据存档 COS 的要求)。

  2. 如果您有专用存档服务器,在“服务器池”页面中,取消选择 列表中的存档服务器。在多服务器部署中 专用归档服务器,该服务器应从 COS 服务器中删除 池,以便存档服务器不会随机分配给新帐户。

    从服务器池中删除服务器的这些步骤不是一次性完成的 单服务器部署。创建专用的归档 COS 是个好主意 因为这样可以轻松创建配置为的存档邮箱 一样。
  3. 如果需要,请修改高级页面上的选项。

  4. 存档页面中,选中启用存档框以进行此操作 COS 归档 cos。

  5. 如果您想更改存档的命名方案的格式 账户,修改两个模板字段。请参阅设置存档帐户名称 部分了解更多信息。

  6. 单击完成.

设置存档帐户名称

您使用属性来创建和管理存档的命名方案 账户。您可以通过 COS 或账户设置这些属性。 对于 COS,这些属性可以从管理控制台、COS 更改 或个人账户的存档页面。

  • 帐户日期模板。设置名称中使用的日期格式 模板。默认值为yyyyMMdd。将日期添加到帐户名称后 将旧数据从系统转移到备份更容易。

  • 账户名模板。设置存档邮箱名称的方式 创建的。默认值为${USER} ${DATE}@${DOMAIN}.archive.

存档帐户地址将类似于以下示例:

user-20210510@example.com.archive

如果更改默认值,则必须使用创建有效的语法 电子邮件地址。我们建议您将.archive添加到所有存档帐户 在不可路由的域中创建存档邮箱以防止欺骗 档案馆。

当模板基于zimbraArchiveAccountDateTemplate属性 已成立,amavisArchiveQuarantineAccount已更新为新模板 命名何时zmconfigarchive正在运行。

管理存档服务器

amavisd-new服务器进程控制帐户归档以及 防病毒和反垃圾邮件进程。zmarchivectl命令可用于 启动、停止、重新启动或获取amavisd-new服务器进程的状态 控制帐户归档。启动或启动时应注意 停止归档进程,因为它是之间的共享服务器进程 归档、防病毒和反垃圾邮件进程。对任何一个执行操作 它们会影响您可能启用的任何其他服务 部署。

如果您想禁用存档但不禁用防病毒或反垃圾邮件服务, 通过 CLI 或通过 管理控制台。

设置用户邮箱存档

有四个属性与帐户的存档功能相关。两个那个 配置一个邮箱和两个模板属性来构建存档 帐户名称。

要设置邮箱归档,需要在邮箱上配置两个属性 主要用户的邮箱。第一个属性启用存档,第二个属性启用存档 显示邮件的存档位置。

  • 目前存档至 — 当前存档地址。归档是为了 一个帐户。如果未设置,则不会启用存档。

  • 存档帐户 — 任何以前和当前的存档地址 该邮箱已存档到。包含所有已经被注册过的账户 为给定帐户存档。

存档邮箱

您可以创建带有或不带有指定 COS 的存档邮箱。 还可以将存档电子邮件转发给第三方。

启用存档的帐户将计入帐户数量 购买 Zimbra 许可证用于存档。 已列出存档邮箱 在管理控制台以及真实帐户中。去看 当前许可证信息,请转到管理控制台:
主页 → 配置 → 全局设置 → 许可证.

创建存档邮箱并分配 COS

存档帐户是基于 Zimbra 存档名称模板创建的。

  • 属性 — zimbraIsSystemResource —  已添加到存档中 帐户并设置为 TRUE。

  • 存档帐户显示在管理控制台中。

  • 当启用存档的邮箱收到邮件时,会生成一份邮件副本 该邮件将发送到存档邮箱。

zimbra身份登录,并使用zmarchiveconfig命令:

zmarchiveconfig enable <account@example.com> archive-cos <archive>

创建无 COS 或密码的存档邮箱

如果存档帐户未分配 COS,则以下设置为 默认设置。

  • 邮箱配额设置为0,无限配额。

  • 垃圾邮件和病毒检查已禁用。

  • 启用了在 GAL 中隐藏用户,因此存档帐户不会显示在 GAL

登录身份zimbra,并使用zmarchiveconfig命令:

zmarchiveconfig enable <user@example.com>

启用存档转发到第三方存档服务器

如果存档帐户不是在 Zimbra Collaboration 中维护, 您无需设置密码、COS 或其他属性。

zimbra身份登录,并使用zmarchiveconfig命令:

zmarchiveconfig enable <account@example.com> \
 archive-address account-archive@offsite.com \
 archive-create false

跨邮箱搜索

安装归档和发现功能后,您可以搜索 从管理控制台或通过 命令行界面。

您不需要将任何存档邮箱配置为跨域搜索 邮箱,但必须安装存档包。

您可以分配用户从管理运行邮箱搜索 通过创建具有访问权限的委派管理员来控制台 邮箱搜索工具。

从管理控制台跨邮箱搜索

发现工具搜索邮件已添加到工具和迁移上 添加归档包时的导航窗格。设置跨邮箱 搜索您配置以下信息。

管理控制台:

主页 → 工具和迁移 → 搜索邮件,来自齿轮图标选择新建

  • 服务器名称。要搜索的服务器名称。

  • 目标邮箱和文件夹。一个目标邮箱和文件夹是 自动创建。您可以使用此邮箱来获取所有搜索结果 并为每个搜索创建新文件夹,或者您可以创建新目标 每个单独搜索的邮箱。

    目标邮箱与任何其他邮箱一样,可以具有任何功能或 由 COS 或账户定义的首选项。目标邮箱是 在管理控制台帐户列表中列出。你可能想给予 将其标识为目标邮箱的目标邮箱帐户名称 用于跨邮箱搜索并配置特定于目标的 COS 邮箱能够管理访问。

  • 限制搜索返回的消息数。默认为 500 个结果。

  • 您可以选择在搜索时发送电子邮件通知 完成。电子邮件通知包括搜索任务 ID 和状态 主题行,您可以指定要包含的信息类型 消息,例如找到的消息数、地址列表 由搜索和所使用的搜索查询产生的结果。

  • 选择要搜索的邮箱。当您选中选择帐户进行 搜索时,您可以选择要搜索的帐户地址。

  • 创建搜索查询。您可以通过以下方式搜索发送和接收的电子邮件 日期、发件人、收件人、抄送、主题、关键字和附件。高级的还可以 用于快速创建查询以按名称、日期和时间范围进行搜索, 分发列表、别名。

    搜索存档邮件时,可以通过信封地址进行搜索 使用来自env 和envto查询语言扩展。

搜索运行时,“搜索邮箱内容”窗格会列出搜索和 状态。点击刷新以更新此页面。

搜索任务完成后删除,因为占用服务器 记忆。当服务器重新启动时,过去的搜索将被删除。

当您使用管理控制台中的发现功能时,该工具 在您创建的目标邮箱中复制邮件。消息 占用服务器空间,增加服务器的大小。你可能想要 当这些邮件不再存在时,将其从目标邮箱中删除 需要。

合法拦截功能会复制从目标帐户发送、接收或保存为草稿的电子邮件,并将这些邮件发送到指定的“影子”电子邮件地址。

Legal Intercept 可配置为发送消息的完整内容或仅发送标头信息。当目标帐户发送、接收或保存草稿邮件时,会自动创建拦截邮件,以将邮件副本作为附件转发到指定的电子邮件地址。

可以为服务等级或个人帐户配置合法拦截功能。 该功能是使用zmprov.

从 CLI 中配置的。设置合法拦截所需的唯一配置是在目标帐户或 COS 上启用该功能 — zimbraInterceptAddress — 。

您可以启用属性zimbraInterceptSendHeadersOnly以仅发送电子邮件的标题信息,而不是发送完整的邮件。

指定接收拦截消息的拦截地址。

  • 如果通过 COS 启用拦截:

    zmprov mc <cosname> zimbraInterceptAddress <account@intercept.example.com>
  • 如果为账户启用拦截:

    zmprov ma <accountname@example.com> zimbraInterceptAddress <account@intercept.example.com>

如果您要使用默认拦截消息模板和发件人地址 (postmaster@<yourdomain.com>`),则会设置合法拦截。

要转发标头信息,而不是帐户的完整邮件:

zmprov ma <accountname@example.com> zimbraInterceptSendHeadersOnly TRUE

修改拦截封面电子邮件

将自动创建电子邮件以将拦截的邮件的副本作为附件转发。 默认消息包括:

封面电子邮件消息可以修改。 使用以下参数修改电子邮件消息。

ACCOUNT_DOMAIN

被拦截的帐户的域。

账户地址

被拦截的地址

MESSAGE_SUBJECT

被拦截的消息的主题。

操作

用户正在执行的操作,“添加消息”、“发送消息”或“保存草稿”。

FOLDER_NAME

保存消息的文件夹的名称。

FOLDER_ID

保存消息的文件夹的 ID。

换行符

Used for formatting multi-line message bodies.

Use steps in this section to change the from-name, the subject line, or text in the message body:

  • To change the From name:

    zmprov ma <accountname@example.com> zimbraInterceptFrom '<newname@example.com>'
  • To change the text of the Subject line:

    zmprov ma <accountname@example.com> zimbraInterceptSubject \
     '<Intercepted message subject text> parameter <text> parameter'
  • 更改消息正文中的文本:

    zmprov ma <accountname@example.com> zimbraInterceptBody \
     '<Intercepted message text> parameter <text> parameter'
要通过 COS 进行修改,请键入zmprov mc {cosname} …​.

您可以使用 REST URL 格式为用户邮箱创建查询,以搜索特定类型的电子邮件和附件,并将这些邮件压缩并保存到您的计算机。 此zip文件可以转发给提出请求的执法机构。

电子邮件在主题行后显示为.eml文件名。 附件以交付时的格式保存。

创建邮箱快照zip文件

您必须登录 Zimbra 管理控制台才能创建zip文件。您一次为一个帐户创建一个查询。

  1. 在浏览器的管理控制台地址字段中,在端口号7071/后面键入:

    home/<username>?fmt=zip&query=<searchquerystring>

    例如:

    Address Bar

    在上面的示例中,搜索查询请求所有名为的帐户的zip文件user1.

    您可以使用 Zimbra 支持的任何搜索运算符进行搜索。 例如,您可以按文件夹 (in:folder_name)、按发件人姓名 (from:<someone>),并且您可以使用多个搜索词。 请参阅搜索提示 wiki 页面以获取关键字示例,https://www.zimbra.com.cn/wiki/Search_Tips.

  2. 输入或箭头以创建 zip。 将显示确认框,询问您是否要离开此页面。

  3. 单击确定.

  4. 选择要保存zip文件的位置。 此zip文件已准备好交付。

颜色和徽标管理

您可以更改 Zimbra Classic Web 应用程序主题的徽标和基色 无需定制单独的 Zimbra Collaboration 主题。 这个 可以从管理控制台或 CLI 完成。

更改 Zimbra Classic Web 应用程序上的主题颜色和徽标

本节讨论与经典 Web 应用程序相关的自定义。 有关与 Modern Web App 相关的自定义,请参阅自定义 Modern Web App

主题的基色,并且自定义徽标可以配置为全局设置或域设置。

  • 更改全局设置后,更改将应用​​到所有服务器上的主题。

  • 当域设置更改时,域上主题的基色和徽标也会更改。

如果主题基色或徽标的全局设置和域级别设置不相同,则显示该域的域值。

如果在多域 Zimbra Collaboration 环境中自定义徽标和基色,则必须将虚拟主机设置为基色:徽标属性根据浏览器发送的主机标头显示。
Zimbra Collaboration 包含各种主题。 其中一些主题(例如柠檬草、Hot Rod 和 Waves)已设计了图形或颜色代码,当您修改基础时这些图形或颜色代码不会改变 颜色。 您可能希望从用户的主题首选项选择中禁用这些主题。

自定义基本主题颜色

Zimbra Classic Web App 主题中的以下基本颜色可以更改:

  • 客户端中显示的主要背景颜色。 该颜色是页面的背景。 颜色的变体用于按钮、内容和窗格、选项卡和选择突出显示的背景颜色。 在下图中,背景颜色与徽标一起显示,背景颜色的变体显示在登录区域中。

  • 辅助颜色是工具栏使用的颜色。

  • 选择颜色是为所选项目(例如消息或概览窗格中的项目)显示的颜色。

  • 前景色是显示的文本颜色。 默认文本颜色为黑色。 文本颜色通常不需要更改。

您可以在全局或每个域中将该徽标替换为您公司的徽标。

要替换的图形

可以更改以下徽标文件。您的徽标必须与此处指定的尺寸相同,否则图像可能无法正确显示。 这些图形文件可以保存在另一台服务器上或保存在 Zimbra Collaboration 升级时不会被覆盖的目录中。

  • 显示在 Zimbra Classic Web App 和 Zimbra Collaboration 管理控制台的登录和启动屏幕上的公司徽标。 图形的尺寸必须恰好为 300 x 30。

  • 小公司徽标位于 Zimbra Classic Web App 应用程序和管理控制台的左上角。图形的尺寸必须恰好为 170 x 35。

  • 从公司徽标链接的公司网址。

图形未替换

高级搜索工具栏中显示的图标和 URL 浏览器地址字段中显示的favicon.ico目前无法更改。

在管理控制台上,全局设置和域设置包括一个主题页面,可配置该页面来自定义配色方案以及添加公司徽标和徽标 URL。 您上传要在 Zimbra Classic Web 应用程序和管理控制台页面上使用的公司徽标。

更改基本主题颜色

您可以从预定义颜色的弹出视图中选择颜色,也可以输入精确颜色匹配的六位十六进制颜色值来设置以下类别的主题颜色:

  • 前景,即文本颜色。

  • 背景,这是客户端中显示的主要背景颜色。

  • 次要颜色,用于窗格中的工具栏和选择标题的颜色。

  • 选择,是为选定项目(例如消息、右键单击或下拉菜单选择)显示的颜色。

更改主题设置需要刷新服务器主题缓存。 要刷新服务器,请转到主页 → 配置 → 服务器以获取服务器列表。 右键单击服务器并选择刷新缓存从弹出菜单中。

使用自定义主题颜色容器来设置主题类别的颜色:

管理控制台:

主页 → 配置 → 全局设置 → 主题
主页 → 配置 → 域 →→ 主题

  1. 单击要修改的主题类别旁边的字段,然后使用弹出的颜色选择器定义您选择的颜色。

    您可以直接单击颜色,或使用输入字段写入颜色的十六进制值。 无论哪种情况,您的选择都会显示在该字段中。 如果您选择退出颜色选择,请单击重置所有主题颜色以放弃您的设置。

  2. 离开此页面会导致查询保存设置。

    单击(保存)或(放弃您的设置)。

您可以从相应的主题页面将 Zimbra Collaboration 徽标替换为您公司的全局徽标或每个域的徽标。 您的徽标必须与中指定的尺寸相同要替换部分的图形,否则图像可能无法正确显示。 图形文件保存在另一台服务器上或 Zimbra Collaboration 升级时不会被覆盖的目录中。

当您配置自定义徽标时 主题部分全局设置 → 主题页面,所有字段位于 必须完成此部分才能正确显示图形。

显示在高级搜索工具栏中的 Zimlet 图标和 URL 浏览器地址字段中显示的 favicon.ico 不是 改变了。

使用自定义主题的徽标容器到徽标 伴随主题:

管理控制台:

主页 → 配置 → 全局设置 → 主题
主页 → 配置 → 域 →→ 主题

表 51. 徽标设置
选项 描述

主题徽标 URL

要从徽标链接的公司网址。

应用程序徽标横幅 主题的 URL

显示在登录和启动屏幕上的公司徽标 Zimbra 经典 Web 应用程序和管理控制台。图形的尺寸必须 正好是 450x100。

应用程序徽标横幅预览 (200x35)

Zimbra Classic Web App 应用程序左上角的公司徽标 和管理控制台。图形的尺寸必须是 正好 120x35。

登录徽标横幅主题 URL

登录徽标横幅预览 (440x60)

要更改 Zimbra Classic Web App 主题基色和徽标,请使用 zmprov 命令。 以下属性可以配置为 全局配置设置或作为域设置。 颜色值为 作为六位十六进制代码输入。

表 52. 颜色属性
属性 描述

zimbraSkinBackgroundColor

客户端中显示的主要背景颜色的十六进制颜色值。

zimbraSkinSecondaryColor

工具栏和选定选项卡的十六进制颜色值。

zimbraSkinSelectionColor

所选项目颜色的十六进制颜色值。

zimbraSkinForegroundColor

文本的十六进制颜色值。这通常不需要 更改为默认值黑色。

更改主题的基色

在开始之前,请确定六位十六进制基色值 对于您正在更改的各种元素。您将在以下位置使用这些 您的命令条目。

全局设置
zmprov modifyConfig <attribute-name> [“#HEX_6digit_colorcode”]
域设置
zmprov modifyDomain <domain> <attribute-name> [“#HEX_6digit_colorcode”]

修改域

本节中的示例演示如何更改为以下内容 基色:

  • 背景颜色 = 珊瑚色,#FF7F50

  • 次要颜色 = 绿松石色,#ADEAEA

  • 选择颜色 = 黄色,#FFFF00

    1. 指定肤色: 以以下身份登录zimbra用户并使用zmprov修改域:

      zmprov modifyDomain example.com \
       zimbraSkinBackgroundColor "#FF7F50" \
       zimbraSkinSecondaryColor "#ADEAEA" \
       zimbraSkinSelectionColor "#FFFF00"

      引号,"",是必需的,因此使用#符号不会 注释掉后面的文字。

    2. 使用 zmmailboxdctl 命令通过重新启动来应用更改 邮箱服务器进程:

      zmmailboxdctl restart

      重新加载经典 Web 应用程序,该域的 Zimbra Collaboration 主题应该 现在显示这些颜色。

添加您的徽标

您可以通过修改这些来添加公司徽标信息和 URL 徽标的以下属性:

表 53. 徽标设置
属性 说明

zimbraSkinLogoURL

您想要从徽标链接的公司 Web 地址。

zimbraSkinLogoLoginBanner

显示在登录名和启动画面上的公司徽标文件名 经典 Web 应用程序和 Zimbra Collaboration 管理控制台的屏幕。

zimbraSkinLogoAppBanner

经典 Web 应用程序和管理控制台左上角的图形的徽标图形文件名。

为域添加徽标

如果徽标文件保存在 Zimbra Collaboration 服务器中,则它们必须是 在/opt/zimbra/jetty/webapps/zimbra.

的子目录中 如果徽标托管在另一台计算机上,则在以下情况下输入完整的 URL 识别标志。

使用本节中的步骤更新显示在屏幕上的徽标 域名:

  1. 更改 URL 链接:

    zmprov modifyDomain example.com zimbraSkinLogoURL https://url.example.com/
  2. 修改徽标显示:

    要更改登录和启动屏幕中显示的徽标:

    mkdir /opt/zimbra/jetty/webapps/zimbra/logos/

    将徽标上传到该新文件夹并将文件权限更改为 Zimbra。 然后指定后面的路径/opt/zimbra/jetty/webapps/zimbra

    zmprov modifyDomain example.com zimbraSkinLogoLoginBanner /logos/loginlogo.png

    要更改 Zimbra Classic Web App 主页上显示的徽标:

    zmprov modifyDomain example.com zimbraSkinLogoAppBanner /logos/applogo.png
  3. 停止/启动服务器:

    zmmailboxdctl restart
目前不支持:Zimbra Classic Web 应用程序的徽标修改。

定制现代 Web 应用程序

本节仅适用于现代 Web 应用程序。

在本节中,我们将指导您自定义现代 Web 应用程序并部署您的自定义项。 我们将通过覆盖动态布局来解决定制问题。

查看您组织的品牌指南,了解在 Zimbra 的现代 Web 应用程序中使用的图标和颜色。

可以自定义的内容

作为一般规则,您可以在品牌框架内自定义以下内容:

  • 徽标

  • 各种小部件(如按钮、链接和选项卡)的颜色和边框

  • 文本字体、颜色和大小

  • 现代 Web 应用程序的基本外观

无法自定义的内容

现代 Web 应用程序用户界面的多个部分需要大量 Javascript 编码才能更改。自定义这些段超出了本文档的范围:

  • 更改某些内容(例如按钮)的行为

  • 应用程序选项卡的顺序

  • 工具栏按钮的顺序

  • 添加新的工具栏按钮

  • 将搜索位置添加到搜索工具栏

设置

在开始自定义现代 Web 应用程序之前,我们需要创建一个空的现代 Web 应用程序包。

您还应该具备以下知识和技能:

  • 熟悉 Linux 终端和命令的使用

  • 熟悉基本 HTML 和 CSS 概念及相关术语

  • 熟悉字体、字体大小和行高等术语

  • 熟悉徽标、图像、颜色代码和其他样式元素

  • 熟悉组织的品牌指南

创建空捆绑包

我们首先在本地创建一个空文件夹及其内容。 完成后,我们将文件夹复制到 Zimbra 服务器。

文件夹名称

命名文件夹是至关重要的第一步。

  • 保持文件夹名称与主机名相同,自定义会反映所有域以及这些域上的所有帐户。

  • 如果文件夹名称与域名相同,自定义显示在该域.

  • 上的所有帐户上。如果存在虚拟主机设置,则文件夹名称必须是您在其上配置虚拟主机的域名。

    例如,考虑一个名为example.com的域,它有一个虚拟主机mail.example.com;在这种情况下,您必须创建文件夹mail.example.com.

    查找主机名
    1. 使用ssh登录到您的 Zimbra 服务器。

    2. 切换到用户zimbra.

      su - zimbra
    3. 运行此命令以获取主机名。

      zmhostname
    查找域名
    1. 使用ssh登录到您的 Zimbra 服务器。

    2. 切换到用户zimbra.

      su - zimbra
    3. 运行此命令以获取域名。

      zmprov gad

对于本文档,我们将mail.example.com视为文件夹名称。

文件夹内容

该文件夹(在我们的例子中为mail.example.com)必须具有以下层次结构和内容。

使用mkdir创建新目录,使用touch创建新文件。
文件和文件夹层次结构
mail.example.com
   ├── config.json
   ├── index.css
   ├── palette.css
   ├── assets
   │   ├── favicon.ico
   │   ├── icon.png
   │   ├── icon.svg
   │   ├── login-page-background.png
   │   └── logo.svg
   └── pwa
        ├── manifest.json
        └── icons
              ├── icon_300x300.svg
              ├── ios
              │    ├── icon_16x16.png
              │    ├── icon_32x32.png
              │    ├── icon_57x57.png
              │    ├── icon_72x72.png
              │    ├── icon_114x114.png
              │    └── icon_180x180.png
              └── non-ios
                     ├── icon_16x16.png
                     ├── icon_32x32.png
                     ├── icon_36x36.png
                     ├── icon_48x48.png
                     ├── icon_72x72.png
                     ├── icon_96x96.png
                     ├── icon_144x144.png
                     ├── icon_150x150.png
                     ├── icon_192x192.png
                     ├── icon_256x256.png
                     └── icon_512x512.png

自定义徽标

Zimbra 的现代 Web 应用程序使用您组织的主要徽标,除非您指定辅助徽标。

  1. 将主徽标另存为logo.svg.

  2. 将次要徽标另存为secondarylogo.svg.

除了徽标之外,您还需要组织的徽章才能将其用作图标。

使用此标志创建多个图标 — 不同尺寸 — 。 请参阅下表了解文件名, 大小,以及目的地每个图标的。

图标文件名 图标大小(以像素为单位) 目标文件夹

favicon.ico

48x48

/mail.example.com/assets

icon.png

512x512

/mail.example.com/assets

icon.svg

不适用

/mail.example.com/assets

logo.svg

不适用

/mail.example.com/assets

secondarylogo.svg

不适用

/mail.example.com/assets

icon_16x16.png

16x16x

/mail.example.com/pwa/icons/ios

icon_32x32.png

32x32x

/mail.example.com/pwa/icons/ios

icon_57x57.png

57x57

/mail.example.com/pwa/icons/ios

icon_72x72.png

72x72

/mail.example.com/pwa/icons/ios

icon_114x114.png

114x114

/mail.example.com/pwa/icons/ios

icon_180x180.png

180x180

/mail.example.com/pwa/icons/ios

icon_16x16.png

16x16x

/mail.example.com/pwa/icons/non-ios

icon_32x32.png

32x32x

/mail.example.com/pwa/icons/non-ios

icon_36x36.png

36x36

/mail.example.com/pwa/icons/non-ios

icon_48x48.png

48x48

/mail.example.com/pwa/icons/non-ios

icon_72x72.png

72x72

/mail.example.com/pwa/icons/non-ios

icon_96x96.png

96x96

/mail.example.com/pwa/icons/non-ios

icon_144x144.png

144x144

/mail.example.com/pwa/icons/non-ios

icon_150x150.png

150x150

/mail.example.com/pwa/icons/non-ios

icon_192x192.png

192x192

/mail.example.com/pwa/icons/non-ios

icon_256x256.png

256x256

/mail.example.com/pwa/icons/non-ios

icon_512x512.png

512x512

/mail.example.com/pwa/icons/non-ios

可自定义分段

考虑下面的 Zimbra 现代 Web 应用程序屏幕截图。

labeled ss
图 2. 可自定义组件

这个带标签的屏幕截图显示了 Modern Web App 的可自定义部分。

  1. 标题

  2. 包含链接的导航栏

  3. 导航栏上的左侧链接

  4. 导航栏上的右侧链接

  5. 左侧边栏

  6. 右侧边栏

  7. 标题

标记为1, 2, 34的项目是文本和链接。 更改它们的说明位于自定义文本和链接.

部分。标记为5, 67的项目的颜色是可自定义的。 更改这些颜色和其他颜色的说明位于自定义颜色和尺寸.

  1. 示例 config.json复制并粘贴到mail.example.com/config.json

  2. 要更改标题文本(在1可自定义组件中标记为),请根据"title"编辑值示例 config.json.

  3. 替换文本津布拉以及您组织的名称("Example"在本例中)在整个应用程序中,更改“clientName”中的值示例 config.json.

  4. 要隐藏并删除忘记密码链接,请将"disableForgotPassword"设置为"true"示例 config.json.

  5. 中 要在导航栏中插入链接和超文本 (2),请在"left"(3示例 config.json"right"(4中的"nav"下编辑) 和.

    • ) 删除导航栏完全删除以下代码片段:

"nav":
  {
    .
    .
    .
  }
Sample config.json
{
    "title": "Example Mail",
    "version": "1",
    "clientName": "Example",
    "userHelpPath": "https://www.example.com/userguide/",
    "nav": {
        "left": [
            {
                "name": "Example Link 1",
                "href": "https://www.example.com/1"
            },
            {
                "name": "Example Link 2",
                "href": "https://www.example.com/2"
            }
        ],
        "right": [
            {
                "name": "Example Link 1",
                "href": "https://www.example.com/1"
            },
            {
                "name": "Example Link 2",
                "href": "https://www.example.com/2"
            }
        ]
    }
}

自定义颜色和大小

此部分处理字体、徽标和侧边栏的颜色和大小 — 以及其他内容。

Palette.css

此文件可帮助您创建在整个应用程序中使用的调色板。

  1. 导航至调色板生成器并输入十六进制代码对于小学, 次要第三次颜色。

  2. 指定与关联的颜色的十六进制代码成功, 信息性, 警告危险消息。

  3. 单击生成.

  4. 将出现带有颜色代码的现成样式模板。

  5. 点击复制.

  6. 粘贴生成的内容mail.example.com/palette.css.

索引.css

复制以下片段并粘贴按原样mail.example.com/index.css文件中。 更改值以更改现代 Web 应用程序向用户显示的各个方面。

:root {
     --sidebar-bg-color: var(--gray-lightest);
     --rightbar-bg-color: var(--gray-lightest);
     --line-height-base: 1.42857143;
     --link-color: var(--brand-primary-500);
     --link-hover-color: var(--brand-primary-800);
     --link-hover-decoration: underline;
     --logo-height: 32px;
     --logo-max-width: 200px;
     --header-bg: var(--gray-lightest);
     --header-fg: var(--gray-darker);
     --external-header-bg: var(--brand-tertiary-700);
     --external-header-fg: #FFFFFF;
}

使用的各种变量名称是不言自明的。 不过,下表提供了简要说明。 某些变量的编号请参见图可自定义组件.

表 54.index.css选项
参数 说明

--sidebar-bg-color (5)

更改列出电子邮件和联系人文件夹的窗格的背景颜色。

--rightbar-bg-color (6)

更改右侧边栏的背景颜色。

--line-height-base

更改基线行高,从而更改应用程序中各处的行高。

--link-color

更改链接颜色。

--link-hover-color

更改鼠标悬停时的链接颜色.

--link-hover-decoration

更改鼠标悬停时链接的行为方式(下划线、上划线或删除线).

--logo-height

更改徽标高度。该值不能超过 72px。

--logo-max-width

更改徽标的最大宽度。

--header-bg (7)

更改标题背景颜色。

--header-fg

更改标题的文本颜色。

--external-header-bg

更改导航栏的背景颜色。

--external-header-fg

更改导航栏的文本颜色。

index.css中而不是在palette.css中进行所有颜色自定义(覆盖),以避免调色板覆盖。

自定义 PWA

本节帮助自定义渐进式 Web 应用程序 (PWA) 的某些方面。 有关 PWA 的更多信息,请参阅什么是渐进式 Web 应用程序.

示例清单.json
{
    "icons": [
        {
            "src": "/pwa/icons/icon_300x300.svg",
            "sizes": "300x300",
            "type": "image/svg+xml"
        },
        {
            "src": "/pwa/icons/non-ios/icon_512x512.png",
            "sizes": "512x512",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/non-ios/icon_256x256.png",
            "sizes": "256x256",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/non-ios/icon_192x192.png",
            "sizes": "192x192",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/non-ios/icon_150x150.png",
            "sizes": "150x150",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/non-ios/icon_144x144.png",
            "sizes": "144x144",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/non-ios/icon_96x96.png",
            "sizes": "96x96",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/non-ios/icon_72x72.png",
            "sizes": "72x72",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/non-ios/icon_48x48.png",
            "sizes": "48x48",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/non-ios/icon_36x36.png",
            "sizes": "36x36",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/non-ios/icon_32x32.png",
            "sizes": "32x32",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/non-ios/icon_16x16.png",
            "sizes": "16x16",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/ios/icon_180x180.png",
            "sizes": "180x180",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/ios/icon_114x114.png",
            "sizes": "114x114",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/ios/icon_72x72.png",
            "sizes": "72x72",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/ios/icon_57x57.png",
            "sizes": "57x57",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/ios/icon_32x32.png",
            "sizes": "32x32",
            "type": "image/png"
        },
        {
            "src": "/pwa/icons/ios/icon_16x16.png",
            "sizes": "16x16",
            "type": "image/png"
        }
    ],
    "name": "Example Mail",
    "short_name": "Example Mail",
    "orientation": "portrait",
    "display": "standalone",
    "start_url": "/",
    "background_color": "#ffffff",
    "theme_color": "#e92d28"
}
  1. 复制并粘贴示例清单.jsonmail.example.com/pwa/manifest.json.

  2. mail.example.com的所有实例编辑为文件夹名称部分中确定的文件夹名称.

  3. 编辑"name""short_name"使其具有与"title"示例 config.json 中的相同的值.

    • "name"表示在移动应用程序列表中向用户显示的 Web 应用程序的名称。

    • "short_name"表示如果没有足够的空间显示"name".

  4. 时向用户显示的 Web 应用程序的名称"background_color"background-color设置为 __ZSEP_9f7__Palette.css.

  5. "theme_color"设置为与主要颜色相同的值调色板.css.

请勿更改"orientation", "display""start_url".

的值 自定义登录页面

本部分帮助您更改 Zimbra Modern Web App 登录页面向用户显示的方式。

在您开始登录(或ssh)Zimbra 服务器之前。

更改背景图像
  1. 将背景图像复制到

    /opt/zimbra/jetty_base/webapps/zimbra/img/
  2. 打开并编辑

    /opt/zimbra/jetty_base/webapps/zimbra/skins/_base/base3/skin.properties
  3. 找到条目LoginScreen.

  4. new-back-ground-image.png替换为刚刚复制的图像的文件名。

现代 Web 应用程序引用其使用的徽标:

/opt/zimbra/jetty_base/webapps/zimbra/img/new-logo.png

您必须使用您喜欢使用的徽标覆盖此文件。

要保留恢复默认徽标的规定,请重命名上述文件(将.old添加到文件名)。
  1. 将您组织的徽标重命名为new-logo.png.

  2. 将此文件复制到:

    /opt/zimbra/jetty_base/webapps/zimbra/img/

部署说明

  1. 导航到并打开mail.example.com文件夹。

  2. 编辑config.json以更改version。不要使用以前使用过的值。

    • 输入唯一的正数。

    • 每次自定义时都使用新值以反映用户的现代 Web 应用程序。

    • 将文本用引号引起来。

  3. 保存文件。

    __ZSEP_9f7__ 的所有实例均应替换为mail.example.com文件夹名称部分中确定的文件夹名称.
  4. mail.example.com复制到/opt/zimbra/jetty/webapps/zimbra/modern/clients/在 Zimbra 服务器上。

重新启动 Zimbra 邮箱服务器

要应用您所做的更改,请重新启动 Zimbra 的邮箱服务器。

  1. root.

  2. 身份登录 Zimbra 安装 切换到用户zimbra.

    su - zimbra
  3. 重新启动 Zimbra 的邮箱服务器。

    zmmailboxdctl restart
  4. 刷新 Zimbra 的 Modern Web App 登录页面以查看更改

如果更改未出现,您可能需要清除缓存。

存储管理

存储管理 (SM) 功能是您为主、辅助数据存储和索引配置存储卷的地方。 SM 支持以下提供商的本地和外部存储(Amazon S3、Ceph、EMC、Netapp StorageGrid、Scality、OpenIO)。 SM 通过调度程序还提供了根据调度时间的年龄将旧数据从主要较高成本存储移动到辅助较低成本存储的能力。在大多数情况下,最终用户在访问外部存储上存储的数据时不会遇到任何性能差异。

存储管理可以在全局和服务器级别的管理员 UI 中进行管理,也可以通过命令行进行管理。

统一存储

从 Daffodil 10.0.5 补丁开始,已添加对统一存储的支持存储管理模块。

统一存储旨在通过将来自多个邮箱服务器的数据整合到单个 S3 存储桶的同一目录结构下来简化数据管理。这种方法简化了存储、增强了可访问性并降低了操作复杂性。

统一存储功能适合您,如果:

  1. 您的环境是具有超过 1 个邮箱服务器的多服务器环境。

  2. 您的组织拥有大量数据存储和访问需求,可以从集中式、可扩展的方法中受益。

结构

在以下示例中,邮箱服务器的 -Mailbox-1、Mailbox-2、Mailbox-3使用外部存储上的相同存储桶。用户——d8bd3037-38d0-4c45-ade4-a6866f2912bd、91fee523-4841-400f-9dc9-0d1e41f4c61b 和 a8bd3037-4841-400f-ade4-bf1e41f4c61h无论帐户托管在哪个邮箱服务器上,都使用相同的目录结构。

|-- Mailbox-1
|-- Mailbox-2
|-- Mailbox-3
\
 |-- /BucketName/DestinationPath/Prefix/
  \
   |-- d8bd3037-38d0-4c45-ade4-a6866f2912bd
    \
     |-- D3S78JHDD8BD303738D04C45ADE4A6866F2912BD000001BD
     |-- AD87H7YD8BD303738D04C45ADE4A6866F2912BD000001BD
   |-- 91fee523-4841-400f-9dc9-0d1e41f4c61b
    \
     |-- 5D5D494CD8BD303738D04C45ADE4A6866F2912BD000001BD
     |-- 2BF41B87D8BD303738D04C45ADE4A6866F2912BD000001BD
     |-- 1CC67854D8BD303738D04C45ADE4A6866F2912BD000001BD
     |-- 90AA2503D8BD303738D04C45ADE4A6866F2912BD000001BD
     |-- 73AC6101D8BD303738D04C45ADE4A6866F2912BD000001BD
   |-- a8bd3037-4841-400f-ade4-bf1e41f4c61h
    \
     |-- F3545DA7D8BD303738D04C45ADE4A6866F2912BD000001BD
     |-- DB88EE7BD8BD303738D04C45ADE4A6866F2912BD000001BD
     |-- 4CC67854D8BD303738D04C45ADE4A6866F2912BD000001BD
     |-- 2D5D494CD8BD303738D04C45ADE4A6866F2912BD000001BD
     |-- 1D5D494CD8BD303738D04C45ADE4A6866F2912BD000001BD
     |-- 3CC67854D8BD303738D04C45ADE4A6866F2912BD000001BD

使用统一存储

的优点 以下是使用统一存储的一些优点:

  • 邮箱移动:由于来自多个邮箱服务器的数据存储在单个 S3 存储桶中,因此可以更轻松地将用户邮箱从一台服务器移动到另一台服务器,而无需移动 S3 中存储的数据。

  • 简化数据管理:统一存储无需管理邮箱服务器的多个存储位置。所有数据都整合到单个 S3 存储桶中,使其更易于管理和维护。

  • 可扩展性:统一的方法可以随着组织的发展更轻松地进行扩展,从而降低数据扩展的复杂性。

使用统一存储

  • 的限制 仅支持 S3 提供商:统一存储仅在 S3 提供商上受支持。

  • 消息重复:当数据移动到外部 S3 时,消息重复会丢失且不受支持。

如何设置统一存储

可以通过管理员 UI 或 CLI 创建基于统一存储的卷。

为了优化该功能的利用率,在使用 S3 创建外部卷时,必须确保在所有邮箱服务器上一致设置相同的卷路径(相同的volumePrefix)。

管理员 UI

通过创建卷时主页 → 配置 → 服务器 → 存储管理 → 管理卷 → 添加,选择统一存储复选框,这将启用统一存储功能。

请参阅外部存储类型部分,了解通过管理员 UI 创建卷的详细步骤。

CLI

选项--unified-un可以与zmvolume命令一起使用以启用统一存储功能。

请参阅S3 外部卷有关通过 CLI

卷管理创建 S3 卷的详细步骤部分

在服务器的存储管理页面上,您可以管理每个 Zimbra 上的存储卷 邮箱服务器:

Home → Configure → Server → Storage Management

安装 Zimbra Collaboration Server 时,会在每台邮箱服务器上配置 1 个索引卷和 1 个消息卷。

  • 索引卷为 /opt/zimbra/index

  • 消息卷为 /opt/zimbra/store

存储管理位置中,您可以添加新卷、设置卷类型并设置压缩阈值。

指数成交量

每台 Zimbra 邮箱服务器都配置有一个当前索引卷。 每个邮箱都被分配到当前索引卷上的永久目录。创建账户时,会自动为该账户定义当前的索引量。您无法更改为帐户分配的索引卷。

当卷已满时,您可以为新帐户创建新的当前索引卷。您可以添加新卷、设置卷类型并设置压缩阈值。

未标记为当前的索引卷仍在积极使用中 分配给他们的帐户。由 a 引用的任何索引卷 邮箱,因为其索引卷无法删除。

消息卷

当一条新消息下发或创建时,该消息会保存在 当前消息量。可以创建消息卷,但只能创建一个 配置为存储新消息的当前卷。当 音量已满,您可以配置新的当前消息音量。的 当前消息量接收所有新消息。新消息永远不会 存储在上一卷中。

当前卷无法删除,并且消息卷具有 无法删除引用该卷的消息。

管理控制台:存储管理页面

存储管理页面包含五个部分:

  • 管理卷部分显示所有配置并允许管理员创建、编辑和删除卷。

    • 卷名称是分配给每个卷的名称。初始卷名为index1 和message1。

    • 卷根路径是文件系统中存储卷数据的位置。

    • 卷类型定义创建卷时设置的卷类型。 可以设置为索引,主索引或辅助索引,一旦设置就无法更改。

    • 压缩 Blob选中此框时,将压缩其大小的消息 Blob 高于压缩阈值时进行压缩。如果 blob 压缩 打开后,使用的磁盘空间会减少。 注意:打开 blob 压缩还会增加服务器的内存要求。

    • 压缩阈值。大于阈值的消息是 压缩的。默认阈值为 4096 字节。

    • 当前定义当前使用复选标记将哪个卷设置为默认值。

  • 分配当前卷部分是您将设置当前用于主消息、辅助消息或索引卷的卷的位置。

    • 当前主消息卷当前主卷名称。 新消息保存在当前消息卷中。

    • 当前辅助消息量当前辅助消息 卷名称。较旧的数据存储在辅助消息卷上。

    • 当前指数量。当前索引卷名称。作为卷 变满后,您可以为新帐户创建新的当前索引卷

  • 存储管理策略部分:

    • SM 会话计划使管理员能够启用和安排 SM 策略每天发生的时间。

    • 管理 SM 会话使管理员能够手动执行存储管理策略。

  • 要移动的项目部分定义了用于管理数据从主存储迁移到辅助存储时的 SM 策略。 SM 策略可以在全局或每个邮箱服务器上设置。

    • 要移动的物品类型。您可以选择消息、任务、 约会、联系人和公文包项目从主要移动 音量到当前辅助音量。

如果您使用外部存储提供商作为辅助存储,请排除策略中的文档在移至外部存储后出现乱码。
  • 移动早于的项目。默认的全局SM策略是移动 辅助卷中超过 30 天的消息和文件。的 可以通过天数、月数、 周、小时或分钟。

  • 策略字符串。您可以使用搜索查询语言来设置其他 SM政策。例如,如果您希望将所有邮件标记为垃圾邮件 包含在移动到当前辅助卷的邮件中,您将 将以下内容添加到策略中:message:in:junk before:-[x] 天.

卷类型

Zimbra 提供两种类型的卷,可以配置和链接以进行数据存储。

  1. 内部

  2. 外部

内部存储类型

内部存储类型是位于 zimbra 服务器上的存储。

要添加内部存储卷,请按照以下步骤操作:

  1. 转到主页 → 配置 → 服务器 → 存储管理

  2. 滚动到管理卷,然后单击添加按钮。

  3. 选择卷作为内部。单击下一步.

  4. 选择适当的卷类型即主要、辅助或索引。

  5. 输入卷名称卷根路径.

  6. 如果要压缩 Blob,请选中压缩 Blob并设置压缩阈值.

  7. 使用自定义存储管理器是可选字段。不要点击如果您想使用默认的 zimbra 商店管理器,请启用复选框。

  8. 压缩 Blob:选中此框时,将压缩大小高于压缩阈值的消息 Blob。如果启用 blob 压缩,则使用的磁盘空间会减少。

    打开 blob 压缩将增加服务器的内存要求。
  9. 压缩阈值:超过定义阈值的消息将被压缩。默认阈值为 4096 字节。

  10. 单击完成.

外部存储类型

外部存储类型是可在本地访问但从邮箱服务器外部托管的存储。目前 Zimbra 支持以下提供商:

  1. 亚马逊S3。

  2. 头孢。

  3. 自定义 S3 - 用于创建任何不受支持的外部存储的选项。

  4. EMC。

  5. NetApp 存储网格。

  6. OpenIO。

  7. 规模。

Amazon S3

以下是添加 Amazon S3 存储的步骤:

  1. 转至主页 → 配置 → 服务器.

  2. 选择服务器,右键单击并选择编辑.

  3. 转至存储管理 → 管理卷页面,然后单击添加按钮。

  4. 选择提供商亚马逊 S3。单击下一步.

  5. 选择卷类型。即小学或中学。

    外部存储上不支持索引卷。
  6. 输入卷名称, 卷前缀.

  7. 添加S3 兼容存储桶。单击创建新存储桶.

    1. 输入存储桶名称、访问密钥、秘密、目标路径和 URL

      使用访问密钥 ID 和密钥访问 AWS 服务。这些可以通过 AWS 管理控制台获得。
    2. 选择适当的区域并单击下一步.

      必须正确填写以上所有字段才能验证存储桶。这接下来按钮将被禁用,直到所有凭据都正确输入。单击Next按钮后,将验证存储桶凭据。如果凭据遇到任何错误,将会显示错误。
    3. 验证成功后将创建存储桶。

  8. S3 兼容存储桶下拉列表中选择创建的存储桶。

  9. 使用自定义商店管理器是可选字段。不要点击如果您想使用默认的 zimbra 商店管理器,请启用复选框。

  10. 选中该复选框以启用不频繁访问。输入不频繁访问的阈值。您也可以选择复选框来启用智能分层。

    不频繁访问:S3 标准-IA 适用于访问频率较低但需要在需要时快速访问的数据。

    不频繁访问阈值:该阈值用于设置大于此存储类别的不频繁访问阈值的任何文件。

    智能分层:这将在该卷的所有文件上设置适当的智能分层标志。

    Amazon S3 官方文档不频繁访问智能 分层.
    要在此卷上启用统一存储支持,请选中统一存储复选框。
  11. 单击完成添加Amazon S3存储类型。

注意:

Ceph

以下是添加 Ceph 存储的步骤:

  1. 转到Home → 配置 → 服务器.

  2. 选择服务器,右键单击并选择编辑.

  3. 转至存储管理 → 管理卷页面,然后单击添加按钮。

  4. 选择提供商Ceph。单击下一步.

  5. 选择卷类型。即主要或次要

  6. 输入卷名称, 卷前缀.

  7. 用于添加S3 兼容存储桶。单击创建新存储桶.

    1. 输入存储桶名称、访问密钥、秘密、目标路径和 URL

    2. 单击下一步.

    3. 验证成功后,将创建存储桶。

  8. S3 兼容存储桶下拉列表中选择创建的存储桶。

  9. 使用自定义商店管理器是可选字段。不要单击启用如果您想使用默认的 zimbra 商店管理器,请选中该复选框。

    要在此卷上启用统一存储支持,请选中统一存储复选框。
  10. 单击完成添加Ceph贮存。

自定义 S3

以下是添加自定义 S3 存储的步骤:

  1. 转到主页 → 配置 → 服务器.

  2. 选择服务器,右键单击并选择编辑.

  3. 转到存储管理→ 管理卷页面并单击添加按钮。

  4. 选择提供商自定义 S3。单击下一步.

  5. 选择卷类型。即小学或中学

  6. 输入卷名称, 卷前缀.

  7. 用于添加S3 兼容存储桶。单击创建新存储桶.

    1. 输入存储桶名称、访问密钥、秘密、目标路径和 URL

    2. 单击下一步.

    3. 验证成功后将创建存储桶。

  8. S3 兼容存储桶下拉列表中选择创建的存储桶。

  9. 使用自定义商店管理器是可选字段。如果您想使用默认的 zimbra 商店管理器,请勿单击启用复选框。

    启用统一存储要在此卷上支持,请选中统一存储复选框。
  10. 单击完成以添加自定义 S3存储。

EMC

以下是添加 EMC 存储的步骤:

  1. 转至主页 → 配置 → 服务器.

  2. 选择服务器,右键单击并选择编辑.

  3. 转至存储管理 → 管理卷页面,然后单击添加按钮。

  4. 选择提供商EMC。单击下一步.

  5. 选择卷类型。即主要或次要

  6. 输入卷名称, 卷前缀.

  7. 用于添加S3 兼容存储桶。单击创建新存储桶.

    1. 输入存储桶名称、访问密钥、秘密、目标路径和 URL

    2. 单击下一步.

    3. 验证成功后,将创建存储桶。

  8. S3 兼容存储桶中选择创建的存储桶下拉菜单。

  9. 使用自定义商店管理器是可选字段。如果您想使用默认的 zimbra 商店管理器,请勿单击启用复选框。

    要在此卷上启用统一存储支持,请选中统一存储复选框。
  10. 单击完成以添加EMC存储。

NetApp StorageGrid

以下是添加 NetApp StorageGrid 的步骤:

  1. 转到主页 → 配置 → 服务器.

  2. 选择服务器,右键单击并选择编辑.

  3. 转到存储管理 → 管理卷页面,然后单击添加按钮。

  4. 选择提供商NetApp StorageGrid。单击下一步.

  5. 选择卷类型。即主要或次要

  6. 输入卷名称, 卷前缀.

  7. 用于添加S3 兼容存储桶。单击创建新存储桶.

    1. 输入存储桶名称、访问密钥、密码、目标路径和 URL

    2. 单击下一步.

    3. 验证成功后,将创建存储桶。

  8. S3 兼容存储桶下拉列表中选择创建的存储桶。

  9. 使用自定义商店管理器是可选字段。不要点击如果您想使用默认的 zimbra 商店管理器,请启用复选框。

    要在此卷上启用统一存储支持,请选中统一存储复选框。
  10. 单击完成添加NetApp StorageGrid存储。

开放IO
统一存储OpenIO 提供商不支持。

以下是添加 OpenIO 存储的步骤:

  1. 转到主页 → 配置 → 服务器.

  2. 选择服务器,右键单击并选择编辑.

  3. 转至存储管理 → 管理卷页面,然后单击添加按钮。

  4. 选择卷类型为OpenIO。单击下一步.

  5. 选择卷类型。即主要或次要

  6. 输入卷名称、URL、帐户、命名空间、代理端口和帐户端口.

  7. 使用自定义存储管理器是可选字段。如果您想使用默认的 zimbra 商店管理器,请勿单击启用复选框。

  8. 单击完成添加OpenIO存储。

Scality

以下是添加 Scality 存储的步骤:

  1. 转到主页 → 配置 → 服务器.

  2. 选择服务器,右键单击并选择编辑.

  3. 转到存储管理 → 管理卷页面,然后单击添加按钮。

  4. 选择提供商规模。单击下一步.

  5. 选择卷类型。即主要或次要

  6. 输入卷名称, 卷前缀.

  7. 用于添加S3 兼容存储桶。单击创建新存储桶.

    1. 输入存储桶名称、访问密钥、秘密、目标路径和 URL

    2. 单击下一步.

    3. 验证成功后将创建存储桶。

  8. S3 兼容存储桶下拉列表中选择创建的存储桶。

  9. 使用自定义商店管理器是可选字段。如果您想使用默认的 zimbra 商店管理器,请勿单击启用复选框。

    要在此卷上启用统一存储支持,请选中统一存储复选框。
  10. 单击完成以添加Scality存储。

如何将卷分配为辅助卷

在分配 SM 卷之前,该卷必须存在。请参考将新存储卷添加到服务器了解有关添加卷的概述。 创建卷后,请按照以下步骤操作:

  1. 转到主页 → 配置 → 服务器 → 存储管理

  2. 滚动到分配当前卷部分

  3. 单击下拉列表当前辅助消息卷并选择适当的卷。

  4. 单击保存.

  5. 所选卷现已配置为辅助消息卷。

新卷设置为辅助消息卷后,消息将根据 SM 策略移动到辅助存储卷。

向服务器添加新存储卷

每个 Zimbra 邮箱服务器都配置有一个主邮件卷和一个索引卷。参考卷管理部分了解更多详细信息。此外,Zimbra 数据存储配置允许创建新的主存储、辅助存储和索引存储。

要访问卷页面,请按照以下步骤操作。

  1. 转至主页 → 配置 → 服务器 → 存储管理

  2. 默认情况下,已配置索引卷和主数据卷。

存储管理策略

存储管理策略是将旧数据移动到辅助存储设备的过程。要管理您的电子邮件存储资源,您可以实施 SM 策略,该策略定义移动哪些项目以及应在什么时间移动它们。根据消息的期限,将消息和附件从主卷移动到当前辅助卷。这些消息仍然可以访问。用户不会意识到任何更改,并且在打开已移动的旧项目时不会看到任何明显的差异。

您可以在全局或服务器级别实施 SM 策略。

Home → Configure → Global Settings → Storage Management
Home → Configure → Sever → Storage Management

在各个服务器中配置的策略会覆盖全局策略。

默认全局 SM 策略将邮件和公文包文件(自收到之日起超过 30 天)移动到辅助卷。此外,您还可以手动移动任务、约会、联系人和注释。

您可以将 30 天期限政策更改为特定期限(月、周、小时或分钟)。

设置或编辑 SM 策略

在全局或服务器级别的存储管理窗口中,滚动到要移动的项目并通过以下方式编辑或创建新规则:

  1. 选择现有规则,然后单击编辑或单击添加.

  2. 选择或修改您想要分配的策略。

  3. 单击保存

以下是创建或编辑策略规则时可以配置的规则。

选项 说明

要移动的项目类型

默认为移动邮件公文包文件,但您可以选择其他项目

选项

如果要将项目包含在垃圾邮件和废纸篓文件夹中,请选中该框。

移动早于

的项目 选择移动旧项目的时间范围。

策略字符串

这显示您已配置的策略字符串。

删除现有策略

删除现有策略将从未来运行的 SM 会话中删除该规则。

  1. 要删除现有策略,请选择要删除的策略。

  2. 单击删除按钮。

  3. 选择.

如果意外删除规则,重新创建的规则将应用于下一个 SM 会话中定义配置内的所有数据。 如果手动启动 SM 会话,请注意可能会出现更高的服务器和 IO 负载。

存储管理 CLI 实用程序

使用以下命令管理全局 S3 配置zms3configCLI

zms3config是用于管理可在邮件存储节点之间共享的全局 S3 存储桶的 CLI 实用程序。存储桶配置可以从任何节点创建,并且可以跨节点使用。

可以从管理控制台删除全局 S3 存储桶:主页 → 配置 → 全局设置 → 存储管理.

以下是 S3 全局配置的一些重要方面:

  • 存储桶名称在提供程序中应该是唯一的。

  • 相同的存储桶可用于多个卷,只需为每个卷遵循不同的路径(检查zmvolume命令中的卷前缀选项)。

  • 支持以下提供商:Amazon AWS、Ceph、Custom S3、EMC、NetApp-StorageGrid、OpenIO 和 Scality

语法:
zms3config {-a | -d | -l | -h} <options>
选项
操作 长名称 短名称 说明

显示帮助

--help

-h

显示帮助

添加新的 S3 配置

--add

-a

使用更多选项创建新的 S3 存储桶。

--storeProvider

-t

要添加的存储提供程序s3BucketConfig,有效值为:AWS_S3、CEPH_S3、CUSTOM_S3、EMC_S3、STORAGE_GRID_S3、SCALITY_S3.

--bucketName

-bn

存储桶名称

--accessKey

-ak

访问密钥

--secretKey

-sk

密钥

--destPath

-dp

目标路径,S3 存储桶中存储卷数据的根路径。

--region

-r

S3 存储桶区域

--url

-url

S3 存储桶的端点 URL

删除 S3 存储桶

--delete

-d

删除 S3 存储桶

--bucketID

-bid

Bucket的Id,用于删除S3 Bucket。

列出存储桶

--list

-l

列出所有存储桶

添加 S3 配置
  • 要创建具有长选项名称的 AWS 存储桶配置,请使用命令:

    zms3config --add --storeProvider AWS_S3 --bucketName <bucket_name> --accessKey <secret_key> --destPath <destination_path> --region <valid_aws_region> --url <aws_valid_endpoint_url>
  • 要创建具有短选项名称的 Ceph 存储桶配置,请使用命令:

    zms3config -a -t CEPH_S3 -bn <bucket_name> -ak <secret_key> -dp <destination_path> --url <valid_endpoint_url>
  • 要创建具有短选项名称的自定义 S3 存储桶配置,请使用命令:

    zms3config -a -t CUSTOM_S3 -bn <bucket_name> -ak <secret_key> -dp <destination_path> --url <valid_endpoint_url>
  • 要创建具有短选项名称的 EMC 存储桶配置,请使用命令:

    zms3config -a -t EMC_S3 -bn <bucket_name> -ak <secret_key> -dp <destination_path> --url <valid_endpoint_url>
  • 要创建具有短选项名称的 StorageGrid 存储桶配置,请使用命令:

    zms3config -a -t STORAGE_GRID_S3 -bn <bucket_name> -ak <secret_key> -dp <destination_path> --url <valid_endpoint_url>
  • 要创建具有短选项名称的 Scality 存储桶配置,请使用以下命令:

    zms3config -a -t SCALITY_S3 -bn <bucket_name> -ak <secret_key> -dp <destination_path> --url <valid_endpoint_url>
列出 S3 存储桶配置

列出在设置中配置的所有 S3 存储桶。

zms3config -l
删除 S3 配置
执行此操作时要小心,因为存储桶是在全局级别使用的,并且可以在跨节点的多个卷中引用。
zms3config -d -bid <bucket_unique_id>

使用zmvolumeCLI 管理内部和外部卷

zmvolume命令用于创建、编辑和删除存储卷。它支持创建内部的外部卷。内部卷是位于服务器目录上的默认存储,而外部卷使用外部存储提供商提供的 S3 存储桶/OpenIO 设置。

句法:
zmvolume {-a|-d|-l|-e|-dc|-sc} [options]
描述
操作 长名称 短名称 描述

添加新卷

--add

-a

添加卷。

--account

-acc

<arg> OpenIO 卷的帐户名称。

--accountPort

-ap

<arg> OpenIO 卷的帐户端口。它应该是一个数值。

--bucketId

-bid

<arg> S3 存储桶 ID。请注意,应全局创建存储桶,并使用zms3config.

--compress

-c

<arg> 压缩 BLOB 值为 true 或 false 来获取。默认值为 false。

--compressionThreshold

-ct

<arg> 压缩阈值。默认值为 4KB。

--名称

-n

<arg> 卷名称。它只能包含字母数字字符、_(下划线)、-(连字符)和 。 (句号),但可以以字母或数字开头。

--nameSpace

-ns

<arg> OpenIO 卷的命名空间。

--path

-p

<arg> 根路径。

--proxyPort

-pp

<arg> OpenIO Volume 的代理端口 http://port.it[.] 它应该是一个数值。

--storageType

-stp

<arg> 存储提供程序的名称(S3、OPENIO)

--storeType

-st

<arg> 存储类型:内部或外部

--storeManagerClass

-smc

<arg> 用于指定非默认存储管理器类路径的可选参数。仅适用于 S3 提供程序。

--类型

-t

<arg> 卷类型(primaryMessage、 secondaryMessage 或索引)

--url

-url

<arg> OpenIO 卷的端点 URL。

--useIntelligentTiering

-uit

<arg> 仅对 AWS 使用智能分层存储类。默认值为 false。

--useInFrequentAccess

-ufa

<arg> 仅对 AWS 使用不频繁访问存储类。

--useInFrequentAccThreshold

-ufat

<arg> 使用不频繁访问存储类 Blob 大小阈值。默认值为 64KB。

--volumePrefix

-vp

<arg> 卷前缀。必须以“/”开头,不能包含除“-”和“/”之外的其他特殊字符。

--unified

-un

<arg> 用于启用卷的统一存储支持的参数。如果未指定,则默认值为 false。

删除卷

--delete

-d

删除卷。还提供卷 ID。

--id

-id

<arg> 卷 ID。

显示当前音量

--displayCurrent

-dc

显示当前音量。

编辑卷

--edit

-e

使用提供的卷 ID (-id) 编辑卷。还可以指定“-a”下列出的任何选项,以针对 vole 类型内部修改其值。请注意,只能编辑外部卷的卷名称。

帮助选项

--help

-h

显示此工具的使用选项的帮助。

列出卷

--list

-l

列出所有卷。

--server

-s

<arg> 邮件服务器主机名。默认是本地主机。

将音量设置为当前音量

--setCurrent

-sc

设置当前音量。

关闭辅助音量

--turnOffSecondary

-ts

关闭当前辅助消息音量。

添加新卷
内部卷

要创建内部卷,所需参数为-n、-t、-p,可选参数是-c、-ct、-st.

zmvolume -a -n <volumeName> -t <storageType> -p <pathOfVolume>
OpenIO 的外部卷

要创建主或辅助 OpenIO 卷,请执行以下命令:

zmvolume -a -n <volumeName> -t <storageType> -vp <volumePrefix> -st external -stp OPENIO -pp <proxyPort> -ap <accountPort> -url <URL> -acc <accountName> -ns <nameSpace>
S3 的外部卷

要创建主或辅助 S3(Amazon S3、NetApp StorageGrid、Ceph)卷,请执行以下命令:

zmvolume -a -n <volumeName> -t <storageType> -vp <volumePrefix> -st external -stp S3 -bid <bucketId>

要创建具有统一存储支持的主或辅助 S3(Amazon S3、NetApp StorageGrid、Ceph)卷,请执行以下命令:

zmvolume -a -n <volumeName> -t <storageType> -vp <volumePrefix> -st external -stp S3 -bid <bucketId> -un true
编辑卷
内部卷

管理员可以编辑创建内部卷时使用的所有参数:

zmvolume -e -id <volumeId> -n <volumeName> -p <volumePath> -t <type> -c <compress> -ct <compressionThreshold>
外部卷

只能编辑外部卷的名称:

zmvolume -e -id <volumeId> -n <volumeName>
列出卷

列出所有创建的卷:

zmvolume -l
删除卷
删除卷时要小心,因为这可能会导致数据丢失:
zmvolume -d -id <volumeId>
设置当前卷

将卷 ID 设置为要根据配置的卷类型使用的当前卷:

zmvolume -sc -id <volumeId>
显示当前卷:

显示设置为当前的主卷和辅助卷详细信息:

zmvolume -dc
关闭辅助卷

要禁用辅助卷:

zmvolume -ts
帮助部分

要显示帮助部分:

zmvolume -h

使用zmschedulesmpolicyCLI 管理策略的调度

zmschedulesmpolicy命令用于调度存储管理策略执行。要跟踪 SM 会话的进度,请使用zmhsm -u命令。

  • 调度程序支持单个 SM 会话,该会话可以包含单个或多个策略。如果安排了新的 SM 会话,它将覆盖现有会话(如果存在)。

  • 预定的SM策略每天会在预定的时间执行一次,并且每天都会执行,直到被移除。

  • 用于安排会话的时间格式是 24 小时格式。安排 SM 会话时无法指定分钟数。

  • 即使管理员没有定义任何策略,默认的全局策略即消息,文档:之前:-30 天将被处决 手动启动 SM 会话时。

语法
zmschedulesmpolicy [-l|-h|-f|-e { <hours:00> } ]
选项
操作 长名称 短名称 说明

帮助

--help

-h

获取有关zmschedulesmpolicy(默认命令)的帮助。

列出计划

--list

-l

打印现有计划的 SM 策略。

刷新/取消计划

--flush

-f

删除当前计划(取消所有计划的 SM 策略执行)

添加/编辑计划

--edit

-e

使用指定时间编辑当前计划时间。如果没有现有的调度策略,那么它将在给定时间调度新的 SM 策略。

帮助 - zmchedulesmpolicy

打印帮助页面:

zmschedulesmpolicy --help
zmschedulesmpolicy -h
列表 - 打印当前计划的 SM 策略

列出计划 SM 策略执行。如果没有关于调度的 SM 策略的输出,则意味着当前没有调度 SM 策略。

zmschedulesmpolicy --list
zmschedulesmpolicy -l
刷新/取消 - 删除当前预定的 SM 策略

当前预定的 SM 策略如果可用则被取消。

zmschedulesmpolicy --flush
zmschedulesmpolicy -f
添加/编辑 - 在指定时间安排 SM 策略

它接受 24 小时格式时间作为参数,该参数是安排 SM 策略的时间。

如果没有计划的策略执行或编辑现有计划,此选项将计划新的 SM 策略。

zmschedulesmpolicy --edit 15:00
zmschedulesmpolicy -e 15:00

使用以下命令管理 SM 会话zmhsmCLI

zmhsm命令用于启动、停止、中止和查看 SM 会话的状态。 SM 会话在为特定服务器创建的 SM 策略上执行,并开始将 blob 从主卷移动到当前辅助卷。

语法
zmhsm {abort|start|status} {server} <servername>
说明
长名称 短名称 说明

--abort

-a

中止当前 SM 会话,但不立即中止。首先,它完成正在进行的邮箱并停止处理正在进行的邮箱,然后中止当前的 SM 会话。已处理的邮箱不会回滚。

--help

-h

显示 zmhsm 使用选项的帮助。

--服务器

-s

<arg> 邮件服务器主机名。默认情况下它是 localhost [args]。

--start

-t

启动 SM 进程。

--状态

-u

显示 SM 会话的状态。

示例:

  • 启动 SM 会话

要启动 SM 会话,请执行以下命令:

zmhsm -t -s localhost
  • 中止 SM 会话

要启动 SM 中止序列,请执行以下命令:

zmhsm -a -s localhost
  • SM 会话状态

要查看 SM 状态,请执行以下命令:

zmhsm -u -s localhost

它仅显示最后的 SM 会话状态。以下是一些示例:

示例 1:

Start time: Thu Sep 08 01:57:04 EDT 2022

End time: Thu Sep 08 01:57:04 EDT 2022

Query :before:-1minute

Not currently running.

Moved 1 blob to volume 12.

Mailboxes processed: 7 out of 7.

示例2:

Last SM Session Stats

Start time: Tue Aug 16 07:32:16 EDT 2022

Query :before:-1minute is:anywhere

Currently running.

Moved 0 blobs to volume 3.

Mailboxes processed: 0 out of 61.

管理存储管理策略

存储管理 (SM) 策略是一组规则,将应用于定义在以下情况下哪些项目将从主存储移动到辅助存储:zmhsm命令被手动或通过调度触发zmchedulesmpolicy.

SM 策略可以在全局和服务器级别配置,因为它存储在全局和服务器 LDAP 属性中zimbraHSMPolicy.

在全局级别配置(默认策略)

将多个策略添加到属性时,请使用+前缀和zimbraHSMPolicy属性。

zmprov mcf +zimbraHSMPolicy 'message:before:-1day in:Trash'
zmprov mcf +zimbraHSMPolicy 'message,document:before:-5day is:anywhere has:attachment larger:5m is:read'

当需要多个值时,还可以在单​​个配置命令中多次指定该属性。

zmprov mcf zimbraHSMPolicy 'message:before:-129600minutes' zimbraHSMPolicy 'document,wiki:before:-10080minutes'
在单个配置命令中指定单个属性值将在运行该命令之前清除该值的其他实例。在设置值之前始终检索当前配置以查看存在哪些值。
zmprov gcf zimbraHSMPolicy
服务器级别策略

也可以使用类似的格式在服务器级别设置策略。

zmprov ms `zmhostname` zimbraHSMPolicy 'message:before:-129600minutes'
zmprov gs `zmhostname` zimbraHSMPolicy

自定义存储管理器

概述

Zimbra StoreManager SDK 用于将 Zimbra 连接到存储管理功能中不可用的外部数据存储。默认情况下,Zimbra 使用 StoreManager 实现将文件写入本地磁盘。使用此 SDK,可以将文件写入云数据存储提供商、远程数据库或任何其他存储技术。

提供源代码示例仅用于说明目的。 它们不适合直接在生产环境中使用。
为了便于阅读,代码示例已被精简。进口、包装 声明以及与 StoreManager 不直接相关的其他详细信息 扩展名已被省略。完整代码可在 Zimbra 中找到 源头控制。

配置

zimbra_class_store

zimbra_class_store zmlocalconfig 选项配置使用的类 对于商店经理。默认的 StoreManager 类是标准的 基于文件系统的 blob 存储:

默认:

zimbra_class_store = com.zimbra.cs.store.file.FileBlobStore

该类可以替换为自定义类来写入消息 blob 发送给所选的商店经理。

例子:

zmlocalconfig -e zimbra_class_store=com.zimbra.examples.extns.storemanager.MyStoreManager
zmlocal配置选项
external_store_delete_max_ioexceptions = 25
external_store_local_cache_max_bytes = 1073741824
external_store_local_cache_max_files = 10000
external_store_local_cache_min_lifetime = 60000
配置示例
  1. zimbra-extns-storemanager.jar复制到/opt/zimbra/lib/ext/storemanager目录

  2. 执行:

    zmlocalconfig -e zimbra_class_store=com.zimbra.examples.extns.storemanager.ExampleStoreManager
  3. 重新启动服务器

  4. 执行任何写入操作,例如发送邮件、上传文件等。Blob 应写入 /tmp/examplestore/blobs

基本集成

集成的最低代码需要重写ExternalStoreManager 并实现ExternalBlobIO。该接口包含写入数据、读取数据和删除数据的方法。

 /**
  * Interface for the simplest blob store integration possible
  * The implementor must provide functionality for reading, writing, and deleting blobs
  */
 public interface ExternalBlobIO {
    /**
     * Write data to blob store
     * @param in: InputStream containing data to be written
     * @param actualSize: size of data in stream, or -1 if size is unknown. To be used by implementor for optimization where possible
     * @param mbox: Mailbox which contains the blob. Can optionally be used by store for partitioning
     * @return locator string for the stored blob, unique identifier created by storage protocol
     * @throws IOException
     * @throws ServiceException
     */
    String writeStreamToStore(InputStream in, long actualSize, Mailbox mbox) throws IOException, ServiceException;

    /**
     * Create an input stream for reading data from blob store
     * @param locator: identifier string for the blob as returned from write operation
     * @param mbox: Mailbox which contains the blob. Can optionally be used by store for partitioning
     * @return InputStream containing the data
     * @throws IOException
     */
    InputStream readStreamFromStore(String locator, Mailbox mbox) throws IOException;

    /**
     * Delete a blob from the store
     * @param locator: identifier string for the blob
     * @param mbox: Mailbox which contains the blob. Can optionally be used by store for partitioning
     * @return true on success false on failure
     * @throws IOException
     */
    boolean deleteFromStore(String locator, Mailbox mbox) throws IOException;
}

这是一个极简 StoreManager 实现的示例 使用 java.io.File 和相关类写入本地磁盘。详细内容 为了简洁起见,省略了 getNewFile() 的操作,并且通常涉及 在预定义目录中创建一个新的空文件。

此类还重写了ExternalStoreManager 中的三个方法

  • startup() - 在初始化期间调用,可用于设置任何 路径、后台线程或商店所需的其他资源 实施。必须调用 super.startup() 来初始化父资源

  • shutdown() - 在应用程序关闭期间调用,可用于 清理所有临时资源并终止后台线程。必须 调用 super.shutdown() 清理父资源

  • isCentralized() - 一个布尔值,用于多服务器 配置。如果为真,那么商店是全球性的,并且定位器来自一个 可以从另一台 Zimbra 服务器访问 Zimbra 服务器,否则 定位器仅在创建它们的服务器内有效。安 集中式存储的示例是云文件存储系统,以及 非集中存储的一个例子是本地文件系统

public class SimpleStoreManager extends ExternalStoreManager {

    @Override
    public void startup() throws IOException, ServiceException {
        super.startup();
        //initialize any local resources such as storage directory
    }

    @Override
    public void shutdown() {
        super.shutdown();
        //cleanup any resources and background threads
    }

    @Override
    protected boolean isCentralized() {
        //this store writes to local disk, so blobs cannot be accessed from other Zimbra servers
        return false;
    }

    private File getNewFile(Mailbox mbox) throws IOException {
        //generate a new file on disk
    }

    @Override
    public String writeStreamToStore(InputStream in, long actualSize, Mailbox mbox) throws IOException {
        File destFile = getNewFile(mbox);
        FileUtil.copy(in, false, destFile);
        return destFile.getCanonicalPath();
    }

    @Override
    public InputStream readStreamFromStore(String locator, Mailbox mbox) throws IOException {
        return new FileInputStream(locator);
    }

    @Override
    public boolean deleteFromStore(String locator, Mailbox mbox) throws IOException {
        File deleteFile = new File(locator);
        return deleteFile.delete();
    }

HTTP 存储

另一个常见用例是写入外部 HTTP API,即云 文件存储。如果HTTP API允许匿名上传,这可以是 通过扩展 HttpStoreManager 来完成。实施者只需要 提供定义 URL 的方法的代码,该 URL 用于 POST新内容,提取HTTP服务器特有的过程 POST 响应中的标识符,以及用于获取和删除的 URL 以前存储的内容。 Zimbra Mailbox 对象的提供目的是 可选用法;取决于 HTTP API 语义,它可用于 构造 URL 的一部分,或者可以忽略它。大小,SHA-256 getLocator() 方法中提供了摘要和 Mailbox 对象,如下所示 是 Apache Commons HttpClient PostMethod,可用于提取 响应头和响应正文。有关完整详细信息 HttpClient 请参阅http://hc.apache.org/httpclient-3.x/

    protected abstract String getPostUrl(Mailbox mbox);
    protected abstract String getGetUrl(Mailbox mbox, String locator);
    protected abstract String getDeleteUrl(Mailbox mbox, String locator);
    protected abstract String getLocator(PostMethod post, String postDigest, long postSize, Mailbox mbox) throws ServiceException, IOException;

HttpStoreManager 的完整列表如下。请注意 isCentralized() 返回 true,因为通常会有一个 HTTP 存储,其中所有 Zimbra 服务器连接到。商店必须生成全球唯一的 可以从任何 Zimbra 服务器访问的定位器。

public abstract class HttpStoreManager extends ExternalStoreManager {

    protected abstract String getPostUrl(Mailbox mbox);
    protected abstract String getGetUrl(Mailbox mbox, String locator);
    protected abstract String getDeleteUrl(Mailbox mbox, String locator);
    protected abstract String getLocator(PostMethod post, String postDigest, long postSize, Mailbox mbox) throws ServiceException, IOException;

    @Override
    public String writeStreamToStore(InputStream in, long actualSize, Mailbox mbox) throws IOException,
                    ServiceException {
        MessageDigest digest;
        try {
            digest = MessageDigest.getInstance("SHA-256");
        } catch (NoSuchAlgorithmException e) {
            throw ServiceException.FAILURE("SHA-256 digest not found", e);
        }
        ByteUtil.PositionInputStream pin = new ByteUtil.PositionInputStream(new DigestInputStream(in, digest));

        HttpClient client = ZimbraHttpConnectionManager.getInternalHttpConnMgr().newHttpClient();
        PostMethod post = new PostMethod(getPostUrl(mbox));
        try {
            HttpClientUtil.addInputStreamToHttpMethod(post, pin, actualSize, "application/octet-stream");
            int statusCode = HttpClientUtil.executeMethod(client, post);
            if (statusCode == HttpStatus.SC_OK || statusCode == HttpStatus.SC_CREATED || statusCode == HttpStatus.SC_NO_CONTENT) {
                return getLocator(post, ByteUtil.encodeFSSafeBase64(digest.digest()), pin.getPosition(), mbox);
            } else {
                throw ServiceException.FAILURE("error POSTing blob: " + post.getStatusText(), null);
            }
        } finally {
            post.releaseConnection();
        }
    }

    @Override
    public InputStream readStreamFromStore(String locator, Mailbox mbox)
                    throws IOException {
        HttpClient client = ZimbraHttpConnectionManager.getInternalHttpConnMgr().newHttpClient();
        GetMethod get = new GetMethod(getGetUrl(mbox, locator));
        int statusCode = HttpClientUtil.executeMethod(client, get);
        if (statusCode == HttpStatus.SC_OK) {
            return new UserServlet.HttpInputStream(get);
        } else {
            get.releaseConnection();
            throw new IOException("unexpected return code during blob GET: " + get.getStatusText());
        }
    }

    @Override
    public boolean deleteFromStore(String locator, Mailbox mbox)
                    throws IOException {
        HttpClient client = ZimbraHttpConnectionManager.getInternalHttpConnMgr().newHttpClient();
        DeleteMethod delete = new DeleteMethod(getDeleteUrl(mbox, locator));
        try {
            int statusCode = HttpClientUtil.executeMethod(client, delete);
            if (statusCode == HttpStatus.SC_OK || statusCode == HttpStatus.SC_NO_CONTENT) {
                return true;
            } else if (statusCode == HttpStatus.SC_NOT_FOUND) {
                return false;
            } else {
                throw new IOException("unexpected return code during blob DELETE: " + delete.getStatusText());
            }
        } finally {
            delete.releaseConnection();
        }
    }

}

基于内容的存储

某些外部存储系统可能会维护基于数据的标识符 内容。例如,商店可以使用 SHA-256 或其他哈希值作为 存储对象的主键。 ContentAddressableStoreManager 抽象类可以用作与此集成的起点 商店类型。

实现者必须提供代码来生成 byte[] 哈希和字符串 定位器。

    /**
     * Generate content hash for the blob using the hash algorithm from the remote store
     * @param blob - Blob which has been constructed locally
     * @return byte[] representing the blob content
     * @throws ServiceException
     * @throws IOException
     */
    public abstract byte[] getHash(Blob blob) throws ServiceException, IOException;

    /**
     * Generate a locator String based on the content of blob
     * @param blob - Blob which has been constructed locally
     * @return String representing the blob content, e.g. hex encoded hash
     * @throws ServiceException
     * @throws IOException
     */
    protected abstract String getLocator(Blob blob) throws ServiceException, IOException;

    /**
     * Return the locator string for the content hash by hex encoding or other similar encoding required by the store
     * @param hash: byte[] containing the content hash
     * @return the locator String
     */
    public abstract String getLocator(byte[] hash);

这是一个使用 SHA-256 作为哈希值的示例实现 附加 .blob 以生成定位器。

    @Override
    protected String getLocator(Blob blob) throws ServiceException, IOException {
        return getLocator(getHash(blob));
    }

    @Override
    public String getLocator(byte[] hash) {
        return Hex.encodeHexString(hash).toUpperCase() + ".blob";
    }


    @Override
    public byte[] getHash(Blob blob) throws ServiceException, IOException {
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        DigestInputStream dis = new DigestInputStream(blob.getInputStream(), digest);
        while (dis.read() >= 0) {
        }
        return digest.digest();
    }

ContentAddressableStoreManager 的完整列表如下。几个 来自ExternalStoreManager的方法被覆盖,因此内容定位器 可以包含在上游写请求中。

/**
 * Abstract framework for StoreManager implementations which require content hash or other content-based locator
 * The base implementation here handles the more common cases where blob is cached locally by storeIncoming and then pushed to remote store during stage operation
 */
public abstract class ContentAddressableStoreManager extends ExternalStoreManager {

    @Override
    public String writeStreamToStore(InputStream in, long actualSize,
                    Mailbox mbox) throws IOException, ServiceException {
        //the override of stage below should never allow this code to be reached
        throw ServiceException.FAILURE("anonymous write is not permitted, something went wrong", null);
    }

    /**
     * Generate content hash for the blob using the hash algorithm from the remote store
     * @param blob - Blob which has been constructed locally
     * @return byte[] representing the blob content
     * @throws ServiceException
     * @throws IOException
     */
    public abstract byte[] getHash(Blob blob) throws ServiceException, IOException;

    /**
     * Generate a locator String based on the content of blob
     * @param blob - Blob which has been constructed locally
     * @return String representing the blob content, e.g. hex encoded hash
     * @throws ServiceException
     * @throws IOException
     */
    protected abstract String getLocator(Blob blob) throws ServiceException, IOException;

    /**
     * Return the locator string for the content hash by hex encoding or other similar encoding required by the store
     * @param hash: byte[] containing the content hash
     * @return the locator String
     */
    public abstract String getLocator(byte[] hash);

    /**
     * Write data to blob store using previously generated blob locator
     * @param in: InputStream containing data to be written
     * @param actualSize: size of data in stream, or -1 if size is unknown. To be used by implementor for optimization where possible
     * @param locator string for the blob as returned by getLocator()
     * @param mbox: Mailbox which contains the blob. Can optionally be used by store for partitioning
     * @throws IOException
     * @throws ServiceException
     */
    protected abstract void writeStreamToStore(InputStream in, long actualSize, Mailbox mbox, String locator) throws IOException, ServiceException;

    @Override
    public StagedBlob stage(Blob blob, Mailbox mbox) throws IOException, ServiceException {
        if (supports(StoreFeature.RESUMABLE_UPLOAD) && blob instanceof ExternalUploadedBlob && blob.getRawSize() > 0) {
            ZimbraLog.store.debug("blob already uploaded, just need to commit");
            String locator = ((ExternalResumableUpload) this).finishUpload((ExternalUploadedBlob) blob);
            ZimbraLog.store.debug("staged to locator %s", locator);
            localCache.put(locator, getContent(blob));
            return new ExternalStagedBlob(mbox, blob.getDigest(), blob.getRawSize(), locator);
        } else {
            InputStream is = getContent(blob);
            String locator = getLocator(blob);
            try {
                StagedBlob staged = stage(is, blob.getRawSize(), mbox, locator);
                if (staged != null) {
                    ZimbraLog.store.debug("staged to locator %s", staged.getLocator());
                    localCache.put(staged.getLocator(), getContent(blob));
                }
                return staged;
            } finally {
                ByteUtil.closeStream(is);
            }
        }
    }

    @Override
    public StagedBlob stage(InputStream in, long actualSize, Mailbox mbox) throws ServiceException, IOException {
        Blob blob = storeIncoming(in);
        try {
            return stage(blob, mbox);
        } finally {
            quietDelete(blob);
        }
    }

    protected StagedBlob stage(InputStream in, long actualSize, Mailbox mbox, String locator) throws ServiceException {
        MessageDigest digest;
        try {
            digest = MessageDigest.getInstance("SHA-256");
        } catch (NoSuchAlgorithmException e) {
            throw ServiceException.FAILURE("SHA-256 digest not found", e);
        }
        ByteUtil.PositionInputStream pin = new ByteUtil.PositionInputStream(new DigestInputStream(in, digest));

        try {
            writeStreamToStore(pin, actualSize, mbox, locator);
            return new ExternalStagedBlob(mbox, ByteUtil.encodeFSSafeBase64(digest.digest()), pin.getPosition(), locator);
        } catch (IOException e) {
            throw ServiceException.FAILURE("unable to stage blob", e);
        }
    }

可续传上传(仅限八达通)

在 Octopus REST API 中,客户端可以部分上传 文档,然后稍后恢复它们。带有默认值 ExternalStoreManager 实现,blob 暂存于 八达通服务器,仅在完全上传后发送到外部存储。 这可能会导致客户在完成任务后出现不必要的延迟 上传。为了优化这个过程,集成商可以实施 ExternalResumableUpload接口,则提供 ExternalResumableIncomingBlob 和ExternalResumableOutputStream 以可恢复的方式与商店交互的实现。

public interface ExternalResumableUpload {
    /**
     * Create a new ExternalResumableIncomingBlob instance to handle the upload
     * of a single object. The implementation should compute all remote metadata
     * such as remote id, size, and content hash inline with the upload process
     * so that finishUpload() does not need to traverse the data again
     *
     * @param id: local upload ID. Used internally; must be passed to super constructor
     * @param ctxt: local upload context. Used internally; must be passed to super constructor
     * @return initialized ExternalResumableIncomingBlob instance ready to accept a new data upload
     * @throws IOException
     * @throws ServiceException
     */
    public ExternalResumableIncomingBlob newIncomingBlob(String id, Object ctxt) throws IOException, ServiceException;

    /**
     * Finalize an upload. Depending on store semantics this may involve a
     * commit, checksum, or other similar operation.
     *
     * @param blob: The ExternalUploadedBlob which data has been written into
     * @return String identifier (locator) for the permanent storage location for the uploaded content
     * @throws IOException
     * @throws ServiceException
     */
    public String finishUpload(ExternalUploadedBlob blob) throws IOException, ServiceException;
}

/**
 * IncomingBlob implementation which streams data directly to external store during upload
 * The store must support resumable upload, otherwise it should use the default BufferingIncomingBlob implementation
 *
 */
public abstract class ExternalResumableIncomingBlob extends BufferingIncomingBlob {

    public ExternalResumableIncomingBlob(String id, BlobBuilder blobBuilder, Object ctx) throws ServiceException, IOException {
        super(id, blobBuilder, ctx);
    }

    @Override
    public OutputStream getAppendingOutputStream() throws IOException {
        lastAccessTime = System.currentTimeMillis();
        return getAppendingOutputStream(blobBuilder);
    }

    @Override
    public long getCurrentSize() throws IOException {
        long internalSize = super.getCurrentSize();
        long remoteSize = getRemoteSize();
        if (remoteSize != internalSize) {
            throw new IOException("mismatch between local (" + internalSize + ") and remote (" + remoteSize + ") " +
                "content sizes. Client must restart upload", null);
        } else {
            return internalSize;
        }
    }

    @Override
    public Blob getBlob() throws IOException, ServiceException {
        return new ExternalUploadedBlob(blobBuilder.finish(), id);
    }

    /**
     * Retrieve an OutputStream which can be used to write data to the remote upload location
     * @param blobBuilder: Used to create local Blob instance inline with upload. Must be passed to super constructor
     * @return ExternalResumableOutputStream instance which can write data to the upload session/location encapsulated by this IncomingBlob instance
     * @throws IOException
     */
    protected abstract ExternalResumableOutputStream getAppendingOutputStream(BlobBuilder blobBuilder) throws IOException;

    /**
     * Query the remote store for the size of the upload received so far. Used for consistency checking during resume
     * @return: The number of bytes which have been stored remotely.
     * @throws IOException
     * @throws ServiceException
     */
    protected abstract long getRemoteSize() throws IOException;
}

/**
 * OutputStream used to write to an external store during resumable upload.
 *
 */
public abstract class ExternalResumableOutputStream extends BlobBuilderOutputStream {

    protected ExternalResumableOutputStream(BlobBuilder blobBuilder) {
        super(blobBuilder);
    }

    @Override
    public void write(byte[] b, int off, int len) throws IOException {
        writeToExternal(b, off, len);
        super.write(b, off, len);
    }

    /**
     * Append data to remote upload location
     * @param b: byte array holding the data to upload
     * @param off: offset to start the upload from
     * @param len: length of the data to copy from the byte array
     * @throws IOException
     */
    protected abstract void writeToExternal(byte[] b, int off, int len) throws IOException;
}

以下示例说明了涉及的关键功能 可断点上传。该示例故意任意并使用本地 磁盘存储。

public class SimpleStreamingStoreManager extends SimpleStoreManager implements ExternalResumableUpload {

    String uploadDirectory = "/tmp/simplestore/uploads";

    @Override
    public void startup() throws IOException, ServiceException {
        super.startup();
        FileUtil.mkdirs(new File(uploadDirectory));
    }

    @Override
    public String finishUpload(ExternalUploadedBlob blob) throws IOException,
                    ServiceException {
        ZimbraLog.store.info("finishing upload to "+blob.getUploadId());
        return blob.getUploadId();
    }

    @Override
    public ExternalResumableIncomingBlob newIncomingBlob(String id, Object ctxt) throws IOException, ServiceException {
        return new SimpleStreamingIncomingBlob(id, getBlobBuilder(), ctxt);
    }

    private class SimpleStreamingIncomingBlob extends ExternalResumableIncomingBlob {

        private final File file;

        public SimpleStreamingIncomingBlob(String id, BlobBuilder blobBuilder,
                        Object ctx) throws ServiceException, IOException {
            super(id, blobBuilder, ctx);
            String baseName = uploadDirectory+"/upload-"+id;
            String name = baseName;

            synchronized (this) {
                int count = 1;
                File upFile = new File(name+".upl");
                while (upFile.exists()) {
                    name = baseName+"_"+count++;
                    upFile = new File(name+".upl");
                }
                if (upFile.createNewFile()) {
                    ZimbraLog.store.debug("writing to new file %s",upFile.getName());
                    file = upFile;
                } else {
                    throw new IOException("unable to create new file");
                }
            }
        }

        @Override
        protected ExternalResumableOutputStream getAppendingOutputStream(BlobBuilder blobBuilder) throws IOException {
            return new SimpleStreamingOutputStream(blobBuilder, file);
        }

        @Override
        protected long getRemoteSize() throws IOException {
            return file.length();
        }

        @Override
        public Blob getBlob() throws IOException, ServiceException {
            return new ExternalUploadedBlob(blobBuilder.finish(), file.getCanonicalPath());
        }
    }

    private class SimpleStreamingOutputStream extends ExternalResumableOutputStream {

        private final FileOutputStream fos;

        public SimpleStreamingOutputStream(BlobBuilder blobBuilder, File file) throws IOException {
            super(blobBuilder);
            this.fos = new FileOutputStream(file, true);
        }

        @Override
        protected void writeToExternal(byte[] b, int off, int len)
                        throws IOException {
            fos.write(b, off, len);
        }
    }

Zimbra 聊天

本节将概述 Zimbra 的聊天功能。

Zimbra Chat 是一种安全、实时的消息传递解决方案,集成到 Zimbra Daffodil 版本 10.1.7 及以上版本中,旨在增强团队沟通,同时遵守 Zimbra 的隐私、数据主权和用户控制的核心原则。该聊天服务有两种不同的变体。

聊天变体

  • 基本聊天:轻量级一对一消息解决方案,非常适合需要在 UI 中嵌入快速、人对人通信的用户。

  • 高级聊天:功能齐全的消息传递平台,支持线程组对话、广泛的搜索、频道和其他协作工具。该变体使用开源平台构建,支持高级用例,适合需要丰富通信体验的组织。

Zimbra Daffodil 版本 10.1.7- 两个变体都直接集成到 Zimbra 的现代 Web 客户端(现代 UI)中,并支持安全的本地部署。

Zimbra Daffodil 版本 10.1.8- 聊天的经典 UI 支持。从 10.1.8 起,这两个变体都集成到 Zimbra 的经典 Web 客户端(经典 UI)中,并支持安全的本地部署。

基本聊天与。高级聊天比较

功能 基本聊天 高级聊天

1. 直接消息传递(一对一聊天)

2. 通知

3. 用户状态

4. 用户偏好

Limited

5. 定制

Limited

6. 本地化

有限

有限

7. 表情符号支持

8. 可扩展性(总用户数)

50k+

50k+

9. 多域支持

10. Zimbra 聊天服务器操作系统支持

仅 Ubuntu 22/24

仅 Ubuntu 22/24

11. 基于 LDAP 的身份验证

12. 自动配置

13. 平台支持

仅 Web 客户端

仅 Web 客户端

14. 综合文档

15. 消息历史记录搜索

16. 临时组

17. 频道

18. 基于主题的线程

19. 文件共享

20. 语音

与 Jitsi

公共实例的内置集成 21. 表达格式(粗体、列表等)

22. 高级功能(稍后发送,标记为未读)

23. 基于角色的访问控制

24. 域级自定义品牌

25. 从其他聊天产品导入数据

26. 桌面应用程序

27. 移动应用程序

许可指南

Zimbra 的新聊天解决方案提供两个不同的级别:

  • 基本一对一聊天– 免费作为介绍性定价、轻量级消息传递。

  • 高级聊天– 具有扩展功能的付费层。

要开始使用 Zimbra Chat,请确保您的系统使用 Zimbra Daffodil 版本 10.1.7 或更高版本,并遵循以下相关指南。

先决条件

Zimbra 许可证必须启用以下权利:

  • BasicOneToOneChatAccountsLimit- 启用基本的一对一聊天。

  • ChatAccountsLimit- 启用高级聊天。

两项权利相互独立。

Zimbra Chat 是一个附加模块,不包含在任何现有版本或捆绑包中。 即使对于拥有当前 Zimbra 许可证的客户来说,也必须单独购买。 请联系您的 Zimbra 代表以获得这些权利。

对于新客户(从 Zimbra Daffodil 版本 10.1.7 或更高版本开始)

  1. 许可证是作为入职流程的一部分颁发的。

  2. 根据您选择的计划包含聊天功能(基本或高级)。

  3. 一旦获得许可:

    • 聊天功能将自动启用。

    • 您将通过电子邮件收到许可证密钥。

  4. 如果您没有收到聊天功能或希望升级,请联系您的 Zimbra 代表。

对于已经使用 10.1.7 之前的 Zimbra Daffodil 10.1.x 版本的现有客户

基本一对一聊天(免费)
  • 这是免费提供的,但默认情况下不启用。

  • 启用:

    • 请联系您的 Zimbra 代表并请求为您的许可证启用基本聊天。

    • 更新后,重新启动邮箱服务器以激活聊天功能。

高级聊天(付费)
  • 请联系您的 Zimbra 代表并升级您的许可证以启用高级聊天。

  • 许可证更新后:

    • 重新启动所有邮箱服务器以确保加载聊天扩展。

    • 聊天将在您的 Zimbra 界面中可用。

如果您要从版本 10.1.6 升级到 10.1.7:

  • 如果您的许可证在升级之前已更新,则无需重新启动邮件存储。

  • 如果升级后更新许可证,您必须重新启动所有邮箱服务器以确保加载聊天扩展。

对于使用旧版本(8.8.15、9.0.x、10.0.x)的客户

  1. 您的旧许可证 (v2) 必须先迁移到新格式 (v3),然后才能继续升级。

    • 请联系您的 Zimbra 代表并请求 v3 许可证以获得更新的权利。

  2. 升级到 Zimbra Daffodil 版本 10.1.7 或更高版本。

  3. 一旦使用最新的 Zimbra 版本:

    • 可以免费启用基本聊天。

    • 高级聊天可通过付费升级获得。

您现在可以使用新的聊天功能。

对于拥有现有 Zimbra Talk 权利(8.8.15、9.0.x)的客户

  1. 在继续升级之前,您的旧许可证 (v2) 必须迁移到新格式 (v3)。

    • 请联系您的 Zimbra 代表并请求 v3 许可证以获得更新的权利。

  2. 升级到 Zimbra Daffodil 版本 10.1.7 或更高版本。

  3. 一旦使用最新的 Zimbra 版本:

    • 基本聊天将无需额外费用即可启用。

    • 高级聊天在以下条件下可用:

      • 高级聊天限制默认设置为ZTalkAccountsLimit.

      • 在 ZTalk SKU/合同的支持结束日期之前可用。

      • 新的 Zimbra Chat SKU 将免费提供给此类客户。

您现在可以使用新的聊天功能。

安装 Zimbra Chat 之前需要了解的事项

在继续安装之前,管理员应了解以下先决条件和限制:

  1. 单独的服务器要求:Zimbra Chat 必须安装在专用服务器上。它不能与 Zimbra Collaboration Suite 组件共同托管。

  2. 版本兼容性:支持 Zimbra 聊天Zimbra Daffodil 版本 10.1.7 及更高版本上。使用早期版本的客户必须升级其 ZCS 环境。

  3. 现代 UI:从 Zimbra Daffodil 版本 10.1.7 开始,现代 UI 支持聊天。

  4. 经典 UI:Zimbra Daffodil 版本 10.1.8 的经典 UI 支持聊天。

  5. LDAP 集成:Zimbra Chat 使用 Zimbra Collaboration Suite (ZCS) 的 LDAP 身份验证来确保用户登录和配置的安全。

  6. 无内置视频:这是仅聊天的解决方案,并且不包括视频会议解决方案。然而,已经提供了与开源视频解决方案的集成。欲了解更多详情,请参阅聊天管理员 → 视频部分.

  7. 不支持迁移不支持迁移来自早期的聊天解决方案,如 Zimbra Talk 或托管聊天和视频。

  8. 性能注意事项:虽然该解决方案针对 50k 以上的总用户和单个服务器上最多 10k 的用户进行了测试,但实际性能可能会有所不同,具体取决于使用模式、在线用户、每个域的用户、用于聊天的基础设施等。请参阅扩展和基础设施指南部分了解有关有效扩展解决方案的最佳实践的更多信息。

  9. 支持的操作系统:仅 Ubuntu 22 和 24 正式支持安装 Zimbra Chat 服务器。

  10. 附加模型:默认情况下,Zimbra Chat 不与 Zimbra Collaboration Suite (ZCS) 捆绑在一起 — 它作为附加功能提供,使客户能够选择所需的功能级别。

Zimbra 聊天架构概述

Zimbra Chat Architecture Window
图 3.Zimbra 聊天架构选项卡
  • 邮箱服务器 + 聊天扩展:通过 HTTPS 启动配置和基本聊天请求。

  • Zimbra 代理服务器:路由 HTTPS 请求并将高级聊天请求转发到聊天服务器。

  • 聊天服务器:与邮箱和 LDAP 服务器交互,并将请求转发到应用程序组件。

  • LDAP 服务器:通过 LDAP/LDAPS 提供用户身份验证和域/帐户信息。

扩展和基础设施指南

本节概述了扩展指南和配置,提供了选择适当计算资源的建议,以确保跨不同部署规模的最佳性能和可扩展性。

资源大小调整

活跃用户包括执行被动后台任务的 Web 客户端(例如:presence在线状态)与 Zulip 的 Zimbra 的对抗。

实施垂直扩展以适应预期活动用户数量的机器资源。以下样本大小可能需要根据聊天服务活动级别进行调整。

如果预计活跃用户数量会显着增长,则倾向于使用专用的 PostgreSQL 设置。

  • ~500 个活跃用户实例

    • 为一体化配置计算实例 - Zulip 和 PostgreSQL 数据库(4 个 vCPU、16 GB RAM、200 GB 磁盘)

  • ~1k 活跃用户实例

    • 为 Zulip 的 PostgreSQL 数据库配置计算实例(2 个 vCPU、16 GB RAM、100 GB 磁盘)

    • 为 Zulip 配置计算实例(4 个 vCPU、32 GB RAM、200 GB 磁盘)

  • ~3k 活动用户实例

    • 为 Zulip 的 PostgreSQL 数据库配置计算实例(2 个 vCPU、16 GB RAM、200 GB 磁盘)

    • 为 Zulip 配置计算实例(8 vCPU、32 GB RAM、300 GB 磁盘)

  • ~5k 活跃用户实例

    • 为 Zulip 的 PostgreSQL 数据库配置计算实例(2 vCPU、16 GB RAM、300 GB 磁盘)

    • 为 Zulip 配置计算实例(12 vCPU、32 GB RAM、400 GB 磁盘)

网络带宽

  • 在不同系统(例如 Zimbra、Zulip 和 PostgreSQL)之间建立网络带宽准则时,必须考虑多种因素,例如预期流量、并发用户数量。

  • 以下样本大小可能需要根据您的组织的具体规模、交换的数据量、并发用户负载进行调整。

Zimbra 和聊天服务器之间的网络带宽:
  • 推荐带宽:

    • 至少 100 Mbps 适用于集成涉及基本文本消息的小型(最多约 500 个活跃用户)和中型组织(约 500 至约 3k 活跃用户)。

    • 对于大量使用聊天数据(例如大量消息历史记录、频繁查询)的大型部署(超过 3000 个活跃用户),建议使用 1 Gbps 来处理高频数据库请求并确保低延迟。

持续监控网络性能并根据使用模式和流量峰值根据需要调整带宽分配。

Zulip 和 PostgreSQL 服务器之间的网络带宽:

PostgreSQL 通常用作聊天的后端数据库,存储用户数据、消息、聊天历史记录和配置设置。

  • 推荐带宽:

    • 对于数据库使用率适中(例如:查询频率较低或用户较少)的小型组织(最多约 500 个活跃用户),100 Mbps 应该足够了。此带宽可以处理常规数据库查询和写入,而不会导致性能下降。

    • 对于大型部署(超过 3k 活跃用户)聊天数据被大量使用(例如:大量消息历史记录、频繁查询),建议使用 1 Gbps 来处理高频数据库请求并确保低延迟。

持续监控网络性能并根据使用模式和流量峰值根据需要调整带宽分配。

扩展过程

部署多个 Zulip 实例时,请考虑以下方法:

  • 平衡分布(推荐):按用户数量在 Zulip 服务器之间均匀分布域,以优化资源使用

  • 增量部署(可接受):逐步部署域,根据需要添加新的 Zulip 实例

    1. 本地和常规 Zimbra 配置自定义

      1. 调整相关支持 Zulip 的 Zimbra 选项

    2. 对于每个 Zulip 实例

      1. 确定 Zulip 实例容量和大小

      2. 部署和配置 Zulip

      3. 配置域和用户

      4. 配置 Zulip

重复步骤 2,部署新的 Zulip 实例,因为需要更多的总用户限制。

有关详细信息,请参阅以下部分。

Tornado 分片

Tornado 服务负责处理 Zulip 中的实时事件。

一般来说,每个 Tornado 进程可能会占用大约1000事件队列。因此,在有超过1000对于持续活跃的用户,可能需要多个 Tornado 进程来处理流量。

例如:

  • 2k 活跃用户预计会有大约 2 到 3 个龙卷风碎片。

  • 3k 活跃用户预计大约有 3 到 4 个龙卷风碎片。

按用户 ID 分片

Zulip 配置可以调整为按用户 ID 分片龙卷风。这对于在 Zulip 实例的几个龙卷风服务之间分散负载可能很有用。

调整并将以下内容添加到/etc/zulip/zulip.conf以在本地 Zulip 实例上对用户 id 进行分片。

  • 在以下示例中:big-realm中的所有用户,按用户 ID,超过 4 个可在端口 9800、9801、9802 和 9803 上访问(通过后续刷新脚本)的 Tornado 服务:

[tornado_sharding]
9800_9801_9802_9803 = big-realm
  • 修改上面部分中指定的配置后,使用root用户运行以下脚本以应用更改,启动实例,更新配置文件,刷新组件,然后重新启动 nginx:

/home/zulip/deployments/current/scripts/zulip-puppet-apply
# accept prompt: y
/home/zulip/deployments/current/scripts/refresh-sharding-and-restart

然后您可以验证新的龙卷风服务是否可以访问nc在 zulip 服务器上配置的端口上。例如:nc -zv <hostname> <port_no>

Tornado 分片超过 10 个进程

Tornado 分片可正确扩展至 9 个进程。将龙卷风分片扩展到 10 个或超过 10 个进程可能会失败,并出现 zulip 的TornadoQueueClient couldn’t connect to RabbitMQ中的异常/var/log/zulip/server.log.

,原因是端口 9810 已被烟幕使用。

请按照以下步骤解决此问题:

  1. 使用zulip用户停止烟幕supervisorctl stop smokescreen

  2. 使用zulip用户启动聊天服务/home/zulip/deployments/current/scripts/start-server

  3. 使用zulip用户检查所有服务是否已启动supervisorctl status

  4. 用户如果发现任何服务处于停止状态,请尝试使用zulip用户单独启动它们。例如:

    1. 如果zulip-django未启动,使用supervisorctl start zulip-django启动

    2. 如果zulip-tornado:zulip-tornado-port-9810未启动,使用supervisorctl start zulip-tornado:zulip-tornado-port-9810启动。

Zimbra 配置

调整每个邮件存储上的相关max_total_connections选项以支持代理流量:

zmlocalconfig -e httpclient_internal_connmgr_max_host_connections=2000
zmlocalconfig -e httpclient_external_connmgr_max_host_connections=2000
zmlocalconfig -e httpclient_internal_connmgr_max_total_connections=2000
zmlocalconfig -e httpclient_external_connmgr_max_total_connections=2000
zmmailboxdctl restart

可能需要进一步增加以适应 Zulip 实例增加的代理流量。

调整zimbraHttpNumThreads配置以支持代理流量:

zmprov mcf zimbraHttpNumThreads 2000

可能需要进一步增加以适应 Zulip 实例增加的代理流量。

Django

Django 服务负责 Zulip 的核心 API。

单个 Django 服务通常足以处理非 HA 容量中每个受支持大小的流量。在基线传入流量大大超过已处理流量的情况下,可能需要增加进程数量以加快速度。

配置 Django

配置/etc/zulip/uwsgi.ini以适应 Zulip 实例资源

  • processes

    • Web 应用程序的进程数。

    • 增加此值会增加 Web 应用程序可以处理的并发操作数,同时也会增加 Web 应用程序的资源消耗。

    • 将 zulip 实例的进程数增加到 vCPU 数量的两倍:

    • 2 * vCPU

  • listen

    • 侦听队列的大小。

    • 增加此值会增加侦听队列中可能存在的最大请求数。将此值增加到足以处理峰值流量的大小不太可能有用。如果持续达到最大队列大小,则表明 Web 应用程序处理请求的速度太慢,无法跟上传入流量的请求生成。

    • 可能需要调整net.core.somaxcon

的 OS 系统配置 使用 -

su zulip -c '/home/zulip/deployments/current/scripts/restart-server'

重新启动 Zulip 服务 使用 -

su zulip -c 'supervisorctl status'

检查聊天服务的状态 -

安装指南

先决条件

要在 Zimbra 中启用基本聊天和/或高级聊天,请确保满足以下要求:

许可证激活__ZSEP_9f7__ Zimbra 许可证必须启用以下权利:

  • BasicOneToOneChatAccountsLimit- 启用基本的一对一聊天。

  • ChatAccountsLimit- 启用高级聊天。

Zimbra 协作服务器 (ZCS) 版本要求
  • Zimbra Daffodil 版本 10.1.7 或更高版本

Zimbra 聊天服务器硬件要求
最低要求:
CPU: Dual-core processor (Intel/AMD)
RAM: 2 GB
Disk Space: 10 GB of free disk space
CPU: Quad-core processor (Intel/AMD)
RAM: 4 GB or more
Disk Space: 20 GB or more (depends on expected data storage needs)

有关更多详细信息,请参阅扩展和基础设施指南部分.

Zimbra 聊天服务器操作系统要求
兼容的 Linux 发行版:
  • Ubuntu 22.04

  • Ubuntu 24.04

支持的 CPU 架构:
  • x86-64

  • aarch64

Zimbra 聊天服务器其他要求
  • 专用计算机或虚拟机。

  • 安装程序期望 Zimbra Chat 服务器应用程序 (Zulip) 和/或 PostgreSQL 是系统上唯一运行的东西;它将使用 apt 安装系统包(例如 nginx、PostgreSQL 和 Redis)并配置它们以供自己使用。我们强烈建议使用云提供商中的新机器实例、新虚拟机或专用机器。

  • 与互联网的连接。

SSL 证书要求

聊天服务器需要有效的 SSL 证书,以确保安全的 HTTPS 通信,从而允许 Zimbra 邮件存储正确访问它。

有关更多详细信息,请参阅:安装指南 → 安装 Zimbra 聊天服务器部分.

域和 URL 配置

假设 Zimbra 聊天服务器主机名和 Zimbra 域已应用如下:

聊天服务器主机名是 chat1.mydomain.com

Zimbra 域(电子邮件地址的域名)是@domain1.example.com

需要满足以下要求:

  • 将通过 https 访问聊天服务器(https://chat1.mydomain.com)用于配置和其他一些目的。主机名 chat1.mydomain.com 必须可由 Zimbra 代理和邮件存储服务器解析。

  • 此域的聊天访问 URL 将为:https://domain1examplecom.chat1.mydomain.com。 FQDN domain1examplecom.chat1.mydomain.com 必须可由代理和邮件存储服务器解析。

注意:

  • domain1examplecom.chat1.mydomain.com 的 DNS 记录应解析为与 chat1.mydomain.com 相同的 IP

网络和防火墙配置
  • 在聊天服务器的 DNS 中注册的主机名。

  • Zimbra LDAP(或外部 LDAP 或 Active Directory,具体取决于您的环境)主机名可由聊天服务器解析。

  • 领域(域)的聊天服务器主机名和 FQDN 必须可由 Zimbra 服务器解析。

  • Zimbra LDAP 服务器允许从聊天服务器进行 389 端口访问(如果使用 ldaps(基于 SSL 的 LDAP),则允许 636 端口访问)。

  • Zimbra 代理服务器允许从聊天服务器和 PostgreSQL 服务器访问管理代理端口(默认为 9091)以进行聊天和 PostgreSQL 安装。

  • PostgreSQL 服务器仅允许从聊天服务器进行 5432 端口访问.

  • 聊天服务器仅允许从 Zimbra 代理和邮件存储服务器进行 443 端口访问.

  • 🔒 安全要求:

    • 重要:通过阻止未经授权的计算机来限制对聊天 Web 应用程序的访问。聊天 Web 应用程序必须始终通过 Zimbra Web 客户端访问。除 Zimbra 代理和邮件存储服务器外,不得从任何计算机访问它。

    • 如果您想让管理员可以访问聊天 Web 应用程序以进行管理,则必须使用 iptables、firewalld、网络防火墙或任何网络访问控制模块将网络访问配置为仅允许从指定计算机进行访问。

    • 通过阻止未经授权的计算机来限制对 PostgreSQL 数据库的访问。

安装 Zimbra 聊天模块

Ubuntu:
apt install zimbra-zimlet-chat
apt install zimbra-zimlet-classic-chat

RHEL:
yum install zimbra-zimlet-chat
yum install zimbra-zimlet-classic-chat

Common:
su - zimbra
zmmailboxdctl restart

安装 Zimbra 聊天服务器

SSL 证书要求

聊天服务器需要有效的 SSL 证书,以确保安全的 HTTPS 通信,从而允许 Zimbra 邮件存储正确访问它。

安装程序支持三个选项:Commercial, Let’s EncryptSelf-Signed。安装过程中出现提示时,您必须选择这些选项之一。

商业证书:

  • 需要在运行聊天安装程序之前预安装有效的 SSL 证书。

  • 聊天服务器需要 DNS 注册。

  • 证书必须手动部署在以下位置:

    • 私钥:/etc/ssl/private/zulip.key

    • 证书链:/etc/ssl/certs/zulip.combined-chain.crt

  • 该证书必须能够验证聊天服务器的主机名和所有完全限定域名 (FQDN),例如 chat1.mydomain.com、domain1examplecom.chat1.mydomain.com 等。

让我们加密:

  • Chat 安装程序使用--certbot选项自动获取和配置 SSL 证书。

  • 通过选择此选项,您必须在安装程序提示时同意 Let’s Encrypt 订户协议。请阅读最新的 Let’s Encrypt 订户协议,网址为政策和法律存储库

  • DNS 注册是强制性的。

自签名证书:

  • 聊天安装程序使用--self-signed-cert生成自签名证书的选项。

  • 不建议用于生产用途。

准备安装数据

安装需要以下详细信息。

  • Zimbra 代理主机:用于发送管理 SOAP 请求的 Zimbra 管理控制台代理 URL 的主机名 (FQDN)。

  • Zimbra 代理管理端口:代理服务器上 Zimbra 管理控制台代理的端口(通常为9071).

  • Zulip 管理员电子邮件和密码:Zimbra 中现有管理员帐户的电子邮件地址和密码。该电子邮件地址也将用作 Zulip 应用程序的管理员。

  • Zimbra JWT 身份验证密钥:Zimbra 中配置的zimbraChatJwtSecret的值。

  • Zimbra Web 客户端 URL:所有可访问的 Zimbra Web 客户端 URL 的逗号分隔列表(例如,https://web.mydomain.com, https://virtual_domain1.example.com)。不要添加尾部斜杠,例如https://web.mydomain.com/.

安装程序将提示您选择身份验证源:Zimbra LDAP、外部 LDAP 或 Active Directory (AD)。

如果 LDAP 源是 Zimbra LDAP:

  • Zimbra LDAP 主机:Zimbra LDAP 服务器的主机名。如果您有多个 LDAP 服务器,请选择其中之一来使用。

  • Zimbra LDAP 端口:Zimbra LDAP 服务器使用的端口。

  • Zimbra LDAP 密码:用于连接到 Zimbra LDAP 的密码。

  • Zimbra LDAP 协议:选择ldapldaps.

如果 LDAP 源是外部 LDAP/AD:

  • 外部 LDAP/AD 主机:外部 LDAP 或 Active Directory 服务器的主机名。如果您有多个 LDAP/AD 服务器,请选择其中之一进行使用。

  • 外部 LDAP/AD 端口:用于 LDAP/AD 通信的端口。

  • 外部 LDAP/AD 密码:用于身份验证的外部 LDAP 或 Active Directory 服务器密码。

  • 外部 LDAP/AD 协议:在ldapldaps.

  • 外部 LDAP/AD 身份验证绑定 DN 之间进行选择:用于身份验证的专有名称 (DN)。

  • 外部 LDAP/AD 电子邮件属性:存储用户电子邮件地址的 LDAP/AD 属性。

  • 外部 LDAP/AD 全名属性:存储用户全名的 LDAP/AD 属性。

部署模式
单节点设置

在单个服务器上安装聊天服务器应用程序 (Zulip) 和 PostgreSQL。

多节点设置

在不同节点上安装聊天服务器应用程序 (Zulip) 和 PostgreSQL。安装顺序有两种选择。

选项 1:先安装 Zulip,然后安装 PostgreSQL

  1. 安装独立 Zulip

    1. 出现提示时:Have you installed PostgreSQL on another VM, and is it ready for use? (yes/no)→ 选择no

  2. 安装独立 PostgreSQL

  3. 重新配置独立 Zulip 以与独立 PostgreSQL 实例连接

    1. 再次提示时:Have you installed PostgreSQL on another VM, and is it ready for use?→ 选择yes

选项 2:先安装 PostgreSQL,然后安装 Zulip

  1. 安装独立 PostgreSQL

  2. 安装独立 Zulip

    1. 出现提示时:Have you installed PostgreSQL on another VM, and is it ready for use?→ 选择yes

    2. 提供独立 PostgreSQL 服务器的详细信息

安装程序所需的输入
  • Zulip 服务类型:根据您的部署模式进行选择。选项:独立 PostgreSQL、独立 Zulip、组合。

  • Zimbra 代理主机:Zimbra 管理控制台代理 URL 的主机名 (FQDN)。

  • Zimbra 代理管理端口:Zimbra 代理服务器上的管理控制台代理端口(通常为 9071)。

  • Zulip 管理员电子邮件和密码:Zimbra 中现有管理员帐户的凭据。

  • Zulip/聊天服务器主机名:Zulip/聊天服务器的完全限定域名 (FQDN)。

  • 聊天服务器 SSL 证书类型:根据您的要求选择。选项:商业、letcrypt、自签名。

  • LDAP/AD 源:根据您的环境选择。选项:Zimbra LDAP、外部 LDAP、AD。

  • Zimbra JWT 身份验证密钥:Zimbra 中配置的zimbraChatJwtSecret的值。

  • Zimbra Web 客户端 URL:一个或多个 Zimbra 客户端 URL(以逗号分隔),例如https://web.mydomain.com, https://virtual_domain1.example.com.

  • Zulip 服务器 IP:Zulip 服务器的私有 IP 地址,PostgreSQL 使用它来识别连接源。

  • PostgreSQL 主机:PostgreSQL 服务器的主机名或 IP 地址。

  • PostgreSQL 端口:PostgreSQL 服务的端口号(通常为 5432)。

  • PostgreSQL 密码:为 PostgreSQL 数据库中的 zulip 用户设置的密码。

  • PostgreSQL 版本:PostgreSQL 服务器的版本号。从 PostgreSQL 服务器的/etc/zulip/zulip.conf文件中检索 PostgreSQL 版本。

  • PostgreSQL SSL 模式:用于连接到 PostgreSQL 的 SSL 模式。

在单个服务器上安装 Zulip 和 PostgreSQL
如果您要从 Zimbra Daffodil 版本 10.1.7 升级到 10.1.8 - 请参阅升级指南 → 更新自定义部分.

如果您要从 Chat 9.2 升级到 10.2 - 请参阅升级 → 升级聊天部分.

  1. 从以下位置下载聊天安装程序 .tgz链接如下。请同时验证 SHA256 和 MD5 校验和。

    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.md5
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.sha256
  2. 切换到root用户。

  3. 提取存档:

    tar xf zfzi-2.0.0.tgz
    cd zfzi-2.0.0
    ./install.pl
  4. 安装程序将提示您输入Zulip Service Type (Standalone PostgreSQL, Standalone Zulip, Combined),选择Combined.

    [2025-04-04 04:14:53] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.install.log.20250404_041453
    [2025-04-04 04:14:53] [INFO] Detected OS: ubuntu:24.04, Architecture: x86_64. Proceeding.
    [2025-04-04 04:14:53] [INFO] All required commands are already installed.
    Enter Zulip Service Type (Available: Standalone PostgreSQL, Standalone Zulip, Combined): Combined
  5. 安装程序将提示您提供Zimbra Proxy Host, Zimbra Proxy Admin Port, Zulip Admin EmailZulip Admin Email Account Password。请相应地输入您的信息。

    Enter Zimbra Proxy Host: zimbra.com
    Enter Zimbra Proxy Admin Port: 9071
    Enter Zulip Admin Email: admin@domain1.example.com
    Enter Zulip Admin Email Account Password: PASSWORD
  6. 然后,安装程序将验证与 Zimbra 代理主机的连接,并使用您提供的信息验证许可证。

    [2025-04-04 04:15:13] [INFO] Checking connectivity to zimbra.com:9071
    [2025-04-04 04:15:13] [INFO] Connected to zimbra.com:9071.
    [2025-04-04 04:15:13] [INFO] Fetching Zimbra admin authentication token...
    [2025-04-04 04:15:13] [INFO] Admin Auth Token fetched.
    [2025-04-04 04:15:13] [INFO] Fetching Zimbra license information.
    [2025-04-04 04:15:13] [INFO] License information retrieved.
    [2025-04-04 04:15:13] [INFO] Chat services are supported by the existing Zimbra license.
  7. 安装程序将提示您输入Chat Server Hostname.

    Enter Chat Server Hostname: chat1.mydomain.com
    [2025-04-04 04:15:20] [INFO] Checking resolution for hostname: chat1.mydomain.com
    [2025-04-04 04:15:20] [WARN] Hostname 'chat1.mydomain.com' is not resolvable via DNS. Checking /etc/hosts.
    [2025-04-04 04:15:20] [INFO] Hostname 'chat1.mydomain.com' found in /etc/hosts. Proceeding.
  8. 安装程序将提示您输入聊天服务器 SSL 证书类型`,LDAP/AD Source, Zimbra JWT Auth Key, URLs of Zimbra web client。请相应地输入您的信息。

    Enter Chat Server SSL Certificate Type (commercial, letsencrypt, self-signed): letsencrypt
    Enter LDAP/AD Source (Zimbra LDAP, External LDAP, AD): Zimbra LDAP
    Enter Zimbra JWT Auth Key: SECRET_KEY
    Enter URLs of Zimbra web client (comma-separated if multiple): https://www.zimbra.com.cn
  9. 如果您选择letsencrypt作为Chat Server SSL Certificate Type,安装程序将提示您接受 Let’s Encrypt 订阅者协议。您必须同意才能继续安装。

    Please read the latest Let's Encrypt Subscriber Agreement at:
    https://letsencrypt.org/repository/#let-s-encrypt-subscriber-agreement
    You must agree in order to register with the ACME server.
    You must agree to the Let's Encrypt Subscriber Agreement to proceed.
    Do you agree? (yes/no): yes
  10. 如果您选择letsencryptcommercial作为聊天服务器 SSL 证书类型,安装程序将检查聊天服务器主机名是否可公开解析。

    [2025-04-04 04:14:32] [INFO] Let’s Encrypt certificate selected. DNS registration is mandatory for Chat Server Hostname.
    [2025-04-04 04:14:33] [INFO] Chat Server Hostname is publicly resolvable.
  11. 安装程序将根据您指定的 LDAP/AD 源提示输入 LDAP 详细信息。请相应地提供所要求的信息。如果您有多个 LDAP 服务器,请选择其中之一来使用。

    Enter Zimbra LDAP Host: zimbra.com
    Enter Zimbra LDAP Port: 389
    Enter Zimbra LDAP Password: LDAP_PASSWORD
    Enter Zimbra LDAP Protocol (ldap/ldaps): ldap
  12. 安装程序将检查 LDAP 服务器的连接并提示您确认是否继续。您必须输入yes才能继续安装。

    [2025-04-04 04:15:50] [INFO] Checking connectivity to ldap server at zimbra.com:389
    [2025-04-04 04:15:50] [INFO] Connected to ldap server at zimbra.com:389
    [2025-04-04 04:15:50] [INFO] Package already exists: /etc/zulip-installer/package/zulip-server-10.2.tar.gz
    [2025-04-04 04:15:50] [INFO] The following configuration will be used:
    [2025-04-04 04:15:50] [INFO] Zulip service type: Combined
    [2025-04-04 04:15:50] [INFO] Zulip/Chat server hostname: chat1.mydomain.com
    [2025-04-04 04:15:50] [INFO] Chat server SSL certificate type: letsencrypt
    [2025-04-04 04:15:50] [INFO] Zulip admin email: admin@domain1.example.com
    [2025-04-04 04:15:50] [INFO] LDAP/AD Source: Zimbra LDAP
    [2025-04-04 04:15:50] [INFO] URL's of Zimbra web client: https://web.mydomain.com
    
    The system will be modified - continue? (yes/no): yes
  13. 安装过程将开始,可能需要一些时间才能完成。安装完成后请稍候。

  14. 安装输出如下所示(可能会根据提供的输入而有所不同):

    [2025-04-04 04:14:53] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.install.log.20250404_041453
    [2025-04-04 04:14:53] [INFO] Detected OS: ubuntu:24.04, Architecture: x86_64. Proceeding.
    [2025-04-04 04:14:53] [INFO] All required commands are already installed.
    Enter Zulip Service Type (Available: Standalone PostgreSQL, Standalone Zulip, Combined): Combined
    Enter Zimbra Proxy Host: zimbra.com
    Enter Zimbra Proxy Admin Port: 9071
    Enter Zulip Admin Email: admin@domain1.example.com
    Enter Zulip Admin Email Account Password: PASSWORD
    [2025-04-04 04:15:13] [INFO] Checking connectivity to zimbra.com:9071
    [2025-04-04 04:15:13] [INFO] Connected to zimbra.com:9071.
    [2025-04-04 04:15:13] [INFO] Fetching Zimbra admin authentication token...
    [2025-04-04 04:15:13] [INFO] Admin Auth Token fetched.
    [2025-04-04 04:15:13] [INFO] Fetching Zimbra license information.
    [2025-04-04 04:15:13] [INFO] License information retrieved.
    [2025-04-04 04:15:13] [INFO] Chat services are supported by the existing Zimbra license.
    Enter Chat Server Hostname: chat1.mydomain.com
    [2025-04-04 04:15:20] [INFO] Checking resolution for hostname: chat1.mydomain.com
    [2025-04-04 04:15:20] [WARN] Hostname 'chat1.mydomain.com' is not resolvable via DNS. Checking /etc/hosts.
    [2025-04-04 04:15:20] [INFO] Hostname 'chat1.mydomain.com' found in /etc/hosts. Proceeding.
    Enter Chat Server SSL Certificate Type (commercial, letsencrypt, self-signed): letsencrypt
    Enter LDAP/AD Source (Zimbra LDAP, External LDAP, AD): Zimbra LDAP
    Enter Zimbra JWT Auth Key: SECRET_KEY
    Enter URLs of Zimbra web client (comma-separated if multiple): https://web.mydomain.com
    Please read the latest Let's Encrypt Subscriber Agreement at:
    https://letsencrypt.org/repository/#let-s-encrypt-subscriber-agreement
    You must agree in order to register with the ACME server.
    You must agree to the Let's Encrypt Subscriber Agreement to proceed.
    Do you agree? (yes/no): yes
    [2025-04-04 04:14:32] [INFO] Let’s Encrypt certificate selected. DNS registration is mandatory for Chat Server Hostname.
    [2025-04-04 04:14:33] [INFO] Chat Server Hostname is publicly resolvable.
    Enter Zimbra LDAP Host: zimbra.com
    Enter Zimbra LDAP Port: 389
    Enter Zimbra LDAP Password: LDAP_PASSWORD
    Enter Zimbra LDAP Protocol (ldap/ldaps): ldap
    [2025-04-04 04:15:50] [INFO] Checking connectivity to ldap server at zimbra.com:389
    [2025-04-04 04:15:50] [INFO] Connected to ldap server at zimbra.com:389
    [2025-04-04 04:15:50] [INFO] Package already exists: /etc/zulip-installer/package/zulip-server-10.2.tar.gz
    [2025-04-04 04:15:50] [INFO] The following configuration will be used:
    [2025-04-04 04:15:50] [INFO] Zulip service type: Combined
    [2025-04-04 04:15:50] [INFO] Zulip/Chat server hostname: chat1.mydomain.com
    [2025-04-04 04:15:50] [INFO] Chat server SSL certificate type: letsencrypt
    [2025-04-04 04:15:50] [INFO] Zulip admin email: admin@domain1.example.com
    [2025-04-04 04:15:50] [INFO] LDAP/AD Source: Zimbra LDAP
    [2025-04-04 04:15:50] [INFO] URL's of Zimbra web client: https://web.mydomain.com
    The system will be modified - continue? (yes/no): yes
    [2025-04-03 06:47:51] [INFO] Saving user inputs to config file: /etc/zulip-installer/config/config.20250403_064751
    [2025-04-03 06:47:51] [INFO] User inputs saved to config file.
    [2025-04-03 06:47:51] [INFO] Starting: Adding universe repository. Please wait.
    [2025-04-03 06:48:00] [INFO] Completed: Adding universe repository
    [2025-04-03 06:48:00] [INFO] Starting: Updating package lists. Please wait.
    [2025-04-03 06:48:02] [INFO] Completed: Updating package lists
    [2025-04-03 06:48:02] [INFO] Starting: Extracting Zulip package. Please wait.
    [2025-04-03 06:48:03] [INFO] Completed: Extracting Zulip package
    [2025-04-03 06:48:03] [INFO] Starting: Zulip and PostgreSQL installation. Please wait.
    [2025-04-03 06:48:52] [INFO] Zulip and PostgreSQL installation is still in progress
    [2025-04-03 06:49:22] [INFO] Zulip and PostgreSQL installation is still in progress
    [2025-04-03 07:30:28] [INFO] Completed: Zulip and PostgreSQL installation
    [2025-04-03 07:30:28] [INFO] Package downloaded: /etc/zulip-installer/package/chat-customizations-10.2.tar.gz
    [2025-04-03 07:30:28] [INFO] Applying Zulip customizations...
    [2025-04-03 07:30:29] [INFO] Zulip customizations applied successfully.
    [2025-04-03 07:30:29] [INFO] Updated /etc/zulip/settings.py.
    [2025-04-03 07:30:29] [INFO] Updated /etc/zulip/zulip-secrets.conf.
    [2025-04-03 07:30:29] [INFO] Restarting nginx.service...
    [2025-04-03 07:30:29] [INFO] Starting: Restarting nginx.service. Please wait.
    [2025-04-03 07:30:29] [INFO] Completed: Restarting nginx.service
    [2025-04-03 07:30:29] [INFO] Restarting zulip...
    [2025-04-03 07:30:29] [INFO] Starting: Restarting zulip. Please wait.
    [2025-04-03 07:31:06] [INFO] Completed: Restarting zulip
    ! IMPORTANT: Admins should ensure that databases are on a private network and not publicly accessible!
    ! IMPORTANT: Admins should ensure that zimbra mailstore servers can resolve the Chat server hostname and access Chat server on 443 port!
    ! IMPORTANT: Please visit admin guide to proceed to realm setup
    
    Configuration complete
安装独立 Zulip
  1. 从下面的链接下载聊天安装程序 .tgz。请同时验证 SHA256 和 MD5 校验和。

    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.md5
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.sha256
  2. 切换到root用户。

  3. 提取存档:

    tar xf zfzi-2.0.0.tgz
    cd zfzi-2.0.0
    ./install.pl
  4. 安装程序将提示您输入Zulip Service Type (Standalone PostgreSQL, Standalone Zulip, Combined),选择Standalone Zulip.

    [2025-04-02 09:20:48] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.install.log.20250402_092048
    [2025-04-02 09:20:48] [INFO] Detected OS: ubuntu:24.04, Architecture: aarch64. Proceeding.
    [2025-04-02 09:20:48] [INFO] All required commands are already installed.
    Enter Zulip Service Type (Available: Standalone PostgreSQL, Standalone Zulip, Combined): Standalone Zulip
  5. 安装程序将提示您提供Zimbra Proxy Host, Zimbra Proxy Admin Port, Zulip Admin EmailZulip Admin Email Account Password。请相应地输入您的信息。

    Enter Zimbra Proxy Host: zimbra.com
    Enter Zimbra Proxy Admin Port: 9071
    Enter Zulip Admin Email: admin@domain1.example.com
    Enter Zulip Admin Email Account Password: PASSWORD
  6. 然后,安装程序将验证与Zimbra Proxy Host的连接,并使用您提供的信息验证许可证。

    [2025-04-02 09:21:09] [INFO] Checking connectivity to zimbra.com:9071
    [2025-04-02 09:21:09] [INFO] Connected to zimbra.com:9071.
    [2025-04-02 09:21:09] [INFO] Fetching Zimbra admin authentication token...
    [2025-04-02 09:21:09] [INFO] Admin Auth Token fetched.
    [2025-04-02 09:21:09] [INFO] Fetching Zimbra license information.
    [2025-04-02 09:21:09] [INFO] License information retrieved.
    [2025-04-02 09:21:09] [INFO] Chat services are supported by the existing Zimbra license.
  7. 安装程序将提示您输入Chat Server Hostname.

    Enter Chat Server Hostname: chat1.mydomain.com
    [2025-04-04 04:15:20] [INFO] Checking resolution for hostname: chat1.mydomain.com
    [2025-04-04 04:15:20] [WARN] Hostname 'chat1.mydomain.com' is not resolvable via DNS. Checking /etc/hosts.
    [2025-04-04 04:15:20] [INFO] Hostname 'chat1.mydomain.com' found in /etc/hosts. Proceeding.
  8. 安装程序将提示您输入Chat Server SSL, Certificate Type, LDAP/AD Source, Zimbra JWT Auth Key, URLs of Zimbra web client。请相应地输入您的信息。

    Enter Chat Server SSL Certificate Type (commercial, letsencrypt, self-signed): letsencrypt
    Enter LDAP/AD Source (Zimbra LDAP, External LDAP, AD): Zimbra LDAP
    Enter Zimbra JWT Auth Key: SECRET_KEY
    Enter URLs of Zimbra web client (comma-separated if multiple): https://web.mydomain.com
  9. 如果您选择letsencrypt作为Chat Server SSL Certificate Type,安装程序将提示您接受 Let’s Encrypt 订阅者协议。您必须同意才能继续安装。

    Please read the latest Let's Encrypt Subscriber Agreement at:
    https://letsencrypt.org/repository/#let-s-encrypt-subscriber-agreement
    You must agree in order to register with the ACME server.
    You must agree to the Let's Encrypt Subscriber Agreement to proceed.
    Do you agree? (yes/no): yes
  10. 如果您选择了letsencryptcommercial作为Chat Server SSL Certificate Type,安装程序将检查聊天服务器主机名是否可公开解析。

    [2025-04-02 09:21:20] [INFO] Let’s Encrypt certificate selected. DNS registration is mandatory for Chat Server Hostname.
    [2025-04-02 09:21:21] [INFO] Chat Server Hostname is publicly resolvable.
  11. 安装程序将根据您指定的LDAP/AD Source提示输入 LDAP 详细信息。请相应地提供所要求的信息。如果您有多个 LDAP 服务器,请选择其中之一来使用。

    Enter Zimbra LDAP Host: zimbra.com
    Enter Zimbra LDAP Port: 389
    Enter Zimbra LDAP Password: LDAP_PASSWORD
    Enter Zimbra LDAP Protocol (ldap/ldaps): ldap
  12. 安装程序将检查与 LDAP 服务器的连接。

    [2025-04-02 09:21:51] [INFO] Checking connectivity to ldap server at zimbra.com:389
    [2025-04-02 09:21:51] [INFO] Connected to ldap server at zimbra.com:389
    [2025-04-02 09:21:51] [INFO] Creating package directory: /etc/zulip-installer/package
    [2025-04-02 09:21:52] [INFO] Package downloaded: /etc/zulip-installer/package/zulip-server-10.2.tar.gz
  13. 安装程序会询问Have you installed PostgreSQL on another VM, and is it ready for use? (yes/no)。您应该回答no,因为我们首先安装独立 Zulip,独立 PostgreSQL 设置尚未完成。

    Have you installed PostgreSQL on another VM, and is it ready for use? (yes/no): no
    ! IMPORTANT: Once the current installation is complete, install and configure Remote PostgreSQL. Then, rerun the script with option `--use-remote-db` to finish setup.
  14. 安装程序将提示“系统将被修改 - 继续?(是/否):”。您需要输入yes才能继续安装。

    [2025-04-02 09:21:54] [INFO] The following configuration will be used:
    [2025-04-02 09:21:54] [INFO] Zulip service type: Standalone Zulip
    [2025-04-02 09:21:54] [INFO] Zulip/Chat server hostname: chat1.mydomain.com
    [2025-04-02 09:21:54] [INFO] Chat server SSL certificate type: letsencrypt
    [2025-04-02 09:21:54] [INFO] Zulip admin email: admin@domain1.example.com
    [2025-04-02 09:21:54] [INFO] LDAP/AD Source: Zimbra LDAP
    [2025-04-02 09:21:54] [INFO] URL's of Zimbra web client: https://web.mydomain.com
    
    The system will be modified - continue? (yes/no): yes
  15. 安装过程将开始,可能需要一些时间才能完成。安装完成后请稍候。

  16. 安装输出如下所示(可能会根据提供的输入而有所不同):

    [2025-04-02 09:20:48] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.install.log.20250402_092048
    [2025-04-02 09:20:48] [INFO] Detected OS: ubuntu:24.04, Architecture: aarch64. Proceeding.
    [2025-04-02 09:20:48] [INFO] All required commands are already installed.
    Enter Zulip Service Type (Available: Standalone PostgreSQL, Standalone Zulip, Combined): Standalone Zulip
    Enter Zimbra Proxy Host: zimbra.com
    Enter Zimbra Proxy Admin Port: 9071
    Enter Zulip Admin Email: admin@domain1.example.com
    Enter Zulip Admin Email Account Password:
    [2025-04-02 09:21:09] [INFO] Checking connectivity to zimbra.com:9071
    [2025-04-02 09:21:09] [INFO] Connected to zimbra.com:9071.
    [2025-04-02 09:21:09] [INFO] Fetching Zimbra admin authentication token...
    [2025-04-02 09:21:09] [INFO] Admin Auth Token fetched.
    [2025-04-02 09:21:09] [INFO] Fetching Zimbra license information.
    [2025-04-02 09:21:09] [INFO] License information retrieved.
    [2025-04-02 09:21:09] [INFO] Chat services are supported by the existing Zimbra license.
    Enter Chat Server Hostname: chat1.mydomain.com
    [2025-04-02 09:21:19] [INFO] Checking resolution for hostname: chat1.mydomain.com
    [2025-04-02 09:21:19] [WARN] Hostname 'chat1.mydomain.com' is not resolvable via DNS. Checking /etc/hosts.
    [2025-04-02 09:21:19] [INFO] Hostname 'chat1.mydomain.com' found in /etc/hosts. Proceeding.
    Enter Chat Server SSL Certificate Type (commercial, letsencrypt, self-signed): letsencrypt
    Enter LDAP/AD Source (Zimbra LDAP, External LDAP, AD): Zimbra LDAP
    Enter Zimbra JWT Auth Key: SECRET_KEY
    Enter URLs of Zimbra web client (comma-separated if multiple): https://web.mydomain.com
    Please read the latest Let's Encrypt Subscriber Agreement at:
    https://letsencrypt.org/repository/#let-s-encrypt-subscriber-agreement
    You must agree in order to register with the ACME server.
    You must agree to the Let's Encrypt Subscriber Agreement to proceed.
    Do you agree? (yes/no): yes
    [2025-04-02 09:21:20] [INFO] Let’s Encrypt certificate selected. DNS registration is mandatory for Chat Server Hostname.
    [2025-04-02 09:21:21] [INFO] Chat Server Hostname is publicly resolvable.
    Enter Zimbra LDAP Host: zimbra.com
    Enter Zimbra LDAP Port: 389
    Enter Zimbra LDAP Password:
    Enter Zimbra LDAP Protocol (ldap/ldaps): ldap
    [2025-04-02 09:21:51] [INFO] Checking connectivity to ldap server at zimbra.com:389
    [2025-04-02 09:21:51] [INFO] Connected to ldap server at zimbra.com:389
    [2025-04-02 09:21:51] [INFO] Creating package directory: /etc/zulip-installer/package
    [2025-04-02 09:21:52] [INFO] Package downloaded: /etc/zulip-installer/package/zulip-server-10.2.tar.gz
    Have you installed PostgreSQL on another VM, and is it ready for use? (yes/no): no
    ! IMPORTANT: Once the current installation is complete, install and configure Remote PostgreSQL. Then, rerun the script with option `--use-remote-db` to finish setup.
    [2025-04-02 09:21:54] [INFO] The following configuration will be used:
    [2025-04-02 09:21:54] [INFO] Zulip service type: Standalone Zulip
    [2025-04-02 09:21:54] [INFO] Zulip/Chat server hostname: chat1.mydomain.com
    [2025-04-02 09:21:54] [INFO] Chat server SSL certificate type: letsencrypt
    [2025-04-02 09:21:54] [INFO] Zulip admin email: admin@domain1.example.com
    [2025-04-02 09:21:54] [INFO] LDAP/AD Source: Zimbra LDAP
    [2025-04-02 09:21:54] [INFO] URL's of Zimbra web client: https://web.mydomain.com
    The system will be modified - continue? (yes/no): yes
    [2025-04-02 09:21:56] [INFO] Saving user inputs to config file: /etc/zulip-installer/config/config.20250402_092156
    [2025-04-02 09:21:56] [INFO] User inputs saved to config file.
    [2025-04-02 09:21:56] [INFO] Starting: Adding universe repository. Please wait.
    [2025-04-02 09:22:01] [INFO] Completed: Adding universe repository
    [2025-04-02 09:22:01] [INFO] Starting: Updating package lists. Please wait.
    [2025-04-02 09:22:03] [INFO] Completed: Updating package lists
    [2025-04-02 09:22:03] [INFO] Starting: Extracting Zulip package. Please wait.
    [2025-04-02 09:22:05] [INFO] Completed: Extracting Zulip package
    [2025-04-02 09:22:05] [INFO] Starting: Standalone Zulip installation. Please wait.
    [2025-04-02 09:28:27] [INFO] Standalone Zulip installation is still in progress
    [2025-04-02 09:28:57] [INFO] Standalone Zulip installation is still in progress
    [2025-04-02 09:29:27] [INFO] Standalone Zulip installation is still in progress
    [2025-04-02 09:42:41] [INFO] Completed: Standalone Zulip installation
    [2025-04-02 09:42:41] [INFO] Package downloaded: /etc/zulip-installer/package/chat-customizations-10.2.tar.gz
    [2025-04-02 09:42:41] [INFO] Applying Zulip customizations...
    [2025-04-02 09:42:42] [INFO] Zulip customizations applied successfully.
    [2025-04-02 09:42:42] [INFO] Updated /etc/zulip/settings.py.
    [2025-04-02 09:42:42] [INFO] Updated /etc/zulip/zulip-secrets.conf.
    [2025-04-02 09:42:42] [INFO] Restarting nginx.service...
    [2025-04-02 09:42:42] [INFO] Starting: Restarting nginx.service. Please wait.
    [2025-04-02 09:42:43] [INFO] Completed: Restarting nginx.service
    ! IMPORTANT: Admins should ensure that zimbra mailstore servers can resolve the Chat server hostname and access Chat server on 443 port!
    ! IMPORTANT: Please visit admin guide to proceed to realm setup
安装独立 PostgreSQL
  1. 下载聊天安装程序.tgz从下面的链接。请同时验证 SHA256 和 MD5 校验和。

    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.md5
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.sha256
  2. 切换到root用户。

  3. 解压压缩包:

    tar xf zfzi-2.0.0.tgz
    cd zfzi-2.0.0
    ./install.pl
  4. 安装程序会提示您输入Zulip Service Type (Standalone PostgreSQL, Standalone Zulip, Combined),选择Standalone PostgreSQL.

    [2025-03-23 17:04:57] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.install.log.20250323_170457
    [2025-03-23 17:04:57] [INFO] Detected OS: ubuntu:22.04, Architecture: aarch64. Proceeding...
    [2025-03-23 17:04:57] [INFO] All required commands are already installed.
    Enter Zulip Service Type (Available: Standalone PostgreSQL, Standalone Zulip, Combined) : Standalone PostgreSQL
  5. 安装程序将提示您提供Zimbra Proxy Host, Zimbra Proxy Admin Port, Zulip Admin EmailZulip Admin Email Account Password。请相应地输入您的信息。

    Enter Zimbra Proxy Host: zimbra.com
    Enter Zimbra Proxy Admin Port: 9071
    Enter Zulip Admin Email: admin@domain1.example.com
    Enter Zulip Admin Email Account Password: PASSWORD
  6. 然后,安装程序将验证与Zimbra Proxy Host的连接,并使用您提供的信息验证许可证。

    [2025-03-23 17:05:01] [INFO] Checking connectivity to zimbra.com:9071...
    [2025-03-23 17:05:01] [INFO] Successfully connected to zimbra.com:9071.
    [2025-03-23 17:05:01] [INFO] Fetching Zimbra admin authentication token...
    [2025-03-23 17:05:01] [INFO] Admin Auth Token fetched successfully.
    [2025-03-23 17:05:01] [INFO] Fetching Zimbra license information...
    [2025-03-23 17:05:01] [INFO] License information retrieved successfully.
    [2025-03-23 17:05:01] [INFO] Chat services are supported by the existing Zimbra license.
  7. 安装程序将提示您输入连接到 PostgreSQL 实例时可见的 Zulip 服务器 IP,以及为 zulip 用户设置的 PostgreSQL 服务器密码。请相应地提供这些详细信息。

    Enter Zulip server IP visible when connected to this PostgreSQL instance : IP_ADDRESS
    Enter PostgreSQL server password to set for the zulip user: ZULIP_USER_PASSWORD
  8. 安装程序将显示:The system will be modified - continue? (yes/no):输入yes继续。

    [2025-03-23 17:05:10] [INFO] Package downloaded : /etc/zulip-installer/package/zulip-server-10.2.tar.gz
    [2025-03-23 17:05:11] [INFO] The following configuration will be used:
    [2025-03-23 17:05:11] [INFO] Zulip server ip: IP_ADDRESS
    [2025-03-23 17:05:11] [INFO] Zulip service type: Standalone PostgreSQL
    
    The system will be modified - continue? (yes/no): yes
  9. 安装过程将开始,可能需要一些时间才能完成。安装完成后请稍候。

  10. 安装输出如下所示(可能会根据提供的输入而有所不同):

    [2025-03-23 17:04:57] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.install.log.20250323_170457
    [2025-03-23 17:04:57] [INFO] Detected OS: ubuntu:22.04, Architecture: aarch64. Proceeding...
    [2025-03-23 17:04:57] [INFO] All required commands are already installed.
    Enter Zulip Service Type (Available: Standalone PostgreSQL, Standalone Zulip, Combined) : Standalone PostgreSQL
    Enter Zimbra Proxy Host : zimbra.com
    Enter Zimbra Proxy Admin Port : 9071
    Enter Zulip Admin Email: admin@domain1.example.com
    Enter Zimbra Admin Account Password: PASSWORD
    [2025-03-23 17:05:01] [INFO] Checking connectivity to zimbra.com:9071...
    [2025-03-23 17:05:01] [INFO] Successfully connected to zimbra.com:9071.
    [2025-03-23 17:05:01] [INFO] Fetching Zimbra admin authentication token...
    [2025-03-23 17:05:01] [INFO] Admin Auth Token fetched successfully.
    [2025-03-23 17:05:01] [INFO] Fetching Zimbra license information...
    [2025-03-23 17:05:01] [INFO] License information retrieved successfully.
    [2025-03-23 17:05:01] [INFO] Chat services are supported by the existing Zimbra license.
    Enter Zulip server IP visible when connected to this PostgreSQL instance : IP_ADDRESS
    Enter PostgreSQL server password to set for the zulip user: ZULIP_USER_PASSWORD
    [2025-03-23 17:05:10] [INFO] Package downloaded : /etc/zulip-installer/package/zulip-server-10.2.tar.gz
    [2025-03-23 17:05:11] [INFO] The following configuration will be used:
    [2025-03-23 17:05:11] [INFO] Zulip server ip: IP_ADDRESS
    [2025-03-23 17:05:11] [INFO] Zulip service type: Standalone PostgreSQL
    The system will be modified - continue? (yes/no): yes
    [2025-03-23 17:05:14] [INFO] Saving user inputs to config file: /etc/zulip-installer/config/config.20250323_170514
    [2025-03-23 17:05:14] [INFO] User inputs saved successfully to config file.
    [2025-03-23 17:05:14] [INFO] Starting: Adding universe repository
    [2025-03-23 17:05:21] [INFO] Completed: Adding universe repository
    [2025-03-23 17:05:21] [INFO] Starting: Updating package lists
    [2025-03-23 17:05:24] [INFO] Completed: Updating package lists
    [2025-03-23 17:05:24] [INFO] Removing existing extracted zulip directory: /tmp/zulip-server-10.2
    [2025-03-23 17:05:24] [INFO] Starting: Removing old extracted zulip
    [2025-03-23 17:05:24] [INFO] Completed: Removing old extracted zulip
    [2025-03-23 17:05:25] [INFO] Starting: Extracting Zulip package
    [2025-03-23 17:05:26] [INFO] Completed: Extracting Zulip package
    [2025-03-23 17:05:26] [INFO] Starting: Running Standalone PostgreSQL installation
    [2025-03-23 17:05:35] [INFO] Completed: Running Standalone PostgreSQL installation
    [2025-03-23 17:05:35] [INFO] Starting: Running PostgreSQL create database
    [2025-03-23 17:05:35] [INFO] Completed: Running PostgreSQL create database
    [2025-03-23 17:05:35] [INFO] PostgreSQL create database completed.
    [2025-03-23 17:05:35] [INFO] Detected PostgreSQL version: 17
    ! IMPORTANT: Added a rule to allow the `zulip` user to connect to the `zulip` database from 10.0.0.224 using scram-sha-256 authentication.
    ! IMPORTANT: If changes are needed to the PostgreSQL authentication configuration, please modify the /etc/postgresql/17/main/pg_hba.conf file.
    [2025-03-23 17:05:35] [INFO] Restarting postgresql.service...
    [2025-03-23 17:05:38] [INFO] postgresql.service restarted successfully.
    [2025-03-23 17:05:38] [INFO] Checking if PostgreSQL is accessible on host: localhost...
    [2025-03-23 17:05:38] [INFO] PostgreSQL is accessible on localhost.
    [2025-03-23 17:05:38] [INFO] Setting Zulip database user password...
    [2025-03-23 17:05:38] [INFO] Zulip database password set successfully.
    ! IMPORTANT: Admins should ensure that databases are on a private network and not publicly accessible!
    ! IMPORTANT: Admins should ensure that Chat server can access the PostgreSQL server on port 5432!
    Configuration complete
使用独立 PostgreSQL 配置独立 Zulip 服务器
  1. 返回到独立 Zulip 服务器

  2. 运行./install.pl --use-remote-db以使用独立 PostgreSQL 配置独立 Zulip 服务器。

  3. 安装程序将提示Have you installed PostgreSQL on another VM, and is it ready for use? (yes/no):。您应该输入yes,因为 PostgreSQL 已经安装并可供使用。

    [2025-03-26 11:41:05] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.configure-remote-db.log.20250326_114105
    [2025-03-26 11:41:05] [INFO] Detected OS: ubuntu:24.04, Architecture: x86_64. Proceeding.
    Have you installed PostgreSQL on another VM, and is it ready for use? (yes/no): yes
  4. 安装程序将提示您输入 PostgreSQL 服务器详细信息。请提供相应信息。

    Enter Name or IP address of the PostgreSQL server: POSTGRESQL_SERVER
    Enter PostgreSQL server port: 5432
    Enter PostgreSQL server password for the zulip user: PASSWORD
    Enter PostgreSQL server version: 17
    Enter desired SSL mode for the PostgreSQL connection (disable, allow, prefer, require, verify-ca, verify-full): require
  5. 安装程序将检查 PostgreSQL 服务器是否可访问,并根据结果进行相应操作。

    [2025-03-26 11:41:35] [INFO] Checking if PostgreSQL is accessible on host: .
    [2025-03-26 11:41:35] [INFO] PostgreSQL is accessible on .
    [2025-03-26 11:41:35] [INFO] Configuring Zulip to use remote PostgreSQL.
    [2025-03-26 11:41:35] [INFO] Updated /etc/zulip/settings.py with remote PostgreSQL details.
    [2025-03-26 11:41:35] [INFO] Updated /etc/zulip/zulip-secrets.conf with PostgreSQL password.
    [2025-03-26 11:41:35] [INFO] Updated /etc/zulip/zulip.conf with PostgreSQL version.
    [2025-03-26 11:41:36] [INFO] Configured Zulip for remote PostgreSQL.
    [2025-03-26 11:41:35] [INFO] Starting: Initializing the PostgreSQL database. Please wait.
    [2025-03-26 11:41:37] [INFO] Completed: Initializing the PostgreSQL database
    [2025-03-26 11:41:38] [INFO] Starting: Generating realm creation link. Please wait.
    [2025-03-26 11:41:39] [INFO] Completed: Generating realm creation link
    Configuration complete.
  6. 配置输出如下所示(可能会根据提供的输入而有所不同):

    [2025-03-26 11:41:05] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.configure-remote-db.log.20250326_114105
    [2025-03-26 11:41:05] [INFO] Detected OS: ubuntu:24.04, Architecture: x86_64. Proceeding.
    Have you installed PostgreSQL on another VM, and is it ready for use? (yes/no): yes
    Enter Name or IP address of the PostgreSQL server: POSTGRESQL_SERVER
    Enter PostgreSQL server port: 5432
    Enter PostgreSQL server password for the zulip user: PASSWORD
    Enter PostgreSQL server version: 17
    Enter desired SSL mode for the PostgreSQL connection (disable, allow, prefer, require, verify-ca, verify-full): require
    [2025-03-26 11:41:35] [INFO] Checking if PostgreSQL is accessible on host: .
    [2025-03-26 11:41:35] [INFO] PostgreSQL is accessible on .
    [2025-03-26 11:41:35] [INFO] Configuring Zulip to use remote PostgreSQL.
    [2025-03-26 11:41:35] [INFO] Updated /etc/zulip/settings.py with remote PostgreSQL details.
    [2025-03-26 11:41:35] [INFO] Updated /etc/zulip/zulip-secrets.conf with PostgreSQL password.
    [2025-03-26 11:41:35] [INFO] Updated /etc/zulip/zulip.conf with PostgreSQL version.
    [2025-03-26 11:41:36] [INFO] Configured Zulip for remote PostgreSQL.
    [2025-03-26 11:41:35] [INFO] Starting: Initializing the PostgreSQL database. Please wait.
    [2025-03-26 11:41:37] [INFO] Completed: Initializing the PostgreSQL database
    [2025-03-26 11:41:38] [INFO] Starting: Generating realm creation link. Please wait.
    [2025-03-26 11:41:39] [INFO] Completed: Generating realm creation link
    Configuration complete.
配置和日志记录
  • 用户输入存储:/etc/zulip-installer/config/

  • 密码不存储在配置中,包括:

    • Zulip 管理员密码

    • PostgreSQL 密码

    • LDAP/AD 密码

  • 日志文件位置:

    • 安装程序日志:/etc/zulip-installer/log/

    • Zulip 日志:/var/log/zulip/

    • PostgreSQL 日志:/var/log/postgresql/

使用配置文件安装

安装程序通过指定的配置文件支持非交互模式。 使用以下命令以非交互模式使用特定配置文件进行安装: ./install.pl --config=<file>

所有配置键必须根据所选服务类型的要求在配置文件中定义

配置文件键描述
  • ZULIP_SERVICE_TYPE:要安装的 Zulip 服务类型。选项:Standalone PostgreSQL, Standalone Zulip,或Combined.

  • ZIMBRA_PROXY_HOST:Zimbra 管理控制台代理 URL 的主机名 (FQDN)。

  • ZIMBRA_PROXY_ADMIN_PORT:Zimbra 代理服务器上的管理控制台代理端口(通常为9071).

  • ZIMBRA_JWT_AUTH_KEY:在 Zimbra 环境中配置的zimbraChatJwtSecret值。

  • CSRF_TRUSTED_ORIGINS:所有可访问的 Zimbra Web 客户端 URL 的逗号分隔列表(例如https://web.mydomain.com, https://virtual_domain1.example.com).

  • ZULIP_ADMIN_EMAIL:Zimbra 中现有管理员的电子邮件地址。

  • ZULIP_ADMIN_PASSWORD:Zimbra 中上述管理员帐户的密码。

  • ZULIP_SERVER_IP:Zulip 服务器的私有 IP 地址,PostgreSQL 使用它来允许可信连接。

  • CHAT_SERVER_HOSTNAME:Zulip/Chat 服务器的完全限定域名 (FQDN)。

  • SSL_CERT_TYPE:SSL 证书类型。选项:commercial, letsencrypt, self-signed.

  • LETS_ENCRYPT_AGREMENT:必须设置为yes如果SSL_CERT_TYPE是 LetsEncrypt。表示同意Let’s Encrypt 订户协议.

  • LDAP_AD_SOURCE:用于用户身份验证的目录源。选项:Zimbra LDAP, External LDAPAD.

  • ZIMBRA_LDAP_HOST:Zimbra LDAP 服务器的主机名。如果您有多个 LDAP 服务器,请选择其中之一来使用。

  • ZIMBRA_LDAP_PORT:用于连接到 Zimbra LDAP 服务器的端口。

  • ZIMBRA_LDAP_PASSWORD:用于 Zimbra LDAP 身份验证的密码。

  • ZIMBRA_LDAP_PROTOCOL:Zimbra LDAP 连接协议。选项:ldap, ldaps.

  • EXTERNAL_LDAP_HOST:外部 LDAP 或 Active Directory 服务器的主机名。如果您有多个 LDAP/AD 服务器,请选择其中之一进行使用。

  • EXTERNAL_LDAP_PORT:外部 LDAP/AD 服务器使用的端口。

  • EXTERNAL_LDAP_PASSWORD:连接到外部 LDAP/AD 服务器的密码。

  • AUTH_LDAP_BIND_DN:用于 LDAP/AD 绑定的专有名称 (DN)。

  • LDAP_EMAIL_ATTRIBUTE:在 LDAP/AD 中保存用户电子邮件的属性名称。

  • LDAP_FULLNAME_ATTRIBUTE:在 LDAP/AD 中保存用户全名的属性名称。

  • EXTERNAL_LDAP_PROTOCOL:用于外部 LDAP/AD 的协议。选项:LDAP、LDAPS。

  • REMOTE_POSTGRES_READY: yesno。指示 PostgreSQL 是否已在另一个虚拟机上安装并准备就绪。

  • POSTGRES_HOST:远程 PostgreSQL 服务器的主机名或 IP 地址。

  • POSTGRES_PORT:运行 PostgreSQL 的端口(通常为5432).

  • POSTGRES_VERSION:PostgreSQL 服务器的版本。可以从以下位置检索/etc/zulip/zulip.conf在 PostgreSQL 主机上。

  • POSTGRES_PASSWORD:为 PostgreSQL 数据库中的 Zulip 用户分配的密码。

  • POSTGRES_SSL_MODE:连接到 PostgreSQL 时使用的 SSL 模式。

    • 有关更多详细信息,请参阅官方 PostgreSQL 文档: SSL 模式 -SSL 模式.

配置文件示例

组合 (Zulip + PostgreSQL)

ZULIP_SERVICE_TYPE=Combined
ZIMBRA_PROXY_HOST=
ZIMBRA_PROXY_ADMIN_PORT=
ZULIP_ADMIN_EMAIL=
ZULIP_ADMIN_PASSWORD=
CHAT_SERVER_HOSTNAME=
SSL_CERT_TYPE=commercial/letsencrypt/self-signed
ZIMBRA_JWT_AUTH_KEY=
CSRF_TRUSTED_ORIGINS=
LDAP_AD_SOURCE=Zimbra LDAP / External LDAP / AD

IfSSL_CERT_TYPE=letsencrypt,包括:

LETS_ENCRYPT_AGREEMENT=yes

如果LDAP_AD_SOURCE=Zimbra LDAP,包括:

ZIMBRA_LDAP_HOST=
ZIMBRA_LDAP_PORT=
ZIMBRA_LDAP_PASSWORD=
ZIMBRA_LDAP_PROTOCOL=

如果LDAP_AD_SOURCE=External LDAP / AD,包括:

EXTERNAL_LDAP_HOST=
EXTERNAL_LDAP_PORT=
EXTERNAL_LDAP_PASSWORD=
AUTH_LDAP_BIND_DN=
LDAP_EMAIL_ATTRIBUTE=
LDAP_FULLNAME_ATTRIBUTE=
EXTERNAL_LDAP_PROTOCOL=

独立 PostgreSQL

ZULIP_SERVICE_TYPE=Standalone PostgreSQL
ZIMBRA_PROXY_HOST=
ZIMBRA_PROXY_ADMIN_PORT=
ZULIP_ADMIN_EMAIL=
ZULIP_ADMIN_PASSWORD=
ZULIP_SERVER_IP=
POSTGRES_PASSWORD=

独立 Zulip

ZULIP_SERVICE_TYPE=Standalone Zulip
ZIMBRA_PROXY_HOST=
ZIMBRA_PROXY_ADMIN_PORT=
ZULIP_ADMIN_EMAIL=
ZULIP_ADMIN_PASSWORD=
CHAT_SERVER_HOSTNAME=
SSL_CERT_TYPE=commercial/letsencrypt/self-signed
ZIMBRA_JWT_AUTH_KEY=
CSRF_TRUSTED_ORIGINS=
LDAP_AD_SOURCE=Zimbra LDAP / External LDAP / AD

如果SSL_CERT_TYPE=letsencrypt,包括:

LETS_ENCRYPT_AGREEMENT=yes

如果LDAP_AD_SOURCE=Zimbra LDAP,包括:

ZIMBRA_LDAP_HOST=
ZIMBRA_LDAP_PORT=
ZIMBRA_LDAP_PASSWORD=
ZIMBRA_LDAP_PROTOCOL=

如果LDAP_AD_SOURCE=External LDAP / AD,包括:

EXTERNAL_LDAP_HOST=
EXTERNAL_LDAP_PORT=
EXTERNAL_LDAP_PASSWORD=
AUTH_LDAP_BIND_DN=
LDAP_EMAIL_ATTRIBUTE=
LDAP_FULLNAME_ATTRIBUTE=
EXTERNAL_LDAP_PROTOCOL=

对于远程 PostgreSQL 支持,设置:

REMOTE_POSTGRES_READY=yes/no

如果REMOTE_POSTGRES_READY=yes,包括:

POSTGRES_HOST=
POSTGRES_PORT=
POSTGRES_PASSWORD=
POSTGRES_VERSION=
POSTGRES_SSL_MODE=

使用独立 PostgreSQL 配置独立 Zulip 服务器

使用--use-remote-db和配置文件运行安装程序:

./install.pl --use-remote-db --config=<file>

在配置中包括以下内容:

REMOTE_POSTGRES_READY=yes
POSTGRES_HOST=
POSTGRES_PORT=
POSTGRES_PASSWORD=
POSTGRES_VERSION=
POSTGRES_SSL_MODE=

配置聊天服务器

主要设置在聊天服务器上的/etc/zulip/settings.py中定义。它是在安装过程中配置的。

身份验证配置

如果您遇到用户身份验证问题,请检查以下设置:

## Specify URI
## If port number is not 389, specify port number as well.
## If ldap over ssl is used, replace "ldap://" with "ldaps://"
AUTH_LDAP_SERVER_URI = "ldap://LDAP_HOST(:PORT)"

## Set a right BIND DN on your environment
AUTH_LDAP_BIND_DN = "uid=zimbra,cn=admins,cn=zimbra"

## Configure user search query
## Specify right objectClass(es) to search user accounts only.
AUTH_LDAP_USER_SEARCH = LDAPSearch(

    "", ldap.SCOPE_SUBTREE, "(&(mail=%(user)s)(objectClass=zimbraAccount))"
)

## Specify an attribute which stores user's email address
LDAP_EMAIL_ATTR = "mail"
AUTH_LDAP_USERNAME_ATTR = "mail"

## Specify the same objectClass(es) in search query as AUTH_LDAP_USER_SEARCH
## Note that "%(email)s" is used here. AUTH_LDAP_USER_SEARCH uses "%(user)s".
AUTH_LDAP_REVERSE_EMAIL_SEARCH = LDAPSearch("",

     ldap.SCOPE_SUBTREE, "(&(mail=%(email)s)(objectClass=zimbraAccount))")

## Specify an attribute which stores user's full name
AUTH_LDAP_USER_ATTR_MAP = {
    "full_name": "cn",
    ...
}

AUTH_LDAP_SERVER_URI中只能设置一个 LDAP 服务器。如果您的 ldap 服务器上配置了多主复制 (MMR),您可以为AUTH_LDAP_SERVER_URI.

选择其中之一,密码存储在/etc/zulip/zulip-secrets.conf中。它是在安装过程中配置的。

## Zimbra LDAP Password specified at installation
## It must be the same as zimbra_ldap_password in localconfig. (i.e. "zmlocalconfig -s zimbra_ldap_password")
auth_ldap_bind_password = LDAP_BIND_PASSWORD

## Zimbra JWT Auth Key specified at installation
zimbra_jwt_auth_key = RANDOM_STRING_SECRET_KEY

您可以确认聊天服务器可以在 ldap 上搜索帐户。确保两者full_nameemail被返回。

manage.py是管理聊天服务器上各种项目的命令。 query_ldap是选项之一,它将 ldap 搜索查询发送到AUTH_LDAP_SERVER_URI.

(Run as zulip on Chat server)
$ /home/zulip/deployments/current/manage.py query_ldap user1@mydomain.com
...
full_name: user1
email: user1@mydomain.com

中指定的 ldap 服务器 Ifsettings.py或者zulip-secrets.conf被修改,聊天服务器应用程序需要重新启动。

(Run as zulip on Chat server)
$ /home/zulip/deployments/current/scripts/restart-server

注意:如果您的 LDAP 服务器使用自签名证书,则聊天服务器的 LDAP 访问将因证书不受信任而失败。 为了解决这个问题,需要在ldap服务器上部署商业证书。 如果获取商业证书不可行,您可以使用以下设置禁用证书验证。然而,它是不安全的。 不建议在生产中使用。

$ vi /etc/zulip/settings.py
==================================================================
...

AUTH_LDAP_START_TLS = True

## Add the following line
AUTH_LDAP_GLOBAL_OPTIONS = { ldap.OPT_X_TLS_REQUIRE_CERT: ldap.OPT_X_TLS_NEVER }
==================================================================
$ /home/zulip/deployments/current/scripts/restart-server

警告: auth_ldap_bind_password__ZSEP_9f7__ 中的zimbra_jwt_auth_key/etc/zulip/zulip-secrets.conf属于敏感数据。

请确保设置了权限 640(或 600)。

请考虑计划更改zimbra_jwt_auth_key定期。

如果您使用聊天服务器 SSL 证书类型安装聊天服务器:自签名,Zimbra 邮件存储服务器将无法与聊天服务器通信,因为证书不受信任。 要解决此问题,您需要在所有邮件存储服务器上将 ssl_allow_untrusted_certs 设置为 false,以便每个邮件存储服务器不检查 SSL 证书。但是,它不仅会影响与聊天服务器的通信,还会影响从邮件存储服务器发起的所有通信。这会导致安全问题。 不要将其应用于生产。

(Run as zimbra on all Zimbra mailstore servers)
$ zmlocalconfig -e ssl_allow_untrusted_certs=true
$ zmmailboxdctl restart
允许从

CSRF_TRUSTED_ORIGINS中的 Zimbra Web 客户端/etc/zulip/settings.py进行访问的配置必须包含所有 Zimbra Web 客户端 URL。

## URLs of Zimbra web client specified at installation.
## If virtual hostname is used on Zimbra for domain(s), all access urls need to be listed.
## If access by IP address URL is allowed, it needs to be added as well.
(example 1)
CSRF_TRUSTED_ORIGINS = ["https://web.mydomain.com"]

(example 2)
CSRF_TRUSTED_ORIGINS = ["https://web.mydomain.com", "https://virtual_domain1.example.com", "https://10.0.0.2"]

如果修改,则需要重新启动聊天服务器应用程序。

(Run as zulip on Chat server)
$ /home/zulip/deployments/current/scripts/restart-server
外部 LDAP 和 Active Directory 的配置

以下是外部 LDAP 和 Active Directory 的配置示例。

外部 LDAP

## Replace values of the following keys.

## Specify URI
AUTH_LDAP_SERVER_URI = "ldap://YOUR_EXTERNAL_LDAP_HOST"

## If port number is not 389, specify port number as well.
## If ldap over ssl is used, replace "ldap://" with "ldaps://"
AUTH_LDAP_SERVER_URI = "ldap://YOUR_EXTERNAL_LDAP_HOST:12345"

## Replace BIND DN to a right one on your environment
AUTH_LDAP_BIND_DN = "uid=zimbra,cn=admins,cn=zimbra"

## Configure user search query
## Specify right objectClass(es), depending on your ldap structure
AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "", ldap.SCOPE_SUBTREE, "(&(mail=%(user)s)(objectClass=zimbraAccount))"
)

## Specify an attribute which stores user's email address
LDAP_EMAIL_ATTR = "mail"
AUTH_LDAP_USERNAME_ATTR = "mail"

## Specify the same objectClass(es) in search query as AUTH_LDAP_USER_SEARCH
## Note that "%(email)s" is used here. AUTH_LDAP_USER_SEARCH specifies "%(user)s".
AUTH_LDAP_REVERSE_EMAIL_SEARCH = LDAPSearch("",
     ldap.SCOPE_SUBTREE, "(&(mail=%(email)s)(objectClass=zimbraAccount))")

## Specify an attribute which stores user's full name
AUTH_LDAP_USER_ATTR_MAP = {
    "full_name": "cn",
    ...
}

与 Zimbra 上的外部 LDAP 配置类似。 有关更多详细信息,请参阅:LDAP 身份验证 - Zimbra :: 技术中心

Active Directory

## Replace values of the following keys.
## Specify URI
AUTH_LDAP_SERVER_URI = "ldap://YOUR_AD_HOST:PORT"

## Replace BIND DN to a right one on your environment
## If "Administrator" is an account to access your AD,
AUTH_LDAP_BIND_DN = "Administrator"

## Configure user search query
## Replace "mail" with an attribute which stores user's email address
## Specify right objectClass(es), depending on your directory structure
AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "", ldap.SCOPE_SUBTREE, "(&(objectclass=organizationalPerson)(objectclass=person)(objectclass=user)(mail=%(user)s))"
)

## Specify an attribute which stores user's email address
LDAP_EMAIL_ATTR = "mail"
AUTH_LDAP_USERNAME_ATTR = "mail"

# Note that "%(email)s" is used here. AUTH_LDAP_USER_SEARCH specifies "%(user)s".
# To access by Active Directory email address
AUTH_LDAP_REVERSE_EMAIL_SEARCH = LDAPSearch(
    "", ldap.SCOPE_SUBTREE, "(mail=%(email)s)"
)

## Specify an attribute which stores user's full name
AUTH_LDAP_USER_ATTR_MAP = {
    "full_name": "cn",
    ...
}

另一个示例,如果userPrincipalName有用户的电子邮件地址

AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "", ldap.SCOPE_SUBTREE, "(&(objectclass=organizationalPerson)(objectclass=person)(objectclass=user)(userPrincipalName=%(user)s))"
)

LDAP_EMAIL_ATTR = "userPrincipalName"
AUTH_LDAP_USERNAME_ATTR = "userPrincipalName"

AUTH_LDAP_REVERSE_EMAIL_SEARCH = LDAPSearch(
    "", ldap.SCOPE_SUBTREE, "(mail=%(email)s)"

)

它类似于 Zimbra 上的外部 Active Directory 配置。 欲了解更多详情,请参阅:使用 Active Directory 配置身份验证 - Zimbra :: 技术中心

常用设置

外部 LDAP 或 Active Directory 访问的密码需要以与使用 Zimbra LDAP 相同的方式添加到/etc/zulip/zulip-secrets.conf中。

auth_ldap_bind_password = LDAP_BIND_PASSWORD

配置 LDAP 属性

确认聊天服务器可以在 ldap 上搜索帐户后,需要配置一些 ldap 属性。 值为zimbraChatJwtSecret必须与以下之一相同zimbra_jwt_auth_key在聊天服务器上配置。

(Run as zimbra on a Zimbra mailstore server)
$ zmprov mcf zimbraChatBaseHost chat1.mydomain.com
$ zmprov mcf zimbraChatJwtSecret RANDOM_STRING_SECRET_KEY
$ zmprov fc -a all

如果您想为域配置不同的聊天服务器,请参阅:(可选)多个域和多个聊天服务器部分.

为现有域创建领域

  • “领域”是聊天服务器的内部术语;它对应于一个单独的 Zimbra“域”。该“领域”具有唯一的 URL(领域 URL),代理和邮件存储服务器使用该 URL 与聊天服务器进行通信。 安装聊天服务器时,您需要为 Zimbra 服务器上已存在的域手动创建领域。 当使用zimbraFeatureZulipChatEnabled TRUE.

  • 创建域时,在聊天服务器安装后创建的域的领域可以自动传播到聊天服务器。领域 URL 的格式为https://[zimbraZulipChatDomainId].[zimbraChatBaseHost]. zimbraChatBaseHost必须在创建领域之前设置。 zimbraZulipChatDomainId在领域创建期间设置。 zimbraZulipChatDomainId不需要手动设置。 例如,对于域,当zimbraChatBaseHostchat1.mydomain.comzimbraZulipChatDomainIddomain1example.comdomain1.example.com,该域的领域 URL 为https://domain1examplecom.chat1.mydomain.com。 在创建领域之前,主机名设置为zimbraChatBaseHost (chat1.mydomain.com在这种情况下)必须可以在代理和邮件存储服务器上解析,并且有效的 SSL 证书chat1.mydomain.com必须已部署在聊天服务器上。此外,领域 URL 的 FQDN (domain1examplecom.chat1.mydomain.com在这种情况下)必须可由代理和邮件存储服务器解析。

  • DNS 上的更改可能需要一些时间才能反映出来。

  • 管理员指南 → 网络和防火墙配置中所述,领域 URL 必须只能从 Zimbra 代理和邮件存储服务器访问。最终用户不得访问它。

您可以通过以下步骤为现有域创建领域:

  1. 确认 zimbraChatBaseHost 和 zimbraChatJwtSecret 已在域上配置

    (Run as zimbra on a Zimbra mailstore server)
    zmprov gd DOMAIN zimbraChatBaseHost zimbraChatJwtSecret
  2. 确认创建领域 URL 的 FQDN 可以由代理和邮件存储服务器解析

  3. 为现有域创建领域

    1. 最好设置一个域名,删除 @id 中的点 (.) 以保持一致性。

      (Run as zimbra on a Zimbra mailstore server)
      $ zmsoap -vv -z -type admin CreateChatRealmRequest @id="domain1examplecom" / domain="domain1.example.com" @by="name"

    集成聊天服务器后创建域时,可以在聊天服务器上自动创建领域。 zimbraFeatureZulipChatEnabled TRUE 需要在创建域时指定。

    (Run as zimbra on a Zimbra mailstore server)
    ## Realm is not created automatically
    $ zmprov cd DOMAIN
    
    ## Realm is created automatically
    $ zmprov cd DOMAIN zimbraFeatureZulipChatEnabled TRUE

    领域 ID (zimbraZulipChatDomainId) 将是一个从域名中删除点的字符串。 例如 another.domain.example.netanotherdomainexamplenet

    确保在创建域之前,代理和邮件存储服务器可以解析新域的领域 URL 的 FQDN。

    如果部署了多个聊天服务器(即如果zimbraChatBaseHostzimbraChatJwtSecret尚未在 globalConfig 中设置),zimbraChatBaseHostzimbraChatJwtSecret也需要指定。

    ## Realm is created automatically
    $ zmprov cd DOMAIN zimbraFeatureZulipChatEnabled TRUE zimbraChatBaseHost CHAT_HOSTNAME zimbraChatJwtSecret SECRET
  4. 确认zimbraZulipChatDomainId已在域上设置

    (Run as zimbra on a mailstore server)
    $ zmprov gd DOMAIN zimbraZulipChatDomainId
    zimbraZulipChatDomainId: domain1examplecom
  5. 确认已在聊天服务器

    (Run as zulip on Chat server)
    $ /home/zulip/deployments/current/manage.py list_realms
    
    id    string_id            name                           domain
    --    ---------            ----                           ------
    ...
    N     domain1examplecom    domain1.example.com            https://domain1examplecom.chat1.mydomain.com
  6. 上创建领域,运行proxyconfgen命令并重新加载代理,以便 Zimbra 代理可以使用正确的 URL 将请求转发到 Zimbra 聊天服务器。

    (Run as zimbra on all Zimbra proxy servers)
    $ /opt/zimbra/libexec/zmproxyconfgen
    $ zmproxyctl reload

如果您看到以下错误消息,请

$ zmproxyctl reload
Reloading proxy...nginx: [emerg] could not build map_hash, you should increase map_hash_bucket_size: 64
done.

配置以下值proxy_web_map_hash_bucket_size在 localconfig 中(默认值:64)。 Zimbra 代理需要重新启动。

(Run as zimbra on all proxy servers)
$ zmlocalconfig -e proxy_web_map_hash_bucket_size=128
$ /opt/zimbra/libexec/zmproxyconfgen
$ zmproxyctl restart
我们需要将proxy_web_map_hash_bucket_size设置为128的原因是因为 nginx 文件中聊天配置中生成的域+哈希密钥长度超过 64,代理重启失败。

如果您看到以下错误消息,则表示

Reloading proxy...nginx: [emerg] host not found in upstream "domain1examplecom.chat1.mydomain.com:443" in /opt/zimbra/conf/nginx/includes/nginx.conf.chat.upstream:66
done.

代理服务器无法解析领域 URLhttps://domain1examplecom.chat1.mydomain.com的 FQDN。您需要检查DNS记录,或者刷新服务器上的DNS缓存。 DNS 上的更改可能需要一些时间才能反映出来。如果需要立即修复,您可以将条目添加到服务器上的/etc/hosts作为解决方法。

在领域上配置帐户

有关更多详细信息,请参阅:管理员指南

  • 登录管理控制台

  • 转到配置 > 域 > 域

  • 单击“配置所有帐户”按钮

  • 单击“获取帐户”按钮并确认帐户已部署在聊天服务器上

集成聊天服务器后创建帐户时,聊天服务器上会自动创建聊天帐户。 笔记:zimbraFeatureZulipChatEnabled必须是TRUE在一个域上。

(Run as zimbra on a Zimbra mailstore server)
## account is not created automatically on Chat server
$ zmprov ca ACCOUNT PASSWORD zimbraFeatureZulipChatEnabled FALSE

## account is created automatically on Chat server
$ zmprov ca ACCOUNT PASSWORD zimbraFeatureZulipChatEnabled TRUE

## account is created autmatically on Chat server when zimbraFeatureZulipChatEnabled is TRUE on a COS

$ zmprov ca ACCOUNT PASSWORD

启用基本聊天

现代 Web 客户端 - Zimbra Daffodil 10.1.7 版本
  1. 启用zimbraFeatureZulipChatEnabledzimbraFeatureBasicOneToOneChatEnabled在域、COS 或账户级别

    (Run as zimbra on a Zimbra mailstore server)
    (Example)
    $ zmprov mc default zimbraFeatureZulipChatEnabled TRUE zimbraFeatureBasicOneToOneChatEnabled TRUE
  2. 启用zimbra-zimlet-chat域、COS 或帐户级别中的 zimlet

  3. 登录到现代 Web 客户端上的帐户。基本聊天显示在页面右侧(侧边栏中)。

    1. 有关更多详细信息,请参阅单独的文档:“现代 Web 应用程序用户指南 → Zimbra Chat”.

经典 Web 客户端 - Zimbra Daffodil 10.1.8 及以上
  1. 启用zimbraFeatureZulipChatEnabledzimbraFeatureBasicOneToOneChatEnabled在域、COS 或帐户级别

    (Run as zimbra on a Zimbra mailstore server)
    (Example)
    $ zmprov mc default zimbraFeatureZulipChatEnabled TRUE zimbraFeatureBasicOneToOneChatEnabled TRUE
  2. 在域、COS 或帐户级别启用 zimbra-zimlet-classic-chat zimlet

  3. 登录经典 Web 客户端上的帐户。基本聊天显示在页面右侧(侧边栏中)。

  4. 。有关更多详细信息,请参阅单独的文档:“现代 Web 应用程序 → Zimbra 聊天用户指南”.

启用高级聊天

现代 Web 客户端 - Zimbra Daffodil 10.1.7 版本
  1. 启用zimbraFeatureZulipChatEnabledzimbraFeatureAdvancedChatEnabled在域、COS 或帐户级别

    (Run as zimbra on a Zimbra mailstore server)
    (Example)
    $ zmprov mc default zimbraFeatureZulipChatEnabled TRUE zimbraFeatureAdvancedChatEnabled TRUE
  2. 在域、COS 或帐户级别启用zimbra-zimlet-chatzimlet

  3. 登录到现代 Web 客户端上的帐户。消息图标显示在页面顶部的导航栏中。

    1. 有关更多详细信息,请参阅单独的文档:“现代 Web 应用程序 → Zimbra 聊天用户指南”

经典 Web 客户端 - Zimbra Daffodil 10.1.8 及以上
  1. 启用zimbraFeatureZulipChatEnabledzimbraFeatureAdvancedChatEnabled在域、COS 或帐户级别

    (Run as zimbra on a Zimbra mailstore server)
    (Example)
    $ zmprov mc default zimbraFeatureZulipChatEnabled TRUE zimbraFeatureAdvancedChatEnabled TRUE
  2. 启用 zimlet -zimbra-zimlet-classic-chatzimbra-zimlet-chat适用于域、COS 或帐户级别。

  3. 登录经典 Web 客户端上的帐户。 “高级聊天”选项卡显示在页面顶部的导航栏中。

    1. 有关更多详细信息,请参阅单独的文档:“现代 Web 应用程序 → Zimbra 聊天用户指南”

(可选)多个域和多个聊天服务器

您可以在单个聊天服务器上部署多个域或在不同的聊天服务器上分布多个域。这可以使用zimbraChatBaseHost

进行配置 单个域无法跨多个聊天服务器部署。每个域必须部署在特定的聊天服务器上。
聊天服务器可以连接到单个 LDAP 服务器 (AUTH_LDAP_SERVER_URI),该服务器可以支持多个域。但是,如果任何域需要不同的 LDAP 服务器进行身份验证,则必须为其设置单独的聊天服务器。
(Run as zimbra on a Zimbra mailstore server)
## set globalConfig zimbraChatBaseHost to empty to avoid misconfiguration
$ zmprov mcf zimbraChatBaseHost ""
## set zimbraChatBaseHost per domain.
## In this case, domain1 and domain2 are hosted on chat1, and others on chat2.
$ zmprov md domain1.mydomain.com zimbraChatBaseHost chat1.mydomain.com
$ zmprov md domain2.mydomain.com zimbraChatBaseHost chat1.mydomain.com
$ zmprov md domain3.mydomain.com zimbraChatBaseHost chat2.mydomain.com
$ zmprov md domain4.mydomain.com zimbraChatBaseHost chat2.mydomain.com
$ zmprov fc -a all

作为可选,zimbraChatJwtSecret可以为每个聊天服务器进行配置。 (即可以设置相同或不同的值。)

(Run as zimbra on a Zimbra mailstore server)
## set globalConfig `zimbraChatJwtSecret` to empty to avoid misconfiguration
$ zmprov mcf zimbraChatJwtSecret ""
## set a value for chat1 server
$ zmprov md domain1.mydomain.com zimbraChatJwtSecret tx4BhsK9aGmPzyqAQ66jawN
$ zmprov md domain2.mydomain.com zimbraChatJwtSecret tx4BhsK9aGmPzyqAQ66jawN
## set a value for chat2 server
$ zmprov md domain3.mydomain.com zimbraChatJwtSecret bH94LxpaaC12jkyTgnmMcqs
$ zmprov md domain4.mydomain.com zimbraChatJwtSecret bH94LxpaaC12jkyTgnmMcqs
$ zmprov fc -a all
对于每个聊天服务器部署,重复安装指南中的步骤:从安装聊天服务器到启用基本聊天和/或启用高级聊天。
(可选)安装并启用 PGroonga,以便在高级聊天中以非英语语言进行全文搜索

PGroonga是使用 Groonga 作为索引的 PostgreSQL 扩展。 PGroonga 使 PostgreSQL 成为所有语言的快速全文搜索平台。

所有步骤都应在聊天服务器上作为root运行。它不需要在 PostgreSQL 服务器上执行。

  1. 更改部署设置

    crudini --set /etc/zulip/zulip.conf machine pgroonga enabled
  2. 更新部署以遵循新设置

    /home/zulip/deployments/current/scripts/zulip-puppet-apply
  3. 将以下设置添加到/etc/zulip/settings.py

    USING_PGROONGA = True
  4. 应用 PGroonga 迁移。 请注意,迁移可能需要很长时间,并且在迁移完成之前用户将无法发送新消息。

    su zulip -c '/home/zulip/deployments/current/manage.py migrate pgroonga'
  5. 重新启动 Zulip

    su zulip -c '/home/zulip/deployments/current/scripts/restart-server'

如果您在步骤 2 中看到以下错误,请运行apt update然后再次执行步骤 2。

# /home/zulip/deployments/current/scripts/zulip-puppet-apply
...
Get:1 http://iad-ad-1.clouds.archive.ubuntu.com/ubuntu jammy/universe amd64 libmsgpackc2 amd64 3.3.0-4 [15.1 kB]
Err:2 http://ppa.launchpad.net/groonga/ppa/ubuntu jammy/main amd64 libgroonga0 amd64 15.0.2-1.ubuntu22.04.1
  404  Not Found [IP: 185.125.190.80 80]
Get:3 http://iad-ad-1.clouds.archive.ubuntu.com/ubuntu jammy/universe amd64 libsimdjson9 amd64 1.0.2-2 [68.6 kB]
Get:4 https://packages.groonga.org/ubuntu jammy/universe amd64 postgresql-16-pgdg-pgroonga amd64 4.0.1-1 [789 kB]
Fetched 873 kB in 3s (265 kB/s)
E: Failed to fetch http://ppa.launchpad.net/groonga/ppa/ubuntu/pool/main/g/groonga/libgroonga0_15.0.2-1.ubuntu22.04.1_amd64.deb  404  Not Found [IP: 185.125.190.80 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
Error: /Stage[main]/Zulip::Postgresql_base/Package[postgresql-16-pgdg-pgroonga]/ensure: change from 'purged' to 'latest' failed: Could not update: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install postgresql-16-pgdg-pgroonga' returned 100: Reading package lists...
...

升级指南

升级 Chat

要将 Chat 从版本 9.2 升级到 10.2,请按照下列步骤操作。

强烈建议在开始升级之前备份 Zulip 和 PostgreSQL。如需帮助,请参阅文档:备份、导出和导入 — Zulip 10.2 文档

安装程序会自动检查 Zulip、PostgreSQL 或两者是否需要升级。管理员需要按照建议确认每个组件升级。不支持部分升级,例如仅升级 Zulip 或仅升级 PostgreSQL,这将导致升级过程中止。

在单个服务器上升级 Zulip 和 PostgreSQL
  1. 下载聊天安装程序.tgz从下面的链接。请同时验证 SHA256 和 MD5 校验和。

    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.md5
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.sha256
  2. 切换到root用户。

  3. 提取存档:

    tar xf zfzi-2.0.0.tgz
    cd zfzi-2.0.0
    ./install.pl
  4. 系统将提示您输入以下内容,请相应地提供您的输入。

    Have you taken a backup of what you intend to upgrade? (yes/no):
    Do you want to proceed with the Zulip upgrade? (yes/no):
    Do you want to proceed with the PostgreSQL upgrade? (yes/no):
  5. 升级过程将开始,可能需要一些时间才能完成。安装完成后请稍候。

  6. 升级输出如下所示(可能会根据提供的输入而有所不同):

    [2025-06-05 06:01:04] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.install.log.20250605_060104
    [2025-06-05 06:01:04] [INFO] Detected OS: ubuntu:22.04, Architecture: x86_64. Proceeding.
    [2025-06-05 06:01:04] [INFO] All required commands are already installed.
    [2025-06-05 06:01:04] [INFO] The server has been identified as running both Zulip and PostgreSQL.
    [2025-06-05 06:01:04] [INFO] Upgrading the following components:
    [2025-06-05 06:01:04] [INFO] Zulip will be upgraded from 9.2 to 10.2
    [2025-06-05 06:01:04] [INFO] PostgreSQL will be upgraded from 16 to 17
    ! IMPORTANT: This appears to be an upgrade. Please ensure you have taken a backup of everything you intend to upgrade before proceeding.
    Have you taken a backup of what you intend to upgrade? (yes/no): yes
    Do you want to proceed with the Zulip upgrade? (yes/no): yes
    Do you want to proceed with the PostgreSQL upgrade? (yes/no): yes
    [2025-06-05 06:01:26] [INFO] Package downloaded: /etc/zulip-installer/package/zulip-server-10.2.tar.gz
    [2025-06-05 06:01:27] [INFO] Starting: Running Zulip upgrade. Please wait.
    [2025-06-05 06:01:30] [INFO] Running Zulip upgrade is still in progress
    [2025-06-05 06:01:40] [INFO] Running Zulip upgrade is still in progress
    [2025-06-05 06:01:41] [INFO] Completed: Running Zulip upgrade
    [2025-06-05 06:01:41] [INFO] Package downloaded: /etc/zulip-installer/package/chat-customizations-10.2.0.tar.gz
    [2025-06-05 06:01:41] [INFO] Applying Zulip customizations during upgrade...
    [2025-06-05 06:01:41] [INFO] Taking backup of existing chat customizations to /etc/zulip-installer/backup/chat-customizations/9.2_20250605_060532
    [2025-06-05 06:01:41] [INFO] Zulip customizations applied successfully.
    [2025-06-05 06:05:31] [INFO] Updated /etc/zulip/settings-new.py.
    ! IMPORTANT: A new settings file has been generated at /etc/zulip/settings-new.py.
    ! IMPORTANT: You must manually compare /etc/zulip/settings-new.py with the existing /etc/zulip/settings.py.
    ! IMPORTANT: Back up the existing /etc/zulip/settings.py file.
    ! IMPORTANT: Apply necessary changes to /etc/zulip/settings-new.py based on comparison and rename it to /etc/zulip/settings.py
    ! IMPORTANT: This step is required to complete the upgrade.
    ! IMPORTANT: After updating the settings, restart the Zulip server using below command
    su zulip -c '/home/zulip/deployments/current/scripts/restart-server'
    
    [2025-06-05 06:05:31] [INFO] Restarting nginx.service...
    [2025-06-05 06:05:33] [INFO] Starting: Restarting nginx.service. Please wait.
    [2025-06-05 06:05:33] [INFO] Completed: Restarting nginx.service
    [2025-06-05 06:05:33] [INFO] Restarting zulip...
    [2025-06-05 06:05:35] [INFO] Starting: Restarting zulip. Please wait.
    [2025-06-05 06:05:37] [INFO] Completed: Restarting zulip
    
    Zulip upgrade finished
    
    [2025-06-05 06:06:16] [INFO] Package already exists: /etc/zulip-installer/package/zulip-server-10.2.tar.gz
    [2025-06-05 06:06:17] [INFO] Starting: Extracting package. Please wait.
    [2025-06-05 06:06:19] [INFO] Completed: Extracting package
    [2025-06-05 06:06:19] [INFO] Starting: Stopping services. Please wait.
    [2025-06-05 06:06:21] [INFO] Completed: Stopping services
    [2025-06-05 06:06:21] [INFO] Starting: Running PostgreSQL upgrade. Please wait.
    [2025-06-05 06:07:19] [INFO] Completed: Running PostgreSQL upgrade
    [2025-06-05 06:07:19] [INFO] Starting: Starting services. Please wait.
    [2025-06-05 06:07:49] [INFO] Completed: Starting services
    
    PostgreSQL upgrade finished
  7. 更新 settings.py 升级后- 安装程序在升级过程中输出这些指令,但此处重申它们以确保正确配置settings.py.

! IMPORTANT: A new settings file has been generated at /etc/zulip/settings-new.py.
! IMPORTANT: You must manually compare /etc/zulip/settings-new.py with the existing /etc/zulip/settings.py.
! IMPORTANT: Back up the existing /etc/zulip/settings.py file.
! IMPORTANT: Apply necessary changes to /etc/zulip/settings-new.py based on comparison and rename it to /etc/zulip/settings.py
! IMPORTANT: This step is required to complete the upgrade.
! IMPORTANT: After updating the settings, restart the Zulip server using below command
su zulip -c '/home/zulip/deployments/current/scripts/restart-server'
升级独立 Zulip
  1. 从下面的链接下载聊天安装程序 .tgz。请同时验证 SHA256 和 MD5 校验和。

    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.md5
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.sha256
  2. 切换到root用户。

  3. 提取存档:

    tar xf zfzi-2.0.0.tgz
    cd zfzi-2.0.0
    ./install.pl
  4. 系统将提示您输入以下内容,请相应地提供您的输入。

    Have you taken a backup of what you intend to upgrade? (yes/no):
    Do you want to proceed with the Zulip upgrade? (yes/no):
  5. 升级过程将开始,可能需要一些时间才能完成。安装完成后请稍候。

  6. 升级输出将如下所示(可能会根据提供的输入而有所不同):

    [2025-06-08 04:23:59] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.install.log.20250608_042359
    [2025-06-08 04:23:59] [INFO] Detected OS: ubuntu:22.04, Architecture: x86_64. Proceeding.
    [2025-06-08 04:23:59] [INFO] All required commands are already installed.
    [2025-06-08 04:23:59] [INFO] The server has been identified as a standalone Zulip instance.
    [2025-06-08 04:23:59] [INFO] Upgrading the following components:
    [2025-06-08 04:23:59] [INFO] Zulip will be upgraded from 9.2 to 10.2
    
    ! IMPORTANT: This appears to be an upgrade. Please ensure you have taken a backup of everything you intend to upgrade before proceeding.
    
    Have you taken a backup of what you intend to upgrade? (yes/no): yes
    Do you want to proceed with the Zulip upgrade? (yes/no): yes
    
    [2025-06-08 04:24:08] [INFO] Package downloaded: /etc/zulip-installer/package/zulip-server-10.2.tar.gz
    [2025-06-08 04:24:08] [INFO] Starting: Running Zulip upgrade. Please wait.
    [2025-06-08 04:25:24] [INFO] Running Zulip upgrade is still in progress
    [2025-06-08 04:25:54] [INFO] Running Zulip upgrade is still in progress
    [2025-06-08 04:28:08] [INFO] Completed: Running Zulip upgrade
    
    [2025-06-08 04:28:09] [INFO] Package downloaded: /etc/zulip-installer/package/chat-customizations-10.2.0.tar.gz
    [2025-06-08 04:28:09] [INFO] Applying Zulip customizations during upgrade...
    [2025-06-08 04:28:09] [INFO] Taking backup of existing chat customizations to /etc/zulip-installer/backup/chat-customizations/9.2_20250608_042809
    [2025-06-08 04:28:12] [INFO] Zulip customizations applied successfully.
    [2025-06-08 04:28:13] [INFO] Updated /etc/zulip/zulip.conf with PostgreSQL version.
    [2025-06-08 04:28:13] [INFO] Updated /etc/zulip/settings-new.py
    
    ! IMPORTANT: A new settings file has been generated at /etc/zulip/settings-new.py.
    ! IMPORTANT: You must manually compare /etc/zulip/settings-new.py with the existing /etc/zulip/settings.py.
    ! IMPORTANT: Back up the existing /etc/zulip/settings.py file.
    ! IMPORTANT: Apply necessary changes to /etc/zulip/settings-new.py based on comparison and rename it to /etc/zulip/settings.py
    ! IMPORTANT: This step is required to complete the upgrade.
    ! IMPORTANT: After updating the settings, restart the Zulip server using below command
    
    su zulip -c '/home/zulip/deployments/current/scripts/restart-server'
    
    [2025-06-08 04:28:13] [INFO] Restarting nginx.service...
    [2025-06-08 04:28:13] [INFO] Starting: Restarting nginx.service. Please wait.
    [2025-06-08 04:28:18] [INFO] Completed: Restarting nginx.service
    [2025-06-08 04:28:18] [INFO] Restarting zulip...
    [2025-06-08 04:28:18] [INFO] Starting: Restarting zulip. Please wait.
    [2025-06-08 04:28:31] [INFO] Completed: Restarting zulip
    
    Zulip upgrade finished
  7. 更新settings.py升级后- 安装程序在升级过程中输出这些指令,但此处重申它们以确保settings.py.

! IMPORTANT: A new settings file has been generated at /etc/zulip/settings-new.py.
! IMPORTANT: You must manually compare /etc/zulip/settings-new.py with the existing /etc/zulip/settings.py.
! IMPORTANT: Back up the existing /etc/zulip/settings.py file.
! IMPORTANT: Apply necessary changes to /etc/zulip/settings-new.py based on comparison and rename it to /etc/zulip/settings.py
! IMPORTANT: This step is required to complete the upgrade.
! IMPORTANT: After updating the settings, restart the Zulip server using below command

su zulip -c '/home/zulip/deployments/current/scripts/restart-server'
升级独立 PostgreSQL 的正确配置

在升级独立 PostgreSQL 之前,请确保通过以 zulip 用户身份执行以下命令来停止独立 Zulip 服务器: /home/zulip/deployments/current/scripts/stop-server

  1. 下载聊天安装程序.tgz从下面的链接。请同时验证 SHA256 和 MD5 校验和。

    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.md5
    https://www.zimbra.com.cn/downloads/zfzi/2.0.0/zfzi-2.0.0.tgz.sha256
  2. 切换到root用户。

  3. 提取存档:

    tar xf zfzi-2.0.0.tgz
    cd zfzi-2.0.0
    ./install.pl
  4. 系统将提示您输入以下内容,请相应地提供您的输入。

    Have you taken a backup of what you intend to upgrade? (yes/no):
    Do you want to proceed with the PostgreSQL upgrade? (yes/no):
  5. 升级过程将开始,可能需要一些时间才能完成。安装完成后请稍候。

  6. 升级输出将如下所示(可能会根据提供的输入而有所不同):

    [2025-06-08 04:44:46] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.install.log.20250608_044446
    [2025-06-08 04:44:46] [INFO] Detected OS: ubuntu:22.04, Architecture: x86_64. Proceeding.
    [2025-06-08 04:44:46] [INFO] All required commands are already installed.
    [2025-06-08 04:44:46] [INFO] The server has been identified as a standalone PostgreSQL instance.
    [2025-06-08 04:44:46] [INFO] Upgrading the following components:
    [2025-06-08 04:44:46] [INFO] PostgreSQL will be upgraded from 16 to 17
    
    ! IMPORTANT: This appears to be an upgrade. Please ensure you have taken a backup of everything you intend to upgrade before proceeding.
    
    Have you taken a backup of what you intend to upgrade? (yes/no): yes
    Do you want to proceed with the PostgreSQL upgrade? (yes/no): yes
    
    [2025-06-08 04:44:55] [INFO] Package downloaded: /etc/zulip-installer/package/zulip-server-10.2.tar.gz
    [2025-06-08 04:44:55] [INFO] Starting: Extracting package. Please wait.
    [2025-06-08 04:44:56] [INFO] Completed: Extracting package
    [2025-06-08 04:44:56] [INFO] Starting: Running PostgreSQL upgrade. Please wait.
    [2025-06-08 04:45:19] [INFO] Completed: Running PostgreSQL upgrade
    
    PostgreSQL upgrade finished
  7. 完成独立 PostgreSQL 升级后,切换回独立 Zulip 服务器并使用以下命令以zulip用户身份启动它: /home/zulip/deployments/current/scripts/start-server

使用配置文件升级

安装程序通过指定的配置文件支持非交互模式。 使用以下命令以非交互模式使用特定配置文件进行安装:./install.pl --config=<file>

所有配置键必须根据所选服务类型的要求在配置文件中定义

配置文件键描述

CONFIRM_BACKUP_DONE: yesno。在继续升级之前确认备份是否已完成。

CONFIRM_ZULIP_UPGRADE: yesno。确认用户是否要继续升级 Zulip。

CONFIRM_DB_UPGRADE: yesno。确认用户是否要继续升级数据库。

CONFIRM_REINSTALL: yesno。确认是否应执行重新安装。一般不建议重新安装,因为这可能会破坏现有系统。提供此选项是为了防止用户再次运行安装程序时意外重新安装。

升级配置文件示例

组合 (Zulip + PostgreSQL) 升级

CONFIRM_BACKUP_DONE=yes
CONFIRM_ZULIP_UPGRADE=yes
CONFIRM_DB_UPGRADE=yes

独立 Zulip 升级

CONFIRM_BACKUP_DONE=yes
CONFIRM_ZULIP_UPGRADE=yes

独立 PostgreSQL 升级

CONFIRM_BACKUP_DONE=yes
CONFIRM_DB_UPGRADE=yes

对于重新安装

通常不建议重新安装,因为它可能会破坏现有系统。

CONFIRM_REINSTALL=yes

更新自定义

  • 当从 Zimbra Daffodil 版本 10.1.7 升级到 10.1.8 时,Zimbra Chat 更新自定义,如下所述。

  • 此步骤仅用于更新聊天服务器节点上的现有自定义。

不要在独立 PostgreSQL 节点上运行它,它不会工作并且会抛出错误。
  • 最新的自定义项包含在zfzi-1.0.1.

  • 中 如果您之前安装了zfzi-1.0.0并将 Zimbra 升级到版本 10.1.8,则必须使用此新版本更新聊天自定义项。

    1. 下载聊天安装程序.tgz从下面的链接。请同时验证 SHA256 和 MD5 校验和。

      https://www.zimbra.com.cn/downloads/zfzi/1.0.1/zfzi-1.0.1.tgz
      https://www.zimbra.com.cn/downloads/zfzi/1.0.1/zfzi-1.0.1.tgz.md5
      https://www.zimbra.com.cn/downloads/zfzi/1.0.1/zfzi-1.0.1.tgz.sha256
    2. 切换到root用户。

    3. 提取存档并更新自定义

      tar xf zfzi-1.0.1.tgz
      cd zfzi-1.0.1
      ./install.pl --update-customizations
    4. 更新自定义输出将如下所示

    [2025-05-07 08:17:43] [INFO] Logging initialized. Operations will be logged to /etc/zulip-installer/log/zulip.update-customizations.log.20250507_081743
    [2025-05-07 08:17:43] [INFO] Detected OS: ubuntu:22.04, Architecture: x86_64. Proceeding.
    [2025-05-07 08:17:43] [INFO] Detected installed Zulip version: 9.2
    [2025-05-07 08:17:43] [INFO] Zulip environment verified successfully for updating customizations.
    [2025-05-07 08:17:43] [INFO] Package already exists: /etc/zulip-installer/package/chat-customizations-9.2.1.tar.gz
    [2025-05-07 08:17:43] [INFO] Updating existing Zulip customizations...
    [2025-05-07 08:17:43] [INFO] Taking backup of existing chat customizations to /etc/zulip-installer/backup/chat-customizations/9.2.1_20250507_081743
    [2025-05-07 08:17:48] [INFO] Zulip customizations updated successfully.
    [2025-05-07 08:17:48] [INFO] Restarting zulip...
    [2025-05-07 08:17:48] [INFO] Starting: Restarting zulip. Please wait.
    
    [2025-05-07 08:18:22] [INFO] Completed: Restarting zulip
    
    Zulip customizations update finished. The Zulip server is now running with the new customizations

管理员指南

管理控制台

管理员可以在聊天服务器上管理与聊天相关的配置和帐户。 欲了解更多详情,请参阅:常见问题解答部分对于域管理员或委派管理员。

账户、COS 和域名设置:

  • 启用聊天:是否启用聊天功能。如果为FALSE,则基本一对一聊天和高级聊天被视为禁用。

  • 启用基本一对一聊天:是否启用基本聊天。

  • 启用高级聊天:是否启用高级聊天。

Zimbra Chat Admin Console Enable Chat
图 4. Zimbra 聊天管理控制台 启用聊天
域设置中的聊天帐户管理:
  • 获取帐户:在聊天服务器上创建的帐户显示在已激活帐户和已停用帐户字段中。

Zimbra Chat Admin Console Get Accounts
图 5. Zimbra Chat 管理控制台 获取帐户
  • 停用/重新激活:单击已激活帐户中的帐户,然后单击停用,然后用户将被停用。可以通过单击已停用帐户中的帐户并单击重新激活来重新激活它。

从 Zimbra 中删除帐户后,该帐户会在聊天服务器上自动停用。

欲了解更多详情,请参阅:常见问题解答部分关于如何从聊天服务器中删除帐户。

Zimbra Chat Admin Deactivate Account
图 6. Zimbra 聊天管理员停用帐户
  • 配置所有帐户:将域上的所有帐户配置到聊天服务器。

    • 为了提供多个帐户,我们开发了一个实用程序,请参阅:配置多个域部分下面的

  • 激活/停用帐户列表不会自动更新。单击“获取帐户”以显示最新列表。

帐户配置的成功和失败次数显示在对话框中。当您看到失败时,失败事件日志用户creation failed: EMAIL_ADDRESS写入聊天服务器上的/var/log/zulip/server.log中。您可以在/var/log/zulip/server.log和/或/var/log/zulip/error.log.
Zimbra Chat Admin Provision All Accounts
中找到失败的原因。 图 7. Zimbra 聊天管理员配置所有帐户
  • 配置帐户:将域上的单个帐户配置到聊天服务器。在文本字段中输入电子邮件地址,然后单击配置帐户。激活/停用的帐户列表不会自动更新。单击“获取帐户”以显示最新列表。

Zimbra Chat Admin Provision an Account
图 8. Zimbra 聊天管理员配置帐户
  • 如果尚未在聊天服务器上创建领域,则该域上的聊天设置不可用。

Zimbra Chat Admin Chat not configured
图 9. Zimbra Chat 管理员聊天未配置

配置多个域

先决条件

运行此脚本需要 Zimbra Collaboration Suite 版本 10.1.10 或更高版本。 当域数量超过 4 个且每个域有 4,000 个或更多帐户时,建议使用此设置。

  1. 在聊天服务器上更新 Harakari 参数

    • vi /etc/zulip/uwsgi.ini

    • 找到 harakari 并将其更新为 300

  2. 添加uwsgi_read_timeout

    • vi /etc/nginx/zulip-include/app

    • 搜索include uwsgi_params

    • 添加行 -uwsgi_read_timeout 300;

实用程序

zmchatprovall实用程序为所有启用聊天功能的 Zimbra 域提供聊天帐户。它支持来自域列表文件的可选输入,并允许通过--parallelismFactor选项进行并行处理。没有聊天功能的域将被自动跳过。

以下内容提供帮助 (zmchatprovall -h)

Usage: /opt/zimbra/bin/zmchatprovall [options]

Options:
  -h, --help             Show this help message
  --filename=<file> <optional arg>     Specify input file containing domain list
  --parallelismFactor=<number> <optional arg>   Number of parallel domain provisioning processes (default: 1)
Description:

  This script provisions chat accounts for domains with the chat feature enabled.
  If --filename option is provided, it provisions chat accounts for domains listed in the file (one domain per line)
  that have the chat feature enabled.
  If no --filename option is provided, it provisions chat accounts for all domains that have the chat feature enabled.
  The parallelismFactor should be set to no more than 50% of the available CPU cores
  on the most constrained component — either the Chat server or the Chat PostgreSQL server.
  For example, if the Chat server has 6 cores and the Chat PostgreSQL server has 4 cores,
  use the lower core count (i.e., 4) as the reference and set parallelismFactor to 2 (50% of 4).
NOTE:
  Domains without the chat feature enabled will be skipped.
  It is recommended to run this script in the background to avoid session timeouts.
Example:
  /opt/zimbra/bin/zmchatprovall --filename=/path/to/chatdomains.txt --parallelismFactor=2 & disown
  /opt/zimbra/bin/zmchatprovall & disown
聊天目录

/opt/zimbra/chat目录用于存储与聊天服务相关的数据。

在配置过程中,provisionedChatDomainAccountsResult.txt包含结果的文件保存在此目录中。

为了确保成功配置,zimbra 用户必须具有对此目录的写入权限。

如果该目录不存在或不可写,zmchatprovall 命令将停止并显示以下消息:

************************************************************
  Chat directory not found or not writable.
  Please run the following commands as root:
  mkdir -p /opt/zimbra/chat
  chown zimbra:zimbra /opt/zimbra/chat
  Then re-run this script.
************************************************************
如何决定parallelismFactor

parallelismFactor应配置为不超过资源最受限的系统(聊天服务器或聊天 PostgreSQL 服务器)上可用 CPU 内核的 50%。

这可确保最佳性能并防止并行域配置期间系统过载。例如,如果 Chat 服务器有 6 个核心,PostgreSQL 服务器有 4 个核心,则使用 4 作为参考,并将parallelismFactor设置为 2(4 的 50%)。 如果 Chat 和 PostgreSQL 共享 8 核服务器,请将parallelismFactor设置为 4(8 的 50%)

功能

zmchatprovall脚本为启用了聊天功能的域提供聊天帐户。它接受两个可选参数:

  • --filename:包含要处理的域列表的文件(每行一个)。如果未提供,则考虑所有符合条件的域。

  • --parallelismFactor:控制同时配置的域数量。例如,如果设置为 2 并且有 10 个域,则脚本将并行处理 2 个域;一旦一个完成,就会选择队列中的下一个。

对于每个域,默认情况下以 100 个为一批进行帐户配置。可以使用以下方法修改该批量大小:

zmlocalconfig -e chat_proxy_provisioning_batch_size=<new_size>

需要重新启动邮箱服务才能使新的批量大小生效。这种批处理有助于管理系统负载并确保大规模配置期间处理更顺畅。

如果您遇到任何问题,请参阅故障排除指南 → 配置多个域失败

在后台运行配置

如果 SSH 会话断开连接,脚本的输出将不会记录到:/opt/zimbra/chat/provisionedChatDomainAccountsResult.txt

为了防止这种情况,请使用以下命令在后台运行脚本:

zmchatprovall --filename=/opt/zimbra/bin/chatdomains.txt & disown
重试机制

实现了重试机制:例如,如果批量发送 100 个帐户,其中 30 个帐户配置成功,但其余 70 个帐户配置失败,则将重试该批次。对于任何失败的批次,该脚本将尝试最多 3 次重试。

执行摘要

执行摘要记录在/opt/zimbra/chat/provisionedChatDomainAccountsResult.txt

示例 -

vi /opt/zimbra/chat/provisionedChatDomainAccountsResult.txt
Provisioning chat accounts for domain:
testdomain1.com
Accounts provisioned: 5000
Accounts not provisioned: 0
--------------------------------------------------
Provisioning chat accounts for domain:
testdomain2.com
Accounts provisioned: 5000
Accounts not provisioned: 0
--------------------------------------------------
Provisioning chat accounts for domain:
testdomain3.com
Accounts provisioned: 5000
Accounts not provisioned: 0
--------------------------------------------------
Provisioning chat accounts for domain:
testdomain4.com
Accounts provisioned: 5000
Accounts not provisioned: 0
--------------------------------------------------
Provisioning chat accounts for domain:
testdomain5.com
Accounts provisioned: 5000
Accounts not provisioned: 0
--------------------------------------------------
电子邮件通知

一旦执行开始,管理员将在执行完成后以 1 小时的频率收到定期通知。

Zimbra Chat Provisioning Notification Progress
图 10. Zimbra 聊天配置通知进度
Zimbra Chat Provisioning Notification Progress
图 11. Zimbra 聊天配置通知摘要
表现统计

zmchatprovallscript跨多个域执行,每个域都有一组唯一的帐户。目标是衡量系统稳定性、并行执行效率和资源使用方面的性能。

系统配置
  • ZCS 服务器 - 4 vCPU / 16 GB RAM

  • 聊天服务器 - 4 vCPU / 16 GB RAM

  • PostgreSQL 服务器 - 4 vCPU / 16 GB RAM

  • 网络带宽 - 2 Gbps

测试配置

运行测试时默认批量大小设置为 100zmlocalconfig -e chat_proxy_provisioning_batch_size = 100

性能统计信息以及资源利用率
具有帐户的域 帐户总数 #parallelism 所用时间 ZCS 服务器 CPU ZCS 服务器内存 聊天服务器 CPU 聊天服务器内存 PostgreSQL CPU PostgreSQL 内存

域 - 1 个帐户 - 5k

5k

1

58 分钟

10%

51%

20%

24%

22%

8.7%

域名 - 2 个帐户 - 10k

20k

2

1 小时 10 分钟

14%

52%

48%

25%

44%

10%

3

1 小时 31 分钟

12%

53%

69%

26%

60%

11%

域 - 3 个帐户 - 10k

30k

2

2 小时 11 分钟

14%

54%

50%

27%

47%

12.2%

3

3 小时 38 分钟

15%

55%

70%

28%

57%

13%

域 - 3 个账户 - 30k

90k

3

5 小时

16%

56%

70%

28%

60%

13%

观察
  • 并行度阈值:将并行度增加到超过 2 个线程(Chat 和 PostgreSQL CPU 核心的 50%)会导致 CPU 利用率上升到约 70%。

  • CPU 利用率:对于聊天PostgreSQL 服务器,配置过程是CPU 密集型。随着并行性的增加,CPU 负载也会增加,如果不加以管理,可能会导致性能下降。

性能建议
  • 并行性调整

    • 在同时为多个域运行配置时,使用 Chat 和 PostgreSQL 服务器上 50% 的可用 CPU 核心作为并行性因子。 参考:如何确定并行部分

  • 监控 在配置期间持续监控 Chat 和 PostgreSQL 服务器上的 CPU 和内存利用率,以避免性能瓶颈或系统不稳定。

  • 推荐执行窗口

    • 在维护时段或周末系统负载最小时运行配置。

    • 避免在工作时间运行配置脚本,因为该任务的 CPU 密集型性质可能会影响正常操作。

一对一聊天的 Zimlet 配置指南

基本行为

在一对一聊天中,同一域中所有用户的状态数据在初始加载过程中从 Zimbra 聊天服务器获取。此后,用户的呈现状态(活跃或空闲)被定期发送到聊天服务器(以下称为“呈现更新请求”)。来自服务器的响应包括最后时间戳被更新的其他用户的呈现数据。另外,当其他用户变为活动状态时,通过事件请求的响应来通知(以下称为“存在事件通知”)。

大型域上可能存在的性能问题

如果域上有很多用户,则可能会增加一些性能问题。

  • 响应大小在初始加载过程中变大

  • 存在更新请求的响应中包含的存在数据的大小变大,尤其是当许多用户在线时。 (即许多并发用户)

  • 存在事件通知的数量变大

配置

zimletzimbra-zimlet-chat有一些配置。 config_template.xml包含在 zimlet 中。您可以查看有关设置的其他信息。

  1. pingIntervalActiveInSeconds:默认 180(秒)

    • 当用户处于活动状态时,状态每 3 分钟发送到聊天服务器。即,它用于活动状态下的存在更新请求。

  2. pingIntervalIdleInSeconds:默认 900(秒)

    • 当用户空闲时,每 15 分钟将状态发送到聊天服务器。即它用于空闲状态下的存在更新请求。

  3. maxAllowedSecondsForNoActivity:默认240(秒)

    • 当用户4分钟没有使用键盘或鼠标(移动设备上的触摸动作)时,用户被视为空闲状态。在那之后,pingIntervalIdleInSeconds用于发送用户的在线状态。

    • 当用户使用键盘或鼠标时,用户状态从空闲变为活动。之后,使用pingIntervalActiveInSeconds

  4. presenceUpdateMinFreqInSeconds:默认 60(秒)

    • 当短时间内从客户端(或浏览器)发送许多状态更新请求时,聊天服务器会忽略它们,不频繁更新数据库。

    • 默认情况下,最小更新周期为 55 秒。例如,当聊天服务器在 55 秒内收到来自同一用户的 5 个请求时,它接受第一个请求并更新数据库,但忽略其他 4 个请求。

    • 当用户空闲时,状态将发送到聊天服务器。但是,如果在活动状态发送到聊天服务器后发生这种情况,则聊天服务器上将忽略空闲状态通知。考虑到限制,zimlet 在指定值之后发送额外的空闲存在状态。

      在聊天服务器上修改最小更新周期 55 秒之前,不得更改该值。
  5. idleEventCallDelay:默认 60(秒)

    • 通过存在事件通知检查其他用户收到消息和状态更改为在线等事件。当用户处于活动状态时,下一个事件请求将在上一个存在事件通知完成后立即发送。

    • 当用户空闲时,在发送下一个事件请求之前添加 1 分钟的等待时间。 这意味着,

      • 接收存在事件通知

      • 等待 1 分钟

      • 发送下一个事件请求

    • 如果用户在等待时间内收到来自其他用户的消息或其他用户在线,则该事件将在下一个事件请求的响应中通知并反映在 UI 中。

  6. enablePresenceEvents: 默认:true

    • 当它是true:

      • 在初始加载过程中从聊天服务器获取同一域中所有用户的状态数据。

      • 当其他用户变为活动状态时,将通过事件请求的响应来通知。

      • 存在更新请求的响应包括其时间戳被更新的其他用户的存在数据。

    • 当为false 时:

      • 不加载所有用户的状态数据。相反,仅获取侧栏中显示的用户(固定和未固定用户)的状态数据。

      • 当其他用户变为活动状态时,不会通知在线状态。

      • 状态更新请求的响应不包括时间戳被更新的其他用户的状态数据。

      • 不使用存在事件通知和存在更新请求的响应,而是在发送存在更新请求时一起发送仅获取必要用户的存在数据的另一个http请求。 (以下称为“状态获取请求”。)

    • 优点和缺点

      • true 时,

      • 优点

        • 当另一个用户变为活动状态时,可以在更短的时间内检测到

      • 缺点

        • 所有其他用户的状态数据在初始加载过程中获取。

        • 所有其他用户的“活动”状态更改都会通过存在事件通知来通知,即使用户仅与某些其他用户通信也是如此。

        • 这意味着初始加载的响应大小可能很大并且可能发生许多存在事件通知。

        • 它将增加客户端计算机上的内存使用、增加服务器负载并增加网络流量。

      • 当为false 时,

      • 优点

        • 初始加载的尺寸较小。

        • 仅从聊天服务器获取必要用户的状态数据。

        • 它将减少客户端上的内存使用,并减少服务器负载和网络流量,尤其是在许多情况下在存在事件通知上。

      • 缺点

        • 当用户变为活动状态时,不会立即反映在其他用户上。它将在下次触发存在请求时反映出来。

        • 发送额外的存在获取请求。客户端和服务器端可能都会有一些开销。然而,与通过大域中的存在更新请求的响应来获取存在更新相比,它不应该有那么多。

约束
  • 的值pingIntervalActiveInSeconds, pingIntervalIdleInSeconds, maxAllowedSecondsForNoActivity并且presenceUpdateMinFreqInSeconds必须以秒为单位提供。

  • 所需的最小值pingIntervalActiveInSeconds, pingIntervalIdleInSecondspresenceUpdateMinFreqSeconds必须是 60 秒。

  • presenceUpdateMinFreqInSeconds值必须小于pingIntervalActiveInSeconds并且pingIntervalIdleInSeconds.

  • presenceUpdateMinFreqInSeconds不得更改,除非在 Zimbra Chat 服务器上修改了状态更新的最小频率秒数设置。

  • 所需的最大值idleEventCallDelay必须是 60 秒。

在小域上

  • 默认值应该很好

在大型域上

  • enablePresenceEvents为 false

  • 如果您在聊天服务器上看到性能问题,请考虑:增加pingIntervalActiveInSeconds,b。增加pingIntervalIdleInSeconds和/或c.减少maxAllowedSecondsForNoActivity以减少存在更新请求的频率。

它们是调整参数。更改的效率取决于并发用户数、聊天服务器规格、网络带宽等。

配置步骤

修改config_template.xml并在部署 zimlet 后应用更改。 所有步骤都应在 Zimbra 邮件存储服务器上作为zimbra运行。

  1. 部署 zimlet

  2. 检查当前配置

    $ zmzimletctl info zimbra-zimlet-chat
    ...
    Config: <zimletConfig name="zimbra-zimlet-chat" version="1.0.0">...</zimletConfig>
  3. 编辑config_template.xml。例如:

    $ cd /path/to/your-working-directory/
    $ cp /opt/zimbra/zimlets-deployed/zimbra-zimlet-chat/config_template.xml ./
    $ vi config_template.xml
    • 设置较高版本号

    • 修改设置的值

  4. 应用更改

    $ zmzimletctl configure config_template.xml
  5. 确认更改

    $ zmzimletctl info zimbra-zimlet-chat
  6. 运行flushCache。指定-a多服务器环境上的选项。

    $ zmprov fc -a zimlet

日志文件

聊天服务器应用程序的主要日志文件是/var/log/zulip/server.log在聊天服务器上。 您可以找到其他日志文件,例如django.log__ZSEP_9f7__ 目录下有tornado.log/var/log/zulip/,但主要日志事件都集中在server.log.

中。server.log的日志格式如下:

  • 时间戳

  • 日志级别

  • 记录器名称,缩写为zrZulip 请求日志

  • IP 地址

  • HTTP 方法

  • HTTP 状态代码

  • 处理时间

  • (可选性能数据详细信息)

  • 来自的端点/URLzproject/urls.py

Nginx 日志文件access.logerror.log存在于/var/log/nginx/聊天服务器上的目录。 格式为access.log定义于/etc/nginx/nginx.conf如下:

log_format combined_with_host_and_time '$remote_addr - $remote_user [$time_local] '
                                       '"$request" $status $body_bytes_sent '
                                       '"$http_referer" "$http_user_agent" $host $request_time';

PostgreSQL 日志文件存在于/var/log/postgresql目录中。 默认情况下,它不包含详细日志,仅包含统计信息。 如果您发现数据库访问问题,您可以找到ERROR, FATALPANIC登录postgresql-16-main.log.

Zimbra Chat 管理员

管理组织基础知识

作为 Zimbra Chat 管理员,了解如何管理用户角色和权限是维护组织有序的工作空间的关键。 本节介绍可用的不同用户角色、如何管理它们以及如何配置组织范围的权限。

这些角色是特定于聊天的,与 Zimbra 电子邮件管理员角色不同。

用户角色概述

Zimbra Chat 支持多个角色,可帮助您根据组织的需求分配正确的权限:

角色 描述

组织所有者

对设置、用户和其他管理员的完全控制。只有所有者才能停用组织。

组织管理员

可以管理用户、频道、设置。无法提升其他人为所有者或修改所有者角色。

主持人

可以执行有限的管理功能。权限可以由所有者和管理员配置。

会员

大多数用户的默认角色。可以访问所有公共频道。

访客

只能访问他们明确添加到的频道。无法看到其他用户或频道。

管理用户角色

您可以通过用户配置文件或组织设置来分配和更改角色。

通过用户配置文件

  1. 将鼠标悬停在右侧边栏中的用户名上。

  2. 单击三点菜单 →管理此用户.

  3. 用户角色,选择一个新角色。

  4. 单击保存更改.

通过组织设置

  1. 转到设置 → 组织设置 → 用户选项卡。

  2. 使用用户名旁边的下拉菜单分配新角色。

  3. 点击保存更改.

组织设置管理

OwnerAdministrator可以配置和查看组织设置。

常用设置:

  • 组织概况和类型。

  • 组织徽标也可以配置和自定义。

  • 默认用户权限。

  • 自动消息和电子邮件语言。

访问:前往设置 → 组织设置.

管理用户访问
停用用户

停用会删除所有设备的访问权限、禁用凭据和机器人。

步骤:

  1. 打开用户配置文件或转至组织 → 用户选项卡。

  2. 单击管理该用户.

  3. 单击停用用户确认.

  4. 笔记:Owner角色不能被停用Administrator.

重新激活用户
  1. 转至设置 → 组织 → 用户 → 已停用选项卡。

  2. 点击重新激活在用户旁边。

用户在重新激活时保留所有先前的设置和角色。

新用户的默认设置

管理员可以为新用户配置默认首选项,例如:

  • 主题、字体大小、时间格式。

  • 隐私选项。

  • 通知。

  • 主页视图(收件箱与最近的对话)。

用户身份控制

组织设置 → 组织权限 → 用户身份:

下配置这些选项 防止用户更改: * 姓名、电子邮件、头像。

停用组织

此操作在组织方面是不可逆转的。

Owners可以停用:

  1. 转至组织设置 → 组织配置文件.

  2. 单击停用组织确认.

要撤消停用,请立即联系您的服务器管理员。 停用无法通过 Zimbra Chat 界面撤消。 只有 Zimbra 系统管理员才拥有从服务器端恢复或还原组织所需的访问权限和工具。

频道管理

作为管理员,您可以完全控制频道的创建、管理和使用方式。

控制谁可以创建频道

前往:设置 → 组织设置 → 组织权限 → 频道权限

您可以选择:

  • 仅管理员

  • 管理员和版主

  • 管理员、版主和成员

  • 所有正式成员

如果您想保持整洁,请将创建限制为管理员和/或版主。

启用/禁用通道类型

通道类型:

  • 公共 – 任何人都可以加入,所有消息可见。

  • 私人 - 仅限受邀者。

  • Web-public – 通过公共链接进行只读访问。

向频道授予网络公共类型: 只有AdministratorModerator可以创建网络公共频道。

  1. 转至组织设置 → 组织权限 → 频道权限.

  2. 启用:允许网络公共频道.

设置谁可以在频道中发帖

您可以随时更改此设置 - 即使对于现有频道也是如此。

对于每个通道:

  1. 打开通道设置→ 单击通道名称 →高级配置部分。

  2. 发帖政策下,选择:所有人、管理员和版主、仅限版主、仅限管理员。

管理订阅者

作为管理员,您可以:

  • 从任何频道添加/删除用户 -频道设置 → 单击频道名称 → 订阅者选项卡。

  • 强制用户订阅强制频道(通过“默认频道”)。

    • 为新用户设置默认频道

    • 转到:设置 → 组织设置 → 默认频道.

    • 这些频道是为新用户自动订阅的。非常适合:#announcements, #company-news.

重命名频道和编辑频道设置

管理员可以:

  • 更改频道名称和描述。

  • 公开频道。

  • 设置发布策略。

  • 删除频道。

转到任意频道 →频道设置→ 进行更改。

删除频道

管理员可以:

  • 删除频道 - 删除频道将立即取消所有人的订阅。此操作无法撤消。

需要频道消息中的主题

默认情况下,用户可以在不选择主题的情况下发送消息 - 这些显示为“(无主题)”。

作为管理员,您可以禁止用户发送没有主题的消息。

要启用此功能:

  1. 转到设置 → 组织设置

  2. 滚动到其他设置

  3. 切换需要频道消息中的主题

  4. 单击保存更改

控制谁可以编辑主题和移动消息

作为管理员,您可以决定:

  • 谁可以编辑消息主题

  • 谁可以将主题移动到其他频道

  • 是否有时间限制编辑或移动消息

要管理这些权限:

  1. 转至设置 → 组织设置 → 组织权限

  2. 移动消息下,配置以下各项:

    • 谁可以将消息移动到另一个主题

    • 编辑主题的时间限制

    • 谁可以将消息移动到另一个频道

    • 在频道之间移动消息的时间限制

  3. 单击保存更改每次更新后

管理员和版主都可以编辑和移动消息,无论消息是多久前编写的。

控制谁可以发送直接消息 (DM)

作为OwnerAdministrator,您可以控制 DM 在组织中的工作方式。 您可以配置两个设置:

要设置 DM 权限:

  1. 转至设置 → 组织设置 → 组织权限

  2. 滚动至直接消息权限

  3. 谁可以授权 DM(对话中必须至少有一个人有权启动它。)

    1. 设置谁可以授权直接消息对话

    2. 单击保存更改

  4. 谁可以启动 DM(定义允许谁启动新的 DM 对话。)

    1. 设置谁可以启动直接消息对话消息对话

    2. 单击保存更改

  5. 要完全禁用 DM:

    1. 设置谁可以授权直接消息对话Direct messages disabled

    2. 单击保存更改

控制谁可以使用通配符提及(@all、@channel、@topic)

作为OwnerAdministrator,您可以管理谁可以使用通知大量人员的通配符提及。

通配符提及包括:

  • @all, @channel@everyone→ 通知频道中的每个人

  • @topic→ 通知主题

中活跃的每个人 默认情况下,这些可以通知很多用户。您可以限制此设置以避免向大型群组发送垃圾邮件。

仅当频道成员超过 15 人,或者主题参与者超过 15 人时,此设置才适用。

要限制通配符提及:

  1. 转到设置 → 组织设置 → 组织权限

  2. 滚动到频道权限

  3. 设置谁可以通过通配符提及通知大量用户

  4. 单击保存更改

管理消息编辑、删除和编辑历史记录

作为管理员,您可以控制:

  • 谁可以编辑或删除自己的消息

  • 编辑或删除的时间限制

  • 用户是否可以看到编辑历史记录

消息编辑

  • 用户只能编辑自己的消息。

  • 管理员始终可以删除任何消息。

配置编辑:

  1. 转至设置 → 组织设置 → 组织权限

  2. 消息编辑下:

    • 切换允许消息编辑.

    • 切换启用消息编辑历史记录.

    • 设置编辑消息的时间限制.

  3. 单击保存更改.

消息删除

  • 删除消息将永久删除该消息。

  • 用户可以删除自己的消息。

  • 管理员可以删除任何消息。

  • 用户还可以删除他们拥有的机器人发送的消息。

配置删除:

  1. 转至设置 → 组织设置 → 组织权限

  2. 消息删除:

    • 设置谁可以删除自己的消息.

    • 删除消息的时间限制(不适用于管理员)。

  3. 单击保存更改.

消息保留

作为管理员,您还可以配置全局默认消息保留策略:

  1. 转至组织设置 → 消息保留.

  2. 选择消息保留期限。

  3. 默认情况下,所有消息都会无限期保留。

  4. 使用自定义保留期并选择保留期(以天为单位).

媒体预览行为

Zimbra 聊天显示图像、视频和链接的小预览,以保持聊天的可读性。

作为管理员,您可以完全关闭预览: * 上传和链接的图像/视频 * 链接网站

  1. 转到设置 → 组织设置

  2. 其他设置下:

  3. 切换显示上传和链接的图像和视频的预览

  4. 切换显示链接网站的预览

  5. 单击保存更改

视频

Zimbra Chat 仅是聊天解决方案,不包含任何视频会议解决方案。但是,已经提供了与开源聊天解决方案的集成。默认情况下,Zimbra Advanced Chat 提供与Jitsi Meet的内置集成,这是 100% 开源视频会议解决方案。用户将能够使用撰写框中的“添加视频通话”或“添加语音通话”按钮发起 Jitsi Meet 通话并邀请其他人。

配置 Jitsi Meet 的自托管实例

管理员可以使用 Jitsi Meet 的自托管实例。 Zimbra Advanced Chat 将 Jitsi Meet云版本作为其默认视频通话提供商。这是 Jitsi 开源平台的社区版本。

要以管理员身份配置自托管 Jitsi Meet:

  1. 单击网络或桌面应用程序右上角的齿轮图标。

  2. 选择组织设置.

  3. 在左侧,单击组织设置.

  4. 撰写设置下, 确认Jitsi Meet调用提供程序中选择下拉菜单。

  5. 选择自定义网址来自Jitsi 服务器 URL下拉列表,然后输入您的自托管 Jitsi Meet 服务器的 URL。

  6. 单击保存更改.

Zimbra Chat 的备份和恢复

Zimbra Chat 服务器具有内置备份工具,可用于在 Chat 服务器上备份聊天数据并在灾难恢复、生产数据测试和硬件迁移时恢复。

这里的备份和恢复功能与用于邮箱数据备份的 Zimbra 备份和恢复功能无关。

它快速、强大,并最大限度地减少对用户的干扰。但是,它有一些限制:

  • 备份必须在运行相同 Zulip 版本的服务器上恢复。

  • 备份必须在运行相同 PostgreSQL 版本的服务器上还原。

备份

Zimbra Chat 管理员可以使用备份工具创建服务器上所有数据的备份:

# As the zulip user
/home/zulip/deployments/current/manage.py backup

以下选项可与上述命令一起使用:

--output=/tmp/backup.tar.gz:写入备份 tarball 的文件名(默认:写入 /tmp 中的文件)。成功后,控制台输出将显示输出 tarball 的路径。

--skip-uploads:如果设置了LOCAL_UPLOADS_DIR,则该目录中用户上传的文件将被忽略。LOCAL_UPLOADS_DIR是聊天服务器中存储用户上传文件的目录。它在/etc/zulip/settings.py

中指定,这将生成一个.tar.gz存档,其中包含聊天服务器上存储的所有数据,这些数据是在另一台计算机上完美恢复聊天服务器状态所需的。

例如:

# su zulip -c '/home/zulip/deployments/current/manage.py backup --output=/home/zulip/zulip-backup.tar.gz'
+ /usr/lib/postgresql/16/bin/pg_dump --format=directory --file=/tmp/zulip-backup-2025-04-04-07-29-56-533sg975/zulip-backup/database --username=zulip --dbname=zulip --no-password --host=10.0.0.231 --port=5432
+ tar --directory=/tmp/zulip-backup-2025-04-04-07-29-56-533sg975 -cPzf /home/zulip/zulip-backup.tar.gz '--transform=s|^/etc/zulip(/.*)?$|zulip-backup/settings\1|x' -- zulip-backup/zulip-version zulip-backup/os-version zulip-backup/postgres-version /etc/zulip zulip-backup/database
Backup tarball written to /home/zulip/zulip-backup.tar.gz

恢复备份

  1. 使用与备份相同的基本操作系统以及相同版本的 Zulip 和 postgreSQL 创建新的 ZImbra Chat 服务器设置。使用 Zimbra Zulip 安装程序来安装和配置设置。

    • 与操作系统、Zulip 版本或 postgreSQL 版本相关的任何升级都应在成功恢复备份后完成。

    • 确保安装指南中建议的网络安全措施对于新实例安全到位。

  2. 将备份的 .tar.gz 文件从旧的 Zimbra Chat 服务器复制到新的 Chat 服务器。

  3. 根据您的 Zimbra Chat 服务器设置执行进一步的恢复步骤。

多节点聊天服务器设置的恢复:

如果是多节点聊天服务器设置,其中 PostgreSQL 服务器也是新的(即 PostgreSQL 数据库也需要在新的 PostgreSQL 服务器上恢复):

  • 在聊天服务器节点上的/etc/zulip/settings.py中更新以下详细信息:

EXTERNAL_HOST = "new-chat-server-hostname"
REMOTE_POSTGRES_HOST = "<new-postgres-host-ip>"
  • 在 PostgreSQL 节点上,在底部添加以下条目/etc/postgresql/*/main/pg_hba.conf

    host    postgres        zulip           <zulip-server-host-ip>/32            trust
    • 重新启动postgresql作为root用户。

      # Run on postgres node as root user
      systemctl restart postgresql
    • 向 zulip 用户授予CREATEDB权限

    # Run on postgres node
    su - postgres
    psql
    ALTER ROLE zulip CREATEDB;
  • 以 root 身份恢复备份:

#Run On Chat server node
/home/zulip/deployments/current/scripts/setup/restore-backup --keep-settings /path/to/backup
  • 成功恢复 Chat 服务器和 PostgreSQL 服务器后,删除 Zulip 用户的 CREATEDB 权限:

# Run on postgres node
su - postgres
psql
ALTER ROLE zulip NOCREATEDB;
恢复成功完成后,应撤销 Zulip 用户的 CREATEDB 权限。
组合聊天设置的恢复(单个节点上的数据库和 Zimbra 聊天服务器):

如果是组合设置,请将备份恢复为:

  • 以 root 身份恢复备份:

(Run as root on chat server)
$ /home/zulip/deployments/current/scripts/setup/restore-backup `/path/to/backup.tar.gz`
  • 成功恢复后,更新/etc/zulip/settings.py

EXTERNAL_HOST = "new-zulip-server-hostname"
  • 中的以下详细信息 重新启动聊天服务器

(Run as root on chat server)
$ /home/zulip/deployments/current/scripts/restart-server

在 Zimbra 邮箱服务器上,使用新的聊天服务器主机名更新 zimbraChatBaseHost。为域或全局配置级别更新它。

(Run as zimbra on a Zimbra mailstore server)
$ zmprov mcf zimbraChatBaseHost <new-chat-server-hostname>
$ zmprov fc -a all

您可以确认恢复的聊天服务器可以在 LDAP 上搜索帐户。确保两者full_nameemail被返回。

(Run as zulip on chat server)
$ /home/zulip/deployments/current/manage.py query_ldap <account-email>
...
full_name: user1
email: <account-email>

有关更多详细信息,请参阅以下文档:备份、导出和导入 — Zulip 9.2 文档

有关 Zimbra Chat 备份和 Zimbra Collaboration Suite (ZCS) 备份和恢复的重要注意事项:
  1. Zimbra Chat 服务器上没有帐户级备份和恢复。

  2. Zimbra Chat 服务器没有内置的自动备份计划,但可以使用 crontab 进行配置。

  3. Zimbra Chat 服务器备份未与 ZCS 的备份和恢复集成。 Zimbra Chat 备份和恢复是单独管理的。

  4. Zimbra 聊天服务器日志未备份。如果需要,聊天管理员应手动创建服务器日志文件的备份。

  5. 从备份恢复 Zimbra 聊天服务器不会在 ZCS 服务器上创建帐户。如果需要在ZCS服务器上恢复账户,应先执行ZCS的恢复。

故障排除指南

1. LDAP 连接问题

1.1。聊天服务器无法访问 LDAP 服务器或搜索用户

如果您在执行以下命令时看到Can’t contact LDAP server错误消息,

$ /home/zulip/deployments/current/manage.py query_ldap EMAIL_ADDRESS
ldap.SERVER_DOWN: {'result': -1, 'desc': "Can't contact LDAP server", 'errno': 11, 'ctrls': [], 'info': 'Resource temporarily unavailable'}

检查以下项目:

  • ldap 主机名可以在聊天服务器上解析

  • ldap 服务器允许从聊天服务器进行 389 端口访问

  • AUTH_LDAP_SERVER_URI中的/etc/zulip/settings.py指定正确的 ldap 主机名(和端口)。例如,AUTH_LDAP_SERVER_URI = "ldap://ldap.your.domain"AUTH_LDAP_SERVER_URI = "ldap://ldap.your.domain:389"。默认端口 389 可以省略。

1.2. TLS 连接问题

如果你看到Connect errorInitiating TLS

$ /home/zulip/deployments/current/manage.py query_ldap EMAIL_ADDRESS
2025-03-28 07:29:10.948 DEBG [django_auth_ldap] Binding as uid=zimbra,cn=admins,cn=zimbra
2025-03-28 07:29:10.949 DEBG [django_auth_ldap] Initiating TLS
...
ldap.CONNECT_ERROR: {'result': -11, 'desc': 'Connect error', 'ctrls': [], 'info': '(unknown error code)'}

您需要验证 ldap 服务器上是否部署了有效的 SSL 证书。

1.3。无效凭证

如果您看到ldap.INVALID_CREDENTIALS类似

$ /home/zulip/deployments/current/manage.py query_ldap EMAIL_ADDRESS
ldap.INVALID_CREDENTIALS: {'msgtype': 97, 'msgid': 2, 'result': 49, 'desc': 'Invalid credentials', 'ctrls': []}

检查以下项目:

  • AUTH_LDAP_BIND_DN中的/etc/zulip/settings.py指定了正确的值。

  • auth_ldap_bind_password中的/etc/zulip/zulip-secrets.conf指定正确的密码AUTH_LDAP_BIND_DN

full_nameemail当用户搜索正常工作时应该返回。

$ /home/zulip/deployments/current/manage.py query_ldap user1@mydomain.com
...
full_name: user1
email: user1@mydomain.com

您需要重新启动聊天服务器应用程序才能应用/etc/zulip/settings.py中的更改和/etc/zulip/zulip-secrets.conf.

/home/zulip/deployments/current/scripts/restart-server

2. 领域创建问题

2.1。未在聊天服务器

上创建领域 如果您使用zimbraFeatureZulipChatEnabledTRUE 创建了域或运行CreateChatRealmRequest但未在聊天服务器上创建领域,请检查以下项目:

  • 聊天服务器主机名可以在邮件存储服务器

  • 上解析 聊天服务器允许从已在域中配置的邮件存储服务器

  • zimbraChatBaseHostzimbraChatJwtSecret进行 443 端口访问。如果每个属性已在globalConfig 中配置,但未在domain 中配置,则自动应用globalConfig 中的值。

  • zimbraChatBaseHost具有聊天服务器的主机名

  • zimbraChatJwtSecret有一个密钥,已在/etc/zulip/zulip-secrets.conf中设置为zimbra_jwt_auth_key在聊天服务器上

  • 已在聊天服务器上部署有效的 SSL 证书

3. 聊天可用性问题

3.1.已在聊天服务器上创建领域,但聊天在 Modern Web App 中不可用

如果已在聊天服务器上创建领域,但聊天功能在 Modern Web App 中不可用,请检查以下项目:

3.1.1。 Zimbra 许可证
  • Zimbra 上安装了有效许可证

  • 许可证已激活

  • 许可证未过期

  • 以下功能已获得许可

    • BOCAL (BasicOneToOneChatAccountsLimit)已启用基本一对一聊天功能

    • CAL (ChatAccountsLimit)已启用高级聊天功能

  • 您可以通过执行zmlicense -p

3.1.2 查看许可证状态。其他配置问题
  • zimbra-zimlet-chatzimlet 已在帐户上部署并启用

  • 领域 url 的主机名可在 zimbra 代理和邮件存储服务器上解析

  • 领域 url 的主机名的有效 SSL 证书已部署在聊天服务器上

  • zmproxyconfgen并且zmproxyctl已在所有代理服务器上执行重新加载

  • zimbraFeatureZulipChatEnabled在域上启用

  • 基本聊天

    • zimbraFeatureZulipChatEnabledzimbraFeatureBasicOneToOneChatEnabled在帐户上启用

  • 高级聊天

    • zimbraFeatureZulipChatEnabledzimbraFeatureAdvancedChatEnabled在帐户上启用

  • 如果有多个邮件存储服务器,运行 zmprov fc -a all

  • CSRF_TRUSTED_ORIGINSin/etc/zulip/settings.py在聊天服务器上指定 Zimbra Web 应用程序

的 URL 聊天服务器应用程序修改后需要重新启动。

4. 账户配置问题

4.1。我运行了配置所有帐户,但某些帐户未在聊天服务器上创建

如果满足以下任何条件,邮件存储服务器不会要求聊天服务器创建帐户:

  • zimbraAccountStatus不是active在一个帐户上

  • zimbraIsSystemAccount账户上有TRUE,但

  • zimbraFeatureZulipChatEnabled不是TRUE在域或帐户

4.2 上。当我运行配置聊天帐户时,我看到 HTTP 响应状态 504 错误。

如果您在管理控制台上运行“配置所有帐户”,您可能会在对话框中看到以下错误消息。

Server error encountered
-------------------------
Error code: CSFE_SVC_ERROR
Method: ProvChatAccountsRequest
Details: HTTP response status 504

当需要很长时间来配置帐户时会发生这种情况。邮件存储服务器和聊天服务器之间的 http 连接由于超时而关闭。但是,配置过程可能仍在聊天服务器上运行。如果creating user日志被添加到/var/log/zulip/server.log,进程正在运行。例如,

2025-04-04 02:08:20.833 INFO [] creating user: user925@mydomain.com
2025-04-04 02:08:20.883 INFO [] creating user: user926@mydomain.com
...

您不需要(或不应该)重新运行“配置所有帐户”。您可以关闭管理控制台上的对话框,然后等待该过程完成。

5. 聊天服务器问题

5.1。问题 - 聊天登录成功但注册失败。配置命令成功。

日志:

/var/log/zulip/errors.log

2025-04-02 05:53:42.735 WARN [zulip.queue:9800] TornadoQueueClient attempting to reconnect to RabbitMQ
2025-04-02 05:53:42.741 ERR  [pika.adapters.utils.io_services_utils:9800] Socket failed to connect: <socket.socket fd=18, family=2, type=1, proto=6, laddr=('127.0.0.1', 59468)>; error=111 (Connection refused)
2025-04-02 05:53:42.742 ERR  [pika.adapters.utils.connection_workflow:9800] TCP Connection attempt failed: ConnectionRefusedError(111, 'Connection refused'); dest=(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 5672))
2025-04-02 05:53:42.742 ERR  [pika.adapters.utils.connection_workflow:9800] AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused')
2025-04-02 05:53:42.742 ERR  [pika.adapters.utils.connection_workflow:9800] AMQP connection workflow failed: AMQPConnectionWorkflowFailed: 1 exceptions in all; last exception - AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused'); first exception - None.
2025-04-02 05:53:42.742 ERR  [pika.adapters.utils.connection_workflow:9800] AMQPConnectionWorkflow - reporting failure: AMQPConnectionWorkflowFailed: 1 exceptions in all; last exception - AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused'); first exception - None
2025-04-02 05:53:42.742 ERR  [pika.adapters.base_connection:9800] Full-stack connection workflow failed: AMQPConnectionWorkflowFailed: 1 exceptions in all; last exception - AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused'); first exception - None
2025-04-02 05:53:42.742 ERR  [pika.adapters.base_connection:9800] Self-initiated stack bring-up failed: AMQPConnectionError: (AMQPConnectionWorkflowFailed: 1 exceptions in all; last exception - AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused'); first exception - None,)
2025-04-02 05:53:42.742 WARN [zulip.queue:9800] TornadoQueueClient couldn't connect to RabbitMQ, retrying in 2 secs...
/var/log/zulip/server.log
2025-04-02 05:53:17.386 ERR  [pika.adapters.base_connection:9800] Self-initiated stack bring-up failed: AMQPConnectionWorkflowFailed: 1 exceptions in all; last exception - AMQPConnectorAMQPHandshakeError: ProbableAccessDeniedError: Client was disconnected at a connection stage indicating a probable denial of access to the specified virtual host: ('ConnectionClosedByBroker: (530) "NOT_ALLOWED - access to vhost \'/\' refused for user \'zulip\'"',); first exception - None
/var/log/rabbitmq/zulip@localhost.log

2025-04-02 05:53:15.590500+00:00 [info] <0.17977.0> accepting AMQP connection <0.17977.0> (127.0.0.1:60086 -> 127.0.0.1:5672)
2025-04-02 05:53:15.597951+00:00 [error] <0.17977.0> Error on AMQP connection <0.17977.0> (127.0.0.1:60086 -> 127.0.0.1:5672, state: starting):
2025-04-02 05:53:15.597951+00:00 [error] <0.17977.0> PLAIN login refused: user 'zulip' - invalid credentials
2025-04-02 05:53:15.603483+00:00 [info] <0.17977.0> closing AMQP connection <0.17977.0> (127.0.0.1:60086 -> 127.0.0.1:5672)

根本原因:由于凭据无效,Tornade 无法访问 zulip 用户上的rabbitmq。密码作为rabbitmq_password存储在/etc/zulip/zulip-secrets.conf中。它应该与rabbitmq中存储的实际密码匹配。但是,如果由于某种原因不匹配,例如不小心修改并保存了zulip-secrets.conf中的rabbitmq_password,则认证失败。

修复:运行以下命令在rabbitmq上重新创建zulip用户并重新启动rabbitmq和聊天服务器应用程序。

(Run as root)
# /home/zulip/deployments/current/scripts/setup/configure-rabbitmq
Deleting user "zulip" ...
Deleting user "zulip" ...
Deleting user "guest" ...
Adding user "zulip" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
Setting tags for user "zulip" to [administrator] ...
Setting permissions for user "zulip" in vhost "/" ...


# systemctl restart rabbitmq-server.service
# systemctl status rabbitmq-server.service
# su - zulip
$ /home/zulip/deployments/current/scripts/restart-server

6. 聊天缩放问题

6.1。 Tornado 分片超过 10 个进程

Tornado 分片可以正确扩展至 9 个进程。将龙卷风分片扩展到 10 个或超过 10 个进程可能会失败,并出现异常TornadoQueueClient couldn’t connect to RabbitMQ in zulip’s /var/log/zulip/server.log.

,原因是端口 9810 已被烟幕使用。

请按照以下步骤解决此问题:

  • 使用 zulip 用户执行以下所有操作

  • 使用 Supervisorctl stop Smokescreen

  • 停止烟幕 使用/home/zulip/deployments/current/scripts/start-server

  • 启动与 zulip 用户的聊天服务 使用 Supervisorctl status

  • 检查所有服务是否已启动,如果您发现任何服务处于停止状态,请尝试单独启动它们。例如:

    • 如果zulip-djangois未启动,请使用supervisorctl start zulip-django将其启动。

    • 如果zulip-tornado:zulip-tornado-port-9810未启动,请使用supervisorctl start zulip-tornado:zulip-tornado-port-9810将其启动。

7. Zimbra 服务器问题

7.1。问题 - 代理重新启动失败并出现“无法构建 map_hash”错误

日志:

zimbra@proxy:~$ zmproxyctl restart
Stopping proxy...nginx: [emerg] could not build map_hash, you should increase map_hash_bucket_size: 64 failed.

根本原因:基于创建的哈希zimbraChatBaseHost并且zimbraZulipChatDomainId超过 64 长度

修复:增加 localconfig 值

原因:我们需要将proxy_web_map_hash_bucket_size设置为 128,因为 nginx 文件中聊天配置中生成的域+哈希密钥长度超过 64,代理重启失败。zmlocalconfig -e proxy_web_map_hash_bucket_size=128

7.2.问题 - 代理重新启动失败,并出现“map_hash_bucket_size 指令中的参数数量无效”错误

日志:

zimbra@proxy:~$ zmproxyctl restart
Starting proxy...nginx: [emerg] invalid number of arguments in "map_hash_bucket_size" directive in /opt/zimbra/conf/nginx/includes/nginx.conf.web:16

根本原因:map_hash_bucket_size 定义为引用 localconfig proxy_web_map_hash_bucket_size。

cat /opt/zimbra/conf/nginx/templates/nginx.conf.web.template
...
map_hash_bucket_size ${web.map_hash_bucket_size};

可以通过执行zmproxyctl restart来修改和应用该值,如第 7.1 节中所述。 但是,有一种情况是未正确引用,然后map_hash_bucket_size由于某种原因变为空。

cat /opt/zimbra/conf/nginx/includes/nginx.conf.web
...
map_hash_bucket_size ;

修复:在代理服务器上运行 zmcontrol restart 而不是 zmproxyctl restart。

7.3。问题 - 代理重新启动失败,并出现“在上游找不到主机”错误

日志:

zimbra@proxy:~$ zmproxyctl reload
Reloading proxy...nginx: [emerg] host not found in upstream "domain1examplecom.chat1.mydomain.com:443" in /opt/zimbra/conf/nginx/includes/nginx.conf.chat.upstream:66

根本原因:聊天服务器的主机名 (FQDN) 或域的领域 URL 无法在代理服务器上解析。

使固定:

  • 检查主机名是否已在 DNS 中注册。如果不存在,请在 DNS 中注册主机名。

  • 刷新代理服务器上的 DNS 缓存

  • 可能需要一些时间才能反映 DNS 上的更改。如果需要立即修复,您可以在代理服务器上的 /etc/hosts 中添加一个条目作为解决方法。请注意,它需要应用于所有代理服务器。

7.4。问题 - 未在特定域的聊天上游文件中创建哈希

问题:域的上游不是在/opt/zimbra/conf/nginx/includes/nginx.conf.chat.upstream

根本原因:由于未生成服务器哈希,因此域中缺少zimbraChatBaseHost 或 zimbraZulipChatDomainId。

修复:更新 zimbraChatBaseHost 和 zimbraZulipChatDomainId,后跟/opt/zimbra/libexec/zmproxyconfgen命令

7.5。问题 - CSRF 令牌不匹配

日志:CSRF 令牌无效,正在重新检查 LDAP 中的帐户对象。

根本原因:Zimbra 和聊天服务器上配置的CSRF 令牌不匹配。

使固定:匹配 CSRF

7.6。问题 - 未知主机异常

日志: java.net.UnknownHostException: domain1examplecom.chat1.mydomain.com: Name or service not known

根本原因:日志中的 URL 无法解析

使固定:在 DNS 中注册 FQDN。作为临时解决方案,更新所需的文件 (/etc/hosts) 使 URL 可解析。

7.7。问题 - 缺少 JWT 密钥

日志: SoapEngine - handler exception java.lang.IllegalArgumentException: Empty key

根本原因:Zimbra 服务器上未配置JWT

使固定:更新zimbraChatJwtSecret在 Zimbra 服务器

7.8 上。问题 - 无法在基本聊天中搜索新帐户

基本聊天中的帐户搜索基于 gal 搜索。如果基本聊天搜索未返回新添加的帐户,则 GAL 可能未在域上正确配置。您需要检查以下项目:

  • 如果 GAL 模式在管理控制台 > 域设置 > GAL 上显示为“内部”,请确保在 CLI 上将 zimbraGalMode 设置为 zimbra; zmprov gd DOMAIN zimbraGalMode

  • 如果 GAL 模式为“内部”或“两者”,请确保已配置 galsync 帐户。

  • 如果您的环境中有多个邮件存储服务器,请确保每个邮件存储服务器上都配置了 galsync 帐户

  • 如果仍然无法搜索到帐户,请对域中的所有 galsync 帐户运行以下命令。

zmgsautil forceSync -a [GAL_SYNC_ACCOUNT] -n [DATA_SOURCE_NAME]

  • 你可以找到zimbraDataSourceName对于DATA_SOURCE_NAME通过运行zmprov gds [GAL_SYNC_ACCOUNT](getDataSources) 命令。

8. 高级聊天 UI 无法加载约 60K 用户的域

高级聊天 UI 无法加载特定域约 6 万聊天用户。经过调查,问题被追溯到memcached 内存限制。通过增加memcached配置中的内存分配解决了该问题。

请参考以下配置更改:

配置变更

为了解决这个问题,内存分配memcached增加了。请找到以下步骤:

  1. 打开/etc/memcached.confzulip 服务器上的root用户

    • 将以下行添加到文件末尾 -

    • -I 2m # Increase slab page size to 2MB

    -I 标志控制最大项目大小。增加它可以确保可以缓存更大的数据结构(例如用户/消息列表)。
  2. 运行 -systemctl restart memcached.service

  3. 使用 -systemctl status memcached.service

检查服务状态 -

  • 内存使用量增长:随着用户执行事务(发送/接收消息、登录/注销),__ZSEP_9f7__ memcached 内存使用量持续增长。

  • 请查看手册:Memcached Linux 手册页

  • 使用 watchsystemctl status memcached.service

systemctl status memcached.service
● memcached.service - memcached daemon
     Loaded: loaded (/lib/systemd/system/memcached.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2025-04-24 05:21:04 UTC;
       Docs: man:memcached(1)
   Main PID: 217874 (memcached)
     Memory: 89.5M
        CPU: 18.534s
     CGroup: /system.slice/memcached.service
             └─217874 /usr/bin/memcached -m 8036 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid -S -I 2m

监控状态 9. 配置多个域失败

9.1 在聊天用户配置期间重试

在配置聊天用户期间,您可能会遇到由上游超时导致的失败,通常会记录在聊天服务器的 nginxerror.log 中。这些失败会触发创建用户批次的重试。当跨多个域配置大量帐户(大约 30,000 个)并且系统资源使用率(特别是 Chat 和 PostgreSQL 服务器上的 CPU 和内存)很高时,通常会出现这种情况。

在重试期间,聊天服务器日志中可能会出现以下警告:WARN [] duplicate key value violates unique constraint "zerver_userprofile_realm_id_email_uniq" DETAIL:  Key (realm_id, upper) user already exists

解决方案 -

  • 监视 Chat 和 PostgreSQL 服务器上的服务器日志、CPU、内存、网络、磁盘 IOPS 和系统负载。

  • 根据建议的指南调整parallelismFactor 参数,以减少大规模配置期间的系统压力。

9.2 配置期间邮箱服务停机

在某些情况下,ZCS 服务器上的邮箱服务可能会在zmchatprovall脚本运行时意外关闭。

解决方案 -

  • 在受影响的 ZCS 服务器上重新启动/启动邮箱服务。

  • 检查以下文件中域帐户的配置状态:/opt/zimbra/chat/provisionedChatDomainAccountsResult.txt

  • 对标记为故障状态的任何域重新运行zmchatprovall脚本。

  • 在ZCS服务器上启动邮箱服务。检查/opt/zimbra/chat/provisionedChatDomainAccountsResult.txt中域帐户的状态。为标记为故障状态的域重新运行zmchatprovall脚本。

注意 -

  • 即使邮箱服务看起来正在运行,您仍然可能会遇到错误,例如:“邮箱无响应。请联系您的管理员或稍后重试。”

  • 这可能表示 Chat nginx 服务器的上游超时。在这种情况下,

    • 查看以下日志中的超时消息:`/var/log/nginx/error.log`

    • 检查域帐户的状态/opt/zimbra/chat/provisionedChatDomainAccountsResult.txt.

    • 为受超时影响的域重新运行zmchatprovall脚本。

  • 下面是/opt/zimbra/chat/provisionedChatDomainAccountsResult.txt中的输出在这种情况下可能如何出现的示例:

Provisioning chat accounts for domain:
ni08.com
Accounts provisioned: 30000
Accounts not provisioned: 0
--------------------------------------------------
Provisioning chat accounts for domain:
ni09.com
Accounts provisioned: 30000
Accounts not provisioned: 0
--------------------------------------------------
Provisioning chat accounts for domain:
ni10.com
Mailbox is unresponsive please contact administrator or contact support and rerun later.
--------------------------------------------------
Provisioning chat accounts for domain:
ni11.com
Mailbox is unresponsive please contact administrator or contact support and rerun later.
--------------------------------------------------
Provisioning chat accounts for domain:
ni12.com
Mailbox is unresponsive please contact administrator or contact support and rerun later.
--------------------------------------------------
Domain(s) with failure -
ni10.com
ni11.com
ni12.com

常见问题解答

一般问题


  • 是否有任何工具可将聊天和群组从 Connect 迁移到新的聊天?

较旧的聊天解决方案不支持迁移,并且将来没有计划提供迁移工具。


  • 多台 Zimbra 服务器可以连接到一台聊天服务器吗?

否。不支持从两个 Zimbra 服务器到单个聊天服务器的多重身份验证。


  • 什么时候需要重新启动聊天服务器?

配置更改或组件关闭时。欲了解更多详情,请参阅:Troubleshooting Guide.


  • Is uninstalling the Chat server supported?

底层开源聊天平台不支持卸载,因此 Zimbra Chat 不支持卸载。


  • 经典 UI 是否支持聊天?

是的,从 Zimbra Daffodil 10.1.8 版本开始支持。


  • 聊天服务器是否有基准或所需资源?

是的,更多详情请参阅:扩展和基础设施指南部分

任何聊天解决方案的性能在很大程度上取决于用户的使用模式,因此它可能与此处提供的基准不完全匹配。

  • 聊天记录可以导出、删除或编辑吗?

是的,可以导出聊天记录。


  • 高级聊天中是否支持文件共享?可以限制吗?

是的。管理员可以在以下位置配置限制settings.py:

DISALLOWED_FILE_EXTENSIONS = ["exe", "bat", "sh", "cmd"]
MAX_FILE_UPLOAD_SIZE = 10
UPLOADED_FILES_EXPIRED_AFTER_DAYS = 30

  • 是否有单独的移动应用程序或桌面应用程序可用于 Zimbra Chat?

还没有,但正在考虑用于未来的路线图。


  • Chat 是否支持外部身份验证(如果 Zimbra 支持)?

是的。聊天安装程序将提示输入外部身份验证详细信息。


  • Chat 是否可以与 LDAPS(端口 636)一起使用?

是的。可以使用聊天安装程序对其进行配置。


管理员特定问题


  • 域管理员可以管理聊天设置或管理聊天帐户吗?

是的,域管理员可以在管理控制台上管理聊天设置和聊天帐户。 全局管理员可以在域管理员上配置授权,如下所示:

  • 创建域管理员帐户

  • 设置管理员视图以查看帐户、COS 和域中的聊天设置:

    • 帐户列表视图

    • 服务等级列表视图

    • 域列表视图

  • 将以下授权添加到域管理员:

adminConsoleAccountRights        target type: domain,  target name: DOMAIN_NAME
domainAdminCosRights             target type: cos,     target name: COS_NAME
adminConsoleDomainRights         target type: domain,  target name: DOMAIN_NAME
listZimlet                       target type: zimlet,  target name: zimbra-zimlet-admin-chat
getZimlet                        target type: zimlet,  target name: zimbra-zimlet-admin-chat
  • 帐户:

target type: domain, target name: DOMAIN_NAME
set.account.zimbraFeatureZulipChatEnabled
set.account.zimbraFeatureBasicOneToOneChatEnabled
set.account.zimbraFeatureAdvancedChatEnabled
  • COS:

target type: cos, target name: COS_NAME
set.cos.zimbraFeatureZulipChatEnabled
set.cos.zimbraFeatureBasicOneToOneChatEnabled
set.cos.zimbraFeatureAdvancedChatEnabled
  • 域:

target type: domain, target name: DOMAIN_NAME
set.domain.zimbraZulipChatDomainId
set.domain.zimbraFeatureZulipChatEnabled
set.domain.zimbraFeatureBasicOneToOneChatEnabled
set.domain.zimbraFeatureAdvancedChatEnabled
  • 限制: 无论管理员是否在 Zimbra 非聊天环境中管理多个域,域管理员的权限都允许他们仅在自己的域内管理聊天帐户(获取、配置、激活和停用)。

  • 例子:你属于domainA(即您的电子邮件地址是domain_admin@domainA),并且您拥有管理 Zimbra 邮箱上的domainA和 domainB 的管理员权限。在这种情况下,您可以管理domainA上的聊天帐户,但不能管理domainA上的聊天帐户domainB。如果您想管理domainB上的聊天帐户,您需要拥有具有域管理员权限的domainB帐户。


  • 域管理员可以创建领域吗?

否,只有全局管理员才能在聊天服务器上创建领域。


  • 我可以作为领域的所有者或管理员访问高级聊天吗?

当您登录管理员帐户并转到高级聊天时,在以下条件下应用所有者或管理员角色:

  • 管理员帐户zimbraIsDomainAdminAccount = TRUE:领域的所有者

  • 管理员帐户zimbraIsAdminAccountzimbraIsDelegatedAdminAccount = TRUE:领域管理员

  • 非管理员帐户:领域成员

  • 角色:

    • 所有者可以管理用户、公共频道和组织(即域或领域)设置。所有者可以执行组织管理员可以执行的任何操作。

    • 管理员可以管理用户、公共频道和组织设置。管理员不能将某人指定为所有者,也不能更改现有所有者的角色。

    • 会员可以访问所有公共频道。


  • 如何重新启动聊天服务器进程?

在聊天服务器上以root身份运行:

# systemctl restart nginx.service
# su - zulip
$ /home/zulip/deployments/current/scripts/restart-server

  • 我可以查看聊天服务器上的现有领域吗?

在聊天服务器上以 zulip 身份运行:

/home/zulip/deployments/current/manage.py list_realms

  • 我可以从聊天服务器中完全删除帐户吗?

当帐户从 Zimbra 中删除时,其聊天帐户将自动停用。要完全删除它: 在聊天服务器上以 zulip 身份运行:

# Dry run
/home/zulip/deployments/current/manage.py delete_user -u EMAIL_ADDRESS

# Delete user
/home/zulip/deployments/current/manage.py delete_user -u EMAIL_ADDRESS -f

警告:该帐户发送的所有聊天对话消息将不再可用。


  • 我可以使用 CLI 在聊天服务器上配置和管理帐户吗?

管理控制台在域设置中提供以下功能:

  • 获取聊天服务器上领域中的所有帐户

  • 将域中的所有帐户配置到聊天服务器

  • 将域中的单个帐户配置到聊天服务器

  • 在聊天服务器上激活帐户

  • 在聊天上停用帐户server

您可以使用 CLI 执行相同的操作。每个命令都需要在邮件存储服务器上以 zimbra 用户身份运行。请参阅SOAP API 参考手册了解更多详情。

获取聊天服务器上某个领域中的所有帐户:

$ zmsoap -z -type admin GetAllChatAccountsRequest / domain="domain1.example.com" @by="name"
<GetAllChatAccountsResponse xmlns="urn:zimbraAdmin">
  <account>
    <a n="is_active">false</a>
    <a n="user_id">46</a>
    <a n="email">deleteduser46@domain1examplecom.chat1.mydomain.com</a>
  </account>
  <account>
    <a n="is_active">true</a>
    <a n="user_id">436</a>
    <a n="email">user1@domain1.example.com</a>
  </account>
</GetAllChatAccountsResponse>

如果用户已被删除(未停用),则localpart具有deleteduser前缀,并且域反映领域 URL。

将域中的所有帐户配置到聊天服务器:

$ zmsoap -z -type admin ProvChatAccountsRequest / domain="domain1.example.com" @by="name"
<ProvChatAccountsResponse xmlns="urn:zimbraAdmin">
  <numSucceeded>10</numSucceeded>
  <numFailed>0</numFailed>
</ProvChatAccountsResponse>

将域中的帐户配置到聊天服务器:

$ zmsoap -z -type admin ProvChatAccountsRequest / domain="domain1.example.com" @by="name" ../ account="user2@domain1.example.com" @by="name"
<ProvChatAccountsResponse xmlns="urn:zimbraAdmin">
  <numSucceeded>1</numSucceeded>
  <numFailed>0</numFailed>
</ProvChatAccountsResponse>

在聊天服务器上获取帐户:

$ zmsoap -z -type admin ManageChatAccountRequest @action="get" / account="user1@domain1.example.com" @by="name"
<ManageChatAccountResponse xmlns="urn:zimbraAdmin">
  <a n="is_active">true</a>
  <a n="user_id">436</a>
  <a n="email">user1@domain1.example.com</a>
</ManageChatAccountResponse>

在聊天服务器上停用帐户:

$ zmsoap -z -type admin ManageChatAccountRequest @action="deactivate" / account="user1@domain1.example.com" @by="name"
<ManageChatAccountResponse xmlns="urn:zimbraAdmin">
  <a n="is_active">false</a>
  <a n="user_id">436</a>
  <a n="email">user1@domain1.example.com</a>
</ManageChatAccountResponse>

在聊天服务器上激活帐户:

$ zmsoap -z -type admin ManageChatAccountRequest @action="activate" / account="user1@domain1.example.com" @by="name"
<ManageChatAccountResponse xmlns="urn:zimbraAdmin">
  <a n="is_active">true</a>
  <a n="user_id">436</a>
  <a n="email">user1@domain1.example.com</a>
</ManageChatAccountResponse>

  • 我可以在没有有效 SSL 证书的情况下部署聊天服务器进行测试吗?

是,但不建议用于生产用途。 如果没有有效的 SSL 证书或 Let's Encrypt 可用:

  • 安装具有自签名 SSL 类型的聊天服务器。

  • ssl_allow_untrusted_certs=true在所有邮件存储服务器上。

在邮件存储服务器上作为 zimbra 运行:

$ zmlocalconfig -e ssl_allow_untrusted_certs=true
$ zmmailboxdctl restart

警告:影响来自邮件存储服务器的所有出站通信并带来安全风险。不要在生产中使用。

Zimbra 移动同步

Zimbra 移动同步提供邮件、联系人、日历和任务数据的无线同步,以及移动设备和邮箱服务器上的帐户之间的设备安全策略实施。

Active Sync 是 Microsoft 定义的同步协议。它用于配置 Zimbra 邮箱服务器并将其与用户设备上使用的本机客户端同步。

Zimbra Mobile Sync 与 iPhone、iPod Touch、Android、Outlook(Mac 和 Windows)以及许多其他支持 ActiveSync™ 协议的手机兼容。

以下是 Zimbra ActiveSync 的亮点:

  1. 支持协议版本12.1, 14.116.1.

  2. 草稿、邮件、日历和联系人的完全同步支持.

  3. 支持允许块隔离设备(又名 ABQ)。

  4. 支持移动设备管理(又名 MDM)。

  5. 支持配置用户级ActiveSync协议版本。

日历功能:

  1. 支持同步在 Android、iOS 上创建的约会(更改受邀者、日期/时间等)。

  2. 支持定期约会(修改例外,整个系列)。

  3. 对于共享日历,支持修改、权限等。

共享功能:

共享支持可用于邮件、日历和联系人文件夹。默认情况下共享是禁用的。以下是启用共享的属性:

zimbraMobileShareMailEnabled:启用邮件文件夹共享的属性。支持 cos 和帐户级别。 zimbraMobileShareCalendarEnabled:启用日历共享的属性。支持 cos 和帐户级别。 zimbraMobileShareContactEnabled:启用联系人文件夹共享的属性。支持 cos 和帐户级别。

由于Exchange ActiveSync协议的限制,不支持实施只读共享。因此,不建议共享只读文件夹/日历,因为它可能会导致客户端和服务器数据之间的不一致。

以下是启用共享的命令:

  • 邮件文件夹共享:

    1. 为用户启用:

      zmprov ma <user@domain.com> zimbraMobileShareMailEnabled TRUE
    2. 为 cos 启用:

      zmprov mc <cos_name> zimbraMobileShareMailEnabled TRUE
  • 日历文件夹共享:

    1. 为用户启用:

      zmprov ma <user@domain.com> zimbraMobileShareCalendarEnabled TRUE
    2. 要启用 cos:

      zmprov mc <cos_name> zimbraMobileShareCalendarEnabled TRUE
  • 联系人文件夹共享:

    1. 为用户启用:

      zmprov ma <user@domain.com> zimbraMobileShareContactEnabled TRUE
    2. 要启用 cos:

      zmprov mc <cos_name> zimbraMobileShareContactEnabled TRUE
目前,共享功能只能通过 CLI 启用。未来版本中将添加管理控制台支持。

设置 ActiveSync 协议版本

管理员可以通过在用户、cos 和域级别进行配置来限制用户对特定 ActiveSync 协议版本的访问。多值 LDAP 属性zimbraActiveSyncVersion用于配置协议版本。缺省情况下,没有设置该属性的协议版本。此属性的任何版本更新都将覆盖本地配置属性zimbra_activesync_versions。它支持应用基于用户代理、设备 ID 或设备类型的版本.

语法

以下是指定版本的格式的详细信息:

  • android:14.1- Android 设备将通过 14.1 版本进行连接。

  • iphone:16.1- iPhone 设备将通过 16.1 版本进行连接。

  • 14.1- 所有设备类型都将通过 14.1 版本进行连接。

  • DeviceID:14.1- 将 DeviceID 替换为实际设备 ID。指定的设备 id 将通过 14.1 版本进行连接。

  • WindowsMail:14.0- 对于发送用户代理为WindowsMail的应用程序,它将在 14.0 版本以上进行连接。

设置协议版本的示例:

  1. 将使用 Android 设备的用户限制为版本 14.1:

    zmprov ma <user@domain.com> +zimbraActiveSyncVersion "android:14.1"
  2. 通过设备 ID 将用户限制为版本 16.0:

    zmprov ma <user@domain.com> +zimbraActiveSyncVersion "<Device_ID>:16.0"
  3. 将 cos 中使用 Android 设备的用户限制为版本 14.1:

    zmprov mc <cos_name> +zimbraActiveSyncVersion "android:14.1"
  4. 要将域中使用 iPhone 设备的用户限制为版本 16.0:

    zmprov md <domain_name> +zimbraActiveSyncVersion "iphone:16.0"
  5. 要将域中使用任何设备的所有用户限制为版本 16.0:

    zmprov md <domain_name> +zimbraActiveSyncVersion "16.0"

移动设备安全策略

管理员可以配置移动安全策略,以在与 Zimbra Collaboration 帐户同步的合规移动设备上实施安全规则。

可以配置以下功能来增强移动设备的安全性。

  • 如果移动设备丢失或被盗,远程擦除可擦除设备中的所有数据。

  • 设备密码策略,用于设置强密码强制实施,包括最短密码长度、非活动时间、强制密码历史记录,以及在配置的登录尝试失败后擦除设备

  • S/MIME 加密策略,用于启用 S/MIME 使用并设置发送和签名加密消息的策略。

此外,您还可以管理以下设备使用选项:

  • 过去日历和电子邮件项目的同步设置、邮件大小、格式

  • 可以禁用设备设置,例如相机、桌面同步、蓝牙、可移动存储的使用。

在 Zimbra 中设置移动策略

您可以从管理控制台将移动设备策略作为服务类别或针对个人帐户进行管理。

   Home → Configure → Class of Service → (COS) → Mobile Access → General
   Home → Manage → Accounts → (account) → Mobile Access → General

个人账户配置的策略会覆盖 COS 策略。

  1. 要从 COS 设置移动策略,请转至配置 → 服务等级并双击要配置的 COS。

  2. 为了使移动设备同步到 Zimbra,请选中移动 → 常规 → 启用移动同步.

  3. 选中启用移动策略以设置强制执行安全规则的移动安全策略。

  4. 要支持不支持部分或全部设备安全策略的旧设备,请选中允许不可配置的设备。

  5. 如果设备不确认或支持所有分配的策略,但您希望允许设备下载消息,请选中允许在设备上执行部分策略.

  6. 设备默认设置上策略刷新的刷新间隔为 24 小时。

  7. 在其他部分配置适当的策略。请参阅移动设备安全策略属性有关您可以配置的设置的说明。 管理移动设备

  8. 单击“保存”。

移动设备安全策略属性

可以从管理控制台配置以下属性以建立移动策略。

常规设置

组件 弃用声明

启用移动同步

为了使移动设备同步到 Zimbra Collaboration Server,启用移动同步必须检查。用户可以在移动设备和 Zimbra 服务器之间进行邮件、联系人和日历数据的双向无线同步。

启用移动策略

选中此框可设置移动安全策略,在合规移动设备上强制实施安全规则。您可以强制执行一般安全策略,包括密码规则,并在兼容设备上设置本地擦除功能。 设置移动策略后,下次移动设备向服务器发送请求时,能够执行安全策略的移动设备会自动设置您实施的规则并立即执行它们。

允许不可配置的设备

如果启用此功能,不支持设备安全策略实施的旧设备仍然可以访问服务器。

允许在设备上执行部分策略

如果设备未确认下载的所有策略,Zimbra 仍允许设备继续下载消息。

刷新间隔(小时):

指定 Zimbra 通过向同步请求发送“449 Retry after Provision”响应在设备上强制执行策略刷新之前的时间量(以分钟为单位)。默认为 24​​ 小时。

密码设置

组件 弃用声明

需要密码

用户必须在移动设备上创建密码。

最小密码长度

密码的最小字符数。默认值为 4。最大长度为 16 个字符。

需要字母数字密码

要求密码同时包含数字和字母字符。

所需的最少复杂字符

密码中必须包含的最小复杂字符数。这是非字母的任何字符。默认值为 0(无)

允许简单密码

可以创建简单密码。简单设备密码是具有特定模式的密码,例如 2468、1111。默认情况下不启用。

启用密码恢复

设备密码存储在服务器中并且可以恢复。默认启用。

允许设备加密

如果启用,则在移动电话上启用设备加密。默认启用;

需要设备加密

如果启用,则必须在设备上实施加密才能与服务器同步。默认情况下不启用。

不活动后需要重新输入密码(分钟)

在必须输入密码才能重新激活设备之前设备保持不活动状态的时间长度。默认值为 15 分钟。

允许的失败尝试次数

指定在设备自动启动本地擦除之前尝试登录设备失败的次数。设备不需要联系服务器即可发生这种情况。默认值为 4。

过期(天)

密码可以使用的时间长度(以天为单位)。经过此天数后,必须创建新密码。默认为0,密码不会过期。

存储密码以防止重复使用

在使用旧密码之前用户必须创建的唯一密码数。默认值为 8。

S/MIME 设置

组件 弃用声明

启用 S/MIME 公钥加密和签名

为了在移动设备上使用 S/MIME 加密,必须选中此项。还必须在 COS 功能页面中启用 S/MIME 功能。

要求设备发送签名消息

设备必须发送签名的 S/MIME 消息。默认情况下不启用。

需要 S/MIME 算法进行签名

签名消息时必须使用算法。默认情况下不启用。

要求设备发送加密消息

指定 S/MIME 消息是否必须加密。默认情况下不启用。

需要 S/MIME 算法进行加密

签名消息时必须使用所需的算法。默认情况下不启用。

算法协商

如果收件人的证书不支持指定的加密算法,设备上的消息应用程序如何协商加密算法。从块协商; 仅强算法允许任何算法中选择。默认为允许任何算法。

允许 S/MIME 软件证书

允许 S/MIME 软件证书。默认是允许。

同步设置

组件 弃用声明

已同步的过去日历项目

可同步到设备的日历日的最大范围。默认为两周。

过去的电子邮件项目已同步

电子邮件项目同步到设备的最大天数。默认为 3 天。

限制纯文本消息大小 (KB)

同步到设备时电子邮件消息被截断的最大大小。默认情况下不设置最大大小。

允许在漫游时直接推送

移动设备在漫游时必须手动同步。默认是不。

允许 HTML 格式的消息

在设备上启用 HTML 电子邮件。如果禁用此功能,则在同步发生之前所有电子邮件都会转换为纯文本。默认启用 HTML 格式。

限制 HTML 邮件大小 (KB)

HTML 格式的电子邮件同步到设备的最大大小。该值以 KB 为单位指定。默认情况下不设置最大大小。

设备设置

组件 弃用声明

允许可移动存储

移动设备可以访问存储卡上存储的信息。默认值为 TRUE。

允许摄像头

指定可以使用设备上的摄像头。默认值为 TRUE。

允许 Wi-Fi

指定设备上允许无线 Internet 访问。默认值为 TRUE。

允许红外

指定设备上允许红外连接。默认值为 TRUE。

允许共享

指定移动设备可以用作调制解调器以将计算机连接到 Internet。默认值为 TRUE。

允许远程桌面

指定移动设备可以发起远程桌面连接。默认值为 TRUE。

允许桌面同步

指定移动设备可以通过电缆与台式计算机同步。默认值为 TRUE。

允许蓝牙

默认情况下,设备上允许蓝牙功能。从允许, 禁用, 免提中选择仅有的。

设备应用程序

组件 弃用声明

允许浏览器

默认情况下,移动设备上允许使用 Microsoft® Pocket Internet Explorer。这不会影响第三方浏览器。

允许消费者邮件

用户可以在移动设备上配置个人电子邮件帐户。此参数不控制使用第三方移动设备电子邮件程序对电子邮件的访问。

允许 POP 或 IMAP 邮件

用户可以在设备上配置 POP3 或 IMAP4 电子邮件帐户。此参数不控制第三方电子邮件程序的访问。

允许短信

允许用户在设备上使用短信。

允许未签名的应用程序

允许在设备上使用未签名的应用程序。

允许未签名的安装包

允许设备上未签名的安装包。

批准的应用程序列表

组件 弃用声明

批准的应用程序

此设置存储可以在移动设备上运行的已批准应用程序的列表。

阻止的应用程序

此设置指定无法运行的应用程序列表。

移动设备管理

设置移动策略后,下次移动设备向服务器发送请求时,能够执行安全策略的移动设备会自动设置规则并立即执行。

例如,如果设备上尚未设置密码,或者密码强度不符合移动策略的要求,则用户必须在与服务器同步之前修复密码。一旦服务器确认该策略在移动设备上实施,该设备就可以同步。

如果移动设备丢失或被盗,该设备将受到以下策略规则的保护:

  • 不活动后需要重新输入密码(分钟)配置后,在配置的分钟数后,设备将被锁定。要解锁设备,用户必须重新输入密码。

  • 当配置了允许失败尝试时,在错误输入密码超过指定次数后,将执行本地(由设备生成)启动的设备擦除。这会擦除设备上的所有数据。

除了从管理控制台设置执行本地设备擦除的规则外,用户还可以从其 ZWC 帐户启动远程擦除,以擦除丢失、被盗或报废设备上的所有数据。

Zimbra 移动设备管理(又名 MDM)功能也可在管理控制台中找到,其中可以在全局、COS、域和帐户级别管理移动设备:

Configure → Global Settings → Mobile
Configure → COS → Mobile
Configure → Domain → Mobile
Configure → Manager → Accounts → (User) → Mobile
  1. 移动策略和注册设备管理设置位于 COS 和帐户内。

  2. 只有已注册的设备管理设置在“全局”和“域”部分中可用。

移动设备管理允许/阻止规则 (ABQ)

设备管理允许/阻止规则支持正则表达式规则,可以创建这些规则以允许或阻止设备连接到 Zimbra 协作服务器。这些规则使用命令行应用,并且可以使用zimbraMobileAllowedDevices 在全局或域级别创建zimbraMobileBlockedDevices多值属性。这些属性可以在全局或域级别设置。

zimbraMobileAllowedDevices

只有与zimbraMobileAllowedDevices中配置的设备匹配的设备才可以allowed使用 Activesync 协议进行同步,所有其他设备都将被阻止。 例如,如果配置了iPhone*,则仅报告为iPhone~将被允许​​同步。

zimbraMobileBlockedDevices

只有与zimbraMobileBlockedDevices中配置的设备匹配才会是blocked,所有其他设备将被允许连接。 例如,如果添加iPhone*,则所有报告为iPhone~的设备将被阻止,并且所有其他设备(例如 Android 和 Windows)将被允许同步。

命令行示例

以下是如何在全局和域级别从命令行创建允许和阻止规则的示例:

由于这些是多值属性,因此在添加或删除规则时需要使用+-。如果两者都不使用,则所有当前配置将替换为当前执行的规则。
  • 仅阻止 iPhone 设备:

    Global
    zmprov mcf +zimbraMobileBlockedDevices *iPhone*
    Domain
    zmprov md domain_name +zimbraMobileBlockedDevices *iPhone*
  • 仅允许 iPhone 设备:

    Global
    zmprov mcf +zimbraMobileAllowedDevices *iPhone*
    Domain
    zmprov md domain_name +zimbraMobileAllowedDevices *iPhone*
  • 在全局级别列出所有现有允许或阻止规则:

    Global
    zmprov gcf zimbraMobileAllowedDevices
    zmprov gcf zimbraMobileBlockedDevices
    Domain
    zmprov gd domain_name zimbraMobileAllowedDevices
    zmprov gd domain_name zimbraMobileBlockedDevices

隔离通知

可以为所有新隔离设备配置特定时间间隔的隔离通知。 这需要使用zmlocalconfig命令在每个邮箱服务器上进行配置。

以下是用于配置通知电子邮件正文和主题的属性:

  • zimbra_mobile_mdm_notification_email_body:用于自定义通知电子邮件正文的属性。如果未设置,将使用默认正文。

  • zimbra_mobile_mdm_notification_email_subject:用于自定义通知电子邮件主题的属性。如果未设置,将使用默认正文。

要查看电子邮件正文,请执行:

zmlocalconfig zimbra_mobile_mdm_notification_email_body

要更改通知电子邮件正文,请执行:

zmlocalconfig -e zimbra_mobile_mdm_notification_email_body "new notification body"

要查看通知电子邮件主题,请执行:

zmlocalconfig zimbra_mobile_mdm_notification_email_subject

要更改通知电子邮件主题,请执行:

zmlocalconfig -e zimbra_mobile_mdm_notification_email_subject "new notification subject"
设置隔离通知间隔

zmmdmmailschedule命令用于设置通知间隔。默认情况下,没有设置通知间隔。

语法

zmmdmmailschedule [-l|-h|-f|-e]

选项:

长名称 短名称 描述

-l

list

打印现有计划。

-h

help

获取有关 zmmdmmailschedule 的帮助(默认命令)。

-f

刷新

删除当前计划(取消所有 Zimbra MDM 设备电子邮件计划策略)。

-e

edit

使用指定的计划编辑当前计划。

编辑通知间隔的语法:

zmmdmmailschedule -e {<45m | 6h | 1d | 0>} admin_email

设置通知间隔的 CLI 示例:

  • 分钟:设置隔离通知发送至admin@domain.com每 45 分钟执行以下命令:

    zmmdmmailschedule -e 45m admin@domain.com
管理员电子邮件是可选输入。如果未提供管理员电子邮件地址,则每 45 分钟就会向所有配置的管理员发送电子邮件。例如:zmmdmmailschedule -e 45m.
  • 时间:设置隔离通知发送至admin@domain.com每 6 小时执行以下命令:

    zmmdmmailschedule -e 6h admin@domain.com
  • Day:设置隔离通知发送至admin@domain.com每 3 天执行以下命令:

    zmmdmmailschedule -e 3d admin@domain.com
  • :要禁用隔离通知,请执行以下命令:

    zmmdmmailschedule -e 0 admin@domain.com
  • 冲水:要删除隔离通知计划,请执行以下命令:

    zmmdmmailschedule -f

注册设备

注册设备部分使管理员能够为用户采取各种操作。

以下是支持的操作

操作名称 描述 执行操作后的状态

从列表中删除

从列表中删除设备。 这不会导致同步数据重置,但会导致下次同步时策略重置。

等待设备

暂停同步

暂停设备。新消息不会同步到设备。但旧消息将可以访问。

已暂停

恢复同步

恢复与移动设备的同步。

等待设备。 连接成功并恢复同步后,状态将更改为活动.

擦除设备

重置移动设备。

使用此操作时请小心,因为它会删除设备中的所有数据。

擦除待处理。操作成功完成后,状态将更改为擦除完成.

取消擦除

取消擦除设备操作。

仅在设备状态为擦除待处理之前,才允许执行此操作。 

等待设备

阻止设备并从设备中删除同步消息。

已阻止

删除帐户

从移动设备中删除帐户

删除待处理帐户。帐户删除成功后,状态将更改为帐户已删除.

取消删除帐户

取消删除帐户手术。

此操作将被允许,直到设备的状态为删除帐户待处理为止。 

设备连接并同步电子邮件后,状态将更改为活动.

支持自动发现

Zimbra 支持自动发现服务,以便用户可以为其 Zimbra 帐户配置移动设备,而无需了解服务器设置。用户输入电子邮件地址和密码后,自动发现会返回所需的服务器设置。

自动发现默认启用。要使自动发现发挥作用,您必须配置来自证书颁发机构的有效 SSL 证书。

建议使用的证书类型是统一通信证书或 UCC。此证书允许您在“使用者备用名称”字段中添加多个主机名。为了使自动发现工作,主题备用名称字段必须包含用户正在连接的主机名。

您必须拥有autodiscover.<domain>.com的有效域名服务(DNS SRV 记录),以便客户端设备可以找到并连接到自动发现服务。

使用管理控制台上的安装证书向导生成证书签名请求并在收到签名证书后安装该证书。统一通信证书可以由许多认证机构颁发。

完成请求后,您必须拥有autodiscover.<domain>.com的有效域名服务(DNS SRV 记录)。使用您使用的有效域名配置主题备用名称 (SAN) 字段。备用名称应包含域 autodiscover.<company>.com。在主题备用名称字段中包含您的环境所需的所有域名。

确保 Web 服务器模式为 https、两者、重定向或混合,因为自动发现和来自设备的其他通信是 HTTPS。

设置用户帐户的移动同步

在帐户的 COS 配置文件中或在个人帐户上启用移动同步。在大多数情况下,不需要额外的插件。

如果用户没有自动发现功能,则可能需要在移动设备上配置以下内容才能同步到他们的 Zimbra 帐户。

  • 服务器名称(地址):输入用户的 Zimbra Collaboration 邮箱服务器的完全限定主机名。

  • 用户名:输入用户的主要 Zimbra Collaboration 帐户名。

  • 域名:输入用户的 Zimbra Collaboration 域名 (DNS)。如果在自签名证书时使用 SSL,则可能必须将来自服务器的

  • SSL 证书添加到受信任的设备中。

用户可以将其 Zimbra 帐户同步到移动设备。他们可以发送电子邮件、创建约会以及将联系人添加到地址簿。

有关特定设备设置的详细信息,请参阅 Zimbra Wiki 上的移动设备设置页面。

更改移动设备密码策略

如果移动设备被 Zimbra Collaboration 移动密码策略锁定,则必须删除 PIN 要求才能重新同步设备。

Home → Manage → Accounts → account → Mobile
  1. 在管理控制台中,打开要修改的用户帐户。

  2. Mobile页面上,取消选中Force pin on device。禁用密码策略后,用户必须重新同步设备。

用户的移动设备自助功能

用户可以直接管理以下设备功能。

  • 执行设备的远程擦除。如果移动设备丢失、被盗或不再使用,用户可以从其 ZWC 帐户启动远程擦除,以擦除移动设备中的所有数据。设备返回到其原始出厂设置。

  • 暂停从移动设备启动的同步并恢复与设备的同步。

  • 从列表中删除设备。如果从列表中删除设备并且该设备随后尝试同步,服务器会强制设备在下次同步时再次获取策略。

将帐户添加到 Outlook 和移动应用程序

本部分提供使用以下方式配置 Zimbra 帐户的分步说明:

  • Zimbra Connector for Outlook (ZCO)

  • Exchange Web Services (EWS)

  • 移动设备上的 ActiveSync(iOS 和 Android)

Outlook 移动应用程序 (iOS/Android) 不支持闲/忙或日程安排助手使用 ActiveSync 时。欲了解更多详情,请参阅Outlook 应用程序部分的忙/闲信息。
共享日历目前,Outlook 移动应用程序中的访问已被禁用,因为我们发现修改/删除操作存在问题。我们正在努力在即将发布的版本中提供全面可靠的支持。

Outlook 的 Zimbra 连接器 (ZCO)

  1. 下载 ZCO 安装程序:

    1. 前往:https://www.zimbra.com.cn/product/addons/zimbra-connector-for-outlook-download/

    2. 根据您的 Windows 操作系统位数(x64 或 x32)下载适当的安装程序。

  2. 安装 ZCO:

    1. 运行.msi安装程序并按照屏幕上的提示进行操作。

  3. 访问邮件配置文件:

    1. 转至Control Panel > Mail > Show Profiles.

  4. 创建新配置文件:

    1. 单击添加配置文件→ 选择手动配置→ 选择Zimbra 协作服务器.

  5. 输入帐户详细信息:

    1. 电子邮件:<电子邮件地址>

    2. 密码:<zimbra_password>

    3. 服务器:<server_name>

  6. 完成配置文件设置:

    1. 选择“提示使用配置文件”.

    2. 单击确定保存设置。

  7. 打开 Outlook:

    1. 启动 Outlook 并选择新创建的配置文件以访问您的 Zimbra 帐户。

EWS(Exchange Web 服务)- macOS

先决条件

确保您的 Zimbra 帐户处于活动状态并且在服务器上启用了 EWS(Exchange Web 服务)。

步骤

  1. 打开前景在您的 Mac 上。

  2. Outlook菜单中,选择旧版 Outlook模式(如果您使用的是新的 Outlook 界面)。

  3. 转到设置 → 帐户 → “+”图标 → 添加帐户.

  4. 输入您的完整 Zimbra 电子邮件地址,然后单击继续.

    如果您使用的是 Microsoft 365 订阅或帐户,Outlook 可能会尝试使用 Microsoft 365 自动配置帐户。在这种情况下,请按照附加步骤操作:在“连接到 Microsoft 365...”屏幕上,单击“不是 Microsoft 365?”链接位于右上角。
  5. 将出现电子邮件提供商列表。选择Exchange.

  6. 输入以下详细信息:

    1. 方法:选择用户名和密码

    2. 电子邮件地址: <电子邮件地址>

    3. 域\用户名或电子邮件地址: <电子邮件地址>

    4. 密码: <zimbra_password>

    5. 服务器: <zimbra_server_name>(此字段是可选的,如果自动发现已设置)

  7. 单击添加帐户.

  8. 设置完成后,单击完成完成。

注释

  • 如果您不确定 Zimbra EWS 服务器名称,请联系您的管理员。

  • 如果提示输入帐户类型,请始终选择Exchange(不是 IMAP 或 Microsoft 365)。

  • 现代 Outlook 版本可能默认使用 Microsoft 服务;始终使用“不是 Microsoft 365?”链接以覆盖 Zimbra 帐户的该行为。

ActiveSync – 移动设备

iOS – Outlook 应用程序 (Microsoft Outlook)

  1. 如果未安装 Microsoft Outlook 应用程序,请从 App Store 下载并安装。

  2. 启动 Microsoft Outlook 应用程序。

  3. 添加帐户:

    1. 如果这是您第一次:点击开始 → 添加帐户

    2. 如果已经使用 Outlook:点击主页(您的姓名缩写)→ 设置 → 常规 → 帐户 → 添加帐户 → 电子邮件帐户 → 输入电子邮件地址 → 添加帐户

  4. 输入您的完整电子邮件地址,然后点击添加帐户.

  5. 根据 Outlook 检测到的内容,执行以下子步骤之一:

    1. 如果 Outlook 显示 IMAP 屏幕:

      • 点击不是 IMAP?在右上角。

      • 点击更改帐户提供商.

      • 选择Exchange.

    2. 如果 Outlook 显示 Microsoft 365 登录屏幕:

      • 点击不是 Microsoft 365?在右上角。

      • 点击更改帐户提供商.

      • 选择交易所.

  6. 输入帐户详细信息:

    1. 电子邮件:<电子邮件地址>

    2. 密码:<zimbra_password>

    3. 服务器:<服务器名称>

    4. 领域:(除非您的 IT 团队指定,否则留空)

    5. 用户名:输入电子邮件的用户部分(例如,对于john.doe@example.com,输入 john.doe)

    6. 点击登录完成设置。

  7. Outlook 将验证帐户并开始同步邮件、日历和联系人。

iOS – Apple Mail 应用程序

  1. 转到Settings → Apps → Mail → Mail Accounts → Add Account.

  2. 选择Microsoft Exchange.

  3. 输入:

    1. 电子邮件:<电子邮件地址>

    2. 说明:可选标签,如“工作帐户”→ 点击下一步

  4. 如果自动发现已设置:

    1. 点击登录→ 输入密码 → 点击下一步

      1. 选择要同步的服务(邮件、通讯录、日历)。

      2. 点击保存.

  5. 如果自动发现未设置

    1. 点击手动配置 → 输入密码 → 点击下一步

    2. 输入服务器: <server_name>

    3. 输入用户名: <电子邮件地址> → 点击下一步

    4. 选择要同步的服务(邮件、通讯录、日历)。

    5. 点击保存.

Android – Outlook 应用程序

  1. 如果未安装 Microsoft Outlook 应用程序,请从 Play 商店下载并安装。

  2. 启动 Microsoft Outlook 应用程序。

  3. 根据您当前的 Outlook 设置:

    1. 如果未配置帐户,Outlook 将显示“添加帐户”直接刷屏。

    2. 如果您已经配置了一个帐户,请按照以下步骤添加另一个帐户:

      1. 点击Exchange 徽标位于应用程序的左上角(这将打开侧面菜单)。

      2. 点击设置图标位于左下角。

      3. 转到常规 > 帐户.

      4. 点击添加帐户.

      5. 点击添加电子邮件帐户.

  4. 输入您的电子邮件地址,然后点击继续.

  5. 当提示选择帐户类型时,选择IMAP.

    这是继续进行高级选项所需的临时选择 - 我们将在接下来的步骤中切换到 Exchange。
  6. 在 IMAP 设置屏幕上,点击? (帮助图标)在右上角。

  7. 从帮助菜单中,点击更改帐户提供商.

  8. 在帐户类型列表中,选择Exchange.

  9. 启用高级设置

  10. 输入:

    1. 电子邮件:应预先填写。如果没有,请输入您的<电子邮件地址>。

    2. 密码: <zimbra_password>

    3. 服务器: <server_name>

    4. : (留空,除非您的 IT 团队指定)

    5. 用户名:输入电子邮件的用户部分(例如 john.doe)

  11. 输入所有详细信息后,点击✔️(勾号图标)屏幕右上角的 以启动连接。

  12. Outlook 将验证配置。验证成功后,Outlook 应用程序将开始同步电子邮件、日历和联系人。

Android – Gmail 应用程序

  1. 打开Gmail 应用程序→ 点击个人资料图标(右上角)→添加另一个帐户.

  2. 选择Exchange 和 Office 365.

  3. 输入:

    1. 电子邮件:输入 <电子邮件地址> → 点击下一步

    2. 密码:输入 <zimbra_password> → 点击下一步

    3. 服务器:<服务器名称>(如果出现提示)

  4. 点击完成完成。

  5. 要访问该帐户,请点击个人资料图标(右上角)→ 点击已配置的帐户。

Outlook 移动应用程序不支持闲/忙状态

Outlook 移动应用程序 (iOS/Android)与通过Exchange ActiveSync配置的 Zimbra 帐户一起使用时,不会显示忙/闲可用性信息。这包括缺乏会议创建期间的安排助理功能。

这是一个已知的限制Outlook 移动应用程序的,目前仅支持 Office 365 或 Microsoft Exchange 帐户的日历可用性功能。 Outlook 应用程序不会通过 ActiveSync 协议向 Zimbra 服务器发出忙/闲查找请求。

要查看忙/闲可用性并访问完整的日历安排功能,我们建议使用以下方法之一:

  • 使用 iOS 或 Android 上的本机日历应用程序,该应用程序通过 ActiveSync 完全支持忙/闲。

  • 通过 Zimbra Web 客户端访问您的帐户(网络邮件)。

  • 使用官方 Zimbra 移动应用程序(如果在您的环境中可用)。

我们正在持续监控 Microsoft 的更新,如果 Outlook 应用程序的未来版本扩大支持,我们将更新本指南。

备份和恢复

简介

Zimbra Collaboration 包括一个可配置的备份管理器,驻留在每个 Zimbra 协作服务器并执行备份和恢复功能。你 不必停止 Zimbra Collaboration 服务器即可运行备份 过程。

本节介绍数据的备份和恢复以及使用方法 使用管理用户界面(管理控制台)和 CLI 工具来备份或恢复您的 Zimbra Collaboration 邮箱服务器。此外,本章还提供了灾难恢复的信息和一般准则。

对于备份和恢复功能方面,Zimbra Collaboration Daffodil (v10) 目前不支持在 S3 外部存储上存储备份文件或从 S3 外部存储恢复备份。

从 Zimbra Collaboration Daffodil版本 10.1.16开始,备份和恢复功能通过称为备份引擎 v2的新实现得到增强。 这些增强功能旨在提高备份存储效率、减小备份大小并优化备份性能,同时保持与现有旧备份和工作流程的完全向后兼容性。

这些增强功能仅适用于升级后创建的新备份会话。现有备份数据保持不变且可完全恢复。

备份引擎 v2 – 增强功能摘要

备份引擎 v2 引入了以下改进:

  • 会话级重复数据删除

  • 对内部和外部存储卷的重复数据删除支持

  • 现代 Zstandard (zstd) 压缩

  • 可选的跨会话重复数据删除,可实现长期存储效率

  • 具有安全默认值的增强型管理控制

保持不变的内容

  • 备份计划和执行工作流程

  • 现有备份标签和目录布局

  • 恢复命令和过程

  • 能够恢复所有旧备份

重复数据删除

简介

除了内部卷之外,此版本还通过将重复数据删除支持扩展到存储在外部存储上的 blob,增强了旧版备份和还原系统。

重复数据删除可消除备份期间的冗余数据,提高存储效率并减小备份大小,而不会影响恢复行为或现有工作流程。

此版本中的新增功能

  • 现在支持存储在外部存储上的 blob 重复数据删除。

  • 相同的数据在备份会话期间仅存储一次,即使它出现在多个邮箱中也是如此。

  • 备份大小和存储使用量减少,同时保持完全恢复兼容性。

这些改进会在升级后自动应用于新的备份会话。

为什么添加这些增强功能

减少存储使用

重复数据删除消除了相同数据的冗余副本,对以下方面影响很大:

  • 附件

  • 广播电子邮件

  • 共享文档

提高性能
  • 减少磁盘 I/O

  • 更快的备份和恢复操作

  • 减少网络传输(如果适用)

降低基础设施成本
  • 减少磁盘要求

  • 更小的备份存档

  • 降低云或对象存储消耗

高效扩展

重复数据删除在以下情况下尤其有效:

  • 大型组织

  • 多用户环境

  • 多存储部署

升级后的备份引擎行为

升级后,备份引擎继续确保与现有备份的向后兼容性,同时引入性能、可靠性和存储效率的内部改进。

主要行为:

  • 现有备份仍然可用,并且无需任何手动干预即可恢复。

  • 新备份遵循升级后的引擎逻辑,包括改进的元数据处理、流式传输和存储优化。

  • 重复数据删除和压缩仅应用于新的备份会话。

  • 之前创建的备份数据保持不变。

  • 引擎自动检测备份格式/版本并应用适当的处理逻辑。

  • 除非管理员明确配置,否则不需要重新索引或完全重新备份。

  • 备份和恢复操作保持透明,升级后无需更改工作流程。

重复数据删除概述

重复数据删除的作用

重复数据删除是一种存储优化技术,可确保相同的内容仅存储一次,而多个逻辑引用指向相同的物理数据。

不存储重复副本:

  • 存储单个唯一实例

  • 后续重复项将替换为逻辑引用

这会减少:

  • 存储消耗

  • I/O 操作

重复数据删除的范围

在 Zimbra 中,重复数据删除适用于相同的 blob(相同的 MIME 内容)。

这包括:

  • 邮件内容

  • 附件

  • 公文包项目

  • 具有相同 blob 的日历项目

重复数据删除在 ​​blob 级别运行。两个 blob 必须逐字节相同才能进行重复数据删除。

例子:

如果用户将包含相同附件的电子邮件发送给多个收件人,则每个收件人邮箱都包含 blob 的重复副本。重复数据删除可确保 blob 在备份会话期间仅存储一次。

会话级重复数据删除模型

重复数据删除应用于单个备份会话的范围内.

每个会话的重复数据删除边界
  • 仅比较在同一备份运行期间处理的 blob。

  • 不执行任何查找:

    • 以前的备份会话

    • 历史备份

    • 外部备份存储

特征
  • 重复数据删除映射仅在会话期间存在于内存中。

  • 备份完成后,地图将被清除。

此设计可确保可预测的性能并避免跨会话依赖性。

重复数据删除的工作原理(高级流程)

完整备份流程

在完整备份期间,引擎会处理所有符合条件的数据(邮件项目、附件、blob),并将重复数据删除作为数据写入管道的一部分应用。

高级步骤:

  1. 备份会话启动

  2. 按顺序扫描和读取项目

  3. 对于每个数据 blob:

    • 计算 Blob 摘要

    • 执行重复数据删除检查

  4. 基于重复数据删除结果:

    • 新 blob → 物理存储

    • 重复 blob → 在元数据中创建引用

  5. 写入元数据,将项目链接到 blob

  6. 备份会话完成

Blob 引用说明

  • 每个唯一的 blob 都存储一次。

  • 维护 blob 摘要 → blob ID 的映射。

  • 检测到重复项时:

    • 不会写入新的 blob。

    • 元数据引用现有的 blob ID。

这可确保高效存储,同时保持恢复准确性。

LDAP 配置属性

为了支持重复数据删除,引入了以下 LDAP 属性。

zimbraBackupDeduplication

启用或禁用重复数据删除。

允许的值:

  • dedupe– 启用重复数据删除(默认)

  • nodedupe– 禁用重复数据删除

CLI 命令和示例

检查当前的重复数据删除状态

服务器级:

zmprov gs `zmhostname` zimbraBackupDeduplication

全球层面:

zmprov gcf zimbraBackupDeduplication
启用或禁用重复数据删除

服务器级别:

zmprov ms `zmhostname` zimbraBackupDeduplication dedupe
zmprov ms `zmhostname` zimbraBackupDeduplication nodedupe

全局级别:

zmprov mcf zimbraBackupDeduplication dedupe
zmprov mcf zimbraBackupDeduplication nodedupe
通过重复数据删除运行手动备份

通过 LDAP 启用重复数据删除或使用 CLI 标志:

zmbackup -a all -f --dedupe

覆盖压缩:

zmbackup -a all -f --dedupe --zstd
zmbackup -a all -f --dedupe --nocompression

启用 CSD 时强制会话级重复数据删除:

zmbackup -a all -f --nocsd

有关管理控制台的更新,请参阅管理控制台部分。

多节点行为

多节点部署中的重复数据删除范围

在多节点环境中,重复数据删除的范围为每个邮件存储和每个备份会话。

关键原理:

重复数据删除不跨邮件存储或节点。

每个邮件存储:

  • 运行自己的备份进程

  • 维护自己的由 RocksDB 支持的持久重复数据删除索引

  • 独立写入备份数据

此设计可确保:

  • 无跨节点协调开销

  • 无分布式锁定

  • 可预测的性能和故障隔离

示例:两个邮件存储中的相同附件
  • 邮件存储 A 和邮件存储 B 包含相同的附件

  • 备份在每个存储上独立运行

结果:

  • Mailstore A 备份中存储了一个 blob

  • 邮件存储 B 备份中存储了 1 个 blob

  • 无跨存储重复数据删除

记录和监控

邮箱日志记录:

  • 生成的备份类型 示例:Session-level dedupe backup initiated using Zstd compression.

  • 帐户级别的重复 blob 计数 示例: Duplicate blobs count: 5

这些日志有助于验证重复数据删除的有效性和备份行为。

压缩

概述

备份引擎 v2 引入了对Zstandard (ZSTD)压缩的支持,这是一种现代通用压缩算法,旨在与传统 ZIP (deflate) 相比,在压缩比和性能之间提供更好的平衡。

在 Zimbra 备份的上下文中:

  • zimbraBackupDedupeCompressionType设置为时,ZSTD 用于启用重复数据删除的备份(备份引擎 v2)zstd.

  • Blob 被写入 TAR + ZSTD 块以进行重复数据删除备份。

  • 每个唯一的 blob 都被压缩一次,然后通过 RocksDB 和 JSON 元数据引用。

  • 压缩级别可使用 localconfig 键backup_zstd_compression_level进行调整(范围:1–22,默认值:3)。

  • ZSTD 针对快速解压和良好的 CPU 效率进行了优化,这对于备份和恢复 SLA 至关重要。

这使得 ZSTD 非常适合以电子邮件文本和附件为主的大型 Zimbra 数据集,尤其是在跨帐户和随着时间推移重复性较高的环境中。

与 ZIP 相比的优势

旧版备份使用 ZIP/deflate 压缩 (--zip, --zipStore, --noZip)。多个内部基准测试和性能测试运行表明,ZSTD 在备份工作负载方面始终优于 ZIP。

性能特点

具有重复数据删除功能的 ZSTD 通常可实现更高的吞吐量并且比 ZIP 更短的挂钟时间因为:

  • 在实际水平上压缩速度更快 (1-5)。

  • 由于重复数据删除,执行的 I/O 更少;唯一的 blob 被写入一次。

  • ZSTD 解压缩速度更快,并且通常与 ZIP 相当或更好,从而缩短了恢复时间。

对于实际备份工作负载(中等 ZSTD 级别、高重复、文本密集型数据),ZSTD 提供:

  • 比 ZIP 更小的备份大小。

  • 更短或类似的备份窗口。

  • 与激进的 ZIP 或非常高的 ZSTD 级别相比,存储的每个字节的 CPU 较低。

内部和外部卷行为

Zimbra 备份引擎 v2 在内部和外部邮件存储卷上应用统一的重复数据删除和压缩。

邮件存储卷与备份存储

邮件存储卷可能是:

  • 内部 – 本地文件系统卷

  • 外部 – 通过zmvolume / zms3config

配置的 S3 支持卷 备份数据写入本地备份存储。来自内部卷和外部卷的 Blob 均被标准化为经过重复数据删除、ZSTD 压缩的 Blob。

重复数据删除索引 (RocksDB) 是跨卷的全局索引,不区分内部或外部来源。

这提供了统一的行为:

  • 内部和外部卷上的相同 blob 只存储一次。

  • 跨会话重复数据删除可避免重新存储 blob,无论原始卷如何。

对外部重型部署的影响

大型环境通常在 S3 上存储 80-90% 的 Blob。以前,重复数据删除的优势仅限于外部数据。

使用备份引擎 v2:

  • 所有 blob(内部和外部)都使用相同的 RocksDB 索引进行重复数据删除。

  • ZSTD 有效压缩重复数据删除的 blob。

  • 具有 40-60% 重复外部数据的基准显示最终备份大小约为原始大小的 25-30%,或者在排除索引时更小。

V2 备份的工作原理

完整备份期间的压缩流程

这适用于会话级重复数据删除 (V2) 和跨会话重复数据删除备份,具体情况如下:

  • zimbraBackupDeduplication = dedupe

  • zimbraBackupDedupeCompressionType = zstd(或nocompression)

高级流程:

  1. 备份会话启动(zmbackup -f)

  2. BackupModule 读取服务器级属性

  3. 选择备份类型(旧版或 V2)

  4. 枚举邮件项目

  5. Blob 定位(内部或外部)

  6. 使用 RocksDB 执行重复数据删除检查

  7. 压缩并写入新 Blob

  8. 创建元数据

  9. 会话完成

Blob 存储和 ZSTD 压缩

对于新 Blob:

  • Blob 被包装到 TAR 条目中

  • backup_zstd_compression_level

  • 处使用 ZSTD 压缩 写入到blob-chunks/位于:

    • 会话目录 (V2) 或

    • COMMON 会话备份目录(带 CSD 的 V2)

元数据更新:

  • RocksDB 条目:摘要、位置、压缩类型、大小、引用计数

  • 下的帐户项目元数据 JSON/accounts

会话结构

会话级重复数据删除 (V2):

  • blob-chunks/

  • rocksdb/

  • accounts/

  • ldap/

  • sys/

  • session.xml

CSD COMMON(启用 V2 + CSD):

  • blob-chunks/

  • rocksdb/

  • accounts/

  • ldap/

  • sys/

  • session.xml

CSD DELTA(启用 V2 + CSD):

  • blob-chunks/rocksdb/

  • 包含:

    • accounts/

    • ldap/

    • sys/

    • session.xml(指向 COMMON)

恢复解压行为

ZSTD 压缩在恢复过程中是完全透明的。

恢复流程:

  1. 管理员运行zmrestorezmrestoreoffline

  2. RestoreModule 定位备份会话

  3. 元数据从帐户 JSON 和 RocksDB 解析

  4. 读取压缩的 Blob 数据

  5. Blob 解压缩(如果是 ZSTD)或直接流式传输

  6. Blob 写入目标邮件存储卷

CSD 恢复透明地组合来自 COMMON 和 DELTA 的元数据。

配置属性

服务器级 LDAP 属性
zimbraBackupDeduplication

控制是否使用重复数据删除。

允许的值:

  • dedupe– (默认)启用重复数据删除 (V2)

  • nodedupe– 旧行为

zimbraBackupDedupeCompressionType

定义重复数据删除备份的压缩。

允许的值:

  • zstd(默认值)

  • nocompression

仅在启用重复数据删除时应用。

本地配置(高级调整)

Localconfig 键仅控制性能,不会更改磁盘格式。

示例包括:

  • backup_zstd_compression_level(默认值:3)

  • zstd_copier_parallel_compression_threads

  • RocksDB 缓存、压缩和写入设置

仅当存在特定性能或内存限制时才应调整这些设置。

CLI 示例

使用 ZSTD 启用重复数据删除:

zmprov mcf zimbraBackupDeduplication dedupe
zmprov mcf zimbraBackupDedupeCompressionType zstd

切换回旧版 ZIP 行为:

zmprov mcf zimbraBackupDeduplication nodedupe
zmprov mcf zimbraBackupBlobsCompressType zip
zmprov mcf zimbraBackupCrossSessionDedupeEnabled FALSE

验证

可以通过以下方式执行验证:

  • 验证 LDAP 和 localconfig 值

  • 检查备份目录结构

  • 执行范围测试恢复

示例恢复:

zmrestore -a testuser@example.com -ca -pre zstd_ -lb full-YYYYMMDD.HHMMSS.xxx -t /opt/zimbra/backup

有关管理控制台的更新,请参阅管理控制台部分。

跨会话重复数据删除 (CSD)

概述

备份引擎 v2 通过引入跨会话重复数据删除 (CSD)将重复数据删除扩展到单个备份会话之外。启用 CSD 后,将检测并重用先前会话中已备份的数据块,而不是在后续备份中再次写入。

因此,客户将体验到:

  • 随着时间的推移,备份数据占用空间减少

  • 由于写入操作减少,备份操作速度更快

  • 降低长期保留和合规性场景的存储消耗

跨会话重复数据删除对于频繁备份和会话之间数据更改最少的环境特别有利,可在不影响数据完整性或恢复功能的情况下实现高效的增量式备份。

标准备份方法支持跨会话重复数据删除。自动组备份不支持 CSD。

跨会话重复数据删除的工作原理

备份创建流程

当在启用 CSD 的情况下收到完整备份请求时:

  1. 该请求由 COMMON 或 DELTA 备份创建逻辑评估。

  2. 根据此评估,创建 COMMON 备份或 DELTA 备份。

  3. 所有重复数据删除检查均使用与 COMMON 备份关联的共享 RocksDB 索引执行。

普通备份

第一个启用 CSD 的完整备份创建COMMON备份目录。

例子:

full-csd-common-20251230.101835.279

常见备份包含:

  • 共享 blob 存储

  • 用于重复数据删除的 RocksDB 元数据

  • 还原操作所需的通用元数据

COMMON 备份充当所有后续 DELTA 备份的重复数据删除基准。

COMMON 备份结构
blob-chunks/
rocksdb/
accounts/
ldap/
sys/
session.xml
强制创建新 COMMON 备份的条件

当满足以下任一条件时,将创建新的 COMMON 备份:

  • 不存在现有 COMMON 备份

  • 保留逻辑需要新的 COMMON 备份

  • 服务器属性zimbraBackupCSDReset设置为TRUE

  • 通过 CLI 显式强制备份:

zmbackup -a all -f --csd
创建新的 COMMON 备份时,zimbraBackupCSDReset自动重置为FALSE.
Delta 备份

存在 COMMON 备份后,后续完整备份将创建DELTA备份。

例子:

full-csd-delta-20251229.102625.190

德尔塔备份:

  • 引用最新的有效 COMMON 备份

  • 仅存储新的或更改的元数据

  • 仅当 COMMON 备份中尚不存在 Blob 时才存储 Blob 数据

DELTA 备份创建逻辑

如果:

  • 不满足创建新 COMMON 备份的任何条件,并且

  • A有效的 COMMON 备份可用

然后系统创建 DELTA 备份。

DELTA 备份始终依赖于特定的 COMMON 备份来通过 RocksDB 进行 Blob 存储和重复数据删除检查。

DELTA 备份结构

DELTA 备份包含blob-chunks/rocksdb/.

它们包括:

accounts/
ldap/
sys/
session.xml

session.xml文件引用关联的 COMMON 备份。

Delta Blob 重复数据删除流程

在 DELTA 备份期间,当需要备份 Blob 时:

  1. 系统会检查 COMMON 备份的 RocksDB 中的 Blob 哈希值。

  2. 如果 blob 已存在:

    • blob 不重复。

    • 重复使用现有的 blob 引用。

  3. 如果 blob 不存在:

    • blob 被写入blob-chunks/在公共备份中。

    • 元数据记录在RocksDB中。

这可确保:

  • 跨会话重复数据删除

  • 减少存储使用

  • 集中式 blob 管理

保留驱动的通用备份创建

保留策略源
会话级跨会话每周备份支持时间点恢复。它是不是支持跨会话每日增量备份。

保留源自 Zimbra 备份计划程序,使用:

zmschedulebackup

保留规则在删除 (d) 计划下定义,例如:

  • d 7d– 保留备份 7 天

  • d 1m– 保留备份 1 个月

  • d 1y– 保留备份 1 年

确定何时需要新的 COMMON 备份

根据保留规则,截止日期计算如下:

cutoff = today − retention + 1 day

如果 COMMON 备份日期小于或等于截止日期,则视为已过期,并且可以创建新的 COMMON 备份。

即使符合条件,仅当触发完整备份时才会创建 COMMON 或 DELTA 备份。
保留示例

示例 1 – 备份已过期(需要新的 COMMON)

  • 今天:2025-10-08

  • 保留:d 8d

  • 常见备份:20251001

结果:已过期 → 新的 COMMON 备份符合条件

示例 2 – 每月保留

  • 今天:2025 年 10 月 30 日

  • 保留:d 1m

  • 常见备份:20251001

结果:已过期 → 新的 COMMON 备份符合条件

示例 3 – 备份仍然有效(已创建 DELTA)

  • 今天:2025-10-07

  • 保留:d 7d

  • 常见备份:20251005

结果:有效→已创建 DELTA 备份

常见备份删除限制

删除限制规则

只要存在一个或多个从属 DELTA 备份,就无法删除 COMMON 备份。

仅当删除了所有相关 DELTA 备份后,COMMON 备份才符合删除条件。

DELTA 和增量备份可以单独删除。

删除行为

当删除请求包括多个备份时:

  • DELTA 和增量备份将根据请求删除。如果依赖的 DELTA 备份仍然存在,则跳过

  • COMMON 备份。

  • 如果同时请求 COMMON 和所有依赖 DELTA,则全部删除。

跳过 COMMON 备份时,不会显示 CLI 错误。

日志记录行为

如果跳过常见备份删除,则会记录以下警告:

Backup deletion skipped: CSD common backup <backup_label> is not eligible for deletion, as one or more dependent delta backups are still present.

CLI 命令成功完成。

CSD 中的压缩处理

在 CSD 备份沿袭中,压缩类型必须在 COMMON 和所有 DELTA 备份中保持一致。

如果压缩类型更改:

  • 系统自动设置zimbraBackupCSDReset = TRUE

  • 在下一次完整备份时强制执行新的 COMMON 备份

这可以防止由于混合压缩格式而导致恢复失败。

使用自动组备份

跨会话重复数据删除不支持自动组备份方法。

管理 UI 行为

启用自动分组时:

  • 启用 CSD 的选项隐藏在管理 UI 中。

LDAP 覆盖处理

如果在自动分组处于活动状态时通过 LDAP 手动启用 CSD:

  • CSD 不应用。

  • 系统回退到会话级重复数据删除。

  • 备份执行继续安全。

运行时日志记录

记录警告:

Cross-session deduplication is not supported when the Autogroup feature is enabled.

LDAP 配置属性

zimbraBackupCrossSessionDedupeEnabled

允许的值:

  • TRUE

  • FALSE

zimbraBackupCSDReset

指示是否需要新的 COMMON 备份的内部属性。

当任何 CSD 相关属性发生更改时自动更新。

启用跨会话重复数据删除

全局配置:

zmprov mcf zimbraBackupCrossSessionDedupeEnabled TRUE

服务器级配置:

zmprov ms <server_name> zimbraBackupCrossSessionDedupeEnabled TRUE
如果zimbraBackupDeduplication设置为nodedupe,则启用 CSD 会自动将其切换为dedupe.

CLI 示例

创建 CSD COMMON 备份:

zmbackup -a all -f --csd

覆盖压缩:

zmbackup -a all -f --csd --zstd

禁用压缩:

zmbackup -a all -f --csd --nocompression

强制创建新的 COMMON 备份:

zmbackup -a all -f --csdc

启用 CSD 时运行非 CSD 备份:

zmbackup -a all -f --nocsd

有关管理控制台的更新,请参阅管理控制台部分。

增加并行性(高级)

控制并行性的本地配置键:

  • backup_copy_blob_parallelism_level(默认值:5)

  • backup_zip_copier_private_blob_zips(默认值:4)

  • zstd_copier_parallel_compression_threads(默认值:8)

较高的值会增加吞吐量,但会增加 CPU 使用率。

有关属性和建议的更多详细信息,请参阅性能参数调整部分

备份引擎 v2 的过渡计划程序配置

本部分介绍过渡到备份引擎 v2(启用重复数据删除的备份)时刷新现有备份计划程序配置所需的步骤。

启用重复数据删除后,基于 ZIP 的传统压缩标志 (--zip, --zipStore, --noZip) 不得出现在计划的备份命令中。升级之前创建的现有调度程序条目可能仍包含这些标志,并且必须刷新。

仅在刷新值后,才会使用 V2 备份引擎创建新的备份。

计划程序刷新的目的

刷新计划程序配置可确保:

  • 更新 LDAP 中存储的备份计划以反映启用重复数据删除的行为。

  • 旧版基于 ZIP 的压缩标志已从计划备份命令中删除。

  • 计划备份使用正确的备份引擎 v2 设置运行。

此步骤不会更改备份时间或保留行为;它仅更新调度程序配置的存储方式。

从 CLI 刷新调度程序配置

您可以使用 CLI 重置调度程序配置。自定义计划参数以匹配您现有的备份配置。

zmschedulebackup -R \
  f '0 1 * * 7' \
  i '0 1 * * 1-6' \
  d 1m '0 0 * * *'

当启用重复数据删除时,此命令强制在 LDAP 中重写调度程序配置,而无需旧的基于 ZIP 的标志。

从管理控制台刷新计划程序配置

您还可以通过管理控制台刷新计划程序配置。

  1. 导航至:

    配置 → 全局设置 → 备份/恢复

  2. 修改任何计划参数(例如,备份小时数、天数或保留期)。

    仅当进行更改并保存时,调度程序配置才会更新。
  3. 单击保存.

  4. 将修改后的参数恢复为其原始值。

  5. 点击节省再次。

此过程强制使用当前备份引擎设置将调度程序配置重新保存在 LDAP 中。

交叉检查和验证

刷新调度程序配置后,验证旧压缩标志是否不再存在。

运行以下命令:

zmschedulebackup

确认计划的备份表达式确实有效不是包括:

  • --zip

  • --zipStore

  • --noZip

当启用重复数据删除时。

如果这些标志不存在,则调度程序已正确配置为使用备份引擎 v2。

当需要此步骤时

在以下情况下执行此转换步骤:

  • 您正在从使用旧版基于 ZIP 的备份的版本进行升级。

  • 升级后已启用重复数据删除,并且您希望使用新的重复数据删除和压缩机制。

  • 在启用重复数据删除之前配置了计划备份。

新创建的备份计划不需要此步骤。

向后兼容性和旧版备份支持

概述

增强型备份系统(备份引擎 v2)完全向后兼容,不会影响现有备份。

使用早期 Zimbra 版本创建的所有旧备份仍然受支持,并且可以使用最新系统版本无缝恢复。无需手动迁移或转换现有备份。

旧备份机制 (V1) 继续可用,并且可以使用管理控制台或 CLI 显式启用或禁用。

在恢复操作期间,系统自动从备份会话目录中检测备份版本,并为该版本调用适当的恢复逻辑。

旧备份有何变化

系统继续支持旧 (V1) 备份。升级到最新版本后:

  • 系统自动切换到备份引擎 v2 进行新备份。

  • 为内部和外部卷启用重复数据删除。

  • Zstandard (ZSTD) 压缩应用于已去重复的 blob。

  • 所有后续完整备份使用 v2 格式。

使用备份引擎 v2:

  • 备份期间仅写入跨帐户的唯一 blob。

  • Blob 数据使用 ZSTD 进行压缩。

  • 其他备份组件(数据库、LDAP、索引、元数据)继续使用现有机制进行备份。

之前创建的 V1 备份数据保持不变且完全可用。

恢复兼容性

恢复过程完全向后兼容。

恢复期间:

  • 系统检查备份会话目录。

  • 自动检测备份格式/版本(V1、V2)。

  • 使用相应的恢复管道。

  • 不需要用户干预或特殊标志。

这允许管理员恢复:

  • 基于 ZIP 的旧版备份

  • 会话级重复数据删除备份 (V2)

  • 跨会话重复数据删除备份

全部位于同一备份存储库中。

切换回旧版 (V1) 备份

如果需要,管理员可以选择继续使用旧版 V1 备份。

通过 CLI 切换

备份引擎 v2 可以使用以下命令禁用。

全局配置:

su - zimbra
zmprov mcf zimbraBackupDeduplication nodedupe

服务器级别配置:

su - zimbra
zmprov ms <server_name> zimbraBackupDeduplication nodedupe
  • 在邮件存储节点上重新启动 zmmailbox 服务:

zmmailboxdctl restart

应用这些设置后,后续备份将遵循旧版 (V1) 行为。

通过管理控制台切换

要使用管理控制台禁用备份引擎 v2 并恢复到旧备份:

  1. 导航至:

    配置 → 全局设置 → 备份/恢复

  2. 取消选中启用重复数据删除

  3. 选择所需的旧压缩选项:

    • zip

    • zipStore

    • noZip

  4. 单击保存

  5. 在邮件存储节点上重新启动 zmmailbox 服务:

    su - zimbra
    zmmailboxdctl restart
  6. 照常触发备份

完成这些步骤后,将使用旧版 V1 格式创建备份。

为了确保升级时顺利过渡:

  • 允许在升级之前完成任何正在进行的备份作业。

  • 升级后,运行全新的完整备份以利用重复数据删除和压缩。

  • 验证以下位置的恢复操作:

    • 升级前 (V1) 备份

    • 升级后 (V2) 备份

  • 检查并更新存储规划以反映备份大小的减少。

管理注意事项

管理员应注意以下事项:

  • 由于备份大小减小和重复数据删除,监控指标可能会有所不同。

  • 应重新审视存储计算以提高效率。

  • 备份和恢复工作流程保持不变。

  • 现有的自动化和操作程序继续像以前一样运行。

备份引擎 v2 实现了存储效率的现代化,同时保持了操作稳定性和向后兼容性。

备份邮箱服务器

Zimbra Collaboration 包括驻留在其中的可配置备份管理器 在每个 Zimbra Collaboration 服务器上执行备份和 恢复功能。您不必停止 Zimbra 协作 服务器以便运行备份过程。备份管理器可以是 用于恢复单个用户,而不是必须恢复整个用户 当一个用户的邮箱损坏时,系统会执行此操作。充分和 增量备份保存在/opt/zimbra/backup.

重做日志

每个 Zimbra 邮箱服务器都会生成重做日志,其中包含当前和 消息存储服务器处理的归档事务自 最后一次增量备份。

服务器恢复时,备份文件完全后 已恢复,存档中的任何重做日志以及当前使用的重做日志 重播以使系统恢复到故障之前的状态。

当当前重做日志文件大小达到100MB时,当前重做日志 滚动到存档目录。此时,服务器启动一个 新的重做日志。上一个重做日志中所有未提交的事务 被保留。如果发生崩溃,当服务器重新启动时, 读取当前重做日志以重新应用任何未提交的事务。

运行增量备份时,重做日志将从 归档到备份目录。

备份方法

提供两种备份方法:

  • 标准备份方法是默认方法,适合想要在同一天备份所有帐户的客户

  • 自动分组备份方法是每天备份帐户子集的方法。

备份方法概述

自动分组和标准备份将执行完整备份过程,备份还原邮箱所需的所有信息,包括每个邮箱的 LDAP 目录服务器、数据库、索引目录和邮件目录。

LDAP 目录作为完整或增量备份过程的一部分进行备份。所有账户、域名、服务器、COS 等数据均已备份。

每个邮箱服务器都会生成重做日志,其中包含该服务器处理的每个事务。如果服务器发生意外关闭,重做日志将用于以下用途:

  • 为了确保不保留未提交的事务,服务器在启动时读取当前重做日志,并重新执行并完成任何未提交的事务。

  • 在服务器发生故障时恢复自上次完整备份以来写入的数据。

当服务器恢复时,备份文件完全恢复后,存档中的任何重做日志和当前使用的重做日志都会重放,以使系统恢复到故障之前的状态。

备份共享消息时,如果每日备份中已存在代表消息的文件,则会相应地标记该对象,并且不会再次复制其内容。

如果自动分组或增量备份过程发现邮箱以前没有完整备份,则会对该邮箱执行完整备份。

自动分组备份结合了全量备份和增量备份功能,无需增量备份。

自动分组和增量备份将重做日志移动到备份目录。重做日志是已发生的每项活动的日志。它们包含所有已发送消息的完整副本,以及标签、联系人和对话等元数据。

这些备份文件可用于恢复整个邮箱服务器或单个邮箱,从而完全恢复帐户和邮件数据。

Zimbra MTA 未备份,因为数据仅在服务器上保存很短的时间。

自定义配置 — 例如mailboxd的`jetty/etc/*.xml — 不备份。

自动分组备份方法

自动分组备份方法对不同的邮箱组运行完整备份,然后收集每个邮箱服务器上剩余帐户的重做日志。 不建议手动运行自动分组备份,因为它们是从 CLI 计划的,并在计划时间自动运行。

标准备份

标准备份方法每周为每个邮箱服务器运行一次完整备份,然后将在计划程序中定义的剩余天数内进行增量备份。

从 Zimbra Collaboration Daffodil 版本 10.1.16 开始,默认情况下,标准备份方法将使用增强的重复数据删除和压缩机制。

一种新机制跨会话重复数据删除也可以启用。请参阅跨会话重复数据删除部分了解更多详细信息。

备份通知

完整增量备份报告发送到管理员邮箱 执行备份。该报告显示了该项目的成功或失败 备份并包括有关备份开始和结束时间的信息, 备份的帐户数量和重做日志序列范围。

如果备份失败,则会包含其他错误信息。

要执行失败帐户的完整备份,请以zimbra用户身份执行以下命令:

zmbackup -f -a user1@domain.com -s server1

备份文件的目录结构

备份目标称为备份目标。到备份 system,是邮件服务器文件系统中的一个路径。津布拉 默认备份目录是/opt/zimbra/backup.

标准备份过程创建的备份目录结构是 显示在 标准备份目录结构。 您可以定期运行计划备份到同一目标区域,而无需 覆盖以前的备份会话。

账户.xml文件列出了所有备份中的所有帐户 合并。对于每个帐户,此文件显示帐户 ID、电子邮件 地址,以及该帐户最新完整备份的标签。如果 将备份会话保存到另一个位置时,还必须保存 将最新的 account.xml 文件复制到该位置。 account.xml 文件是 用于在还原期间查找帐户的最新完整备份。如果 account.xml 文件丢失,您必须指定备份标签 恢复自。

重做日志目录位于/opt/zimbra/redolog/redo.log。当 当前重做日志文件大小达到100MB,当前重做日志滚动 转到存档目录/opt/zimbra/redolog/archive。在此 点服务器启动一个新的重做日志。所有未提交的交易 保留以前的重做日志。在发生车祸的情况下,当 服务器重新启动,读取当前重做日志以重新应用任何 未提交的交易。

重做操作对时间至关重要,因此目录移动是 执行而不是复制然后删除功能。该目录移动 仅当源路径和目标路径位于 相同的文件系统卷。换句话说,redo日志和redo-archive 日志必须位于同一文件系统卷上,因为归档文件是 重做日志文件系统的子目录。

所有增量和自动分组备份会话必须保存到 必须在同一个备份中找到与所有重做日志相同的目录 目标。标准完整备份会话可以使用不同的目标 目录。

表 55. 标准备份目录结构
主目录 子目录/文件 说明

/opt/zimbra/backup/

所有备份和还原数据的默认根目录

/opt/zimbra/backup/

accounts.xml

活动帐户映射文件。维护电子邮件地址到 Zimbra ID 的映射并记录每个帐户的最新完整备份标签。在恢复操作期间使用。

/opt/zimbra/backup/

accounts.xml.old

保留帐户映射文件的先前版本以供参考。

/opt/zimbra/backup/

tmp/

备份和恢复执行期间使用的临时工作目录。

/opt/zimbra/backup/

sessions/

包含所有备份会话数据的根目录。

full-<timestamp>/

标准完整备份会话目录。

full-csd-common-<timestamp>/

启用跨会话重复数据删除时创建的公共备份目录。

full-csd-delta-<timestamp>/

Delta 备份目录存储自普通备份以来的更改。

incr-<timestamp>/

增量备份目录,包含自上次备份以来的更改。

full-<timestamp>/(V1)

shared_blobs/

存储在此备份会话期间创建的重复数据删除 Blob 数据(会话级重复数据删除)。

sys/

存储恢复处理所需的系统级备份元数据。

accounts/

包含此会话中包含的所有帐户的每个帐户备份数据目录。

ldap/

存储作为备份会话一部分捕获的 LDAP 数据。

session.xml

包含会话元数据的备份会话描述符。

full-csd-common-<timestamp>/, full-<timestamp>/(V2)

sys/

存储公共备份的系统级元数据。

accounts/

存储恢复操作所需的帐户级元数据。

blob-chunks/

存储在多个备份会话之间共享的经过重复数据删除和压缩的块数据。

ldap/

存储为公共备份捕获的 LDAP 数据。

rocksdb/

RocksDB 数据库用于跟踪块引用和重复数据删除元数据。

session.xml

描述公共备份会话的元数据文件。

full-csd-delta-<timestamp>/

sys/

存储增量备份的系统级元数据。

accounts/

存储自公共备份以来发生的更改的帐户级元数据。

ldap/

存储在此增量备份中捕获的 LDAP 更改。

session.xml

描述增量备份会话的元数据文件。

incr-<timestamp>/

sys/

存储增量备份的系统级元数据。

accounts/

存储自上次备份以来每个帐户的更改。

redologs/

存储用于捕获增量邮箱更改的重做日志。

ldap/

存储增量备份期间捕获的 LDAP 更改。

session.xml

描述增量备份会话的元数据文件。

full-csd-common-<时间戳>仅在启用跨会话重复数据删除功能后才会生成full-csd-delta-<timestamp>目录。
对于自动分组备份,目录结构将重做日志文件保存到完整备份会话中。没有增量备份会话。

管理控制台 – 备份和还原配置

许多备份和还原任务可以直接从管理控制台执行。备份配置可以应用于全局服务器级别。服务器级配置覆盖全局设置。

备份和还原管理部分位于:

全局备份配置

Configure → Global Settings → Backup/Restore

服务器备份配置

Configure → Server → (Server) → Backup/Restore

备份管理和还原

Tools and Migration → Backups → (Server)

从管理控制台配置备份/还原

可以全局或按服务器配置备份。全局设置默认应用于所有服务器,直到在服务器级别明确覆盖。

备份/恢复(常规设置)
  • 启用备份 当设置为TRUE时,全局启用备份并初始化当前全局和服务器配置以创建和管理备份。

    • LDAP 属性:zimbraGlobalBackupEnabled

    • 默认值:TRUE

  • 备份类型 选择备份模式:

    • 自动分组

    • 标准

    • LDAP 属性:zimbraBackupMode

    • 默认值:Auto-Grouped

  • 保留完整备份的天数 指定完整备份的保留时间。调度程序将删除早于此值的备份。

    • LDAP 属性:zimbraBackupRetentionDays

    • 默认值:8

  • 限制自动备份 自动分组备份可能会限制每次运行备份的邮箱数量。这在迁移或升级后非常有用,可确保备份在非工作时间完成。 使用以下方式启用节流:

zmprov mcf zimbraBackupAutoGroupedThrottled TRUE
  • 安排时间 定义每日备份开始时间。

    • LDAP 属性:zimbraBackupStartTime

    • 默认值:01:00

  • 默认备份目标 指定存储备份的路径。

    • LDAP 属性:zimbraBackupTarget

    • 默认值:/opt/zimbra/backup

  • 通知电子邮件主题的前缀 用于备份通知电子邮件的主题前缀。

    • LDAP 属性:zimbraBackupReportEmailSubjectPrefix

  • 备份最小可用空间 如果备份目标上的可用空间不足,则阻止备份启动。 支持百分比或绝对值(例如25%, 50GB).

    • LDAP 属性:zimbraBackupMinFreeSpace

    • 默认值:0(已禁用)

通知

配置备份结果的电子邮件通知。

  • LDAP 属性:

    • zimbraMailReportEnabled

    • zimbraBackupReportEmailSender

    • zimbraBackupReportEmailRecipients

备份选项

这些选项控制备份中包含哪些数据。

  • 排除 Blob 备份期间跳过所有 blob。

    • LDAP 属性:zimbraBackupSkipBlobs

    • 默认值:FALSE

  • 排除 SM 卷上的 Blob 仅跳过辅助 (HSM) 卷上的 blob。

    • LDAP 属性:zimbraBackupSkipHsmBlobs

    • 默认值:FALSE

  • 排除搜索索引 从备份中排除搜索索引。恢复后必须重建索引。

    • LDAP 属性:zimbraBackupSkipSearchIndex

    • 默认值:FALSE

备份引擎 v2 – 重复数据删除、压缩和 CSD

备份引擎 v2 引入了新的存储和效率控制,仅适用于新备份会话。现有备份保持不变且可完全恢复。

这些设置位于:

  • 配置 → 全局设置 → 备份/恢复

  • 配置 → 服务器 →(服务器)→ 备份/恢复

重复数据删除配置
  • 启用重复数据删除控制是否应用重复数据删除。

    • LDAP 属性:zimbraBackupDeduplication

    • 值:

      • dedupe– 启用(默认)

      • nodedupe– 已禁用(旧版行为)

启用时:

  • 备份引擎 v2 处于活动状态

  • 重复数据删除备份中的压缩类型选项已启用

  • 重复数据删除适用于内部和外部存储

  • 压缩和 CSD 选项可用

禁用时:

  • 备份引擎回退到旧版 (v1) 系统。

  • 以 zip 格式压缩 blob已启用,并且下拉列表中包含以下选项:

    • zip

    • zipStore

    • nozip

  • 重复数据删除仅适用于内部存储

  • 压缩和 CSD 选项不可用

重复数据删除备份的压缩
  • 压缩类型重复数据删除备份 仅当启用重复数据删除时才可见。

    • LDAP 属性:zimbraBackupDedupeCompressionType

    • 值:

      • zstd– Zstandard 压缩(默认、推荐)

      • nocompression– 无压缩

行为:

  • 仅适用于重复数据删除备份 (V2)

  • 内部和外部卷之间的压缩是统一的

  • 启用重复数据删除时,不使用基于 ZIP 的压缩

跨会话重复数据删除 (CSD)
  • 启用跨会话重复数据删除 允许在多个备份会话中重复使用 blob。

    • LDAP 属性:zimbraBackupCrossSessionDedupeEnabled

    • 价值观:

      • TRUE– 启用

      • FALSE– 禁用(默认)

行为:

  • 启用时:

    • 完整备份创建公共基线

    • 后续备份创建 DELTA 备份

  • 禁用时:

    • 每个完整备份都是独立的(会话级重复数据删除)

与自动组备份

跨会话重复数据删除的交互是不支持使用自动分组备份。

管理控制台行为:

  • 选择自动分组方法时,CSD 选项将隐藏。

运行时行为:

  • 如果在自动分组处于活动状态时通过 LDAP 启用 CSD:

    • 系统回退到会话级重复数据删除

    • 备份继续安全地进行

    • 记录警告:

Cross-session deduplication is not supported when the Autogroup feature is enabled.
配置保障措施

内部属性zimbraBackupCSDReset自动管理,不会在 UI 中公开。

设置为TRUE每当发生以下任何更改时:

  • 重复数据删除状态

  • 压缩类型

  • CSD 启用

这可以通过在需要时强制执行新的 COMMON 备份来确保恢复安全。

选择备份用户

管理员可以选择用户、COS 或域进行备份。

要点:

  • 配置适用于所有邮件存储,除非通过 CLI 覆盖。

  • 通过多种方式选择的帐户仅备份一次。

  • 选择域/COS 集zimbraBackupObjectLevelEnabled=TRUE.

  • 选择所有用户集zimbraBackupObjectLevelEnabled=FALSE.

  • Zimbra 继承规则适用。

使用存储卷的建议

  • 内部存储:建议使用 blob 备份/恢复

  • 外部存储 (S3):建议进行无 blob 备份/恢复

  • 混合内部主存储 + 外部辅助存储:

    • 带 blob 辅助

  • 无 Blob 必须使用相同的 blob 跳过设置进行恢复

  • 不支持主外部 + 辅助内部存储

消息恢复设置

消息恢复是使用转储程序功能实现的,并且是备份和恢复配置的一部分。

要点:

  • 消息恢复和转储程序共享配置

  • 恢复已删除项目的推荐方法

  • 可全局或按 COS/域启用

  • 使用标准 Zimbra 继承

相关 LDAP 属性:

  • zimbraMailDumpsterLifetimeType– 保留期(默认值:30d)

  • zimbraDumpsterUserVisibleAge– 最终用户可见性窗口(默认:30d)

  • zimbraDumpsterPurgeEnabled– 清除控制(默认:FALSE)

使用命令行界面进行备份和恢复

Zimbra 备份和恢复过程可以作为 CLI 命令运行。

提供以下实用程序来创建备份计划, 执行完整备份和增量备份,恢复邮件服务器,或者 恢复 LDAP 服务器。

  • zmschedulebackup — 该命令用于安排完整备份, 增量备份和删除旧备份。

  • zmbackup — 此命令执行 Zimbra Collaboration 邮箱的完整或增量备份 服务器。这是在实时服务器上运行的,而mailboxd进程和 邮箱服务器正在运行。该命令还可以选择手动 不再需要旧备份时将其删除。

  • zmbackupabort — 此命令停止正在进行的完整备份。

  • zmbackupabort -r — 此命令停止正在进行的恢复。

  • zmbackupquery — 该命令列出正在进行的和 已完成的备份,包括标签和日期。

  • zmrestore — 此命令将备份恢复到正在运行的 Zimbra Collaboration 邮箱服务器。

  • zmrestoreoffline — 当mailboxd进程停止时,此命令将恢复 Zimbra Collaboration 邮件服务器。

  • zmrestoreldap — 此命令恢复完整的 LDAP 目录 服务器,包括账号、域名、服务器、COS 等数据。

请参阅附录 A:命令行实用程序 有关每个命令的用法和定义。

使用标准方法进行备份

启动备份时,可以从同一方法发出命令 正在备份的服务器,远程运行命令并指定目标 服务器在命令行上,或使用管理控制台启动 备份会话。

计划标准备份

将标准备份配置为备份方法时,完整备份和增量备份条目将添加到 crontab。 在默认计划下,完整备份计划为 每周六凌晨 1:00。增量备份计划于 周日至周五凌晨 1:00。

默认情况下,每天晚上 12 点删除超过一个月的备份 上午

您可以使用zmschedulebackup命令或从管理 UI 更改备份计划。

按如下方式指定字段,每个字段之间用空格分隔:

  • 分钟 — 0 到 59

  • 小时 — 0 到 23

  • 月份中的某天 — 1 到 31

  • 月 — 1 到12

  • 星期几 — 0 到 7(0 或 7 是星期日,或使用名称)

在未使用的字段中键入星号 (*)。

示例 27。zmschedulebackupoptions
  • 替换现有的全量备份、增量备份和删除备份 时间表。当你使用-R,完整的备份计划被替换。如果 使用此命令时,如果需要,请记住设置删除计划 安排自动删除的备份会话。这个例子 替换现有计划以在周日 1 点运行完整备份 上午,增量备份在周一至周六凌晨 1 点运行,以及 每天中午 12:00 删除旧备份。

    zmschedulebackup -R f "0 1 * * 7" i "0 1 * * 1-6" d 1m "0 0 * * *"
  • 在您当前的计划中添加额外的完整备份时间。这个 示例添加了周四凌晨 1 点的完整备份。

    zmschedulebackup -A f "0 1 * * 4"
  • 检查您的备份计划。显示时间表。

    zmschedulebackup -q
  • 将计划命令保存到文本文件。这将使您能够 重新安装或升级后轻松重新创建相同的计划

    zmschedulebackup -s
要将备份恢复到默认计划,请使用以下命令zmschedulebackup -D.
默认标准备份计划

默认备份计划的显示类似于以下内容 示例:

示例 28. 默认备份计划
0 1 * * 6 /opt/zimbra/bin/zmbackup -f - all
0 1* * 0-5 /opt/zimbra/bin/zmbackup -i
0 0 * * * /opt/zimbra/bin/zmbackup -del 1m

如下所示:

完整备份在周六凌晨 1 点运行
0 1 * * * 6 /opt/zimbra/bin/zmbackup -f - all
增量备份在周日至周五凌晨 1 点运行
0 1* * 0-5 /opt/zimbra/bin/zmbackup -i
备份会话在创建 1 个月后的午夜删除。
0 0 * * * /opt/zimbra/bin/zmbackup -del 1m
如何读取 crontable

每个 crontab 条目包含按此顺序出现的六个字段:

字段

1

2

3

4

5

6

0

1

*

*

6

/opt/zimbra/bin/zmbackup -f -all

  1. 分钟(允许 0-59)

  2. 小时(0-23)

  3. 月份中的某一天(1-31)

  4. 月份(1-12 或名称)

  5. 星期几(0-7 或允许的名称,0 和 7 都代表 星期日

  6. 要执行的字符串

星号字符用作通配符,代表每个 字段值的出现。
管理控制台:

主页 → 配置 → 全局设置 → 备份/恢复

您可以添加其他收件人地址或更改通知电子邮件 管理控制台中的地址。

完整备份过程

完整备份过程通过以下步骤来备份 邮箱、数据库、索引和 LDAP 目录:

  1. 备份全局系统数据,包括系统表和localconfig.xml.

  2. 迭代每个要备份的帐户并备份 LDAP 这些帐户的条目。

  3. 将帐户的邮箱置于维护模式以暂时 阻止邮件传送和用户访问该邮箱。

  4. 备份邮箱。

    1. 为与该邮箱相关的所有数据创建 MariaDB 转储。

    2. 备份该邮箱的邮件目录。

    3. 为该邮箱创建索引目录的备份。

  5. 将该帐户的邮箱返回到活动模式并转到 下一张。

  6. 备份 LDAP 目录。

完整备份通常异步运行。当你开始完整的 备份,正在进行的备份过程的标签是立即 显示。备份在后台继续进行。您可以使用 zmbackupquery命令可随时检查正在运行的备份的状态 时间。

备份文件保存为zip文件,不进行压缩。要改变 默认zip选项,请参阅附录 A:命令行实用程序, zm备份部分。

增量备份过程

增量备份使用 CLI 命令zmbackup运行。的 增量备份的流程如下:

  1. 备份全局系统数据,包括系统表和localconfig.xml.

  2. 迭代每个要备份的帐户并备份 LDAP 这些帐户的条目。

  3. 将自上次备份以来创建的存档重做日志移动到 <backup_target>/redologs文件夹。

    增量时不到一小时的存档日志 备份被复制到备份中并且不会被删除。这些重做日志是 备份一小时后删除。间隔由以下设置 localconfigbackup_archived_redolog_keep_time。默认为 3600 秒。

    如果找不到该帐户的完整备份,则执行备份过程 此帐户的完整备份,即使只进行了增量备份 指定。

  4. 备份 LDAP 目录。

执行手动备份

使用 zmbackup 命令执行以下备份操作:

  • 对服务器 <1> 上的所有邮箱执行手动备份:

zmbackup -f -s server1.domain.com -a all
  • server1上的所有邮箱执行手动增量备份 自上次完整备份

zmbackup -i -s server1.domain.com -a all
  • 仅对server1 上user1 的邮箱执行手动完整备份

zmbackup -f -s server1.domain.com -a user1@domain.com
删除备份会话

您可以按标签或按日期删除备份会话。

  • 按标签删除会删除该会话以及之前的所有备份会话 那次会议。

  • 按日期删除会删除指定日期之前的所有备份会话 日期。

例如,zmbackup -del 7d删除超过 7 天的备份 从现在开始。您可以指定日 (d)、月 (m) 或年份 (y).

查找特定备份

每个完整备份或增量备份都是一个备份会话。

每个备份会话都标有日期和时间。例如, 标签full-20210712.155951.123表示这是 7 月 12 日的备份, 2021 年 3:59:51.123。

会话标签中设置的时间是 GMT,而不是当地时间。使用格林威治标准时间 而不是当地时间,以在夏令时期间保持视觉顺序 过渡。

使用zmbackupquery命令查找完整备份会话。

  • 要查找特定的完整备份会话:

zmbackupquery -lb full-20210712.155951.123
  • 要查找自特定日期以来的完整备份会话:

zmbackupquery --type full --from "2021/01/01 12:45:45"
  • 要查找备份目录中的所有完整备份会话:

zmbackupquery --type full
  • 要查找帐户还原的最佳时间点,请指定 时间窗口

zmbackupquery -a user1@example.com --type full --from "2021/07/05 12:01:15" --to "2021/07/12 17:01:45"
如果备份会话由于服务器在备份期间崩溃而中断 (不中止),中断的备份会话被保存为临时 会议。临时备份会话放入 <backup_target>/sessions_tmp文件夹。您可以使用rm命令删除 目录。

中止正在进行的完整备份

  1. 在中止备份之前,您必须了解备份会话 标签。该标签在zmbackup首次启动时显示。如果你不这样做 知道完整备份标签,使用zmbackupquery查找标签。

  2. 使用zmbackupabort命令停止正在进行的备份。 备份立即停止并变为部分成功 备份。

    • 如果您知道标签名称,则停止备份

zmbackupabort -lb full-20210712.155951.123 -s server1
  • 如果您不知道标签,则停止备份

zmbackupquery
zmbackupabort -s server1 -lb full-20210712.155951.123

使用自动分组方法进行备份

自动分组备份方法可以从 管理控制台或从 CLI。

管理控制台:

主页 → 配置 → 全局设置 → 备份/恢复
主页 → 配置 → 服务器 →服务器→ 备份/恢复

从 CLI 配置自动分组备份

在全局配置中设置备份方法,您可以覆盖 如果您不想要特定的配置,则以每个服务器为基础进行配置 服务器使用自动分组备份方法。

要设置自动分组备份,您可以使用以下命令修改 LDAP 属性 zmprov 命令:

zmprov mcf {ldap_attribute}  {arg}

您还可以使用zmprov ms {server_name} {attribute}.

在服务器级别设置属性。修改以下 LDAP 属性:

  • zimbraBackupMode — 设置为自动分组。默认为 自动分组。

  • zimbraBackupAutoGroupedInterval — 将其设置为任一中的间隔 备份会话应为组运行的天或周。默认 是8d。备份间隔可以是 1 天或更多天,输入为xd(例如1d);或 1 或更多周,输入为xw(例如1w).

  • zimbraBackupAutoGroupedNumGroups — 这是要进行的组数 将邮箱散布过来。默认为 7 组。

安排自动分组备份

自动分组备份计划设置为默认模式,可以在管理 UI 或命令行中进行配置。

运行zmschedulebackup -D设置默认计划 根据您的zimbraBackupAutoGroupedInterval自动分组备份 设置。

每个时间间隔备份一组。自动分组备份 根据邮箱数量的变化自动调整 服务器。每个备份会话都会备份以下内容:

  • 以前从未备份过的所有邮箱。这些是新的 已配置的邮箱。

  • 所有未在预定数量内备份的邮箱 备份天数。例如,如果备份计划运行超过六天, 备份过去 5 天内未备份的邮箱。

  • 更多邮箱,最旧的备份优先。这样做是为了 每日自动分组备份负载均衡。

    例如,如果您将自动分组备份间隔配置为 每天(1d),分组数为7,第一次自动分组 备份运行,所有帐户均已备份。初始备份后, 自动分组备份第二天再次运行。这次说明了 已进行新配置,并且帐户的百分比接近 总数的七分之一被再次备份。最旧的帐户 首先备份备份日期。备份继续新的 已配置的帐户,大约七分之一的帐户是 7 天内每天备份。

备份共享消息时,如果代表消息的文件 备份中已存在,它会标记此对象,并且不会 再次复制其内容。

备份文件保存为zip文件,不进行压缩。要改变 默认zip选项,请参阅附录 A:命令行实用程序, zmbackup部分。

这些备份文件可用于恢复完整的 Zimbra Collaboration 系统或个人邮箱,以便帐户和消息数据 完全恢复了。存档的重做日志将移动到备份会话,如下所示 完整备份的一部分。当服务器从自动分组恢复时 备份时,重做日志会被重放以使系统恢复到备份之前的状态 失败。

备份选项

备份过程可配置为有选择地备份内容。

备份内容选项

您可以配置这些备份选项,以便搜索索引、blob、 在完整备份会话期间不会备份 SM blob。

  • zimbraBackupSkipSearchIndex — 默认为FALSE。如果设置为TRUE,则不备份搜索索引。邮箱必须重新索引 从没有搜索索引的备份恢复后。

  • zimbraBackupSkipBlobs — 默认为FALSE。如果设置为 TRUE,不备份 blob。这对于获得 当 Blob 驻留在容错存储上时,可以更快地备份数据库数据。此配置适用于所有 blob,即 在主卷和辅助 (SM) 卷上。

  • zimbraBackupSkipHsmBlobs — 默认为FALSE。如果设置为 TRUE,不备份 SM 卷上的 blob。如果设置此项 zimbraBackupSkipBlobsFALSE但你想跳过 SM 上的斑点 卷。

管理备份的磁盘空间

如果目标磁盘没有足够的空间,备份会话将失败。全部 备份会话中备份的数据将被丢弃并删除。

您可以选择在磁盘可能没有磁盘时接收通知 有足够的空间来完成备份

配置zimbraBackupMinFreeSpace属性可以帮助您 通过通知您来管理正在运行的备份会话。

将属性zimbraBackupMinFreeSpace的值设置为 备份会话开始之前备份目标磁盘上所需的可用空间 跑。如果磁盘空间小于属性中设置的值,则 备份会话将不会运行,并且电子邮件通知将发送至 管理员。

如果您还要备份 MariaDB 数据库,请确保设置该值 足够大以包含myslqdump文件大小。

该属性的值可以指定为 总磁盘空间,例如25%,或字节数,例如 300MB, 50GB等。默认值为0,意味着检查被禁用 并且始终允许启动备份。

该属性可以全局设置或由服务器设置。

  • 作为全局:

zmprov mcf zimbraBackupMinFreeSpace <value>
  • 按服务器:

zmprov ms <zmhostname> zimbraBackupMinFreeSpace <value>

如果可用磁盘空间至少为您设置的值,则备份会话将运行 设置。如果您的备份文件大于该值,则备份会话 失败。您应该监视备份文件的大小并调整 属性值(如果备份需要比配置的空间更多的空间) 值。

恢复数据

可以运行三种类型的恢复过程:

  • zmrestore命令用于恢复邮箱,而 Zimbra Collaboration 邮箱服务器正在运行。

  • zmrestoreoffline命令用于恢复邮箱服务器 只是mailboxd进程被停止。运行此命令用于灾难恢复。

  • zmrestoreldap命令用于恢复内容 LDAP 目录服务器。

恢复过程允许所有帐户或个人帐户 指定。

仅会话级跨会话每周备份支持时间点还原。它是不是支持跨会话每日增量备份。

恢复过程

zmrestore进程经过以下步骤来恢复 邮箱、数据库、索引和 LDAP 目录。

  1. 检索要恢复的指定帐户,或指定allfor 所有已备份的帐户。

  2. 迭代每个邮箱:

    1. 删除服务器上的邮箱以清除任何现有数据

    2. 恢复 MariaDB 数据、索引目录的最后一次完整备份, 以及该邮箱的邮件目录

    3. 重播自上次完整备份以来所有增量备份中的重做日志

    4. 从重做日志重播该邮箱的所有存档重做日志 邮箱服务器上的存档区域

    5. 重播当前重做日志

即使帐户超出其配额,帐户也会恢复。 下一个 当用户执行影响配额的操作时,他们会收到警告 他们已经超出了配额。
使用 Zimbra Connector for Microsoft Outlook 的用户必须执行 在 Zimbra 服务器后登录时 Outlook 客户端上的初始同步 已恢复。

示例

示例 29. 在 server1 上执行所有帐户的完整还原

包括上次完整备份和自上次完整备份以来的所有增量备份

zmrestore -a all
示例 30. 在 server1 上执行单个帐户还原
zmrestore -a account@company.com
示例 31. 还原到特定时间点 (PIT)

以下恢复选项会影响重做日志重播。如果您不指定 这些选项之一,自您要恢复的完整备份以来的所有重做日志 重播自

执行以下任何时间点恢复后,您应该 立即对这些帐户进行完整备份,以避免将来 恢复这些帐户的问题。

使用以下任一选项运行的还原是 时间点恢复:

  • -restoreToTime <arg>- 重播重做日志直到时间点 指定。

  • -restoreToIncrLabel <arg>- 重播重做日志直至并包括 这个增量备份。

  • -restoreToRedoSeq <arg>- 重播至此并包括此内容 重做日志序列。

  • -br- 仅重播备份中的重做日志,因此排除 系统的存档和当前重做日志。

  • -rf- 仅恢复到完整备份。这不包括任何 根本没有增量备份。

示例 32. 指定要恢复到的确切时间、增量备份标签或重做日志序列。

如果超过一个点,恢复会在最早的时间点停止 及时指定恢复选项。

zmrestore -a account@company.com-restoreToTime <arg>

编写 <timearg> 的两种常见方法是

  • "YYYY/MM/DD hh:mm:ss"

  • YYYYMMDD.hhmmss

示例 33. 对于所有帐户,仅执行到上次完整备份的增量还原,不包括此后的增量备份
zmrestore -rf --a all
示例 34. 还原帐户的邮箱和 LDAP 数据
zmrestore -ra -a account@company.com
示例 35. 还原到新的目标帐户
当使用 S3 作为主消息卷时,使用-pre_restored_选项(例如zmrestore -a user@domain.com -restoreToTime <timeArgument> -lb full-xxxxxx -ca -pre restored_)恢复帐户会创建一个新帐户,例如restored_user@domain.com。 从此恢复的帐户中删除任何数据(电子邮件、日历事件、联系人、公文包文档等)也会导致原始帐户 (user@domain.com) 中的数据丢失。删除电子邮件可能会导致"blob not found"错误。 如果原始帐户仍在使用中,我们建议不要删除-pre_restored_帐户或其中的任何数据。这将有助于防止意外数据丢失。

前缀添加到原始帐户名称

zmrestore -ca -a account@company.com -pre restore

上面示例的结果将是一个名为 Restoreaccount@company.com.

示例 36. 恢复数据库 (db) 和localconfig.xml
zmrestore -sys
中的系统表 示例 37. 包含--contineOnError (-c) 到命令中,以便在遇到错误时恢复过程继续进行。
zmrestore -a all -c

什么时候-c指定后,显示无法恢复的帐户 当恢复过程完成时。

示例 38. 恢复特定帐户

也可用于恢复已删除的帐户

zmrestore -a account@company.com
示例 39. 避免恢复已删除的帐户
zmrestore -a account@company.com -skipDeletedAccounts
示例 40. 恢复邮箱,但排除重做日志重播中的所有删除操作

恢复邮箱后,它将包含已删除的邮件 已删除。如果用户使用 POP 并从 POP 中删除邮件,这非常有用 服务器

zmrestore -a account@company.com --skipDeletes
当请求最新时间点时,不添加备份标签 (-lb)。不指定标签,则为之前的最近一次完整备份 请求的点将自动用作起点。

停止恢复进程

zmbackupabort -r命令会中断正在进行的恢复。 当前帐户完成后,恢复过程将停止 恢复了。该命令会显示一条消息,显示哪些帐户不是 恢复了。

要停止恢复类型:

zmbackupabort -r

邮件服务器宕机时恢复邮箱

仅当 $1`mailboxd` 服务器启动时才能运行离线恢复过程 不运行。一般来说,离线恢复是在以下情况下运行的 情况:

  • Zimbra 服务器的某些组件已损坏,并且服务器 无法启动。例如LDAP或数据库中的数据是 已损坏。

  • 灾难需要在计算机上重新安装 Zimbra 软件 服务器。

离线恢复必须在 Zimbra Collaboration 邮箱之前运行 启动存储服务器以按顺序保存重做日志。

在灾难恢复中重新安装 Zimbra 软件时,如果mailboxd 在备份文件恢复之前启动,邮件服务器将 开始接受电子邮件并执行其他活动,产生重做 登录该过程。由于灾前数据尚未恢复 服务器上,重做日志将乱序。一旦mailboxd是 运行后,再恢复灾前数据就来不及了。

离线恢复过程经历以下步骤。

  1. 检索指定要恢复的帐户。如果命令行 不指定任何邮箱地址,则列出所有邮箱的列表 从 Zimbra LDAP 目录服务器检索指定的邮件主机。

  2. 迭代每个邮箱:

    1. 删除服务器上的邮箱以清除任何现有数据

    2. 恢复 MariaDB 数据的最后一次完整备份,即索引 目录和该邮箱的邮件目录

    3. 重播自上次完整备份以来所有增量备份中的重做日志

    4. 从重做日志重播该邮箱的所有存档重做日志 邮箱服务器上的存档区域

    5. 重播当前重做日志

恢复所有帐户
  1. mailboxd停止时恢复 server1 上的所有帐户

    zmrestoreoffline -a all
  2. 开始mailboxd离线恢复完成后

    zmcontrol startup

在实时系统

上恢复个人帐户 使用zmrestore命令恢复一个或多个选定的帐户。在 如果用户的邮箱已损坏,您可能需要 从最后的完整备份集和增量备份集恢复该用户。

  1. 对于要恢复的每个帐户,将帐户置于维护模式

    zmprov ma <account> zimbraAccountStatus maintenance

    维护模式可防止在恢复期间传送新电子邮件。 否则,电子邮件将在恢复过程中被覆盖。

  2. 运行zmrestore命令恢复帐户

    zmrestore -a account@abc.com
  3. 对于恢复的每个帐户,将帐户重新置于活动模式

    zmprov ma <account> zimbraAccountStatus active
如果用户账号恢复且该账号所属的 COS 没有 如果不再存在,则会将默认 COS 分配给该账户。

从还原中排除项目

从完整备份还原时,可以排除搜索索引 和斑点。

  • 搜索索引 — 如果不恢复搜索索引数据, 恢复后必须重新索引邮箱。

    zmrestore -a <all|account> --exclude-search-index
  • Blob — 当邮箱的所有 Blob 都被占用时,这是一个有用的选项 恢复已经存在。

    zmrestore <all or account>|--exclude-blobs
  • HSM-blob — 当邮箱的所有 SM Blob 时这非常有用 正在恢复已经存在。

    zmrestore <all or account> --exclude-hsm-blobs

恢复 LDAP 服务器

在需要恢复整个系统的灾难恢复中, 首先恢复 LDAP 目录服务器。

zmrestoreldap命令恢复全局 LDAP 数据,包括 COS, 通讯组列表等。您可以恢复完整的 LDAP 服务器,该服务器 重新创建整个架构,或者您可以恢复特定帐户。你 指定要恢复的会话。恢复命令必须在 LDAP 服务器正在恢复。

示例

示例 41. 查找 LDAP 会话标签
zmrestoreldap -lbs
示例 42. 还原完整的 LDAP 目录服务器
zmrestoreldap -lb full20211130135236
示例 43. 还原特定帐户的 LDAP 数据
zmrestoreldap -lb full20211130135236 -a tac@abc.com jane@abc.com

灾难恢复的常规步骤

使用以下步骤以常规方式还原邮箱存储服务器 涉及多台机器的灾难场景。

准备工作

  1. 在执行操作之前将 LDAP 目录服务器恢复到已知的良好状态 与邮箱存储服务器有关的任何内容。

  2. 将所有邮箱置于维护模式以防止邮件传递和 恢复邮箱时用户登录。

  3. 停止邮箱存储服务器(如果正在运行)。

恢复

  1. 在邮箱服务器上重新安装 Zimbra 协作软件, 如果需要的话。

  2. 恢复邮箱。

  3. 启动 Zimbra 协作服务器。

  4. 将所有 Zimbra Collaboration 邮箱恢复为活动模式。

  5. 运行服务器的完整备份。

崩溃恢复服务器启动

当您的系统意外停止然后在启动时重新启动时, 服务器在重做日志中搜索未提交的事务并重放 它找到的任何内容。重放重做日志使系统进入 一致的状态。

恢复 Zimbra Collaboration

如果发生整机故障,请使用以下步骤恢复 到新服务器。

您在新服务器上安装的 Zimbra Collaboration 版本必须是 与旧服务器上安装的版本相同。 服务器可以有一个 不同的操作系统。

新服务器硬件必须满足中描述的要求 Zimbra Collaboration Single 的安装先决条件部分 服务器安装指南。安装新的操作系统,使任何 必要的操作系统配置修改,如中所述 安装指南。

您可以执行以下操作来恢复到新服务器:

  1. 准备新服务器。

  2. 使用防火墙阻止客户端访问旧服务器的 IP 地址 规则。

  3. 挂载旧服务器上正在使用的所有卷。

  4. 删除初始安装时设置的MariaDB数据 Zimbra 合作。

  5. 将备份文件复制到新服务器。

  6. 运行zmrestoreldap以恢复全局 LDAP 数据。

  7. 运行zmrestoreoffline从备份会话中恢复帐户数据。

  8. 准备并运行新备份。

旧服务器状态

灾难恢复的两种情况是服务器死机和 无法访问 Zimbra Collaboration 文件,或 Zimbra Collaboration 仍在运行,但服务器硬件需要更换。

如果服务器未运行:

  1. 使用防火墙规则阻止客户端访问服务器 IP 地址。

  2. 查找要使用的最新完整 Zimbra Collaboration 备份会话。

如果服务器仍在运行,准备迁移到新服务器:

  1. 使用防火墙规则阻止客户端访问服务器的 IP 地址。

  2. 运行旧服务的完整备份,或者如果备份是最近的, 运行增量备份以获取最新的增量备份 会议。

  3. 运行zmcontrol stop,以停止 Zimbra 协作。为了 恢复到最新状态,之后不应再收到新邮件 最后一次增量备份已运行。

  4. 将旧服务器上的主机名和 IP 地址更改为其他内容 否则。不要关闭服务器。

在新服务器上安装 Zimbra

开始之前,请确保新服务器已正确配置 IP 地址和主机名,并且 Zimbra Collaboration 是 使用相同的域、主机名、密码等安装和配置。 和之前的服务器一样。请参阅 Zimbra Collaboration 安装指南 有关准备服务器的更多信息。在您开始之前 安装 Zimbra Collaboration,记下旧版中您需要的信息 服务器,包括管理员帐户名和密码、LDAP、Amavis 和 Postfix 密码、垃圾邮件训练和非垃圾邮件训练用户帐户 名称、确切域名和全局文档帐户名称。

确保计算机时间设置为与旧时间相同 服务器。验证旧主机名和 MX DNS 记录是否解析为新主机名 服务器。
  1. 将 Zimbra Collaboration License.xml 文件复制到 新服务器。如果出现以下情况,您将无法完成 Zimbra Collaboration 安装: 该许可证不在新服务器上。

  2. 运行./install.sh并按照安装指南中的说明进行操作 安装 Zimbra 协作。确保配置相同 域名、主机名、密码与旧服务器上相同。在 Zimbra 期间 协作安装,必须更改以下设置以匹配 原始服务器设置:

    1. Zimbra LDAP Server — 对于域创建,标识相同 与旧服务器上的默认域相同。

    2. Zimbra 邮箱服务器 — 管理员帐户是 自动创建。

      • 确保管理员用户创建的帐户名相同 名称与原始服务器上的名称相同。

      • 将管理员密码设置为与旧服务器上的相同。

      • 将 LDAP 密码设置为与旧服务器上的相同。

      • 设置Postfix用户和Amavis用户密码与上相同 旧服务器

      • 更改垃圾邮件培训用户并且非垃圾邮件 (HAM) 培训 用户帐户名称与旧版上的垃圾邮件帐户名称相同 服务器。

      • 全局文档账户 — 此账户名为 自动生成,通常命名为 wiki。如果你改变了这个, 将全局文档帐户名称更改为与以下帐户名称相同的帐户名称 在原来的服务器上。

    3. 更改新服务器上的任何其他设置以匹配 原始服务器上的配置。

    4. 在主菜单中,设置默认备份计划和自动备份计划 配置完成后启动服务器至NO.

将备份恢复到新服务器
  1. 停止新服务器

    zmcontrol stop
  2. 如果旧服务器配置了额外的存储卷,则挂载 现在增加卷。

  3. 删除MariaDB数据并重新初始化一个空数据目录。如果 你不这样做,zmrestoreoffline会有错误。作为zimbra,输入:

    rm -rf /opt/zimbra/db/data/* ; /opt/zimbra/libexec/zmmyinit

    MariaDB 服务现已运行。

  4. 从旧服务器复制/backup文件夹中的所有文件或 从存档位置到/opt/zimbra/backup.

  5. 恢复 LDAP。

    zmrestoreldap -lb <latest_label>

    如果您要恢复大量帐户,您可以运行命令 例如 UNIX 命令,nohup,这样会话就不会终止 在恢复完成之前。

    要查找要恢复的 LDAP 会话标签,请键入zmrestoreldap –lbs.
  6. 确保在尝试执行zmrestoreoffline.

    • mysqld(MariaDB)

    • slapd(OpenLDAP) 之前以下服务正在运行

      zmcontrol start
  7. 确保在尝试执行zmrestoreoffline.

    • mailboxd

      zmmailboxdctl stop

之前停止以下服务,因为此时某些 Zimbra 协作服务正在运行 点,输入zmconvertctl start。运行前需要这样做 zmrestoreoffline.

  1. 将您的 LDAP 密码从备份目录同步到新的生产目录 服务器 LDAP 配置。

    zmlocalconfig -f -e zimbra_ldap_password=<password>
  2. 停止后启动离线恢复mailboxd.

    zmmailboxdctl stop
    zmrestoreoffline -sys -a all -c -br

    您也可以在此处运行诸如nohup之类的命令。为了观察进展, 尾部/opt/zimbra/log/mailbox.log.

    在命令行上使用–c以便恢复帐户, 即使某些帐户在离线恢复期间遇到错误 过程。
  3. 因为一些 Zimbra 协作服务正在于此运行 点,输入zmcontrol stop停止所有服务。

  4. 删除所有旧的备份会话,因为这些会话不再 有效。

    rm -rf /opt/zimbra/redolog/* /opt/zimbra/backup/*
  5. 启动 Zimbra 协作。

    zmcontrol start
  6. 运行完整备份。

    zmbackup -f -a all
  7. 删除防火墙规则并允许客户端访问新的 服务器。

从不同的故障场景中恢复

对于您可能遇到的大多数服务器故障,恢复步骤类似 相遇。如果发生故障,请查看灾难恢复部分以 了解该流程,然后按照以下步骤进行具体操作 故障类型。

LDAP 损坏时恢复
  1. 重新安装 LDAP 服务器。查看 Zimbra 协作安装 指导。

  2. 查找要恢复的 LDAP 会话的标签。运行 zmrestoreldap - lb <label>命令,不带参数恢复所有 LDAP 服务器的帐号、域、服务器、COS 等。

  3. 确保所有帐户均处于活动模式。从命令 行,键入zmprov ma zimbraAccountStatus active

替换损坏的分区后恢复
  1. 如果分区损坏,请更换故障磁盘。

  2. 要恢复最新的完整备份和增量备份文件,请运行

    zmrestore -a all

    恢复进程自动检索所有列表 从备份日期起指定邮件主机上的邮箱并迭代 通过每个邮箱将邮箱恢复到最后一次已知的状态 状态。

重做日志损坏或不可读后恢复

如果重做日志变得不可读,则mailboxd服务站和 无法重新启动。如果发生这种情况,请检查硬件和软件以 在继续之前找到问题的根源。

如果没有最新的重做日志,Zimbra 邮箱服务器无法 返回到最新状态。 Zimbra 邮箱数据可以是 恢复到最新的归档重做日志状态。新的重做日志 当前交易是在 Zimbra 邮箱服务器启动后创建的 恢复了。

mailboxd服务不得正在运行,并且所有帐户必须处于 开始之前的维护模式。
  1. 将所有帐户置于维护模式。

    zmprov md <domain> zimbraDomainStatus maintenance
  2. mailboxd服务未运行的情况下,键入

    zmrestoreoffline

    脱机恢复过程首先检索所有 备份中指定邮件主机上的邮箱。

    脱机恢复会迭代每个邮箱以:

    • 删除服务器上的邮箱

    • 从备份区域恢复最后一个完整备份

    • 按顺序恢复该邮箱的所有增量备份,因为 最后一次完整备份。这涉及重播备份中的重做日志 目标区域

    • 重放所有归档重做日志

    由于当前事务的重做日志不可用,因此 邮箱服务器返回到最后归档重做日志的状态。

  3. 离线恢复完成后,启动 Zimbra Collaboration 服务器。

    zmcontrol startup
  4. 当 Zimbra 邮箱服务器启动时,运行完整备份 Zimbra 服务器。必须立即运行完整备份才能获得 由于最新的重做日志不可用,所以备份了最新的数据。

恢复 Zimbra 后更改本地配置文件

localconfig.xml文件,位于/opt/zimbra/conf文件夹中, 包括核心 Zimbra 服务器配置,例如路径和密码, 该文件以完整备份和增量备份的形式进行备份。当你运行一个 增量或完全恢复,备份版本localconfig.xml被重命名为localconfig.xml.restore并复制到/opt/zimbra/conf 目录。

如果您自上次备份以来进行了更改,则可能需要替换 带有恢复副本的localconfig.xml文件。比较这些文件,并且 如果.restore文件中有最新的本地配置数据,删除 localconfig.xml文件并将该文件重命名为.restore扩展名 localconfig.xml.

关于临时数据的说明

从 Zimbra Collaboration 8.8 开始,临时数据不会作为备份过程的一部分进行备份。 由于身份验证令牌是短暂的属性,这意味着客户端 访问删除后恢复的账户需要重新进行身份验证; 备份之前生成的身份验证令牌将不再起作用。

临时存储 SSDB 后端

备份 SSDB 中的临时数据

如果 SSDB 用作临时后端,则备份将不包含任何临时数据 属性。

注意:本节不详细介绍如何部署和管理 SSDB 服务器。 有关该信息,请参阅SSDB 配置选项部分.

备份 SSDB 中存储的数据(如果已配置)如下所示:

ssdb-dump -h localhost -p 8888 -o /tmp/ephemeral-backup-<date>

注意:如果在主/从配置中运行,则ssdb-dump应在主服务器上运行.

备份示例
ssdb-dump - SSDB backup command
Copyright (c) 2012-2015 ssdb.io

recv begin...
received 1 entry(s)
received 10 entry(s)
received 100 entry(s)
received 1000 entry(s)
received 10000 entry(s)
received 100000 entry(s)
received 200000 entry(s)
received 300000 entry(s)
received 400000 entry(s)
received 400021 entry(s)
recv end

total dumped 400021 entry(s)
                               Compactions
Level  Files Size(MB) Time(sec) Read(MB) Write(MB)
--------------------------------------------------
  2        1        7         0        0         7

compacting data...
                               Compactions
Level  Files Size(MB) Time(sec) Read(MB) Write(MB)
--------------------------------------------------
  2        2       10         0        0        10

backup has been made to folder: /tmp/ephemeral-backup-<date>
将临时数据恢复到 SSDB

将临时数据恢复到备份中的 SSDB 只能通过以下备份来完成 SSDB服务器。

可以通过以下两种方式之一完成恢复:

  • 导入到正在运行的服务器

  • 覆盖现有数据

导入到正在运行的服务器

使用 SSDB 软件提供的leveldb-import命令创建的备份 使用ssdb-dump命令可以导入到正在运行的 SSDB 服务器中。

leveldb-import localhost 8888 /tmp/ephemeral-backup-<date>/data
数据覆盖
  • 停止 SSDB 服务器。

  • 将之前使用ssdb-dump命令创建的目录复制到已知位置。

  • 更新ssdb.conf配置文件以更新work_dir选择正确的路径。

  • 启动 SSDB 服务器备份并验证之前有效的登录是否仍然有效。

使用 LDAP 后端的备份

如果临时后端是 LDAP,则备份将不包含身份验证令牌或 CSRF 令牌,但它将包括上次登录时间戳。帐户恢复后, 管理控制台中相应的“上次登录”值将被恢复。

将 NG 备份恢复到 Zimbra 10

NG 备份恢复实用程序将对升级到 Zimbra 10 的客户有所帮助,Zimbra 10 现在具有本机备份和恢复功能。该实用程序可以读取现有的 NG 备份并恢复它们,为以前使用过 NG 备份的客户提供了一个有用的选项。

要使用 NG 备份恢复实用程序恢复备份,应在需要恢复备份的服务器上触发该实用程序。但是,在恢复备份之前,管理员应手动将备份文件夹从 NG 服务器上传到执行恢复的服务器。上传备份文件夹后,可以执行 NG 备份恢复实用程序来恢复备份数据。

“zmrestorengbackup”是一个单独的包,只能通过命令行访问。可以使用指令安装 'apt-get 安装 zimbra-restore-ngbackup'

迁移的目的

请注意,这不是用于恢复旧 NG 备份的通用恢复实用程序。此实用程序仅旨在帮助组织进行审计和 BCP 测试。

不建议从旧的 NG 备份进行恢复以进行灾难恢复。

我们建议在 Zimbra Daffodil (v10) 安装完成后立即使用 Zimbra 备份功能进行完整备份。然后在灾难恢复时使用此完整备份(与增量或自动分组备份结合使用)。

该实用程序可用于以下用例,客户无法避免处理旧的 NG 备份:

  • 大型组织、金融机构和政府客户具有与备份旧电子邮件数据相关的合规性要求。这些要求来自审计师进行法务会计的要求。

  • 一些大中型组织需要创建业务连续性计划 (BCP)。在 BCP 测试期间,根据适用于该公司的法规,可能需要恢复旧备份以检查电子邮件数据是否可访问。

    请注意,恢复发生在单独的环境中(而不是在生产环境中)。

语法

zmrestorengbackup --ngbkdir=FILENAME
[--itemstorecover={all|{DOCUMENT MESSAGE}}]
[--account={all|ACCOUNTS}]
[--prefix=PREFIX]
表 56. 选项
选项 简称 说明

ngbkdir

dir

指定 NG 备份提取目录的路径。此选项是必需的。

itemstorecover

itr

指定要从备份恢复的项目。有效选项为“文档”、“消息”或“全部”。此选项是必需的。如果指定“ALL”,则“DOCUMENT”和“MESSAGE”都将被恢复。

帐户

a

指定要恢复的帐户的电子邮件地址。可以提供多个电子邮件地址,并用空格分隔。使用“全部”恢复所有帐户。此选项是必需的。

prefix

pre

恢复到新的目标帐户。原始帐户名称前面会添加前缀。 示例:abc@test.com将恢复为 <前缀>_abc@test.com 这是可选的。如果不指定则将恢复原始帐户。

使用示例

  • 恢复帐户a@test.com 的电子邮件和文档至前缀帐户名称Restore_abc@test.com

    `zmrestorengbackup -a abc@test.com -pre restore -itr MESSAGE DOCUMENT -dir /opt/zimbra/mybackup/`
  • 恢复帐户的文档a@test.com

    `zmrestorengbackup -a abc@test.com -itr DOCUMENT -dir /opt/zimbra/mybackup/`
  • 恢复帐户的电子邮件和文档(目前均为电子邮件、文档)a@test.com到前缀帐户名Sample_abc@test.com

    `zmrestorengbackup -a abc@test.com -pre sample -itr all -dir /opt/zimbra/mybackup/`

先决条件

以下是执行迁移之前应满足的模块先决条件。请注意,这些先决条件可能并不全面,并且可能需要其他步骤,具体取决于特定的服务器配置

  • 必须在 NG 服务器上为需要迁移的模块/数据进行备份。

  • 必须手动将备份文件夹迁移/复制到要恢复备份的服务器。

  • 备份文件夹必须具有正确的权限设置,以便恢复过程能够访问和读取备份文件。- 恢复过程必须在安装模块并需要迁移的 Z10 服务器上执行。

迁移顺序

迁移需要遵循以下顺序:

  • 需要在 Z10 服务器上安装恢复备份所需的实用程序。

  • 在NG服务器上进行的备份需要手动传输到Z10服务器。

  • 备份文件夹应位于 Z10 服务器上的 Zimbra 用户可访问的目录中。备份文件夹的理想位置是“/opt/zimbra/zxbackup”。

  • 正在恢复的帐户的域应该存在于 Z10 服务器上。

本节提供有关根据部署规模、数据增长和操作要求选择适当备份策略的指导。以下建议适用于增强型备份引擎 (v2),并且与旧备份行为完全兼容。

目标

本节的目标是:

帮助管理员选择最合适的备份策略

平衡存储效率、性能和可恢复性

跨小型、中型和大型环境提供可预测的备份行为

为长期保留和容量增长启用明智的规划

标准备份

会话重复数据删除

增强型 Zimbra Backup v2 中的会话重复数据删除是指在单个备份会话中消除重复 blob 的过程。这意味着在创建完整备份期间,在该会话中多次出现的任何相同 blob 仅存储一次。系统创建对单个唯一 blob 的引用,并使用引用计数维护物理 blob 和存储位置之间的元数据和引用映射。这可以减少备份的总体大小并提高特定备份运行的存储效率。

当设置以下属性时,会在服务器或全局配置级别启用会话重复数据删除备份:

  • zimbraBackupDeduplication = dedupe

  • zimbraBackupDedupeCompressionType = zstdnocompression

  • zimbraBackupCrossSessionDedupeEnabled = FALSE

此备份策略是默认备份策略,与旧版标准 Zimbra 备份类似,提供相同级别的可靠性和冗余,但完整备份大小显着减小。

备份计划

会话重复数据删除 (SD) 备份,保留期为 1 个月(默认)。

  • 周六每周完整备份

  • 一周剩余天进行增量备份

  • 30 天后删除备份

备份计划应如下所示:

f 0 1 * * 6 -a all --mail-report
i 0 1 * * 0-5 --mail-report
d 1m 0 0 * * * --mail-report
限制
  • 重复数据删除仅限于单个备份会话;不同备份运行之间没有重复数据删除。

  • 每周完整备份都会再次存储整个数据,即使大部分数据未更改。

  • 由于重复的完整备份,存储消耗随着时间的推移显着增长。

  • 在每周完整备份期间,备份窗口可能会更长。

  • 与跨会话重复数据删除方法相比,存储 I/O 使用率更高。

优点
  • 简单且易于理解的备份模型。

  • 支持使用重做日志的增量备份。

  • 由于每个完整备份都是独立的,因此恢复过程更容易。

  • 不依赖于单个公共备份集。

  • 使用 Zstandard 作为压缩引擎实现高压缩比。

  • 重复数据删除适用于内部和外部数据,提供高效的重复数据删除。

缺点
  • 由于重复的完整备份而导致高存储冗余。

  • 存储利用率低下。

  • 每周完整备份持续时间更长。

  • 随着时间的推移,存储成本增加。

高级数据大小预测

硬件资源:4 vCPU、16 GB RAM

基于以下数据集组成:

  • 内部本地数据:32%

  • 外部 AWS 数据:68%

  • 唯一数据:40%

  • 重复数据:60%

每周数据大小
天 # 备份类型 增加百分比 数据大小 (GB) 总数据大小 (GB) 帐户 备份大小 (GB)

第 1 天

完整备份

167.00

167.00

100

74

第 2 天

增量备份

5%

8.35

175.35

108

14.4

第 3 天

增量备份

5%

8.77

184.12

116

10.00

第 4 天

增量备份

5%

9.21

193.32

124

10.50

第 5 天

增量备份

5%

9.67

202.99

132

11.00

第 6 天

增量备份

5%

10.15

213.14

140

11.70

第 7 天

增量备份

5%

10.66

223.80

148

12.50

第 8 天

完整备份

223.80

148

102.00

总计

246.1

每月数据大小
天 # 备份类型 增加百分比 数据大小 (GB) 总数据大小 (GB) 帐户 备份大小 (GB)

第 1 天

完整备份

167.00

167.00

100

74

第 2 天

增量备份

5%

8.35

175.35

108

14.4

第 3 天

增量备份

5%

8.77

184.12

116

10.00

第 4 天

增量备份

5%

9.21

193.32

124

10.50

第 5 天

增量备份

5%

9.67

202.99

132

11.00

第 6 天

增量备份

5%

10.15

213.14

140

11.70

第 7 天

增量备份

5%

10.66

223.80

148

12.50

第 8 天

完整备份

223.80

148

102.00

第 9 天

增量备份

5%

11.19

234.99

156

19.3

第 10 天

增量备份

5%

11.75

246.74

164

11.1

第 11 天

增量备份

5%

12.34

259.07

172

11.7

第 12 天

增量备份

5%

12.95

272.03

180

12.3

第 13 天

增量备份

5%

13.60

285.63

188

12.9

第 14 天

增量备份

5%

14.28

299.91

196

13.5

第 15 天

完整备份

299.91

196

136.7

第 16 天

增量备份

5%

15.00

314.90

204

25.9

第 17 天

增量备份

5%

15.75

330.65

212

14.5

第 18 天

增量备份

5%

16.53

347.18

220

15.6

第 19 天

增量备份

5%

17.36

364.54

228

16.4

第 20 天

增量备份

5%

18.23

382.77

236

17.2

天21

增量备份

5%

19.14

401.91

244

18.1

第 22 天

完整备份

401.91

204

183.2

第 23 天

增量备份

5%

20.10

422.00

212

34.7

第 24 天

增量备份

5%

21.10

443.10

220

20.0

第 25 天

增量备份

5%

22.16

465.26

228

21.0

第 26 天

增量备份

5%

23.26

488.52

236

22.0

第 27 天

增量备份

5%

24.43

512.94

244

23.1

第 28 天

增量备份

5%

25.65

538.59

252

24.2

第 29 天

完整备份

512.94

244

227.3

第 30 天

增量备份

5%

25.65

538.59

252

44.2

跨会话每周重复数据删除备份

增强型 Zimbra Backup v2 中的跨会话重复数据删除意味着,Zimbra 不仅可以在单个备份运行(会话)内对数据进行重复数据删除,还可以随着时间的推移跨多个备份会话对数据进行重复数据删除。

进行第一个跨会话重复数据删除 (CSD) 完整备份(称为通用CSD 备份)时,所有唯一的 blob 都会在通用完整备份会话中存储一次。

在后续完整备份中:

  • 如果公共完整备份会话中已存在 Blob,则不会再次写入。

  • 仅添加指向现有 blob 的引用和元数据。

  • 在后续完整备份期间发现的新的唯一 blob 将附加到通用完整备份会话中。

当设置以下属性时,会在服务器或全局配置级别启用跨会话重复数据删除备份:

  • zimbraBackupDeduplication = dedupe

  • zimbraBackupDedupeCompressionType = zstdnocompression

  • zimbraBackupCrossSessionDedupeEnabled = TRUE

与会话重复数据删除备份策略相比,此备份策略可提供更快的后续完整备份并进一步改善存储空间要求。

保留行为 (CSD)
跨会话重复数据删除 (CSD) 备份保留策略不同于传统或会话重复数据删除备份保留。
  • 仅当删除所有引用的完整增量备份时,才会删除完整通用备份。

  • 即使公共备份早于保留期,也会跳过完整公共备份的删除。

  • 在保留期结束前一天,可以创建新的完整通用备份。

  • 仅当计划程序触发完整备份时才会创建新的公共备份。

备份计划

跨会话重复数据删除 (CSD) 备份,保留期为 1 个月(默认)。

  • 在第 1 天以及新备份周期的第一天进行完整通用备份(基于保留逻辑)

  • 在周期中剩余的星期六进行完整增量备份

  • 一周剩余天数的增量备份

备份计划应如下所示:

f 0 1 * * 6 -a all --mail-report
i 0 1 * * 0-5 --mail-report
d 1m 0 0 * * * --mail-report
对于 CSD,保留期可配置为 6 个月或 1 年。无需每月创建新的通用备份。
限制
  • 取决于 Blob 存储的单个通用备份集。

  • 公共备份的损坏或丢失会影响所有相关备份。

  • Blob 数据没有备份冗余,因为所有 Blob 都驻留在共享的公共备份中。

优点
  • 跨会话重复数据删除可确保 blob 数据仅存储一次。

  • 每周完整备份创建增量备份,仅存储新添加的电子邮件数据。

  • 与标准重复数据删除备份相比,显着减少了存储使用量。

  • 支持使用重做日志的增量备份。

  • 减少了每周完整备份的备份窗口。

  • 增量备份的备份速度非常高,因为仅备份更改的数据。

  • 使用 Zstandard 作为压缩引擎实现高压缩比。

  • 重复数据删除适用于内部和外部数据,提供高效的重复数据删除。

缺点
  • 增量备份依赖于单个共享的通用备份。

  • 无法实现备份冗余。

高级数据大小投影

硬件资源:4 个 vCPU、16 GB RAM

基于以下数据集组成:

  • 内部本地数据:32%

  • 外部 AWS 数据:68%

  • 唯一数据:40%

  • 重复数据:60%

每周数据大小
天 # 备份类型 增加百分比 数据大小 (GB) 总数据大小 (GB) 帐户 备份大小 (GB)

第 1 天

CSD 通用完整备份

167.00

167.00

100

89.00

第 2 天

增量备份

5%

8.35

175.35

108

13.70

第 3 天

增量备份

5%

8.77

184.12

116

7.40

第 4 天

增量备份

5%

9.21

193.32

124

7.80

第 5 天

增量备份

5%

9.67

202.99

132

8.10

第 6 天

增量备份

5%

10.15

213.14

140

8.50

第 7 天

增量备份

5%

10.66

223.80

148

9.00

第 8 天

CSD 完整增量备份

223.80

148

51.00

总计

194.5

每月数据大小
天 # 备份类型 增加百分比 数据大小 (GB) 总数据大小 (GB) 帐户 备份大小 (GB) 增长大小 (GB)

第 1 天

CSD 通用完整备份

167.00

167.00

100

72.00

164.83

第 2 天

增量备份

5%

8.35

175.35

108

13.70

第 3 天

增量备份

5%

8.77

184.12

116

7.40

第 4 天

增量备份

5%

9.21

193.32

124

7.80

第 5 天

增量备份

5%

9.67

202.99

132

8.10

第 6 天

增量备份

5%

10.15

213.14

140

8.50

第 7 天

增量备份

5%

10.66

223.80

148

9.00

第 8 天

CSD 完全增量备份

223.80

148

51.00

第 9 天

增量备份

5%

11.19

234.99

156

10.32

第 10 天

增量备份

5%

11.75

246.18

164

11.28

第 11 天

增量备份

5%

12.31

257.92

172

11.81

第 12 天

增量备份

5%

12.90

270.23

180

12.38

第 13 天

增量备份

5%

13.51

283.13

188

12.97

第 14 天

增量备份

5%

14.16

296.64

196

13.59

第 15 天

CSD 完整增量备份

296.64

196

67.60

第 16 天

增量备份

5%

14.83

311.47

204

13.67

第 17 天

增量备份

5%

15.57

327.05

212

14.95

第 18 天

增量备份

5%

16.35

343.40

220

15.69

第 19 天

增量备份

5%

17.17

360.57

228

16.48

第 20 天

增量备份

5%

18.03

378.60

236

17.31

第 21 天

增量备份

5%

18.93

397.53

244

18.17

第 22 天

CSD 完整增量备份

397.53

244

90.59

第 23 天

增量备份

5%

19.88

417.41

252

18.32

第 24 天

增量备份

5%

20.87

438.28

260

20.03

第 25 天

增量备份

5%

21.91

460.19

268

21.03

第 26 天

增量备份

5%

23.01

483.20

276

22.09

第 27 天

增量备份

5%

24.16

507.36

284

23.20

第 28 天

增量备份

5%

25.37

532.73

292

24.35

第 29 天

CSD 完整增量备份

532.73

300

121.40

第 30 天

增量备份

5%

26.64

559.36

308

24.56

跨会话重复数据删除每日增量备份

跨会话重复数据删除每日增量备份与跨会话重复数据删除每周备份遵循相同的行为,但下面列出的差异除外。

其他所有内容(包括重复数据删除逻辑、通用备份处理和保留行为)保持不变。

与每周 CSD 备份的主要区别
  • 增量备份(重做日志备份)是而不是执行。

  • 系统运行每日完整备份没有增量备份。

  • 搜索索引是不包括在内在备份中。

备份计划

跨会话重复数据删除 (CSD) 备份,保留期为1个月(默认)。

  • 第 1 天和新备份周期第一天的完整常见备份(基于保留逻辑)。

  • 完整德尔塔备份运行日常的在周期的剩余天数上。

备份计划应如下所示:

f 0 1 * * * -a all --mail-report
d 1m 0 0 * * * --mail-report

注意: 对于 CSD,保留期可以配置为6 个月1 年。 无需每月创建新的通用备份。

限制
  • 不生成重做日志;因此,不支持时间点恢复.

  • 对公共备份存储库完整性的强烈依赖。

  • 取决于 blob 存储的单个通用备份集。

  • 公共备份的损坏或丢失会影响所有相关备份。

  • Blob 数据没有备份冗余,因为所有 Blob 都驻留在共享的公共备份中。

优点
  • 由于跨会话重复数据删除而实现最大存储效率。

  • 无重做日志,显着减少存储使用。

  • 每日完整备份速度很快,因为只写入增量数据。

  • 简化的备份计划,无增量备份。

  • 与基于重做日志的增量方法相比,减少了备份和恢复时间。

  • 可以实现最小的存储利用率和最大的速度。

  • 使用 Zstandard 作为压缩引擎实现高压缩比。

  • 重复数据删除适用于内部和外部数据,提供高效的重复数据删除。

缺点
  • 失去时间点恢复功能。

  • 丢失与基于重做日志的恢复相关的所有 CLI 功能。

  • 增量备份依赖于单个共享的通用备份。

  • 无法实现备份冗余。

高级数据大小预测

硬件资源:4 个 vCPU、16 GB RAM

基于以下数据集组成:

  • 内部本地存储:32%

  • 外部 AWS 存储:68%

  • 数据集组成:

    • 唯一数据:40%

    • 重复数据:60%

每周数据大小
天 # 备份类型 增加百分比 数据大小 (GB) 总数据大小 (GB) 帐户 备份大小 (GB)

第 1 天

CSD 通用完整备份

267.47

196

56

第 2 天

Delta 备份

3%

8.02

275.49

204

2.00

第 3 天

Delta 备份

3%

8.26

283.76

212

2.10

第 4 天

Delta 备份

3%

8.51

292.27

220

2.20

第 5 天

Delta 备份

3%

8.77

301.04

228

2.30

第 6 天

Delta 备份

3%

9.03

310.07

236

2.40

第 7 天

Delta 备份

3%

9.30

319.37

244

2.50

总计

83.00

每月数据大小
备份类型 增加百分比 总数据大小 (GB) 数据大小 (GB) 总帐户 备份大小 (GB)

1

CSD 通用完整备份

267.47

196

56

2

增量备份

3%

275.49

8.02

204

2.01

3

增量备份

3%

283.76

8.27

212

2.07

4

增量备份

3%

292.27

8.51

220

2.13

5

增量备份

3%

301.04

8.77

228

2.19

6

增量备份

3%

310.07

9.03

236

2.26

7

增量备份

3%

319.37

9.30

244

2.33

8

增量备份

3%

328.95

9.58

252

2.40

9

增量备份

3%

338.82

9.87

260

2.47

10

增量备份

3%

348.99

10.17

268

2.54

11

增量备份

3%

359.46

10.47

276

2.62

12

增量备份

3%

370.24

10.78

284

2.70

13

增量备份

3%

381.35

11.11

292

2.78

14

增量备份

3%

392.79

11.44

300

2.86

15

增量备份

3%

404.57

11.78

308

2.94

16

增量备份

3%

416.71

12.14

316

3.04

17

增量备份

3%

429.21

12.53

324

3.13

18

增量备份

3%

442.09

12.88

332

3.22

19

增量备份

3%

455.35

13.26

340

3.32

20

增量备份

3%

469.01

13.66

348

3.41

21

增量备份

3%

483.08

14.07

356

3.52

22

增量备份

3%

497.57

14.49

364

3.62

23

增量备份

3%

512.50

14.93

372

3.73

24

增量备份

3%

527.88

15.38

380

3.85

25

增量备份

3%

543.71

15.83

388

3.96

26

Delta Backup

3%

560.02

16.31

396

4.08

27

Delta Backup

3%

576.82

16.80

404

4.20

28

Delta Backup

3%

594.13

17.31

412

4.33

29

Delta Backup

3%

611.95

17.82

420

4.46

30

Delta Backup

3%

630.31

18.36

428

4.59

自动分组备份

Zimbra 中的自动分组备份方法是标准方法的替代方法备份方法,专为超大型部署而设计,在这种部署中,一次执行所有邮箱的完整备份可能需要很长时间或消耗过多的资源。

主要特征
  • 基于组的完整备份 自动分组备份不是在一次运行中备份所有邮箱,而是将邮箱分成组,并按计划时间间隔(例如每天)备份一组。

  • 没有单独的增量备份 由于系统将每个组的全量备份视为相当于全量 + 增量循环的组合,因此不存在单独的增量备份过程。

  • 大型环境的理想选择 当在单个备份窗口内备份所有帐户不切实际时,此备份方法特别有用。

  • 自适应行为 每次运行都会备份:

    • 从未备份过的新配置的邮箱。

    • 尚未在定义的计划窗口内备份的邮箱。

    • 额外最旧的备份邮箱可平衡几天的工作负载。

  • 备份内容 每个自动分组的备份会话都包含该组的完整备份以及所需的重做日志。

  • 保留期限 应配置自动分组备份的保留期,以便所有帐户在保留期结束之前至少备份一次。

用于自动分组备份的 LDAP 属性
LDAP 属性 说明

zimbraBackupMode

设置备份方法。有效值包括标准自动分组。要启用自动分组备份,请将此属性设置为自动分组.

zimbraBackupAutoGroupedInterval

定义内部逻辑使用的时间间隔,以确定哪些帐户有资格在下一次计划的自动分组运行中进行备份。通常与计划的完整备份间隔保持相同。

笔记:该属性不控制备份执行。执行由服务器 crontab 中配置的备份计划控制。

zimbraBackupAutoGroupedNumGroups

指定用于在自动分组备份计划中分配邮箱的组数。

zimbraBackupAutoGroupedThrottled

可选。当设置为TRUE时,通过限制每个时间间隔的备份工作负载来限制每次运行的邮箱数量(邮箱数量限制为邮箱总数除以计划天数)。默认值为FALSE.

zimbraBackupRetentionDays

定义保留备份的天数。备份计划程序删除早于此值的备份。由标准和自动分组备份方法使用。

自动分组备份要考虑的要点
  • 分组完整备份由服务器 crontab 中配置的备份计划触发。他们是notzimbraBackupAutoGroupedInterval.

  • zimbraBackupAutoGroupedInterval管理,仅用于识别哪些帐户在当前自动分组运行期间有资格进行备份。 它通常设置为与备份计划中的完整备份间隔相匹配,以获得最佳行为。必须配置

  • zimbraBackupRetentionDays以确保每个帐户至少存在一个备份副本。

配置示例

如果: *zimbraBackupAutoGroupedNumGroups = 7 * 每天运行完整备份 *zimbraBackupAutoGroupedInterval = 1d

那么所需的最短保留期为:

zimbraBackupRetentionDays = 8d

备份计划示例:

f 0 1 * * 0-6 --mail-report
d 8d 0 0 * * * --mail-report

维护四个副本的完整备份的所有帐户,配置保留如下:

f 0 1 * * 0-6 --mail-report
d 28d 0 0 * * * --mail-report
限制
  • 仅当禁用压缩时才支持跨会话重复数据删除(NoZip),由于基于 Linux 的软链接和硬链接,显着增加了存储使用量。

  • 启用压缩时,不支持跨会话重复数据删除,从而导致跨备份周期出现冗余 Blob 副本。

  • NoZip 时,备份持续时间较长由于未压缩的数据量很大,因此特别是在非常大的环境中使用。

  • 存储需求可能会大幅增长,因为未压缩的备份无法受益于 Zstandard 等压缩比(它可以将 blob 大小减少到原始大小的大约 65%)。

优点
  • 专为具有大量帐户的大型环境而设计。

  • 将帐户分组,与一次备份所有帐户相比,减少负载和运行时间。

  • 使用NoZip时支持跨会话重复数据删除,减少未更改 Blob 的冗余存储。

  • 支持基于重做日志的增量备份。

缺点
  • 使用NoZip时存储消耗较高,尤其是在大型部署中。

  • 与压缩备份相比,备份时间更长。

  • 启用压缩会禁用跨会话重复数据删除,从而导致跨多个备份副本的冗余存储。

策略比较

下表提供了根据总体邮件存储数据大小选择适当备份策略的指导。

邮件存储数据大小 建议的备份方法 备份策略详细信息

小 – <500 GB

标准备份 – 会话重复数据删除(计划)

使用默认或自定义的 crontab 计划。 每周完整备份和每日增量备份。 将备份保留至少 2 周(至少 2 个完整备份)。

中型 – 500 GB 至 1 TB

标准备份 – 会话重复数据删除(计划)

使用默认或自定义的 crontab 计划。 每周完整备份和每日增量备份。 将备份保留至少 2 周(至少 2 个完整备份)。

大型 – 1 TB 至 5 TB

标准备份 – 跨会话重复数据删除 每周备份(计划)

每周完整备份,并通过 crontab 计划每日增量备份。 定期监控备份作业的成功情况和重做日志大小。

非常大 – >5 TB

自动分组+快照 或 标准备份 – 跨会话重复数据删除每日增量备份(计划)

将自动分组备份与存储或 SAN 快照相结合,以实现崩溃一致性和快速恢复。 或者,通过 crontab 运行每日完整备份并监控作业是否成功。

性能和资源使用预期

本部分根据代表性数据集和常用的调整配置文件提供有关预期备份性能和资源使用的指导。

测试环境
  • 实例大小:4 个 vCPU、16 GB RAM

  • 数据大小:167 GB

  • 数据分布:

    • 本地存储:20%

    • 外部 (AWS):80%

  • 数据构成:

    • 唯一数据:40%

    • 重复数据:60%

性能配置文件和观察到的行为
配置文件 backup_zstd_compression_level backup_copy_blob_parallelism_level 备份大小 (GB) 备份速度 (GB/小时) 峰值 CPU 峰值内存 何时推荐

V2 – 默认

3

5

74

86.3

~25–30%

~55–60%

对于大多数客户来说是安全的默认值。与传统备份相比,大小减少约 22%,时间减少约 58%,且 CPU 使用率适中。

V2 – 性能(低–中)

3

8

74

~130–150

~30–40%

~55–60%

适合拥有一定 CPU 空间、希望缩短备份窗口而不最大化节点的客户。

V2 – 性能(平衡高)

3

12

74

~160–190

~40–45%

~60–62%

良好的中间立场,提供强大的性能增益,同时保持合理的 CPU 使用率。避免与繁重的 cron 或报告工作重叠。

V2 – 积极型

3

16

74

~200–230

~45–55%

~60–62%

用于备份期间邮件活动较少的节点上的短备份窗口。密切监控 CPU 使用情况和用户体验。

V2 – 最大性能

12

20

73

~270

~90–92%

~67–68%

最大吞吐量配置文件。不建议作为默认值。仅当备份在隔离窗口中运行并且 CPU 饱和度可接受时才使用。避免与繁重的 cron 或报告工作重叠。

客户场景推荐
场景/客户需求 推荐配置文件 关键设置 注释

典型生产环境,平衡性能与资源使用

V2 – 默认

压缩 = 3 并行度 = 5

对于大多数客户来说,CPU 使用率适中,是最安全的通用建议。

严格的备份窗口,具有一定的 CPU 空间

V2 – 性能(平衡高)

压缩 = 3 并行度 ≈ 8

与默认值相比,备份时间大幅减少,同时在 4 vCPU / 16 GB 系统上保持 CPU 使用率可控。

备份专用窗口,邮件活动较低,没有繁重的 cron 或报告作业

V2 – 积极

压缩 = 3 并行度 = 16

适用于优先考虑短备份窗口的环境。需要密切监控 CPU 使用情况和用户体验。

性能参数调优

本节介绍影响备份性能的关键本地配置 (LC) 参数,尤其是当备份涉及外部存储时。

性能调整参数

使用外部存储作为备份过程的一部分时,以下 LC 参数直接影响性能。

backup_zstd_compression_level

控制用于 blob 数据的 Zstandard (ZSTD) 压缩级别。

  • 范围:1–22

  • 默认值:3

行为

  • 更高的值 → 更好的压缩

  • 更高的值 → 更高的 CPU 利用率

建议

  • 对于大多数环境,从默认值3开始。

  • 仅在以下情况下增加:

    • 存储昂贵或有限。

    • 有足够的 CPU 空间可用。

  • 将大于4的值视为存储优化但 CPU 昂贵的并在生产中使用之前仔细验证。


backup_zip_copier_private_blob_zips

确定备份期间为 blob 存储生成的 ZSTD 压缩 TAR 存档的数量。

  • 范围:1–10

  • 默认值:4

行为

  • 值越高,创建的并行流越多。

  • 跨流的公共数据只存储一次。

  • 增加此值会增加存储使用量,但不会显着提高性能。

建议

  • 保留默认值4.

  • 通常不建议增加此参数,因为它不会显着提高性能并增加存储消耗。


backup_copy_blob_parallelism_level

控制备份期间并行压缩的 Blob 数量。

  • 范围:5-20

  • 默认值:5

行为

  • 值越高 → 备份吞吐量越高,备份窗口越短。

  • 更高的值 → 增加 CPU 使用率。

观察到的影响

  • 增加自5 → 20:

    • 备份速度:约 86 GB/小时 → 约 270 GB/小时

    • 备份时间:约 2 小时 → < 40 分钟

    • CPU 使用率:从约 25% 增加到约 90%

建议

  • 从默认值开始5.

  • 逐渐增加:

    • 步骤到 6,然后是 8,然后是 10。

    • 观察 CPU 使用情况以及对其他服务的影响。

  • 在 4 个 vCPU 系统上,如果出现以下情况,请避免使用高值(15 或 20):

    • 在备份期间运行繁重的工作负载,例如 cron 作业、索引或使用情况报告。

  • 始终将更改与资源级别监控配对:

    • CPU

    • 内存

    • 磁盘 I/O


以下指南可帮助管理员根据 CPU 使用率、压缩效率和备份持续时间权衡选择适当的 Zstandard 压缩级别。

CPU 范围指示备份期间的4 vCPU / 16 GB RAM系统,假设backup_copy_blob_parallelism_level = 5.

内存利用率的中等值通常保持在类似范围内 (~50–65%)。更改压缩级别的主要影响是CPU 使用率备份持续时间.

backup_zstd_compression_level 预期 CPU 使用率(相对) 预期压缩效率 对备份持续时间的预期影响 推荐使用案例/环境

3(默认)

中等 CPU(良好平衡) 峰值 ~25–30%

压缩性好 (在当前 V2 测试中观察到)

良好 – 平衡速度与大小

为几乎所有客户推荐默认值。平衡 CPU 使用率、备份时间和压缩效率。与调整并行性配合良好。

4–5

中等高 CPU 峰值 ~35–40%

压缩比级别 3 稍好

比级别 3 稍慢

适合对存储稍敏感并具有一些额外 CPU 空间但仍需要可接受的备份窗口的客户。

6–8

高CPU 可以以高并行度接近饱和 峰值 ~55–60%

中等压缩 较小的备份大小

速度明显较慢; CPU 限制

建议用于存储受限、CPU 丰富的环境。当存储成本是优先考虑并且客户可以容忍较慢的备份和较高的 CPU 使用率时使用。

9–12

非常高的CPU 峰值 ~75–92%

更好的压缩,但收益递减

慢得多; CPU 经常出现瓶颈

并不理想,很少推荐。仅适用于特殊场景,例如极其严格的存储限制或离线/维护备份窗口。

30 天内备份类型和频率的可视化表示

本节说明如何在 30 天内执行不同的备份策略,突出显示生成的备份的频率和类型。

会话重复数据删除(标准备份)

在会话重复数据删除模型中,每周进行一次完整备份,其余天进行增量备份。

时间线 备份类型

第 1 天

完整

第 2 天

增量

第 3 天

增量

第 4 天

增量

第 5 天

增量

第 6 天

增量

第 7 天

增量

第 8 天

完整

第 9 天

增量

第 10 天

增量

第 11 天

增量

第 12 天

增量

第 13 天

增量

第 14 天

增量

第 15 天

完整

第 16 天

增量

第 17 天

增量

第 18 天

增量

第 19 天

增量

第 20 天

增量

第 21 天

增量

第 22 天

完整

第 23 天

增量

第 24 天

增量

第 25 天

增量

第 26 天

增量

第 27 天

增量

第 28 天

增量

第 29 天

完整

跨会话重复数据删除 – 每周备份

在跨会话重复数据删除(每周)模型中,最初会创建一个 COMMON 备份。 随后的每周备份为 DELTA 备份,其他日期为增量备份。

时间线 备份类型

第 1 天

完整 CSD 通用

第 2 天

增量

第 3 天

增量

第 4 天

增量

第 5 天

增量

第 6 天

增量

第 7 天

增量

第 8 天

全 DELTA

第 9 天

增量

第 10 天

增量

第 11 天

增量

第 12 天

增量

第 13 天

增量

第 14 天

增量

第 15 天

全 DELTA

第 16 天

增量

第 17 天

增量

第 18 天

增量

第 19 天

增量

第 20 天

增量

第 21 天

增量

第 22 天

全 DELTA

第 23 天

增量

第 24 天

增量

第 25 天

增量

第 26 天

增量

第 27 天

增量

第 28 天

增量

第 29 天

完整 DELTA

跨会话重复数据删除 – 每日增量备份

在每日增量模型中,创建初始 CSD 完整备份,然后创建每日完整 DELTA 备份。 不生成增量(重做日志)备份。

时间线 备份类型

第 1 天

全 CSD

第 2 天

全 DELTA

第 3 天

全 DELTA

第 4 天

全 DELTA

第 5 天

全 DELTA

第 6 天

全 DELTA

第 7 天

全 DELTA

第 8 天

全 DELTA

第 9 天

全 DELTA

第 10 天

全 DELTA

第 11 天

全 DELTA

第 12 天

全 DELTA

第 13 天

全 DELTA

第 14 天

全 DELTA

第 15 天

全 DELTA

第 16 天

全 DELTA

第 17 天

全 DELTA

第 18 天

全 DELTA

第 19 天

全 DELTA

第 20 天

全 DELTA

第 21 天

全 DELTA

第 22 天

全 DELTA

第 23 天

全 DELTA

第 24 天

全 DELTA

第 25 天

全 DELTA

第 26 天

全 DELTA

第 27 天

全 DELTA

第 28 天

Full-DELTA

第 29 天

Full-DELTA

备份和恢复 V2 – 常见问题

第 1 部分 – 客户和销售常见问题(高级)

1. 升级到新版本后,备份有何变化?

升级后:

  • 默认启用新的备份引擎(V2)。

  • Zstandard (Zstd) 压缩默认启用。

  • 默认情况下,在每次备份运行(会话级)中启用重复数据删除。

  • 默认情况下,跨会话重复数据删除 (CSD) 处于关闭状态。

  • 现有备份仍然可用。

  • 新的完整备份使用 V2 格式,除非明确切换回 V1。

如果您正在使用任何标志--zip, --zipStore, --noZip在您的 V1 备份配置中,请参阅过渡到备份引擎 V2部分以过渡到 V2 备份。

2. 我们现有的备份仍然有效吗?

是的。

  • 现有 V1 备份不会更改或删除。

  • 恢复会自动检测备份版本。

  • 可以使用最新版本恢复较旧的备份。


3.什么是重复数据删除?

重复数据删除意味着:

  • 相同内容仅存储一次。

  • 其他副本引用相同的存储数据。

优点:

  • 减少备份大小

  • 减少磁盘 I/O

  • 更好的性能

适用于:

  • 共享附件

  • 大型组织

  • 外部存储部署


4. 什么是跨会话重复数据删除 (CSD)?

CSD 将重复数据删除扩展到多个备份运行。

  • 第一次运行创建一个公共备份。

  • 稍后运行创建 DELTA 备份。

  • 仅添加新的或更改的数据。

优点:

  • 更小的长期存储

  • 更快的备份

  • 降低存储成本

CSD 仅适用于计划的完整备份,不适用于自动组备份。


5. 重复数据删除 + 压缩的优点
  • 更小的备份大小

  • 更快的备份

  • 更低的存储成本

  • 高效扩展


6. 恢复会花费更长的时间吗?

否。

恢复为:

  • 与 V1 或

  • 速度相同,由于数据大小减小和 Zstd 解压缩速度快,速度稍快。


7. 我们可以继续使用V1备份吗?

是的。

CLI – 全局
zmprov mcf zimbraBackupDeduplication nodedupe
zmprov mcf zimbraBackupBlobsCompressType zip
zmprov mcf zimbraBackupCrossSessionDedupeEnabled FALSE
CLI – 服务器
zmprov ms <server_name> zimbraBackupDeduplication nodedupe
zmprov ms <server_name> zimbraBackupBlobsCompressType zip
zmprov ms <server_name> zimbraBackupCrossSessionDedupeEnabled FALSE
管理控制台

路径:配置 → 全局设置 → 备份/恢复

取消选中启用重复数据删除并选择 ZIP / NOZIP / ZIPSTORE。


8. 如果备份会话损坏怎么办?
  • 行为与 V1 相同。

  • 其他会话仍然可用。

  • V2 没有额外风险。

最佳实践:

  • 保留多个备份

  • 定期测试恢复


第 2 部分 – 支持和管理常见问题解答

1. 升级后的默认设置
  • 备份类型:V2 重复数据删除

  • 压缩:zstd

  • 重复数据删除:重复数据删除

  • CSD:FALSE


2. 为什么备份大小没有减小?

常见原因:

禁用重复数据删除
zmprov gs `zmhostname` zimbraBackupDeduplication
zmprov gcf zimbraBackupDeduplication

预期:dedupe

压缩级别

本地配置:

  • 备份_zstd_压缩级别 范围:1–22(默认 ~3)

数据集不可压缩

媒体、ZIP、视频减少较少。


3. 如何验证重复数据删除

邮箱日志显示:

Duplicate blobs count : 5

检查配置:

zmprov gacf | egrep 'zimbraBackupDeduplication|zimbraBackupDedupeCompressionType|zimbraBackupCrossSessionDedupeEnabled'
zmprov gs `zmhostname` | egrep 'zimbraBackupDeduplication|zimbraBackupDedupeCompressionType|zimbraBackupCrossSessionDedupeEnabled'

4. 重复数据删除与压缩节省

总节省来自:

  • 重复数据删除

  • 压缩

公式:

备份节省 ≈ 原始大小 − 备份大小


5. 启用/禁用重复数据删除和压缩
管理控制台

路径:配置 → 全局设置 → 备份/恢复

CLI – 全局
zmprov mcf zimbraBackupDeduplication dedupe
zmprov mcf zimbraBackupDedupeCompressionType zstd
zmprov mcf zimbraBackupCrossSessionDedupeEnabled FALSE
CLI – 服务器
zmprov ms `zmhostname` zimbraBackupDeduplication dedupe
zmprov ms `zmhostname` zimbraBackupDedupeCompressionType zstd
zmprov ms `zmhostname` zimbraBackupCrossSessionDedupeEnabled FALSE

重要提示:请勿混合使用新旧备份方法。


6. 启用/禁用 CSD
CLI
zmprov mcf zimbraBackupCrossSessionDedupeEnabled TRUE
zmprov ms <server_name> zimbraBackupCrossSessionDedupeEnabled TRUE

Autogroup 自动禁用 CSD。


7. CSD COMMON 创建和 zimbraBackupCSDReset

在以下情况下创建新的 COMMON:

  • 无现有 COMMON

  • 保留已过期

  • 属性已更改

  • CLI 强制

zimbraBackupCSDReset 是内部的,不应手动更改。


8. 为什么COMMON备份无法删除?如果 DELTA 备份依赖于

COMMON,则无法删除它。

日志警告:

Backup deletion skipped: CSD common backup <backup_label> is not eligible for deletion

首先删除 DELTA。


9. CLI 一次性备份
会话级重复数据删除
zmbackup -a all -f --dedupe
zmbackup -a all -f --dedupe --zstd
zmbackup -a all -f --dedupe --nocompression
CSD 备份
zmbackup -a all -f --csd
zmbackup -a all -f --csd --zstd
zmbackup -a all -f --csd --nocompression

强制新的通用:

zmbackup -a all -f --csdc

禁用 CSD 运行:

zmbackup -a all -f --nocsd

委托管理

全局管理员可以创建不同的委派管理员 角色。

委派管理员角色可以像拥有以下权限一样简单 管理一个或多个通讯组列表或重置忘记的密码 或多个用户,对一个或多个用户拥有域管理权限 域。

两个常用的委派管理员角色:域管理员和 通讯组列表管理员已定义。您可以添加 管理员无需进行其他配置即可担任这些预定义角色 必要的。

授予管理权限的目标类型

委派管理提供了一种定义访问控制限制的方法 目标并授予管理员在目标上执行任务的权限。

目标是一个 Zimbra Collaboration 对象,可以对其授予权限 授予。每个目标都与标识目标的目标类型相关联 您可以在目标上授予的访问控制条目的类型。

为目标选择目标类型时,请考虑以下事项:

  • 目标:您要向哪个特定目标授予权限?例如,如果 您选择的目标类型是“域”,您指的是哪个域?你 指定特定域名(目标名称 = example.com)。访问 对该目标授予控制条目 (ACE)。 ACE 存储在 目标条目的 LDAP 属性。

  • 您要授予的权利是否适用于所选目标类型? 一个 权限只能应用于相关的目标类型。例如, 创建帐户只能应用于域目标类型,并且设置 密码只能应用于帐户和日历资源目标 类型。如果授予的权利不适用于目标 目标,则忽略补助金。

  • 定义权限时,需要考虑权限的目标范围 授予的权利有效。例如设置密码的权限是 仅适用于帐户和日历资源,但如果此权利 包含在域目标权限列表中,对所有人有效 域中的帐户或日历资源。

表 57. 权限目标
目标类型 目标范围描述

帐户

帐户条目(特定用户)

日历资源

日历资源条目

COS

COS 条目

分发列表

包括通讯组列表以及该通讯组下的所有通讯组列表 分发列表。

如果该权限适用于帐户和日历资源,则所有帐户 以及直接或间接属于此成员的日历资源 分发列表。

适用于特定域,不适用于任何子域。

子域必须明确标记为目标。

当域为目标时,为所有帐户授予权限, 域中的日历资源和通讯组列表。

配置

授予特定于全局配置

全局 ACL

目标类型中所有条目的管理员权限。例如,你 可以将 ACE 添加到全局访问控制列表 (ACL),以授予 在域上创建帐户的权利。

被授予此权限的委派管理员帐户可以创建 系统中所有域的帐户。

服务器

服务器条目

Zimlet

Zimlet 条目

权限

权限是委派管理员可以或不可以执行的功能 在指定目标上执行。权利是系统定义的或授予的 在属性级别。

系统定义权限

系统定义权限类型包括:

  • 预设权限(预设)。例如,createAccount创建一个帐户; renameDomain,重命名域。

    预设权限与固定目标类型相关联。例如,createAccount是仅针对某个域的权利; renameAccount是一个权利 账户; getServer是服务器上的权限

    无需其他权限即可在目标上管理该操作。

    预设权限可能涉及访问多个目标。受资助者 需要对所有相关目标拥有足够的权利。例如,要 为帐户创建别名,受让人必须有权添加别名 帐户的别名以及在域上创建别名。

属性权限

在属性级别授予权限允许委派管理员/ 管理员组修改或查看(或不修改或查看)特定 目标上的属性。

属性权限类型包括:

  • 属性 (setAttrs) 权限允许域管理员修改 并查看属性值。例如,modifyAccount权利允许 域管理员可以修改该帐户的所有属性。

  • 获取属性权限(getAttrs) 让域管理员查看 属性值。例如,getAccount右边显示所有属性 对于用户的帐户。

授予的特定属性在目标上配置,并且 指定权限类型,读取(获取)或写入(设置)。

属性权可以以任意属性组合的形式授予 积极或消极的权利。这可以让你否定一些属性 授予。

组合权限

组合权限可以分配给任何目标类型,并且可以包括预设 权和属性权。您可以使用组合权限来授予多个 快速为目标赋予权利。

消极权利

权利可以是积极的,也可以是消极的。消极权利就是权利 特别拒绝受赠者。

  • 当管理员组被授予否定权限时,所有管理员组 该团体被剥夺了对目标和子目标的权利 权利被授予。

  • 当向可能或可能不会的管理员授予消极权利时 在管理员组中,特定管理员被拒绝该权限 授予权利的目标和子目标。

管理员组被授予域管理员权限,包括权限 在 Domain1 上创建帐户。 AdminA 在此管理员组中,但您想要 AdminA 拥有除创建权限之外的所有域管理员权限 账户。您将在 AdminA 上授予负createAccount权限 目标域1。

对于同一级别的赠款,消极权利始终优先。 对于 例如,AdminGroup1 被授予查看帐户的明确权限 域; AdminGroup2 被授予查看帐户的否定权限 相同的域。 AdminA 是两个管理组的成员。管理员A无法查看 该域中的任何帐户,因为否定权限优先。

对于不同级别的补助金,最具体的补助金需要 优先。例如,AdminA被授予否定查看权限 GroupDistributionList1 中的帐户,User1 是其中的成员。管理员A也是 授予直接在 User1 帐户上查看帐户的积极权利。在 这种情况下,AdminA可以查看User1的账户作为账户上的授权 目标比分发列表上的拨款更具体。

使用权限列表

系统权限在权限文件夹中列出并描述 管理控制台概述窗格。您可以使用权限文件夹来帮助 您定义要授予委派哪些系统定义的权限 管理员。此文件夹显示右侧的名称、目标 与该权利相关的类型、权利类型和简要说明。

当您在页面上选择一个右侧并单击它时,会显示另一个页面 更多信息:

  • 对于组合权限,与组合权限关联的权限列表 已列出。

  • 对于其他系统权限,与该权限关联的属性列表 右侧列出了

您可以使用zmprov命令查看组合权限。

  • 组合权利的直接子权利

    zmprov gr adminConsoleDLRights
  • 组合的二级子权利

    zmprov gr adminConsoleDLRights -e

查看系统定义的权限列表

您可以使用zmprov用于查看系统定义的特定权限的命令 主题:

表 58. 使用 zmprov
查看组合权限 使用此zmprov命令

帐户

zmprov gar -t account

日历资源

zmprov gar -t calresource

COS

zmprov gar -t cos

分发列表[1]


1。还可以在通讯组列表目标上授予帐户和日历资源的所有权限。当在通讯组列表上授予这些权限时,ACE 会将权限应用于通讯组列表中的所有直接或间接帐户或日历资源成员。
zmprov gar -t dl

zmprov gar -t domain

全局配置[2]


2。还可以在域目标上授予帐户和日历资源的所有权限。 通讯组列表的所有权限也可以在域目标上授予。 在域上授予权限后,ACE 会将权限应用于域中的所有直接或间接帐户日历资源以及通讯组列表的成员。
zmprov gar -t config

全球拨款[3]


3。所有其他目标的所有权利也可以授予全局目标。当对全局授权条目授予任何权限时,ACE 会将权限应用于系统上的所有条目。例如,如果您在全局授权条目上向 AdminA 授予 createAccount(这是域权限),则 AdminA 可以在系统上的所有域中创建帐户。
zmprov gar -t global

服务器

zmprov gar -t server

Zimlets

zmprov gar -t zimlet

实施委派管理

在创建委派管理员并授予权限之前,请定义 角色以及管理员将分配给目标的权限 管理。

为了更有效地管理委派管理员,请创建 管理员组并将个人管理员帐户添加到 组。管理员组允许您创建基于角色的访问权限 控制。具有相同或几乎相同职责的管理员 可以分为一个管理组。

可以在以下其中一项中设置委派管理权限 方法:

  • 创建管理员或管理员组并授予权限 使用管理员向导的帐户。

  • 在现有管理员帐户上配置授权。添加新权利或 修改现有委派管理员或管理员组的权限 帐户。

  • 直接在目标的访问控制列表中添加、修改和删除权限 页。

管理员组和管理员

管理员和组管理员帐户在 管理控制台。

使用管理向导

  1. 创建管理员组或管理员帐户。

    1. 管理组是启用了管理组的通讯组列表 (DL), 这将其标记为委派管理员 DL。进入管理员组后 管理员已创建并配置了权限和管理视图,您 将管理员用户帐户添加到管理员组。

    2. 管理员帐户是在 帐户。

  2. 配置帐户的管理视图。您可以从以下位置选择视图 直接分配的管理员视图列表。管理视图代表的项目 委派管理员登录管理控制台时会看到。

    直接分配的管理员视图是在管理员帐户上设置的视图。安 继承的管理员视图是在帐户所属的管理员组上设置的视图 到。

  3. 配置授权。授权对话框显示授权列表 需要显示您在直接分配的视图中选择的项目 列。您可以接受这些权利并添加其他权利,跳过此步骤 页面以不配置这些权限,或单击完成接受这些权限 权限并退出向导。

配置管理员帐户或管理组的授权

您可以管理授予管理员或管理员的权限 通过帐户工具栏上的“配置拨款”链接进行分组。当你 点击配置授权在管理帐户地址工具栏上, 内容窗格显示直接和继承赠款的列表。您可以授予 权限、修改权限或删除现有管理员帐户的权限。

向目标授予 ACL

当您想要在目标上添加特定受让人或特定权限时,您可以 可以直接编辑目标。每个目标都有一个 ACL 页面,其中列出了 授予 ACL。您可以添加、编辑或删除目标的授权。 的 管理帐户(受让人)已更新以反映更改。

撤销权限

全局管理员可以撤销授予管理员的任何权限。

Home → Manage → Accounts

打开所需的管理员帐户并单击配置授予.

  1. 选择正确的撤销并单击删除.

  2. 当对话框询问是否确定时,单击.

如果权限是通过以下方式创建的,则委派管理员可以撤销权限 的可以向其他管理员授予权限已启用。

暂时撤销委派的管理员权限

要暂时撤销对委派管理员帐户的权限,您可以 编辑管理员帐户并删除旁边的复选框 管理员字段。 ACL 不会从帐户中删除。

查看授予管理员的权限

管理员帐户或管理员组帐户工具栏中的“查看权限”链接 显示授予的权限、可读属性和可修改属性 与特定目标相关。单击选项卡可查看权限 不同的目标。

授予预定义权限

可以为委派管理员分配常见任务的预定义权限。一个常见的示例是创建只能重置密码的帮助台管理员。

Home → Manage → Accounts → Delegated Administrator

已预定义以下常用权限,并计划在将来添加更多权限。

域管理员

当管理员被分配域管理员预定义权限时,管理员可以访问管理域的管理员所需的所有常用功能。将此权限分配给用户相当于分配以下权限和视图:

  • 分配的权限

    • domainAdminRights

    • getDomainQuotaUsage

  • 分配的视图

    • accountListView

    • downloadsView

    • DLListView

    • 别名列表视图

    • 资源列表视图

    • 域列表视图

    • 证书视图

    • saveSearch

重置密码

当管理员被分配了重置密码预定义权限时,管理员可以访问重置组织密码的管理员所需的所有常用功能。将此权限分配给用户相当于分配以下权限和视图:

  • 分配的权限

    • listDomain

    • listAccount

    • countAccount

    • countAlias

    • countCalendarResource

    • countDistributionList

    • listDistributionList

    • listAlias

    • changeAccountPassword

  • 分配的视图

    • accountListView

    • downloadsView

    • DLListView

    • aliasListView

    • resourcesListView

    • saveSearch

编辑联系信息

当管理员被分配编辑联系人信息预定义权限时,管理员可以访问需要编辑用户联系信息的管理员所需的所有常用功能。将此权限分配给用户相当于分配以下权限和视图:

  • 分配的权限

    • listDomain

    • listAccount

    • countAccount

    • countAlias

    • countCalendarResource

    • countDistributionList

    • listDistributionList

    • listAlias

    • getAccountInfo

    • domainAdminConsoleAccountsContactTabRights

  • 分配的视图

    • accountListView

    • downloadsView

    • DLListView

    • aliasListView

    • resourcesListView

    • saveSearch

预定义委派管理员角色

创建以下预配置的管理员组 自动。您可以将管理员帐户分配给这些组。

域管理组

zimbradomainadmins委派管理组授予所有权限 支持 Zimbra Collaboration 域管理所必需的 帐户、别名、通讯组列表和资源。

属于以下组织的管理员zimbradomainadmins群组可以创建 并管理帐户,包括设置帐户配额、别名、 通讯组列表以及其域中的资源帐户。

当域管理员登录管理控制台时,仅 他们有权管理的功能显示在控制台上 导航窗格。

对于域管理员,所有任务均从管理执行 控制台。为了方便轻松登录,当委派管理员帐户时 创建后,他们的经典 Web 应用程序帐户可以有一个指向管理的链接 控制台。

该链接是从zmprovCLI

zmprov md {server.example.com} zimbraWebClientAdminReference {https://server.example.com:7071/}
仅经典 Web 应用程序支持此功能。

通讯组列表管理组

zimbradladmin委派管理组授予所有必要的权限 登录管理控制台并管理通讯组列表。

属于该组的管理员可以

  • 查看帐户列表

  • 创建新通讯组列表和删除通讯组列表

  • 添加、编辑和删除通讯组列表中的成员

创建委派管理员角色

管理多个域

要让一名域管理员管理多个域,您可以指定 管理员帐户管理各个域的权限或 管理员组。

例如,设置domanadministrator1@example.com来管理 域示例1.com 和域示例2.com。创建一个新的管理员帐户 在要管理的域之一上。

  1. 在要管理的域之一上创建管理员帐户 (domainexample1.com)

  2. 选择域管理员管理域所需的视图。 选择视图后,与这些视图关联的权限 自动显示在“配置授权”对话框中。

  3. 如果该域的授权与 与您选择的视图关联的补助金。

  4. 添加另一个要管理的域 (domainexample2.com)。

    • 在配置授予页面上,单击添加

    • 选择目标类型为

    • 输入目标的域名 (domainexample2.com)

    • 对于正确类型,选择系统定义的正确

    • 对于正确名称类型,选择 adminConsoleAccountRights。 是正数 应该被选择。

    • 单击添加及更多

    • 再次显示添加 ACE页面,并且正确名称字段为空。 键入adminConsoleDLRights并单击添加和更多。

    • 继续添加以下权限名称:

      • adminConsoleAliasRights

      • adminConsoleResourceRights

      • adminConsoleSavedSearchRights

      • adminConsoleDomainRights

    • 在最后一个右侧之后,单击添加并完成。配置补助金 对话框显示与目标域关联的这些权限。如果你是 添加另一个要管理的域,请单击添加和更多。重复步骤 4。如果 不,请单击完成.

管理通讯组列表

要指定用户来管理通讯组列表,您需要创建一个通讯组 列出并启用管理组,选择视图,授予通讯组列表 权限,将用户添加到列表中并使该用户成为管理员。

  1. 创建一个新的通讯组列表:

    • 检查管理组

    • 添加将成为管理员的用户作为 DL 的成员。

    • 转到管理视图页面并检查分发列表视图所以管理员 可以查看通讯组列表。

    • 单击保存.

  2. 配置授予页面中,添加以下权限。

    表 59. 权限
    正确名称 目标类型 目标 正确类型

    The following right let the administrator manage distribution lists.

    listDistributionList

    dl

    DL 电子邮件地址

    SD 右

    addDistributionListAlias

    dl

    DL 电子邮件地址

    SD 右

    addDistributionListMember

    dl

    DL 电子邮件地址

    SD 右

    modifyDistributionList

    dl

    DL 电子邮件地址

    SD右

    getDistributionListMembership

    dl

    DL 电子邮件地址

    SD 右

    removeDistributionListMember

    dl

    DL 电子邮件地址

    SD 右

    This domain right displays user account list that the administrator can select from to add to a distribution list.

    listAccount

    域名

    DL 电子邮件地址

    SD 右

更改密码

要创建仅更改密码的委派管理员,您可以创建 管理员或管理员组,选择视图并授予设置的帐户 密码组合正确。

  1. 选择以下视图

    • 帐户列表视图能够选择帐户来更改密码

    • 别名列表视图能够查找使用别名而不是帐户的用户 帐户名。

  2. 配置授权页面显示视图的建议授权 你已经选择了。对于更改密码权限,请勿配置这些 补助金。选择跳过。单击添加添加以下权限:

    权限名称 目标类型 目标 权限类型

    setAccountPassword

    域名

    SD 权限

查看邮件访问权限

查看邮件访问权限即可被授予帐户、域和 分发列表。

正确名称 目标类型 目标 正确类型

adminLoginAs

帐户、域、dl

帐户、域或通讯组列表地址

SD 正确[4]


4。要拒绝目标上的“查看邮件”权限,请选中为否定权限(拒绝)复选框

要防止管理员查看具有域或域的帐户 分发列表,分配帐户的为负数。

管理分配给用户的服务类别

您可以扩展域管理员角色以能够查看和更改 分配给用户的服务等级 (COS)。添加管理权限 域的 COS,为域管理员添加以下权限 帐户或域管理员管理组。

为域中的每个 COS 添加系统定义的权限。

表 60. COS 的系统定义权限
权限名称 目标类型 目标 权限类型

listCos

cos

COS 名称

SD 右

getCos

cos

COS 名称

SD 右

assignCos

cos

COS 名称

SD 右

This domain right displays the COS information in the user account’s General Information page.

zimbraCOSId

域名

属性权
动词:
增强现实目标:帐户

此角色创建可以运行搜索的委派管理员角色 用于搜索帐户的邮件档案或实时邮件的邮件工具。这也 允许管理员创建、中止、删除、清除或获取状态 跨邮箱搜索请求。

必须安装存档和发现功能才能使用此功能 工作。
正确名称 目标类型 目标 右型

adminConsoleCrossMailboxSearchRights

(组合)

可以运行跨邮箱搜索的服务器名称

SD Right

对于完整功能,此角色包括创建新的能力 帐户,以便管理员可以创建目标邮箱来接收 搜索结果。如果你不希望这个角色有创建的能力 帐户,同时授予以下消极权利。

正确名称 目标类型 目标 正确类型

CreateAccount

域名

SD 正确[5]


5。要拒绝目标上的“创建帐户”权限,请选中为否定权限(拒绝)复选框

如果您希望该管理员也查看目标邮箱的结果 跨邮箱搜索,授予仅查看该邮箱的权限。

正确名称 目标类型 目标 右键键入

adminLoginAs

帐户

跨邮箱搜索目标帐户名

SD 右键[6]


6。要拒绝目标上的“查看邮件”权限,请选中为否定权限(拒绝)复选框

管理 Zimlet

该角色创建一个委派管理员角色,可以创建、部署 并查看 Zimlets。

正确名称 目标类型 目标 权限类型

adminConsoleZimletRights

服务器、域

服务器名称或域名

SD 权限

adminConsoleAccountsZimletsTabRights

服务器、域

服务器名称或域名

SD 权限

管理资源

此角色创建一个委派管理员,可以创建和管理 资源。

权限名称 目标类型 目标 权限类型

adminConsoleResourceRights

组合

服务器名称或域名

SD 权限

对已保存搜索的访问权限

此角色创建可以访问所有搜索的委派管理员 保存在管理控制台导航窗格、搜索中的搜索 部分。

正确名称 目标类型 目标 正确类型

adminConsoleSavedSearchRights

组合

服务器名称或域名

SD 权限

访问服务器状态页面

该角色创建可以访问服务器的委派管理员 状态页面。除了授予此权利外,您还必须选择 管理员视图,全局服务器状态视图.

正确名称 目标类型 目标 右类型

adminConsoleServerStatusRights

全局

SD 右

配置为全局管理员帐户的帐户不能 授予 ACL。全局管理员帐户自动拥有完全权限 关于 Zimbra 合作。如果全局管理员账户添加了ACL, 被忽略。如果委派管理员帐户更改为全局帐户 管理员帐户,与该帐户关联的任何 ACL 都将被忽略。

Zimlets

Zimlet 是一种将 Zimbra 与不同第三方应用程序集成的机制,以增强 Zimbra Classic Web 应用程序的用户体验。 借助 Zimlets,用户可以在电子邮件中查看信息并与第三方应用程序进行交互。 通过修改服务等级 (COS),用户可以从 Zimbra Classic Web 应用程序概述窗格中使用 Zimlet。

经典 Web 应用程序仅列出经典 zimlet。

Zimbra 包含几个预定义的 Zimlet。您还可以创建 Zimlet 或从 Zimbra 网站上的 Zimlet Gallery 下载它们。

管理控制台主页配置Zimlets,为现代 Web 应用程序开发的 zimlet 有(现代)描述.

经典 Web 应用程序中的默认 zimlet

经典 Web 应用程序仅列出

预定义 Zimlet,启用后,用户可以在经典 Web 应用程序中预览以下内容:

  • 将鼠标悬停在日期或时间上,然后查看日历中的内容。

  • 将鼠标悬停在姓名或电子邮件地址上,即可查看地址簿中该姓名的详细信息。

  • 右键单击​​电话号码即可使用软件电话拨打电话。

  • 右键单击​​日期以安排会议。

  • 右键单击​​姓名、地址或电话号码以更新地址簿信息。

从管理控制台管理 Zimlet

可从 Zimbra 管理控制台执行以下 Zimlet 管理任务。

  • 部署 Zimlet,这会在 LDAP 服务器中创建 Zimlet 条目, 在服务器上安装 Zimlet 文件,启用 Zimlet 并使其可供默认 COS 的成员使用。

  • 使每个 COS 或帐户的 Zimlet 可用或不可用。

  • 强制使用 Zimlet。

  • 禁用 Zimlet,将其保留在服务器上,但不使用 Zimlet。

  • 取消部署 Zimlet,这会将其从 COS 列表和 Zimlet 列表中删除,但不会从服务器中卸载 Zimlet。

您无法从管理控制台卸载 Zimlet。

部署自定义 Zimlet

您可以从 Zimbra 网站上的 Zimlet Gallery 下载并部署自定义 Zimlet。部署 Zimlet 后,默认 COS 中的每个人都可以立即使用它。如果 Zimlet 未直接部署到另一个 COS,COS 会显示 Zimlet,但它们不会启用。

管理控制台:

主页 → 配置 → Zimlets,来自齿轮图标 选择部署

  1. 浏览到要部署的 Zimlet,然后单击部署.

    Zimlet 将部署到服务器。将显示一个对话框,指示部署 Zimlet 的服务器名称以及部署的状态。

  2. 单击完成.

    通过查看 Zimlet 页面验证 Zimlet 是否已启用。

启用、禁用或强制 Zimlet

您可以启用、禁用 Zimlet 或强制使用 Zimlet。您还可以使用切换功能来选择是否将已安装的 Zimlet 可供用户选择。

管理控制台:

主页 → 配置 → 服务等级 →COS→ Zimlets

表 61. Zimlet 操作状态设置。
设置 说明

强制

Zimlet 将始终在用户帐户中启用。用户在其 Zimlet 页面上看不到这些 Zimlet。

已禁用

Zimlet 不会立即对关联 COS 中的用户可用。

已启用

将启用所有已部署的 Zimlet。

用户可以从其帐户的启用或禁用可选的 Zimlet 首选项 → Zimlets页面。如果您将 Zimlet 选择为强制,则用户无法将其禁用。

取消部署 Zimlet

取消部署 Zimlet 时,将从所有 COS 中删除它,然后从 LDAP 中删除。

管理控制台:

主页 → 配置 → Zimlets

  1. 选择一个Zimlet取消部署。

  2. 来自齿轮图标菜单选择取消部署.

  3. 单击确认。

将代理允许的域添加到 Zimlet

代理允许的域允许您配置可以通过 Zimlet 访问哪些外部域。对于 Zimbra 中包含的 Zimlet,已配置允许代理的域。如果您下载并部署其他 Zimlet,则可以添加其他代理域名。

管理控制台:

主页 → 配置 → 服务等级

  1. 选择COS进行编辑。

  2. 高级中页面,向下滚动到代理允许的域 部分。

  3. 单击添加域添加域。

  4. 单击保存.

升级 Zimlet

使用与部署新 Zimlet 相同的步骤来升级自定义 Zimlet。新的齐姆莱特zip文件应与现有 Zimletzip文件同名。

管理控制台:

主页 → 配置 → Zimlets,来自齿轮图标选择部署

  1. 检查刷新 Zimlet 缓存,以便使用升级后的 zimlet。

  2. 浏览到齐姆莱特您想要升级,然后单击部署.

  3. 单击完成.

从命令行界面管理 Zimlet

可从命令行界面执行以下 Zimlet 管理任务。

部署 Zimlet

部署 Zimlet 后,默认 COS 中的每个人都可以立即使用它。如果 Zimlet 没有直接部署到另一个 COS, COS 显示 Zimlet,但它们未启用。

使用 CLI 部署 Zimlet,包括在部署之前修改 COS。

  1. 选择一个 Zimlet 并将 Zimletzip文件复制到 Zimbra 服务器上的/tmp文件夹。

  2. 以 zimbra 用户身份登录su - zimbra

  3. 部署 Zimlet

    zmzimletctl deploy /tmp/<zimlet>.zip

将代理允许的域添加到 Zimlet

部署 Zimlet 时,COS 属性zimbraProxyAllowedDomains, 必须为 Zimlet 可能调用以获取信息的域地址设置。

要设置zimbraProxyAllowedDomains属性,请键入:

zmprov mc <COSname> +zimbraProxyAllowedDomains '*.example.com'

必须在*之前添加example.com.

这必须应用于启用了 Zimlet 的所有 COS。

部署 Zimlet 并授予对 COS 的访问权限

使用本节中的步骤将 Zimlet 部署到默认之外的一个或多个 COS:

  1. 以 zimbra 用户身份登录:su – zimbra

  2. 将 Zimlet 文件从库复制到/tmp文件夹。

  3. 将 Zimlet 安装到默认 COS:

    zmzimletctl deploy /tmp/<zimlet>.zip
  4. 要将 zimlet 部署到其他 COS,请运行:

    zmzimletctl acl <zimletname> <cosname1> grant

    这将为cosname1授予权限。您还可以在同一命令行上授予对多个 COS 的访问权限:

    zmzimletctl acl <zimletname> <cosname1> grant <cosname2> grant
  5. 要允许此 zimlet 使用允许的代理域,请在每个 COS 上运行以下命令并添加允许的域。

    zmprov mc <COSname1> +zimbraProxyAllowedDomains '*.example.com'
    zmprov mc <COSname2> +zimbraProxyAllowedDomains '*.example.com'

查看已安装的 Zimlet

使用zmzimletctl命令查看当前安装的 Zimlet:

zmzimletctl listZimlets all

此命令的输出显示服务器上安装的 Zimlet, 安装在 LDAP 中,以及由 COS 提供的。

更改 Zimlet 配置

某些 Zimlet 在部署后可能需要其他配置。

Zimlet 配置模板允许您对配置模板进行更改,然后在 Zimbra 服务器上安装新的配置文件。

使用本节中的步骤更改 Zimlet 配置:

  1. 提取配置模板:

    zmzimletctl getConfigTemplate <zimlet.zip>
  2. 在模板中进行所需的更改,注意仅更改所需的区域,然后保存文件。

    如果您有多个自定义 Zimlet,请在更新 LDAP 中的配置之前重命名配置 template.xml 文件,以免覆盖文件。
  3. 使用zmzimletctl命令更新 LDAP 中的配置。 如果更改了配置模板的名称,请替换 config_template.xml使用新名称。

    zmzimletctl configure config_template.xml

升级 Zimlet

使用与部署新 Zimlet 相同的步骤来升级自定义 Zimlet。

新的 Zimletzip文件的名称应与现有 Zimlet 的名称相同 zip文件。

使用本节中的步骤升级 Zimlet:

  1. 将 Zimletzip文件复制到/opt/zimbra/zimlets-extra文件夹, 替换旧版本。

  2. 部署 Zimlet

    zmzimletctl deploy <zimlet.zip file name>

    Zimlet 将复制到/opt/zimbra/zimlets-deployed文件夹。如果您的 Zimlet 包含.jsp文件,则.jsp文件也会复制到 /opt/zimbra/jetty/webapps/zimlet/<zimletnamefolder>.

  3. 为了确保新版本的可用性,请刷新缓存:

    zmprov flushCache zimlet

您可以从 Zimbra 网站上的 Zimlet Gallery 下载并部署 Zimlet。转至https://www.zimbra.org/extend/并滚动浏览 Zimbra Gallery 部分的扩展。

开发定制 Zimlet

要开发您自己的自定义 Zimlet,请参阅 Zimbra Wiki 上的 Zimlet 开发人员指南,网址为https://www.zimbra.com.cn.

为现代 Web 应用程序配置 Zimlet

Zimlet 是增强现代 Web 应用程序功能的插件。 zimlet 需要先进行配置和授权,然后才能将其与 Modern Web App 一起使用。

现代 Web 应用程序仅列出现代 zimlet。

现代 Web 应用程序中的默认 zimlet

对于现代 Web 应用程序,默认 Zimlet 允许用户执行以下任务:

  • 从以前的备份中恢复联系人

  • 为回复、转发或新电子邮件添加其他签名

  • 检测给定内容中的日期并在鼠标悬停时提供当天的事件列表

  • 使用 Zimbra 作为渐进式 Web 应用程序

  • 订阅外部日历源

  • 在设置中添加一个选项以更改 Zimbra 中的默认客户端

为现代 Web 应用程序开发的 Zimlet 具有(现代的)在描述中。

配置 LDAP

本节是配置zm-oauth-social必要的 LDAP 属性的基本指南。 假设具备基本的 Zimbra Collaboration CLI 知识。

以下示例可用作配置所需 LDAP 属性以启用 zm-oauth 服务的起点。

作为 Zimbra Collaboration 用户,这些属性可以全局应用(如以下示例所示),也可以应用于特定域。

基本信息

用户 OAuth 令牌配置的基本模板

zimbraOAuthConsumerRedirectUri是应用程序在 oauth 流程期间的中继(即社交媒体网站将向用户发送一次性使用代码以继续 oauth 流程)。 LDAP 值的左侧部分必须与应用程序的白名单匹配。

zmprov mcf +zimbraOAuthConsumerRedirectUri 'https://<zimbra-hostname>:<port>/service/extension/oauth2/authenticate/<client>:<client>'

zimbraOAuthConsumerCredentials是应用程序的凭据 —由社交媒体应用程序设置提供。verification_token可能会排除除 Zoom 之外的所有客户端。 这些凭证将 oauth 流绑定到特定应用程序。 最终用户使用 clientId 来请求 oauth 代码,然后 Zimbra 协作服务器使用 clientId + clientSecret 将该代码交换为 access_token。

zmprov mcf +zimbraOAuthConsumerCredentials '<clientId>:<clientSecret>[:<verification_token>]:<client>'

zimbraOAuthConsumerAPIScope 是应用程序指定身份验证类型(caldav、contact、noop)所需的范围。 这些范围确定在 oauth 流程的社交媒体网站阶段向授权用户请求哪些权限。

zmprov mcf +zimbraOAuthConsumerAPIScope '<scope><delimiter><scope><delimiter>. . .:<client>_<type>'

客户端示例

Dropbox 示例
以下是 Dropbox 所需的配置。
zmprov mcf +zimbraOAuthConsumerRedirectUri 'https://your.mail.server.host.here/service/extension/oauth2/authenticate/dropbox:dropbox'
zmprov mcf +zimbraOAuthConsumerCredentials 'yourDropboxClientIdHere:yourDropboxClientSecretHere:dropbox'

参见设置 Dropbox有关获取客户端 ID 的说明客户端密钥.

Google 示例
以下是所需的基本谷歌配置。
zmprov mcf +zimbraOAuthConsumerRedirectUri 'https://your.mail.server.host.here/service/extension/oauth2/authenticate/google:google'
zmprov mcf +zimbraOAuthConsumerCredentials 'yourGoogleClientIdHere:yourGoogleClientSecretHere:google'
zmprov mcf +zimbraOAuthConsumerAPIScope 'https://www.googleapis.com/auth/drive:google_noop'

参见设置 Google 云端硬盘以获取有关获取客户端 ID客户端密钥.

微软示例
以下是所需的基本 Microsoft 配置。
zmprov mcf +zimbraOAuthConsumerRedirectUri 'https://your.mail.server.host.here/service/extension/oauth2/authenticate/outlook:outlook'
zmprov mcf +zimbraOAuthConsumerCredentials 'yourMSClientIdHere:yourMSClientSecretHere:outlook'
zmprov mcf +zimbraOAuthConsumerAPIScope 'profile+User.Read+Files.ReadWrite.All:outlook_noop'

请参阅设置 OneDrive了解有关获取客户端 ID 和客户端密钥的说明。

Slack 示例
以下是 slack 所需的配置。仅当对 noop 作用域执行授权时才应用作用域。
zmprov mcf +zimbraOAuthConsumerRedirectUri 'https://your.mail.server.host.here/service/extension/oauth2/authenticate/slack:slack'
zmprov mcf +zimbraOAuthConsumerCredentials 'yourSlackClientIdHere:yourSlackClientSecretHere:slack'
zmprov mcf +zimbraOAuthConsumerAPIScope 'groups:write,team:read,users:read,users:read.email,chat:write,mpim:write:slack_noop'

请参阅设置 Slack以获取有关获取客户端 ID客户端密钥.

缩放示例
以下是缩放所需的配置。仅当对 noop 作用域执行授权时才应用作用域。
zmprov mcf +zimbraOAuthConsumerRedirectUri 'https://your.mail.server.host.here/service/extension/oauth2/authenticate/zoom:zoom'
zmprov mcf +zimbraOAuthConsumerCredentials 'yourZoomClientIdHere:yourZoomClientSecretHere:yourZoomVerificationTokenHere:zoom'
zmprov mcf +zimbraOAuthConsumerAPIScope 'meeting:write:zoom_noop'
zmprov mc default +zimbraProxyAllowedDomains 'api.zoom.us'

上述代码块的最后一行允许 Zimbra Collaboration 代表默认服务类别 Zimbra Collaboration 帐户向 Zoom API 执行 Zoom zimlet 的代理请求。 这对于 Zoom Zimlet 的基本操作是必要的。 如果其他服务类别的用户应该具有访问权限,则这也可以应用于这些服务。

参见设置 Zoom了解有关获取客户端 ID、客户端密钥和验证令牌的说明。

域配置
详细信息

配置单个域的凭据将覆盖从该域的全局配置继承的凭据。因此,可以仅配置凭据,并允许域继承重定向 uri 和范围(如果全局应用程序和域应用程序之间的这些配置都不应有所不同)。

Dropbox 示例
以下是在 Zimbra 协作域example.zimbra.com:
zmprov md example.zimbra.com +zimbraOAuthConsumerRedirectUri 'https://your.mail.server.host.here/service/extension/oauth2/authenticate/dropbox:dropbox'
zmprov md example.zimbra.com +zimbraOAuthConsumerCredentials 'yourDropboxClientIdHere:yourDropboxClientSecretHere:dropbox'

设置 Dropbox 上应用 Dropbox 应用凭据的示例,该凭据没有额外的范围要求

创建 Dropbox 应用程序
  1. 访问Dropbox 应用程序控制台

  2. 选择创建应用程序。

  3. 选择具有完全 Dropbox 访问权限的 Dropbox API,命名您的应用程序,然后单击创建应用程序。

  4. 在 OAuth 2 部分中调整和配置以下重定向 URL:

    1. https://<hostname>/service/extension/oauth2/authenticate/dropbox

    2. https://<hostname>/@zimbra/service/extension/oauth2/authenticate/dropbox

  5. 在选择器/保护程序域部分中调整和配置相关主机名。

  6. 填写申请表品牌信息和描述。

  7. 单击启用其他用户,以便其他人可以使用该应用程序进行授权。

在 Zimbra Collaboration 中配置新的应用程序凭据
  1. 从“设置”选项卡获取应用程序密钥和应用程序密钥。

  2. 请参阅配置 LDAP.

设置 Google 云端硬盘

创建 Google API 应用程序
  1. 访问Google API 控制台.

  2. 从顶部导航栏的项目下拉菜单中选择“选择项目”。

  3. 选择新项目。

  4. 配置项目名称(以及可选的组织位置)。

  5. 选择 + 启用 API 和服务

  6. 搜索 Google Drive,然后选择 Google Drive API。

  7. 选择启用。

  8. 选择 Google API 以返回 API 和服务菜单。

  9. 通过左侧导航菜单导航至 API 和服务部分:OAuth 同意屏幕。

  10. 选择内部或外部应用程序类型,然后配置基本应用程序信息。

  11. 选择添加范围,然后启用与 Google 云端硬盘相关的所有范围。

  12. 将邮件服务器的主机添加为授权域。

  13. 选择保存。

  14. 通过左侧导航菜单导航至 API 和服务部分:凭据。

  15. 选择“+ 创建凭据”,然后选择 OAuth 客户端 ID。

  16. 选择 Web 应用程序作为应用程序类型。

  17. 配置应用程序名称。

  18. 在授权 JavaScript 来源下选择 + 添加 URI,然后调整并添加邮件服务器的主机名(将“主机名”替换为您的 Zimbra 协作服务器的公共主机名):

    1. https://hostname

  19. 在授权重定向 URI 下选择 + 添加 URI,然后调整并添加以下重定向 URI(将“<主机名>”替换为您的 Zimbra 协作服务器的公共主机名):

    1. https://<hostname>/service/extension/oauth2/authenticate/google

    2. https://<hostname>/@zimbra/service/extension/oauth2/authenticate/google

  20. 选择“创建”,然后复制客户端 ID 和客户端密钥。

在 Zimbra Collaboration 中配置新的应用程序凭据
  1. 从“设置”选项卡获取应用程序密钥和应用程序密钥。

  2. 请参阅配置 LDAP.

设置 OneDrive

创建 Microsoft Azure 应用程序
  1. 访问Azure 门户.

  2. 搜索并选择“应用程序注册”。

  3. 选择新注册。

  4. 配置应用程序名称。

  5. 在支持的帐户类型下,选择任何组织目录中的帐户和个人 Microsoft 帐户。

  6. 调整并添加以下重定向 URL(将“<主机名>”替换为 Zimbra 协作服务器的公共主机名):

    1. https://<hostname>/service/extension/oauth2/authenticate/outlook

  7. 选择注册。

  8. 导航至“管理”部分:通过左侧导航菜单进行身份验证。

  9. 选择添加 URI,然后调整并添加以下重定向 URL(将“<主机名>”替换为 Zimbra 协作服务器的公共主机名),然后单击保存:

    1. https://<hostname>/%40zimbra/service/extension/oauth2/authenticate/outlook

  10. 通过左侧导航菜单导航到管理部分:API 权限。

  11. 添加所需的 Microsoft Graph 委派权限,然后单击“保存”:

    1. email

    2. offline_access

    3. openid

    4. profile

    5. Files.ReadWrite.All

    6. User.Read

  12. 通过左侧导航菜单导航至“管理”部分:“证书和机密”。

  13. 选择新客户端密钥,添加描述,并且没有过期。

  14. 重复此任务,删除先前创建的条目,直到Value创建没有:的文件(出于兼容性原因,秘密不得包含冒号),然后单击保存.

    在 Zimbra 中配置新的应用程序凭据

  15. 获得Application (client) ID通过左侧导航菜单从Overview中,以及Client Secret来自管理部分:Certificates & secrets通过左侧导航菜单。

在 Zimbra Collaboration 中配置新的应用程序凭据
  1. 从“设置”选项卡获取应用程序密钥和应用程序密钥。

  2. 请参阅配置 LDAP.

设置 Slack

创建 Slack 应用程序
  1. 创建应用程序后,访问Slack 应用程序管理

  2. 配置基本信息部分。

  3. 通过左侧导航菜单导航至“功能”部分:OAuth 和权限。

  4. 添加所需的机器人令牌范围:

    1. chat:write

  5. 添加所需的用户令牌范围:

    1. chat:write

    2. groups:write

    3. mpim:write

    4. team:read

    5. users:read

    6. users:read.email

  6. 调整并添加以下重定向 URL(将“<hostname>”替换为 Zimbra Collaboration 服务器的公共主机名):

    1. https://<hostname>/service/extension/oauth2/authenticate/slack

    2. https://<hostname>/@zimbra/service/extension/oauth2/authenticate/slack

  7. 在功能部分配置机器人名称:应用程序主页。

在 Zimbra Collaboration 中配置新的应用程序凭据
  1. 从“设置”选项卡获取应用程序密钥和应用程序密钥。

  2. 请参阅配置 LDAP.

设置缩放

Zoom 应用市场最近禁用了 Zimbra 的 Zoom 集成。我们正在对此进行进一步评估,并将根据评估结论更新文档。
要使 Zoom 与 Zimbra Collaboration 配合使用,服务器必须配置临时存储.
创建 Zoom 应用程序
  1. 以组织所有者或具有开发人员角色的组织帐户身份登录 Zoom。

  2. 访问Zoom 应用程序管理

  3. 选择开发 → 构建应用程序 → OAuth → 创建

  4. 配置应用程序名称,打开用户管理的应用程序,保留发布意图,然后单击创建。

  5. 通过左侧导航菜单导航至“应用程序凭据”部分。

  6. 将以下重定向 URL 添加到生产部分(将“<主机名>”替换为您的 Zimbra 协作服务器的公共主机名):

    1. https://<hostname>/service/extension/oauth2/authenticate/zoom

  7. 添加以下白名单 URL(将“<主机名>”替换为您的 Zimbra 协作服务器的公共主机名):

    1. https://<hostname>/service/extension/oauth2/authenticate/zoom

    2. https://<hostname>/@zimbra/service/extension/oauth2/authenticate/zoom

  8. 通过左侧导航菜单导航至信息部分。

  9. 配置取消授权通知端点 URL(将“<主机名>”替换为 Zimbra 协作服务器的公共主机名):

    1. https://<hostname>/service/extension/oauth2/deauthorization/zoom

  10. 通过左侧导航菜单导航至“范围”部分。

  11. 添加所需的范围:

    1. Meeting:write

    2. user:read

  12. 通过左侧导航菜单导航到“提交”部分。

  13. 生成可发布 URL,然后离开提交页面(如果用于单个 Zoom Organization 帐户,请勿提交应用程序)。

在 Zimbra Collaboration
  1. 中配置新的应用程序凭据 从“设置”选项卡获取应用程序密钥和应用程序密钥。

  2. 请参阅配置 LDAP.

设置 NextCloud

为了便于理解这些步骤,我们将在本节中参考以下示例:

NextCloud 服务器 - nextcloud.server.com

Zimbra 服务器 - myzimbra.server.com

域名 - example.com

如果您已经有可用的 NextCloud 服务器设置,则可以跳过步骤 #1。
  1. 按照此视频设置 NextCloud 服务器 -https://www.youtube.com/watch?v=QXfsi0pwgYw

  2. 在 Zimbra 服务器上安装 NextCloud zimlet 及其依赖项:

    1. 要在 Red Hat 和 CentOS 上安装,请运行:

      yum install zimbra-zimlet-nextcloud
    2. 要在 Ubuntu 上安装,请运行:

      apt-get install zimbra-zimlet-nextcloud
    3. 重新启动 zmmailbox 服务器:

      su - zimbra
      zmmailboxdctl restart
  3. 在 NextCloud 服务器上,更新/etc/httpd/conf.d/nextcloud-ssl.conf

    RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
  4. 中的以下配置 登录到 NextCloud 服务器 URLhttps://nextcloud.server.com并导航到设置 → 管理 → 安全。

    1. 暴力 IP 白名单部分中,指定 Zimbra 服务器的 IP 范围。

    2. OAuth 2.0 客户端部分中,指定 Zimbra 服务器的名称和重定向 URL。例如:

      指定名称 -My Zimbra Server

    3. 复制客户端标识符以及上面输入的客户端的客户端密钥字段。这将用于在下一步中更新 LDAP 相关配置。

  5. 要为域example.com启用 NextCloud,请通过执行以下命令为其添加 LDAP 条目:

    zmprov md example.com zimbraOAuthConsumerCredentials <Client Identifier>:<Client Secret>:nextcloud
    zmprov md example.com zimbraOAuthConsumerRedirectUri https://myzimbra.server.com/service/extension/oauth2/authenticate/nextcloud:nextcloud
    zmprov md example.com zimbraOAuthConsumerAPIScope  'https://nextcloud.server.com/nextcloud/index.php:nextcloud_noop'
zimbraOAuthConsumerAPIScope保存 Nextcloud 实例的 URL,在我们的示例中,我们在 nextcloud.server.com 上的文件夹 /nextcloud 中设置 Nextcloud。如果您的 Nextcloud 直接安装在域的 root / 中,请确保使用https://nextcloud.server.com/index.php:nextcloud_noop作为zimbraOAuthConsumerAPIScope.

如果您的 Zimbra 和 Nextcloud 位于不同的域,例如 zimbra.example.comnextcloud.example.org,在这种情况下,您必须禁用同一站点 cookie 限制。执行以下命令:

zmlocalconfig -e zimbra_same_site_cookie=""
zmmailboxdctl restart
在禁用同一站点 cookie 之前,请检查您组织的安全策略。
您的浏览器将缓存之前的 cookie 设置。因此,请删除您的 cookie 和站点数据,然后尝试再次访问 NextCloud。

设置 Jitsi 视频会议解决方案

Jitsi 是一个完全加密、100% 开源的视频会议解决方案。现代 Web 应用程序中提供了 Jitsi 集成,允许最终用户直接在其日历中设置视频会议;即,只需单击一个按钮即可将 Jitsi 链接添加到会议邀请,然后启动该视频会议。

管理员必须安装/启用 zimlet 并定义他们计划使用的视频服务器实例。管理员可以部署自己的 Jitsi 视频服务器实例。即使管理员尚未设置 Jitsi 服务器实例,Jitsi 集成 zimlet 也可以使用 Jitsi 公开提供的免费视频会议解决方案为最终用户安排会议。

如果使用 Jitsi 公开的免费视频会议解决方案来设置活动,则无需更改配置。
  1. 在 Zimbra 服务器上安装 Jitsi zimlet 及其依赖项:

    1. 要在 Red Hat 或 CentOS 上安装,请运行:

      yum install zimbra-zimlet-jitsi
    2. 要在 Ubuntu 上安装,请运行:

      apt-get install zimbra-zimlet-jitsi
    3. 重新启动 zmmailbox 服务器:

      su - zimbra
      zmmailboxdctl restart

为组织设置单独的 Jitsi 服务器

如果组织不这样做打算使用 Jitsi 公开提供的免费视频会议解决方案并希望设置自己的 Jitsi 服务器,他们可以参考此设置指南

设置 Jitsi 服务器后,需要在 Zimbra 服务器上更改配置以更新组织的 Jitsi 服务器 URL。

在此示例中,我们假设您组织的 Jitsi 服务器 URL 为https://my-org-jitsi-server.com.

  1. 以下 CLI 命令需要以 zimbra 用户身份运行。

    su - zimbra
  2. 转到/opt/zimbra/zimlets-deployed/zimbra-zimlet-jitsi.

  3. 编辑config_template.xml并将jitUrl参数的值更改为https://my-org-jitsi-server.com.

  4. 更新后文件中的全局块示例。

    <zimletConfig name="zimbra-zimlet-jitsi" version="0.0.1">
       <global>
           <property name="jitsiUrl"> https://my-org-jitsi-server.com</property>
       </global>
    </zimletConfig>
  5. 执行以下命令以应用更改:

    zmzimletctl configure config_template.xml
    zmprov fc all
对于已登录的用户,他们必须重新加载现代 UI 才能应用配置更改。

设置签名模板

签名模板 Zimlet 提供全局配置的电子邮件签名模板,用户可以使用该模板来配置其电子邮件签名。这样组织中的所有用户都可以拥有统一的签名。

管理员必须安装 zimlet 并为用户启用它。

对于 HTML 格式的图像,这些图像应该位于不会更改的公共 URL 上,因为收件人将获取该 URL。
  1. 以下 CLI 命令需要以 zimbra 用户身份运行。

    su - zimbra
  2. 将以下配置文件复制并粘贴到/tmp/zimbra-zimlet-signature-template.xml:

    <zimletConfig name="zimbra-zimlet-signature-template" version="0.0.1">
        <global>
            <property name="htmlTemplate">PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNlMDNlMmQ7Ij48c3Ryb25nPk5BTUU8L3N0cm9uZz48L3NwYW4+PC9kaXY+PGRpdj48ZW0+PHNwYW4gc3R5bGU9ImNvbG9yOiAjN2U4YzhkOyI+RlVOQ1RJT048L3NwYW4+PC9lbT48YnIvPjxici8+PGltZyBzcmM9Imh0dHBzOi8vczIyLnE0Y2RuLmNvbS80NzYzMjUxMzcvZmlsZXMvZGVzaWduL3N5bmFjb3ItbG9nby0yMDE2LXJnYi5wbmciPjwvaW1nPjwvZGl2Pgo=</property>
        </global>
    </zimletConfig>
  3. 中,使用 base64 解码器解码htmlTemplate值。

  4. htmlTemplate块中进行所需的更改。重新编码并将其粘贴到/tmp/zimbra-zimlet-signature-template.xml

  5. 中 部署更改:

    zmzimletctl configure  /tmp/zimbra-zimlet-signature-template.xml

预防性外出警报

Zimbra 中的预防性外出警报功能允许管理员配置组织内外出通知的可见性。默认情况下,同一域内的用户启用该功能,但可以根据组织需求配置跨域可见性。

如何配置预防性外出警报

启用跨域可见性(可选)

默认情况下,外出警报功能仅限于同一域内的用户。要启用外出状态的跨域可见性,必须调整以下本地配置设置:

  • 本地配置密钥:get_out_of_office_cross_domains

  • 当设置为true时,只要权限允许,系统将允许用户检查其他域中收件人的外出状态。

管理外部 OOO 通知

以下现有属性允许您控制如何处理外部域的外出通知:

  • zimbraPrefOutOfOfficeSuppressExternalReply:设置为TRUE以防止将外出消息发送到外部域。设置为FALSE除非受到其他属性的限制,否则将 OOO 消息发送到外部域。

  • zimbraInternalSendersDomain:添加应被视为收件人“内部”的域。将为来自这些域的用户显示外出通知。

  • zimbraPrefOutOfOfficeSpecificDomains:指定哪些域可以接收外出回复。

  • zimbraPrefExternalSendersType:控制哪些外部发件人接收外出回复。

  • ALL:所有外部域。

  • ALLNOTINAB:不在收件人地址簿中的外部用户。

  • INAB:仅限收件人地址簿中的用户。

  • INSD:特定领域。

自定义字体

自定义字体功能允许用户和管理员通过将特定字体名称添加到自定义字体列表来个性化他们的电子邮件内容。此功能支持整个组织的一致品牌,同时允许个人用户使用他们喜欢的字体,前提是这些字体安装在其系统本地。

自定义字体列表(管理员)

  • 管理员可以将特定字体的名称添加到 Zimbra Web 应用程序内的“自定义字体”列表中。

  • 这些字体必须安装在每个用户的本地系统上,才能在电子邮件编辑器中正确呈现。

  • 如果用户系统上未安装自定义字体,它将以默认的 Composer 字体呈现。

个人字体列表(用户)

  • 用户可以通过 Modern UI 中的设置将自己喜欢的字体名称添加到“我的个人字体”列表中。

  • 列出的字体必须安装在用户的本地系统上才能在电子邮件编辑器中使用。

  • 用户可以使用提供的输入字段输入字体名称并将其添加到他们的个人字体列表中。

编辑器中的字体选择

  • “自定义字体”和“我的个人字体”下列出的字体将出现在电子邮件编辑器的字体选择菜单中。

  • 如果用户计算机上未安装字体,则字体名称将出现在列表中,但将使用默认字体呈现。

  • 用户可以使用添加到其列表中的自定义字体创建电子邮件签名。

默认编辑器字体

  • 用户可以通过导航至设置 > 编写电子邮件 > 编辑器,将自定义字体设置为电子邮件编辑器的默认字体.

已知限制

  • 名称与 TinyMCE 默认字体匹配的字体可能会导致冲突。例如,如果自定义字体名称为“Mycustom == Roboto”,则在工具栏中选择“Mycustom”可能会错误地从字体菜单中选择“Roboto”。此行为与 TinyMCE 有关,超出了 Zimbra 的控制范围。

自定义字体配置

本部分提供有关在 Zimbra Modern UI 中配置和使用自定义字体的说明。

如何在服务器上配置管理员定义的自定义字体

  1. 使用 SSH 连接到 Zimbra 服务器。

  2. 切换到 Zimbra 用户。

  3. 导航至/opt/zimbra/zimlets-deployed/zimbra-zimlet-custom-fonts并在编辑器中打开config_template.xml

  4. 按照config_template.xml中提供的说明在customFontsList属性中设置自定义字体。修改allowPersonalFonts根据需要的财产。如果此属性设置为 false,用户将不会在自定义字体设置中看到“我的个人字体”部分。

  5. config_template.xml进行更改后,运行以下命令:

    1. zmzimletctl configure config_template.xml

    2. zmmailboxdctl restart

附录 A:命令行实用程序

命令行界面 (CLI) 可用于创建、修改和删除 Zimbra Collaboration 的某些特性和功能。 行政当局 控制台是维护 Zimbra 协作的主要工具,但有些 只能从 CLI 实用程序更改功能。

CLI 实用程序可用于以下目的:

  • 配置帐户

  • 备份和还原

  • 启动和停止服务

  • 移动邮箱

  • 跨邮箱搜索

  • 安装自签名证书

  • 本地配置

一般来说,配置和管理帐户应从 管理控制台。

通用工具信息

Zimbra Collaboration 命令行实用程序遵循标准 UNIX 命令行约定。 使用以下一般准则 命令行界面:

  • CLI 命令以 zimbra 用户身份运行:
    su - zimbra

  • CLI 命令区分大小写。 您必须以小写形式输入它们。

  • 输入输入命令后。

  • 要显示有关命令的使用信息,请键入 CLI 命令-h.

    例子:zmprov -h列出了zmprov可用的所有选项 实用性。

  • 每个操作都是通过命令行选项调用的。 许多人都有一个 长名称和短名称。 例如,这两个命令是 等效:

    zmprov createAccount joe@domain.com test123
    
    zmprov ca joe@domain.com test123

语法约定

演示每个工具的语法时,遵循以下约定 指示必需、可选和备用值:大括号中的

  • {attribute} 是必需信息。方括号中的

  • [attribute] 是可选参数或信息。

  • {a|b|c} 或 [a|b|c] 选项由管道符|分隔意味着 "a" OR "b" OR "c"

  • 对于可能包含空格的属性名称,请用 双引号。

命令行实用程序的位置

管理员可用的命令行工具全部位于 Zimbra 协作服务器上的/opt/zimbra/bin文件夹。

Zimbra CLI 命令

CLI

下表列出了/opt/zimbra/bin.

CLI 中的 CLI 命令 描述

antispam-mysqladmin

反垃圾邮件 SQL 服务器管理实用程序

antispam-mysql

反垃圾邮件 SQL 客户端

antispam-mysql.server

启动、停止反垃圾邮件 SQL 实例

ldap

启动、停止或查找 Zimbra LDAP 的状态

ldapsearch

在 LDAP 服务器上执行搜索

logmysqladmin

将 mysqladmin 命令发送到记录器 SQL实例

mysql

输入邮箱 SQL 实例的交互式命令行

mysql.server

启动、停止邮箱 SQL 实例

mysqladmin

向邮箱 SQL 实例发送管理命令

postconf

用于查看或修改 postfix 配置的 Postfix 命令

postfix

启动、停止、重新加载、刷新、检查、升级 postfix 配置

qshape

检查与时间和发送者/接收者域相关的 postfix 队列

zmaccts

列出帐户并给出域上帐户的状态

zmamavisdctl

启动、停止、重新启动或查找 Amavis-D 的状态 新

zmantispamctl

反垃圾邮件服务的启动、停止、重新加载、状态

zmantivirusctl

反病毒服务的启动、停止、重新加载、状态

zmantispamdbpasswd

更改反垃圾邮件 SQL 数据库密码

zmapachectl

启动、停止、重新加载或检查 Apache 服务的状态(用于拼写检查)

zmarchiveconfig

用于查看、修改或配置归档的命令

zmarchivectl

启动、停止、重新加载、存档状态

zmarchivesearch

搜索帐户上的存档

zmauditswatchctl

启动、停止、重新启动、重新加载、审核监视状态

zmbackup

对指定邮件主机执行完整备份和增量备份。

zmbackupabort

停止正在进行的备份。

zmbackupquery

查找特定的完整备份集

zmblobchk

检查 Zimbra blob 存储的一致性

zmcalchk

检查 Zimbra 日历中约会和与会者的一致性

zmcbpolicydctl

启动、停止和重新启动 Leadbringer 策略服务(如果已启用)

zmconfigdctl

MTA 配置守护程序的启动、停止、终止、重新启动状态。

zmcertmgr

管理自签名和商业证书

zmclamdctl

启动、停止或查找 Clam AV 的状态

zmcleaniplanetics

清理 iPlanet ICS 日历文件

zmcontrol

Zimbra 服务器的启动、停止、重新启动和状态。 也可以用来查找 安装的 Zimbra 版本

zmconvertctl

启动、停止转换服务器或查找转换的状态 附件转换/索引

zmdevicesstats

每台服务器的唯一 ActiveSync 设备 ID 数量

zmgdcutil

(获取设备计数)给出系统范围内的总设备数,无需 指定各个服务器。

zmdumpenv

显示有关服务器环境的一般信息

zmgsautil

全球通讯簿 (GAL) 同步实用程序。 创建、删除 GAL 同步帐户并启动手动同步。

zmhostname

查找 Zimbra 服务器的主机名

zmhsm

SM 会话的启动、停止和状态。

zmitemdatafile

提取并打包 Zimbra 用于 REST 导入/导出的tgz文件

zmjava

使用 Zimbra 特定的环境设置执行 Java

zmjavaext

执行 Java 和 Zimbra 特定的环境设置(包括扩展) 基于罐子。

zmldappasswd

更改 LDAP 密码

zmlicense

查看并安装您的 Zimbra 许可证

zmlmtpinject

测试工具

zmlocalconfig

用于设置或获取 Zimbra 服务器的本地配置

zmloggerctl

启动、停止、重新加载或查找 Zimbra 记录器服务的状态

zmloggerhostmap

用于手动将 DNS 主机名映射到 zmhostname。

zmlogswatchctl

正在监视日志记录的样本的启动、停止、状态。

zmmailbox

执行邮箱管理任务

zmmailboxdctl

启动、停止、重新加载或查找邮箱组件的状态 (zmmailboxd、MariaDB、convert)

zmmboxsearch

(跨邮箱搜索) 跨邮箱搜索以查找邮件并 附件

zmmboxmove

7.1.3 及更高版本。 用于将选定的邮箱从一台 Zimbra 服务器移至 另一个。

zmmboxmovequery

7.1.3 及更高版本。 用于查询服务器

zmpurgeoldmbox

7.1.3 及更高版本上正在进行的邮箱移动。 邮箱移动后从旧服务器中清除邮箱

zmmemcachedctl

启动、停止和重新启动

zmmetadump

以人类可读形式转储项目元数据的支持工具

zmmilterctl

启动、停止和重新启动 Zimbra milter 服务器(如果启用)

zmmtaconfigdctl

从 Zimbra Collaboration 7.0 开始,不再使用此命令。 使用zmconfigdctl.

zmmtactl

启动、停止或查找 MTA 的状态

zmmypasswd

更改 SQL 密码

zmmysqlstatus

邮箱 SQL 实例的状态

zmnginxconf

输出反向代理配置

zmnginxctl

启动、停止和重新启动 Zimbra 反向代理

zmplayredo

使用定期拍摄的备份快照执行数据还原。 用户 使用快照从备用数据库备份和恢复信息的人 站点使用此命令。

zmprov

在 Zimbra LDAP 中执行所有配置任务,包括创建 帐户、域、分发列表和别名

zmproxyconfgen

生成 nginx 代理的配置

zmproxyctl

启动、停止、重新启动和查找 IMAP 代理服务的状态

zmproxypurge

从一台或多台 Memcached 服务器中清除 POP/IMAP 路由信息

zmpython

能够编写访问 Zimbra Java 库的 Python 脚本。 它设置 Zimbra 类路径并启动 Jython 解释器。

zmredodump

用于转储重做日志文件内容以进行调试的支持工具

zmrestore

对指定邮件主机执行完全恢复和增量恢复

zmrestoreldap

从 LDAP 备份恢复帐户

zmrestoreoffline

(离线恢复)当 Zimbra 服务器(即, 的mailboxd进程)已关闭

zmsaslauthdctl

启动、停止或查找 saslauthd(身份验证)的状态

zmschedulebackup

计划备份并将命令添加到 cron 表

zmshutil

用于其他 zm 脚本,请勿使用

zmskindeploy

部署皮肤

zmsoap

以 SOAP 格式打印邮件、帐户和管理信息

zmspellctl

启动、停止或查找拼写检查服务器的状态

zmsshkeygen

生成 Zimbra 的 SSH 加密密钥

zmstat-chart

从目录

zmstat-chart-config

中收集的 zmstat 数据生成图表 输出描述数据当前状态的 XML 配置 从 zmstat-chart 收集以生成有关管理的图表 控制台。

zmstatctl

启动、停止、检查状态或轮换 zmstat 数据收集器的日志

zmstorectl

启动、停止或查找 Zimbra 商店服务的状态

zmswatchctl

启动、停止或查找 Swatch 进程的状态,该进程用于 监控

zmsyncreverseproxy

解码同步请求/响应并在详细模式为时记录它们 打开。

zmthrdump

启动线程转储并将数据保存到带有时间戳的文件中

zmtlsctl

将 Web 服务器模式设置为通信协议选项: HTTP、HTTPS 或混合

zmtrainsa

用于训练反垃圾邮件过滤器识别垃圾邮件或非垃圾邮件

zmtzupdate

提供处理时区更改的机制

zmupdateauthkeys

用于获取由zmsshkeygen

zmvolume

创建的 ssh 加密密钥 管理 Zimbra 邮箱服务器上的存储卷

zmzimletctl

部署和配置 Zimlet

zmlicensectl

管理 LDS 的各种操作。

zmmoveblobs

用于在存储卷之间移动 blob 的实用程序。

在 CLI 中使用非 ASCII 字符

如果在 CLI 中使用非 ASCII 字符,为了使字符 正确显示之前,必须将此设置更改为所需的 UTF-8 运行 CLI 命令。 要更改此设置,请输入

export LC_All=<UTF_locale>

zimbra 用户系统帐户的默认区域设置是 LANG=C。 这个 启动 Zimbra 服务需要进行设置。 更改默认值 LANG=C 设置可能会导致 amavisd-new 出现性能问题。

zmprov(配置)

zmprov工具执行 Zimbra LDAP 中的所有配置任务,包括 创建帐户、别名、域、COS、通讯组列表和日历 资源。 每个操作都是通过命令行选项调用的,每个操作 它有一个长名称和一个短名称。

语法为zmprov [cmd] [argument].

修改的语法可以包含前缀“+”或“-”,以便您可以 对受影响的属性进行更改,无需重新输入 不改变的属性。

  • 使用+添加指定属性名称的新实例,无需 更改任何现有属性。

  • 使用-删除属性的特定实例。

以下示例将添加属性zimbraZimletUserProperties 将值“blue”分配给用户 1,并且不会更改任何其他值 该属性的实例。

zmprov ma user1 +zimbraZimletUserProperties "com_company_testing:favoriteColor:blue"

当您使用 zmprov 时,会列出可与 zmprov 一起使用的任务的属性 输入zmprov -h。 任务区域分为以下部分:

长名称 短名称 语法、示例和注释

--help

-h

显示用法

--file

-f

使用文件作为输入流

--server

-s

{host}[:{port}] 服务器主机名和可选端口

--ldap

-l

通过 LDAP 而不是 SOAP 提供

--logpropertyfile

-L

log4j 属性文件,仅对-l

--account {name}

-a

帐户名进行身份验证有效

--password {pass}

-p

帐户密码

--passfile {file}

-P

从文件中读取密码

--zadmin

-z

使用 localconfig 中的 Zimbra 管理员名称/密码作为管理员/密码

--authtoken {authtoken}

-y

使用命令行中的身份验证令牌字符串(必须为 JSON 格式)

--authtokenfile {authtoken-file}

-Y

使用文件中的身份验证令牌字符串(必须为 JSON 格式)

--verbose

-v

详细模式(转储完整异常堆栈跟踪)

--debug

-d

调试模式(转储 SOAP 消息)

--master

-m

使用 LDAP 主服务器。 这仅对-l

--replace

-r

有效,允许替换在中配置的安全保护多值属性 localconfig keyzmprov_saveguarded_attrs

命令分类并简要说明如下 主题:

帐户配置命令
表 62.zmprov — 账户配置命令
命令 语法 示例/注释

addAccountAlias (aaa)

{name@domain | id | adminName} {alias@domain}

zmprov aaa joe@domain.com joe.smith@engr.domain.com

checkPasswordStrength (cps)

{name@doman | id} {password}

zmprov cps joe@domain.com test123
此命令不检查密码期限或历史记录。

createAccount (ca)

{name@domain} {password} [attr1 value1]…​

zmprov ca joe@domain.com test123 displayName JSmith

createDataSource (cds)

{name@domain} {ds-type} {ds-name} zimbraDataSourceEnabled {TRUE | FALSE} zimbraDataSourceFolderId {folder-id} [attr1 value1 [attr2 value2]…​]

createIdentity (cid)

{name@domain} {identity-name} [attr1 value1 [attr2 value2]…​]

createSignature (csig)

{name@domain} {signature-name} [attr1 value1 [attr2 value2]…​]

deleteAccount (da)

{name@domain | id | adminName}

zmprov da joe@domain.com

deleteDataSource (dds)

{name@domain | id} {ds-name | ds-id}

deleteIdentity (did)

{name@domain | id} {identity-name}

deleteSignature (dsig)

{name@domain | id} {signature-name}

getAccount (ga)

{name@domain | id | adminName}

zmprov ga joe@domain.com

getAccountMembership (gam)

{name@domain | id}

getAllAccounts (gaa)

[-v] [domain]

必须包括-l/--ldap

zmprov -l gaa
zmprov -l gaa -v domain.com

getAllAdminAccounts (gaaa)

zmprov gaaa

getDataSources (gds)

{name@domain | id} [arg1 [arg2]…​]

getIdentities (gid)

{name@domain | id} [arg1 [arg2]…​]

getSignatures (gsig)

{name@domain | id} [arg1 [arg2]…​]

modifyAccount (ma)

{name@domain | id | adminName} [attr1 value1]…​

zmprov ma joe@domain.com zimbraAccountStatus maintenance

modifyDataSource (mds)

{name@domain | id} {ds-name | ds-id} [attr1 value1 [attr2 value2]…​]

modifyIdentity (mid)

{name@domain | id} {identity-name} [attr1 value1 [attr2 value 2]…​]

modifySignature (msig)

{name@domain | id} {signature-name | signature-id} [attr1 value1 [attr2 value2]…​]

removeAccountAlias (raa)

{name@domain | id | adminName} {alias@domain}

zmprov raa joe@domain.com joe.smith@engr.domain.com

renameAccount (ra)

{name@domain | id} {newname@domain}

zmprov ra joe@domain.com joe23@domain.com
重命名帐户后,您应该为该帐户运行完整备份。
zmbackup -f -s <servername.com> -a <newaccountname@servername.com>

setAccountCOS (sac)

{name@domain | id | adminName} {cos-name | cos-id}

zmprov sac joe@domain.com FieldTechnician

setPassword (sp)

{name@domain | id | adminName} {password}

zmprov sp joe@domain.com test321
密码字符串中不能包含重音字符。 的例子 不能使用的重音字符:ã、é、í、ú、ü、ñ。
日历资源配置命令
表 63.zmprov — 日历资源配置命令
命令 语法

createCalendarResource (ccr)

{name@domain} [attr1 value1 [attr2 value2]…​]

deleteCalendarResource (dcr)

{name@domain | name@domain} id}

getAllCalendarResources (gacr)

[-v] [域]

getCalendarResource (gcr)

{名称@域 | id}

modifyCalendarResource (mcr)

{名称@域名 | id} [attr1 value1 {attr2 value2]…​]

purgeAccountCalendarCache (pacc)

{name@domain} […​]

renameCalendarResource (rcr)

{名称@域名| id} {newName@domain}

空闲忙碌命令
表 64.zmprov — 空闲忙碌命令
命令 语法

getAllFbp (gafbp)

[-v]

getFreebusyQueueInfo (gfbqi)

[{provider-name}]

pushFreebusy (pfb)

{域 |帐户 ID} [帐户 ID…​]

pushFreebusyDomain (pfbd)

{域}

purgeFreebusyQueue (pfbg)

[{provider-name}]

域配置命令
表 65.zmprov — 域配置命令
命令 语法 示例/注释

countAccount (cta)

{domain | id}

这列出了每个 COS、COS ID 以及分配给每个 COS 的账户数量 COS

createAliasDomain (cad)

{alias-domain-name} {local-domain-name | id} [attr1 value1 [attr2 value2]…​]

createDomain (cd)

{domain} [attr1 value1]…​

zmprov cd mktng.domain.com zimbraAuthMech zimbra

deleteDomain (dd)

{domain | id}

zmprov dd mktng.domain.com

getDomain (gd)

{domain | id}

zmprov gd mktng.domain.com

getDomainInfo (gdi)

name | id | virtualHostname {value} [attr1 [attr2]…​]

getAllDomains (gad)

[-v]

modifyDomain (md)

{domain | id} [attr1 value1]…​

zmprov md domain.com zimbraGalMaxResults 500
请勿修改zimbraDomainRenameInfo手动。 这是自动的 当域名被重命名时更新。

renameDomain (rd)

{domain | id} {newDomain}

renameDomain只能与zmprov -l/--ldap
COS 配置命令
表 66.zmprov — COS 配置命令
命令 语法 示例/注释

copyCos (cpc)

{src-cos-name | id} {dest-cos-name}

createCos (cc)

{name} [attr1 value1]…​

zmprov cc Executive zimbraAttachmentsBlocked FALSE zimbraAuthTokenLifetime 60m zimbraMailQuota 100M zimbraMailMessageLifetime 0

deleteCos (dc)

{name | id}

zmprov dc Executive

getCos (gc)

{name | id}

zmprov gc Executive

getAllCos (gac)

[-v]

zmprov gac -v

modifyCos (mc)

{name | id} [attr1 value1]…​

zmprov mc Executive zimbraAttachmentsBlocked TRUE

renameCos (rc)

{name | id} {newName}

zmprov rc Executive Business
服务器配置命令
表 67.zmprov — 服务器配置命令
命令 语法 示例/注释

createServer (cs)

{name} [attr1 value1]…​

deleteServer (ds)

{name | id}

zmprov ds domain.com

getServer (gs)

{name | id}

zmprov gs domain.com

getAllServers (gas)

[-v]

zmprov gas

modifyServer (ms)

{name | id} [attr1 value1]…​

zmprov ms domain.com zimbraVirusDefinitionsUpdateFrequency 2h

getAllMtaAuthURLs (gamau)

用于发布到saslauthd.conf服务器的用途 saslauthd.confMTA auth

getAllMemcachedServers (gamcs)

用于列出 memcached 服务器(供 nginx 使用)。

配置调配命令
表 68.zmprov — 配置调配命令
命令 语法 示例/注释

getAllConfig (gacf)

[-v]

显示所有 LDAP 设置

getConfig (gcf)

{name}

modifyConfig (mcf)

attr1 value1

修改 LDAP 设置。

createXMPPComponent (csc)

{short-name} {domain} {server} {classname} {category} {type} [attr1 value1 [attr2 value2]…​]

deleteXMPPComponent (dxc)

{xmpp-component-name}

getXMPPComponent (gxc)

{name@domain} [attr1 [attr2]…​]

modifyXMPPComponent (mxc)

{name@domain} [attr1 value1 [attr2 value2]…​]

分发列表配置命令
表 69.zmprov — 分发列表配置命令
命令 语法 示例/注释

createDistributionList (cdl)

{list@domain}

zmprov cdl needlepoint-list@domain.com

addDistributionListMember (adlm)

{list@domain | id} {member@domain}

zmprov adlm needlepoint-list@domain.com singer23@mail.free.net

removeDistributionListMember (rdlm)

{list@domain | id}

zmprov rdlm needlepoint-list@domain.com singer23@mail.free.net

getAlldistributionLists (gadl)

[-v]

getDistributionListmembership (gdlm)

{name@domain | id}

gdlm不能用于动态组,因为动态组不能 嵌套的。

getDistributionList (gdl)

{list@domain | id}

zmprov gdl list@domain.com

modifyDistributionList (mdl)

{list@domain | id} attr1 value1 [attr2 value2]…​

zmprov md list@domain.com

deleteDistributionList (ddl)

{list@domain | id}

addDistributionListAlias (adla)

{list@domain | id} {alias@domain}

removeDistributionListAlias (rdla)

{list@domain | id} {alias@domain}

renameDistributionList (rdl)

{list@domain | id} {newName@domain}

邮箱命令
表 70.zmprov — 邮箱命令
命令 语法 示例/注释

getMailboxInfo (gmi)

{account}

getQuotaUsage (gqu)

{server}

recalculateMailboxCounts (rmc)

{name@domain | id}

当未读邮件计数和配额使用情况与数据不同步时 在邮箱中,使用此命令立即重新计算邮箱 配额使用情况和未读消息计数。

重新计算邮箱配额 使用情况和消息计数应安排在 非高峰时段运行并用于一个邮箱 一次。

reIndexMailbox (rim)

{name@domain | id} {start | status | cancel} [type | id]…​

compactIndexMailbox (cim)

{name@domain | id} {start | status}

verifyIndex (vi)

{name@domain | id}

getIndexStats (gis)

{name@domain | id}

selectMailbox (sm)

{account-name} [{zmmailbox commands}]

unlockMailbox (ulm)

{name@domain | id} [hostname]

仅在移动尝试失败后解锁邮箱时指定主机名参数。

其他配置命令
表 71.zmprov — 其他配置命令
命令 语法 示例/注释

countObjects (cto)

{type} [-d {domain | id}]

countObjects只能与zmprov -l/--ldap

createBulkAccounts (cabulk)

{domain} {namemask} {number of accounts to create}

describe (desc)

[[-v] [-ni] [{entry-type}]] | [-a {attribute-name}]

一起使用 打印所有属性名称(帐户、域、COS、服务器等)。

flushCache (fc)

[-a] {acl | locale | skin | uistrings | license | all | account | config | glo | balgrant | cos | domain | galgroup | group | mime | server | zimlet | <extension-cache-type>} [name1 | id1 [name2 | i d2]…​]

刷新某个类型的缓存 LDAP 条目。 看Zimbra LDAP 服务.

generateDomainPreAuth Key (gdpak)

{domain | id}

生成预身份验证密钥,使受信任的第三方能够 进行身份验证以允许单点登录。 结合使用 GenerateDomainPreAuth.

generateDomainPreAuth (gdpa)

{domain | id} {name} {name | id | foreignPrincipal} {timestamp | 0} {expires | 0}

生成用于比较的 preAuth 值。

syncGal (syg)

{domain} [{token}]

getAccountLogger (gal)

[-s /--server hostname] {name@domain | id}

日志命令
表 72.zmprov — 日志命令
命令 语法 示例/注释

addAccountLogger (aal)

{name@domain | id} {logging-category} {debug | info | warn | error}

为单个账户创建自定义日志记录。

getAccountLoggers (gal)

[-s/--server hostname] {name@domain | id} {logging-category} {debug | info | warn | error}

getAllAccountLoggers (gaal)

[-s/--server hostname]

显示所有个人自定义记录器帐户。

removeAccountLogger (ral)

[-s/ --server hostname] {name@domain | id} {logging-category}

当指定 name@domain 时,删除为该名称创建的自定义记录器 否则,帐户将从系统中删除所有帐户和帐户记录器。

resetAllLoggers (rlog)

[-s/--server hostname]

此命令删除所有帐户记录器并 重新加载/opt/zimbra/conf/log4j.properties.

请参阅zmprov日志类别的列表 日志记录类别。

搜索命令
表 73.zmprov — 搜索命令
命令 语法 示例/注释

searchGAL (sg)

{domain} {name}

zmprov sg joe

autoCompleteGal (acg)

{domain} {name}

searchAccounts (sa)

[-v] {ldap-query} [limit] [offset] [sortBy {attribute}] [sortAscending 0 | 1] [domain {domain}]

searchCalendarResources (scr)

[-v] domain {attr op value} [attr op value]…​

共享配置命令
表 74.zmprov — 共享配置命令
命令 语法 示例/注释

getShareInfo (gsi)

{owner-name | owner-id}

统一通信服务命令
表 75.zmprov — 统一通信服务命令
命令 语法 示例/注释

createUCService (cucs)

{name} [attr1 value1 [attr2 value2]…​]

deleteUCService (ducs)

{name | id}

getAllUCServices (gaucs)

[-v]

getUCService (gucs)

[-e] {name | id} [attr1 [attr2]…​]

modifyUCService (mucs)

{name | id} [attr1 value1 [attr2 value2]…​]

renameUCService (rucs)

{name | id} {newName}

IMAP/POP 代理命令
表 76.zmprov — IMAP/POP 代理命令
命令 示例/注释

getAllReverseProxyURLs (garpu)

用于将应用于反向的服务器发布到 nginx.conf 中 代理查找。

getAllReverseProxy Backends (garpb)

返回具有以下功能的服务器列表 zimbraReverseProxyLookupTarget=TRUE.

指示邮箱服务器是否可用于来自 代理。

getAllReverseProxyDomains (garpd)

返回配置有ZimbraSSLCertificate zimbraVirtualHostnamezimbraVirtualIPAddress的所有域的列表。 这个 允许代理配置域列表来服务自定义/域 证书.

示例 — 使用 zmprov
示例 44. 使用分配给默认 COS 的密码创建帐户
zmprov ca name@domain.com password
示例 45. 使用分配给指定 COS 的密码创建帐户

您必须知道 COS ID 号。 查找 COS ID:

zmprov gc <COSname>

zmprov ca name@domain.com password zimbraCOS cosIDnumberstring
示例 46. 在内部未验证密码时创建帐户
zmprov ca name@domain.com ''

空单引号是必需的,表示没有本地 密码。

示例 47. 使用批处理创建帐户

请参阅配置用户帐户了解 程序。

示例 48. 批量配置

请参阅 Zimbra wiki 页面Bulk_Provisioning.

示例 49. 向帐户添加别名
zmprov aaa accountname@domain.com aliasname@domain.com
示例 50. 创建通讯组列表
zmprov cdl listname@domain.com

返回通讯组列表的 ID。

示例 51. 将成员添加到通讯组列表
zmprov adlm listname@domain.com member@domain.com
您可以从管理控制台将多个成员添加到列表中。
示例 52. 更改管理员密码

使用此命令可以更改任何密码。 输入密码的地址 被改变。

zmprov sp admin@domain.com password
示例 53. 创建针对 Zimbra LDAP 进行身份验证的域
zmprov cd marketing.domain.com zimbraAuthMech zimbra
示例 54. 设置默认域
zmprov mcf zimbraDefaultDomain domain1.com
示例 55. 列出所有 COS 及其属性值
zmprov gac -v
示例 56. 列出域 (domain.com) 中的所有用户帐户
zmprov gaa domain.com
示例 57. 列出所有用户帐户及其配置
zmprov gaa -v domain.com
示例 58. 在单个服务器上启用记录器
zmprov ms server.com +zimbraServiceEnabled logger

然后键入 zmloggerctl start 以启动记录器。

示例 59. 查询多值属性的值
zmprov gs server.com attribute=value

例如,使用zmprov gs example.com zimbraServiceEnabled=ldap来查找是否 LDAP 服务已启用。

示例 60. 修改清除间隔

要修改清除间隔,请将zimbraMailPurgeSleepInterval设置为 服务器应在每两次之间“睡眠”的持续时间 邮箱。

zmprov ms server.com zimbraMailPurgeSleepInterval <Xm>

X是邮箱清除之间的持续时间;m代表 分钟。您还可以将<xh>设置为小时。

示例 61. 自定义通知电子邮件

修改zimbraNewMailNotification以自定义通知电子邮件 模板。 邮政管理员会发送一封默认电子邮件,通知用户 他们在另一个邮箱中收到了邮件。 要更改模板,您 修改收信邮箱账号。 变量为

  • ${SENDER_ADDRESS}

  • ${RECIPIENT_ADDRESS}

  • ${RECIPIENT_DOMAIN}

  • ${NOTIFICATION_ADDRESSS}

  • ${SUBJECT}

  • ${NEWLINE}

您可以指定上述哪些变量出现在主题中, 来自电子邮件的正文。 下面的例子是改变 通知电子邮件正文中消息的外观 收到于name@domain.com。 You can also change the template in a class ofservice, use zmprov mc. The command is written on one line.

zmprov ma name@domain.com zimbraNewMailNotificationBody 'Important message from ${SENDER_ADDRESS}.${NEWLINE}Subject:${SUBJECT}'
示例 62. 通过 COS、帐户或域启用短信通知
zmprov mc <default> zimbingaFeatureCalendarReminderDeviceEmailEnabled TRUE
zmprov ma <user1> zimbraFeatureCalendarReminderDeviceEmailEnabled TRUE
zmprov md <domain> zimbraFeatureCalendarReminderDeviceEmailEnabled TRUE
示例 63. 为 COS 或一组用户启用活动流功能
zmprov mc <default> zimbraFeaturePriorityInboxEnabled TRUE
zmprov ma <user1> zimbraFeaturePriorityInboxEnabled TRUE
从 CLI 配置自动分组备份

在全局配置中设置备份方法,您可以覆盖 如果您不希望服务器使用 auto-grouped backup method.

要设置自动分组备份,请使用 zmprov 修改 LDAP 属性 命令行界面。 输入命令为

zmprov mcf <ldap_attribute> <arg>

您还可以使用zmprov ms.

在服务器级别设置属性 修改以下 LDAP 属性:

  • zimbraBackupMode —  将其设置为Auto-Grouped。默认为 Standard.

  • zimbraBackupAutoGroupedInterval — Set this to the interval in either days or weeks that backup sessions should run for a group. The default is `1d。 备份间隔可以是 1 天或更多天,输入为xd (1d);或 1 或更多周,输入为xw (1w).

  • zimbraBackupAutoGroupedNumGroups — 这是要传播的组数 邮箱过了。 默认为 7 组。

更改对话线程默认值

消息可以通过公共线程分组到对话中。 默认 是通过引用标头将消息串联到对话中。 如果有 没有 References 标头,Subject 用于确定对话 线程。 可以从 COS 或个人更改默认选项 账户。

zmprov mc [cosname] zimbraMailThreadingAlgorithm [type]

类型包括:

  • none — 不执行对话线程。

  • 主题 — 消息将仅根据其标准化进行线程化 主题。

  • strict — 仅线程消息标头(参考文献、回复中、 Message-ID 和 Resent-Message-ID)用于关联消息。 否 对标准化受试者进行检查。

  • 引用 — 与“严格”逻辑相同,但略有约束 进行更改,以便在以下情况下考虑非标准线程索引标头 线程消息和缺少参考的回复消息和 In-Reply-To 标题将回退到使用基于主题的线程。

  • subjrefs — 与“引用”相同的逻辑,但有进一步的警告 规范化主题的变化会将一条线索分成两半。

检测损坏的索引

运行zmprov verifyIndex作为指定邮箱索引的健全性检查。 诊断信息写入标准输出。 如果检测到问题, 返回失败状态。

verifyIndexlocks the index while it’s running, and checks every byte in 索引。 Therefore, it’s not recommended to run this on a regular basis 例如在 cron 作业中。 The zmprov verifyIndex command should be used only 当您需要做出诊断时。

zmprov verifyIndex <user@example.com>

If verifyIndex reports that the index is corrupted, you can repair the 通过运行reIndexMailbox (rim).

zmprov rim <user@example.com> start
表 77.zmprov — 日志类别

zimbra.account

帐户操作

zimbra.acl

ACL 操作

zimbra.backup

备份和恢复

zimbra.cache

内存缓存操作

zimbra.calendar

日历操作

zimbra.dav

DAV 操作

zimbra.dbconn

数据库连接跟踪

zimbra.extensions

服务器扩展加载

zimbra.filter

邮件过滤

zimbra.gal

GAL 操作

zimbra.imap

IMAP 协议操作

zimbra.index

索引操作

zimbra.io

文件系统操作

zimbra.ldap

LDAP 操作

zimbra.lmtp

LMTP 操作(传入邮件)

zimbra.mailbox

一般邮箱操作

zimbra.misc

其他

zimbra.op

邮箱状态更改

zimbra.pop

POP 协议操作

zimbra.redolog

重做日志操作

zimbra.security

安全事件

zimbra.session

用户会话跟踪

zimbra.smtp

SMTP 操作(外发邮件)

zimbra.soap

SOAP 协议

zimbra.sqltrace

SQL 跟踪

zimbra.store

邮件存储磁盘操作

zimbra.sync

同步客户端操作

zimbra.system

启动/关闭和其他系统消息

zimbra.wiki

Wiki 操作

zimbra.zimlet

Zimlet 操作

zmaccts

使用zmaccts运行列出所有帐户及其状态的报告, 它们被创建的时间以及最后一次有人登录的时间。 域名 摘要显示帐户总数及其状态。

语法
zmaccts

zmarchiveconfig

使用zmarchiveconfig配置存档邮箱。 它有 使用短命令或命令全名的选项 正在执行相同的功能。

语法
zmarchiveconfig [args] [cmd] [cmd-args]...
描述
长名称 短名称 描述

--help

-h

显示此命令的使用选项

--server

-s

(host)[:(port)] 显示服务器主机名和可选端口

--account

-a

(名称)返回要授权的账户名的值

--ldap

-l

允许通过 LDAP 配置存档

--password

-p

(pass) 返回身份验证帐户的密码

--passfile

-P

(文件) 允许从文件读取密码

--zadmin

-z

允许从本地使用 Zimbra 管理员/密码

--debug

-d

激活调试模式(转储 SOAP 消息)

Command in …​

enable <account>

[存档地址<aaddr> [archive-cos <cos>] [archive-create <TRUE/FALSE>] [archive-password <pa [zimbraAccountAttrName <archive-attr-value]+

disable <account>

zmarchivectl

使用zmarchivectl启动、停止、重新加载或检查 Zimbra 的状态 帐户存档。

语法
zmarchivectl start|stop|reload|status

zmarchivesearch

使用zmarchivesearch跨帐户档案进行搜索。 您可以搜索 对于符合特定条件的档案并将副本保存到 目录。

语法
zmarchivesearch {-m <user@domain.com>} {-q <query_string>} [-o <offset>] [-l <limit>] [-d <output_directory>]
描述
长名称 短名称 描述

--dir

-d

<arg>写入消息的文件夹。 如果没有指定,则仅 已获取标头。 文件名以以下形式生成 RESULTNUM_ACCOUNT-ID_MAILITEMID

--help

-h

显示帮助消息

--limit

-l

<arg>设置返回结果的数量限制。 默认值为 25

--mbox

-m

<arg>要搜索的存档帐户的名称

--offset

-o

<arg>指定命中列表的开始位置。 默认值为 0

--query

-q

<arg>存档搜索的查询字符串

--server

-s

<arg>邮件服务器主机名。 默认为 localhost

--verbose

-v

允许在执行搜索时打印状态消息

示例 64. 在指定服务器上搜索存档并将存档的副本放入指定目录
zmarchivesearch -m user1@yourdomain.com -q "in:sent" -o 0 -l 30 -d /var/tmp

zmbackup

使用zmbackup执行完整备份和增量备份 指定邮件主机。

该实用程序有短选项名称和全名称。 简短的选项是 前面有一个破折号,而完整选项前面有一个双破折号 破折号。 例如,-f--fullBackup.

相同 语法

必须指定-f, -i-del之一。

zmbackup {-f | -i | del} {-a <arg>} [options]
描述
长名称 短名称 描述

--account

-a

<arg>帐户电子邮件地址以空格分隔或全部分隔 账户。 未为自动分组备份指定此选项,因为 系统知道每晚要备份哪些帐户。

--debug

-d

显示用于调试目的的诊断信息。

--delete

-del

<arg>删除包含指定标签、日期之前的备份 (YYYY/MM/DD[-hh:mm:ss]) 或句点 (nn(d | m | y])。

--excludeBlobs

从完整备份中排除 blob。如果未指定,则使用服务器配置

--excludeHsmBlobs

从完整备份中排除 SM 卷上的 blob;如果未指定,则使用服务器 config

--excludeSearchIndex

从完整备份中排除搜索索引;如果未指定,则使用服务器配置

--fullBackup

-f

启动完整备份。 在自动分组备份模式下,此选项还会复制 自上次备份以来的重做日志(这是备份的主要功能) 增量备份)。

--help

-h

显示此命令的使用选项。

--incrementalBackup

-i

启动增量备份。 该选项在 自动分组备份模式。

--includeBlobs

在完整备份中包含 blob。 如果未指定,则服务器配置为 使用过。

--includeHsmBlobs

在完整备份中包括 SM 卷上的 blob。 如果未指定,则 使用服务器配置。

--includeSearchIndex

在完整备份中包含搜索索引。 如果未指定,服务器 使用配置。

--noZip

将 blob 作为单独文件备份,而不是在zip文件中。

--server

-s

<arg>邮件服务器主机名。 对于格式,请使用纯主机名或 server.domain.com 名称。 默认值是本地主机名称。

--sync

-sync

同步运行完整备份。

--target

-t

<arg>指定目标备份位置。 默认为 /opt/zimbra/backup.

--zip

-z

备份压缩的zip文件中的 blob。 如果--zipStore是则忽略 指定。

--zipStore

备份zip文件中的 blob,无需压缩。 (默认)

示例

在这些示例中,服务器 (-s) 是server1.domain.com。 (__ZSEP_9f7__) 如果目标是默认目录则不需要, (-t示例 65. 对/opt/zimbra/backup).

server1 上的所有邮箱执行完整备份示例 66. 对
zmbackup -f -a all -s server1.domain.com
server1 上的所有邮箱执行增量备份server1自上次完整备份
zmbackup -i -a all -s server1.domain.com
示例 67. 仅对server1上的user1.
zmbackup -f -a user1@domain.com -s server1
的邮箱执行完整备份 如果使用帐户,主机名不需要完整的域。
示例 68. 对user1的邮箱执行增量备份server1
zmbackup -i -a user1@domain.com -s server1

zmblobchk

使用zmblobchk检查 Zimbra blob 存储的一致性 (/opt/zimbra/store)。 该命令检查并记录文件注释 没有匹配的数据库元数据。 它还检查以确保尺寸 文件信息正确。

语法
zmblobchk [options] start

需要启动命令以避免无意中运行 blob 检查。 ID 值以逗号分隔。

描述
长名称 短名称 描述

--export-dir

<path> 数据库导出文件的目标目录。

--help

-h

显示帮助消息

--mailboxes

-m

<mailbox-ids> 指定要检查的邮箱。 如果没有指定,请检查 所有邮箱。

--missing-blob-delete-item

删除任何缺少 blob 的项目。

--no-export

删除项目而不导出

--skip-size-check

跳过 blob 大小检查

--unexpected-blob-list

<path> 将任何意外 blob 的路径写入文件

--verbose

-v

显示详细输出;显示错误时的堆栈跟踪

--volumes

<volume-ids> 指定要检查的卷。 如果没有指定,则勾选所有 卷

zmcalchk

使用zmcalchk检查 Zimbra 上约会的一致性 日历并发送有关不一致的电子邮件通知。 对于 例如,它检查活动的所有参与者和组织者是否在 日历就会议的开始/结束时间和发生时间达成一致。

有关详细信息,请参阅zmmailbox help appointment的输出 时间规格。

语法
zmcalchk [-d] [-n <type>] <user> <start-time-spec> <end-time-spec>
描述
短名称 描述

-d

调试详细信息

-m

允许用户指定要检查的最大与会者人数。 的 默认值为 50。

-n

-n none | user | organizer | attendee | all

如果所选用户在一段时间内不同步,则向他们发送电子邮件通知 约会

zmschedulebackup

使用zmschedulebackup安排备份并将命令添加到您的 cron 表。

默认时间表如下:

  • 完整备份,每周六凌晨 1:00 (0 1 * * 6)

  • 增量备份,周日至周五凌晨 1:00(0 1 * * 0-5)

每个 crontab 条目都是一行,由五个字段组成,每个字段之间用 空白区域。 指定字段如下:

  • 分钟 — 0 到 59

  • 小时 — 0 至 23

  • (月)的某天 — 1 至 31

  • 月 — 1 至 12

  • (星期) — 0 到 7(0 或 7 是星期日,或使用名称)

键入星号 (*)在您没有使用的字段中。

此命令自动将计划写入 crontab。

语法
zmschedulebackup {-q|-s|-A|-R|-F|-D}[f|i|d|] ["schedule"]
说明
名称 命令名称 说明

help

-h

显示此命令的使用选项。

query

-q

默认命令。 显示现有的 Zimbra 备份计划。

save

-s

保存时间表。 允许您将计划命令保存到文本文件 以便您可以在系统出现故障时快速重新生成备份计划 恢复了。

flush

-F

删除当前计划并取消所有计划的备份。

append

-A

将额外的指定备份添加到当前计划中。

replace

-R

用指定的计划替换当前计划。

default

-D

用默认计划替换当前计划。

Options that will be passed to zmbackup

no compression

-n

将 blob 作为单独的文件而不是在zip文件

compress

-z

备份压缩的zip文件中的 blob。 如果--zipStore是则忽略 指定。

--zipStore

备份zip文件中的 blob,无需压缩。

target

-t

只能用于指定后卫目标位置。 默认为 /opt/zimbra/backup.

您无法指定增量备份的目标。 如果目标 (-t) 位置是为增量计划备份添加的,但会被忽略。

account

-a

帐户特定。 默认为所有帐户。

--mail-report

向管理员用户发送电子邮件报告。

--server

服务器 - 邮件服务器主机名。 默认是本地主机。

--sync

同步运行完整备份。

--excludeBlobs

从完整备份中排除 blob。 如果未指定,则使用服务器配置。

--includeBlobs

在完整备份中包含 blob。 如果未指定,则使用服务器配置。

--excludeHsmBlobs

从完整备份中排除 SM 卷上的 blob。 如果未指定,则服务器 使用配置。

--includeHsmBlobs

在完整备份中包括 SM 卷上的 blob。 如果未指定,则服务器 使用配置。

--excludeSearchIndex

从完整备份中排除搜索索引。 如果未指定,则服务器配置 被使用。

--includeSearchIndex

在完整备份中包含搜索索引。 如果未指定,则服务器配置为 使用过。

Cron schedule — backup-type: <i | f | d arg>

incremental backup

i

<time specifier>增量备份。

自动分组备份模式不使用增量备份。

full backup

f

完整备份

delete

d <arg>

删除备份。 <arg>n(d | m | y)

备份计划示例
示例 69. 计划默认完整备份和增量备份
zmschedulebackup -D
示例 70. 使用新计划替换现有计划
zmschedulebackup -R f ["schedule"]
示例 71. 将额外的完整备份添加到现有计划
zmschedulebackup -A f ["schedule"]
示例 72. 将额外的增量备份添加到现有计划
zmschedulebackup -A i ["schedule"]
示例 73. 显示现有计划
zmschedulebackup -q
示例 74. 将时间表显示在一行上

将时间表显示在一行上作为命令,以便可以复制它们 到文本文件并保存以供应用程序需要时使用 恢复了。

zmschedulebackup -s

zmbackupabort

使用zmbackupabort停止备份进程。 在您可以中止之前 您必须知道帐户的备份标签。 此标签会在您之后显示 启动备份过程。 如果您不知道标签,请使用zmbackupquery找到标签名称。

停止恢复过程:

zmbackupabort -r中断正在进行的恢复。 恢复过程 当前帐户恢复后将停止。 该命令显示 显示哪些帐户未恢复的消息。

语法
zmbackupabort [options]
说明
长名称 短名称 说明

--debug

-d

显示用于调试目的的诊断信息

--help

-h

显示此命令的使用选项

--label

-lb

<arg>要中止的完整备份的标签。

使用zmbackupquery查找标签名称。

--restore

-r

中止正在进行的恢复

--server

-s

<arg>邮件服务器主机名。 对于格式,请使用纯主机名 或 server.domain.com 名称。 默认值是本地主机名称。

--target

-t

<arg>指定目标备份位置。

默认为/opt/zimbra/backup.

zmbackupquery

使用zmbackupquery查找完整备份集。 该命令可用于 查找自特定日期以来的一个或多个特定完整备份集, 或备份目录中的所有备份集。

找出最好的完整备份作为时间点的基础 要恢复帐户,请运行如下命令:

zmbackupquery -a <account email> --type full --to <restore-to time>
语法
zmbackupquery [options]
说明
长名称 简称 描述

--account

-a

<arg>帐户电子邮件地址以空格分隔或全部分隔 帐户

--debug

-d

显示用于调试目的的诊断信息

--help

-h

显示此命令的使用选项

--from

<arg>列出开始日期/时间等于或晚于该日期/时间的备份 此处指定。

--label

-lb

<arg>要查询的完整备份会话的标签。 一个例子 标签是backup202107121559510.

--server

-s

<arg>邮件服务器主机名。 对于格式,请使用纯主机名 或 server.domain.com 名称。 默认值是本地主机名称。

--target

-t

<arg>指定备份目标位置(默认为 /opt/zimbra/backup.)

--to

<arg>列出开始日期/时间等于或早于该日期/时间的备份 此处指定。

--type

<arg>要查询的备份集类型。 “完整”或“增量”,两者都是 如果未指定则查询。

--verbose

-v

返回详细的状态信息

以下列格式之一指定日期/时间:

2021/12/16 12:19:23

2021/12/16 12:19:23 257

2021/12/16 12:19:23.257

2021/12/16-12:19:23-257

2021/12/16-12:19:23

20211216.121923.257

20211216.121923

20211216121923257

20211216121923

指定年、月、日、时、分、秒,并且可选 毫秒。

月/日/时/分/秒用 0 填充为 2 位数字,毫秒为 3 位 数字。

小时必须以 24 小时格式指定,并且时间采用本地时区。

zmrestore

使用zmrestore执行完整恢复和增量恢复 指定邮件主机。 您可以指定特定帐户,或者,如果没有 指定帐户后,备份中的所有帐户都会恢复。 在 此外,您还可以恢复到特定时间点。

该实用程序具有短选项名称和全名称。 简短的选项是 前面有一个破折号,完整选项后面有一个双破折号。 例如,-rf--restorefullBackupOnly.

相同 语法
zmrestore [options]
说明
长名称 短名称 说明

--account

-a

<arg>指定帐户电子邮件地址。 单独的帐户 空格或键入 all 以恢复所有帐户。

--backedupRedologs

-br

仅重播备份中的重做日志,仅排除已归档和 系统当前的重做日志。

--continueOnError

-c

发生错误时继续恢复其他帐户。

--createAccount

-ca

将帐户恢复到名称前面带有前缀的目标帐户。

(只能在使用-pre选项的命令中使用。)

--debug

-d

显示用于调试目的的诊断信息。

--excludeBlobs

不恢复 blob(SM 或非 SM)。

--excludeHsmBlobs

不恢复 SM blob。

--excludeSearchIndex

不恢复搜索索引。

--help

-h

显示此命令的使用选项。

--label

-lb

<arg>要恢复的完整备份的标签。 恢复到最新的 如果省略则进行完整备份。

--prefix

-pre

<arg>原始帐户名称前面的前缀。

--restoreAccount

-ra

恢复目录服务中的帐户。

--restoreToIncrLabel

<arg>重放重做日志直至并包括此增量备份

--restoreToRedoSeq

<arg>重放直至并包括此重做日志序列。

--restoreToTime

<arg>重播重做日志直到此时。

--restorefullBackupOnly

-rf

仅恢复到完整备份,而不是此后的任何增量备份 备份。

--server

-s

<arg>邮件服务器主机名。 对于格式,请使用纯主机名 或 server.domain.com 名称。 默认值是本地主机名称。

--skipDeletes

如果为 true,则在重做日志重放期间不执行删除操作。

--skipDeletedAccounts

如果指定帐户已删除或备份时不存在,则不进行恢复 时间。 (此选项始终启用-a all)

--systemData

-sys

恢复全局表和本地配置。

--target

-t

<arg>指定备份目标位置。 默认为 /opt/zimbra/backup.

示例
示例 75. 对server1

上的所有帐户执行完整还原 对server1上的所有帐户执行完整还原,包括最后一个 完整备份以及自上次完整备份以来的任何增量备份。

zmrestore -a all -s server1.domain.com
示例 76. 仅执行恢复到上次完整备份

仅执行恢复到上次完整备份,不包括增量备份 从那时起,对于server1.

zmrestore -rf -a all -s server1.domain.com
上的所有帐户进行备份 示例 77. 从目标帐户

的备份创建新帐户 新帐户的名称将为new_user1@domain.com.

zmrestore -a user1@domain.com -ca -pre new_

zmrestoreoffline(脱机还原)

zmrestoreoffline要求满足以下条件:

  • mailboxd未运行

  • SQL 数据库正在运行

  • LDAP 目录正在运行

先决条件

语法
zmrestoreoffline [options]
说明
长名称 短名称 说明

--account

-a

<arg>指定帐户电子邮件地址。 单独的帐户 空白或状态all用于恢复所有帐户。 必需.

--backedupRedologsOnly

-br

仅重播备份中的重做日志,不包括已归档和当前的重做日志 系统的重做日志。

--continueOnError

-c

发生错误时继续恢复其他帐户。

--createAccount

-ca

将帐户恢复到名称前面带有以下字符的新目标帐户 前缀。

--debug

-d

显示用于调试目的的诊断信息。

--help

-h

显示此命令的使用选项。

--ignoreRedoErrors

如果为 true,则忽略重做日志重放期间的所有错误。

--label

-lb

<arg>要恢复的完整备份的标签。 键入此标签以 指定最新的备份文件以外的备份文件。

--prefix

-pre

<prefix>原始帐户名称前面的前缀。

--restoreAccount

-ra

恢复目录服务中的帐户。

--restoreToIncrLabel

<arg>重播重做日志直至并包括此增量备份。

--restoreToRedoSeq

<arg>重播直到并包括此重做日志序列。

--restoreToTime

<arg>重播重做日志直到此时。

--restoreFullBackupOnly

-rf

仅恢复到完整备份,而不是此后的任何增量备份 备份。

--server

-s

<arg>邮件服务器主机名。 对于格式,请使用纯主机名 或 server.domain.com 名称。 默认值是本地主机名称。 如果-s 已指定,这必须是 localhost。

--skipDeletedAccounts

-skipDeletedAccounts

如果指定帐户已删除或备份时不存在,则不要恢复 时间。 (此选项始终启用-a all)

--systemData

-sys

恢复全局表和本地配置。

--target

-t

<arg>指定备份目标位置。 默认为 /opt/zimbra/backup.

示例

开始之前zmrestoreoffline,LDAP 目录服务器必须是 运行。

示例 78. 对server1 上的所有帐户执行完整还原

server1 上的所有帐户执行完整还原,包括最后一个 完整备份以及自上次完整备份以来的任何增量备份。

zmrestoreoffline -s server1.domain.com

zmrestoreldap

使用zmrestoreldap从 LDAP 备份恢复帐户。

语法
zmrestoreldap {-lb <arg>} {-t <arg>} [options]
描述
简称 描述

-lb

<arg>要从中恢复的会话标签。 例如,full202112291821113.

-t

<arg>指定备份目标位置。 默认为/opt/zimbra/backup.

-lbs

列出备份中的所有会话标签。

-l

列出文件中的帐户。

-a

<arg>恢复指定帐户。 列出以白色分隔的帐户名称 空间。

zmcontrol(启动/停止/重新启动服务)

由于许可证守护程序服务是一项关键且重要的服务,因此它不通过zmcontrol命令进行管理。zmcontrol命令显示状态,但无法启动/停止/重新启动 LDS。使用zmlicensectl执行 LDS 的启动/停止/重新启动操作。

使用zmcontrol启动、停止或重新启动服务。 您还可以 查找安装的 Zimbra Collaboration 版本。

语法
zmcontrol [ -v -h ] command [args]
描述
长名称 短名称 描述

-v

显示 Zimbra 软件版本。

-h

显示此命令的使用选项。

-H

主机名 (localhost)。

Command in…​

maintenance

Toggle maintenance mode.

restart

Restarts all services and manager on this host.

shutdown

Shutdown all services and manager on this host. When the manager is shutdown, you cannot query that status.

start

Startup manager and all services on this host.

startup

Startup manager and all services on this host.

status

Returns services information for the named host.

stop

Stop all services but leaves the manager running.

使用zmmboxsearch用于跨邮箱搜索。 您可以搜索 跨邮箱查找与特定匹配的邮件和附件 标准并将这些消息的副本保存到目录中。

语法
zmmboxsearch {-m <arg>} {-q <arg>} [-o <arg>] [-l <arg>] [-d <arg>] [options]
说明
长名称 短名称 说明

--dir

-d

<arg>将消息写入的文件夹。 如果没有指定,则 仅获取标头。 文件名以以下形式生成 RESULTNUM_ACCOUNT-ID_MAILITEMID.

--help

-h

显示帮助信息。

--limit

-l

设置返回结果的数量限制。 默认值为 25。

--mbox

-m

<arg>要搜索的以逗号分隔的邮箱列表。 UID 或电子邮件地址 或/SERVER/MAILBOXID*.

--offset

-o

<arg>指定命中列表的开始位置。 默认值为 0。

--query

-q

<arg>用于搜索的查询字符串。

--server

-s

<arg>邮件服务器主机名。 默认值是 localhost

--verbose

-v

请求在执行搜索时打印状态消息。

示例

以下示例在收件箱文件夹中执行跨邮箱搜索 指定服务器上的两个不同邮箱的副本,并放置找到的副本 将消息发送到指定目录。

示例 79. 跨邮箱搜索
zmmboxsearch -m user1@yourdomain.com,user2@yourdomain.com -q "in:inbox" -d /var/tmp

zmmboxmove

使用zmmboxmove移动邮箱。 目标服务器管理 整体搬家流程。 使用zmmboxmove命令显着减少 帐户锁定时间。

CLI 命令zmmboxmove用于从一个 Zimbra 移动邮箱 服务器到另一个。 邮箱可以在 Zimbra 服务器之间移动 共享同一个 LDAP 服务器。 所有文件都复制到新服务器上 LDAP 已更新。 邮箱移动到新服务器后,会生成一个副本 仍然保留在旧服务器上,但旧邮箱的状态为 closed。 用户无法登录,邮件也无法送达。 你应该检查一下 查看清除之前所有邮箱内容已成功移动 旧邮箱。

语法
zmmboxmove -a <email> --from <src> --to <dest> [--sync]
描述
长名称 短名称 描述

--account

-a

<arg>要移动的帐户的电子邮件地址。

--help

-h

显示此命令的使用选项。

--from

-f

<arg>邮件服务器主机名。 服务器所在的--account邮箱是 位于。

--to

-t

<arg>目标服务器。

--sync

-sync

同步运行

zmmboxmovequery

使用zmmboxmovequery查询服务器上正在进行的邮箱移动,两者 迁入和迁出。

语法
zmmboxmovequery -a <account email> [-s <server to query>]

zmpurgeoldmbox

使用zmpurgeoldmbox在某个时间后从旧服务器中清除邮箱 邮箱移动。

语法
zmpurgeoldmbox -a <account email> [-s <server to purge>]
说明
长名称 短名称 说明

--account

-a

<arg>要清除的帐户的电子邮件地址。

--help

-h

显示此命令的使用选项

--server

-s

<arg>邮件服务器主机名。 帐户所在的旧服务器

zmgsautil

使用zmgsautil创建或删除 GAL 同步帐户,并强制 将 LDAP 数据同步到 GAL 同步帐户。

在域上配置 GAL 时会创建 GAL 同步帐户。 这个 创建帐户,执行完全同步的轮询间隔为 从管理控制台进行管理。

要查看 GAL 同步帐户的属性和设置,请运行zmprov gds 针对帐户。

长名称 说明

createAccount

创建 GAL 同步帐户。 这应该从 管理控制台。

参数“服务器”是必需的。

-a {account-name} -n {datasource-name} --domain {domain-name} -t zimbra|ldap -s {server} [-f {folder-name}] [-p {polling-interval}]

addDataSource

为服务器配置数据源时,指定文件夹名称 other 比/Contacts。 数据源文件夹名称必须是唯一的。

-a {account-name} -n {datasource-name} --domain {domain-name} -t zimbra|ldap [-f {folder-name}] [-p {polling-interval}]

deleteAccount

删除 GAL 同步帐户和对 LDAP 服务器的引用。 的 也可以从管理控制台删除帐户。

deleteAccount [-a {galsynceaccountname}|-i {account-id}]

trickleSync

这仅同步新的和更新的联系人数据。

[-a {galsynceaccountname}|-i {account-id}]
[-d {datasource-id}] [-n {datsource-name}]

数据源 ID LDAP 数据源 ID。 数据源名称就是名称 创建用于同步 LDAP 的 GAL 帐户中的地址簿(文件夹)的名称。

可以设置 cron 作业来运行trickleSync.

fullSync

这会同步所有 LDAP 联系人数据。 您也可以从 管理控制台。

[-a {galsynceaccountname}|-i {account-id}]
[-d {datasource-id}] [-n {datsource-name}]

forceSync

如果有更改,这应该用于重新加载整个 GAL 过滤器、属性映射或 LDAP 服务器参数。

[-a {galsynceaccountname}|-i {account-id}]
[-d {datasource-id}] [-n {datsource-name}]

zmldappasswd

使用zmldappasswd更改本地服务器上的 LDAP 密码。 在 多节点环境,该命令必须在 LDAP 主服务器上运行 仅。

此 CLI 命令与选项一起使用可更改其他密码。

为了更好的安全性和审计跟踪,生成以下密码 在 Zimbra 中:

  • LDAP 管理员密码。 这是主 LDAP 密码。

  • LDAP 根密码。 这用于内部 LDAP 操作。

  • LDAP Postfix 密码。 这是使用的密码postfix用户 向 LDAP 服务器标识其自身,并且必须在 MTA 上进行配置 服务器的密码与 LDAP 主服务器上的密码相同。

  • LDAP Amavis 密码。 这是amavis用户使用的密码 向 LDAP 服务器标识其自身,并且必须在 MTA 服务器上进行配置 与 LDAP 服务器上的密码相同。

  • LDAP 复制密码。 这是使用的密码 LDAPreplication用户向 LDAP 主服务器标识自己,并且必须是 与 LDAP 主服务器上的密码相同。

语法
zmldappasswd [-h] [-r] [-p] [-l] new-password
说明
名称 语法、示例、注释

-h

显示帮助。

-a

更改ldap_amavis-password.

-b

更改ldap_bes_searcher_password.

-l

更改ldap_replication_password.

-p

更改ldap_postfix_password.

-n

更改ldap_nginx_password.

-r

更改ldap_root_passwd.

-c

更新副本上配置数据库中的密码。 必须与 -1并且必须在更改密码后在副本上运行 大师。

Only one of a, l, p, or r can be specified. If options are not included, the zimbra_ldap_password is changed.

zmlocalconfig

使用zmlocalconfig设置或获取 Zimbra 的本地配置 服务器。 使用zmlocalconfig -i查看支持的属性列表 可由管理员配置。

语法
zmlocalconfig [options]

查看本地配置类型zmlocalconfig.

描述
长名称 短名称 描述

--config

-c

<arg>存储配置的文件。

--default

-d

显示[args].

--edit

-e

中列出的键的默认值 编辑配置文件,更改指定的键和值。 的 [args]采用key=value形式。

--force

-f

编辑已知其更改具有潜在危险的键。

--help

-h

显示此工具的使用选项的帮助。

--info

-i

显示支持的属性列表。

--format

-m

<arg>以下列格式之一显示值:plain(默认),xml, shell, nokey.

--changed

-n

仅显示[args]中列出的那些已被修改的键的值 从默认值更改。

--path

-p

显示将使用哪个配置文件。

--quiet

-q

禁止记录。

--random

-r

该选项与编辑选项一起使用。 指定的密钥设置为随机 密码字符串。

--show

-s

强制显示密码字符串。

--unset

-u

删除配置密钥。 如果这是具有编译默认值的键, 将其值设置为空字符串。

--expand

-x

扩展值。

--zimbraAmavisMaxServers

允许控制 Amavisd 的并发度(默认为 10)。

--zimbraClamAVMaxThreads

允许控制 ClamAV 的并发度(默认为 10)。

zmmailbox

使用zmmailbox用于邮箱管理。 该命令可以帮助 管理员配置新邮箱和帐户,调试问题 使用邮箱并帮助迁移。

您可以从内部调用zmmailbox命令zmprov命令。 您在selectMailbox中输入zmprov来访问 zmmailbox 命令 连接到指定的邮箱。 然后您可以输入zmmailbox 命令,直到您键入 exit。 退出将返回到zmprov。 这是 当您想要创建帐户并预先创建一些文件夹时很有用, 标签,或同时保存的搜索。

语法
zmmailbox [args] [cmd] [cmd-args]...
说明
短名称 长名称 语法、示例和注释

-h

--help

显示用法。

-f

--file

使用文件作为输入流。

-u

--url

http[s]://{host}[:{port}]服务器主机名和可选端口。 必须使用 具有-z/-a.

-a

--account

帐户名称的管理端口,以{name}.

-z

--zadmin

进行身份验证 使用 localconfig 中的 zimbra 管理员名称/密码作为管理员/密码。

-y

--authtoken {authtoken}

从命令行使用 authtoken 字符串(必须为 JSON 格式)。

-Y

--authtoken {authtoken-file}

使用文件中的 authtoken 字符串(必须为 JSON 格式)。

-m

--mailbox {name}

邮箱打开。 可以用作经过身份验证的和有针对性的,除非 指定了其他选项。

--auth {name}

授权的帐户名称。 默认为 --mailbox除非--admin-priv被使用。

-A

--admin-priv

使用管理员权限执行请求。

-p

--password {pass}

管理员帐户和/或邮箱的密码。

-P

--passfile {file}

从文件中读取密码。

-t

--timeout

超时(以秒为单位)。

-v

--verbose

详细模式(转储完整异常堆栈跟踪)

-d

--debug

调试模式(转储 SOAP 消息)

特定 CLI 工具可用于邮箱的不同组件。 CLI 帮助中描述了以下内容的用法。

zmmailbox help admin

有关管理相关命令的帮助。

zmmailbox help commands

所有zmmailbox命令的帮助。

zmmailbox help appointment

有关约会相关命令的帮助。

zmmailbox help contact

有关联系人相关命令(地址簿)的帮助。

zmmailbox help conversation

有关对话相关命令的帮助。

zmmailbox help filter

有关过滤器相关命令的帮助。

zmmailbox help folder

有关文件夹相关命令的帮助。

zmmailbox help item

有关项目相关命令的帮助。

zmmailbox help message

有关消息相关命令的帮助。

zmmailbox help misc

有关其他命令的帮助。

zmmailbox help right

有关正确命令的帮助。

zmmailbox help search

有关搜索相关命令的帮助。

zmmailbox help tag

标签相关命令的帮助。

示例
示例 80. 创建标签和文件夹

创建帐户时,您可能需要预先创建一些标签和文件夹 文件夹。 您可以调用zmmailboxzmprov内部使用 selectMailbox(sm).

$ zmprov
prov> ca user10@domain.example.com test123
9a993516-aa49-4fa5-bc0d-f740a474f7a8
prov> sm user10@domain.example.com
mailbox: user10@domain.example.com, size: 0 B, messages: 0, unread: 0
mbox user10@domain.example.com> createFolder /Archive
257
mbox user10@domain.example.com> createTag TODO
64
mbox user10@domain.example.com> createSearchFolder /unread "is:unread"
258
mbox user10@domain.example.com> exit
prov>
示例 81. 查找帐户的邮箱大小
zmmailbox -z-m user@example.com gms
示例 82. 使用管理员身份验证令牌向邮箱发送请求

使用命令emptyDumpster时需要这样做。 使用 --admin-priv跳过作为目标邮箱的委托身份验证。

zmmailbox -z --admin-priv -m foo@example.com emptyDumpster
示例 83. 将--admin-priv与选择邮箱命令结合使用
zmmailbox -z
mbox> sm --admin-priv foo@domain.com
示例 84. 以委派管理员用户身份进行身份验证

这允许一个用户登录另一用户的邮箱。 认证的 用户必须是委派管理员帐户并且必须具有adminLoginAs权限 在目标邮箱上。 此身份验证选项使用非管理员身份验证令牌。 使用 的--auth指定身份验证帐户的选项。 登录方式 用户bar并打开邮箱foo:

$ zmmailbox --auth bar@example.com -p password -m foo@example.com
示例 85. 查找帐户的邮箱大小
zmmailbox -z -m user@example.com gms
示例 86. 备份zip文件中的邮箱内容

当您使用zmmailbox备份单个邮箱时,您可以保存 该文件为zip文件或 tgz 文件。 默认设置为 以这些格式保存的信息是不同的。

文件 TGZ ZIP

公文包

X

X

日历

X

对话

X

联系人

X

X

已删除邮件

X

X

通过电子邮件发送的联系人

X

收件箱

X

X

已发送

X

X

已发送邮件

X

X

任务

X

将所有邮箱内容包含在zip文件,您必须启用元 数据。 键入:

zmmailbox -z -m user@example.com gru "?fmt=zip&meta=1" > <filename.zip>

zmtlsctl

使用zmtlsctl将 Web 服务器zimbraMailMode设置为通信 协议选项:HTTP、HTTPS、混合、两者和重定向。 默认 设置为 HTTPS。

zmtlsctl设置也会影响 ZCO使用安全连接环境。 自签名环境中的 ZCO 用户会遇到警告 关于连接安全,除非将根 CA 证书添加到 Window 证书存储。 请参阅 Zimbra 维基文章 ZCO 连接 安全性了解更多信息。
  • HTTP。 仅 HTTP,用户将浏览到http://zimbra.domain.com.

  • HTTPS。仅 HTTPS(默认),用户将浏览到https://zimbra.domain.com. http://被拒绝。

  • 混合如果用户去http://它将切换到https://为 仅登录,然后将恢复为http://对于正常会话流量。 如果 用户浏览到https://,然后用户将保持https://

  • 两者用户可以转到http://https://并将保持该模式 整个会议。

  • 重定向就像混合一样,如果用户转到http://它将切换到 https://但他们会留下来https://他们的整个会议。

所有模式都对后端管理流量使用 TLS 加密。

只有zimbraMailMode HTTPS才能确保没有监听器可用 在 HTTP/端口 80 上,没有客户端应用程序会尝试通过 HTTP 进行身份验证,并且 与客户端应用程序交换的所有数据都将被加密。

注意,必须停止并重新启动mailboxd才能使更改生效。

如果切换到 HTTPS,则使用生成的自签名证书 在 /opt/zimbra/ssl/zimbra/server/server.crt 中安装 Zimbra 期间。 对于 ZCO 用户,安全的 ZCO 配置文件将显示证书信任对话框 除非根CA证书部署到服务器。 了解更多 有关 ZCO 证书的信息,请参阅 Zimbra Wiki 页面 ZCO 连接 安全.
语法
zmtlsctl [mode]

mode = http, https, mixed, both, redirect

运行
  1. 的步骤 键入zmtlsctl [mode]并按ENTER.

  2. 键入zmmailboxdctl stop然后按ENTER。

  3. mailboxd停止时,键入zmmailboxdctl start并按进入。

使用重定向时的限制
  • 许多客户端应用程序在初始 HTTP 请求中发送身份验证请求 到服务器(“盲验证”)。 这意味着该授权 在任何可能的机会之前以明文/未加密的方式发送请求 将客户端应用程序重定向到 HTTPS。

  • 重定向模式允许中间人攻击的可能性, 国际/无意重定向到无效服务器,或 用户可能会错误地输入服务器名称并且没有 服务器基于证书的有效性。

  • 在许多客户端应用程序中,用户不可能判断他们是否 已被重定向(例如 ActiveSync),因此用户 即使身份验证请求未加密发送,也继续使用 HTTP。

zmhsm

使用zmhsm启动、停止(中止)和查看 SM 会话的状态。 消息移动到存储卷时的阈值是 从管理控制台配置,服务器页。

语法
zmhsm {abort|start|status} {server} <name>
说明
长名称 短名称 说明

--abort

-a

中止当前 SM 会话。 如果一个邮箱中的所有邮件都是 在您单击中止之前,已处理的内容未移动,没有来自该消息的消息 邮箱已从主卷移出。 发往邮箱的邮件 已完成向辅助卷的移动 未移回 主卷。

--help

-h

显示此工具的使用选项的帮助。

--server

-s

<arg>邮件服务器主机名。 默认是localhost[args].

--start

-t

手动启动SM进程。

--status

-u

显示最后一个 SM 会话的状态。

zmlicense

使用zmlicense查看并安装您的 Zimbra 许可证。 可以从管理控制台查看和安装许可证,全局设置 → 许可证页。

语法
zmlicense [options]
说明
长名称 短名称 说明

--check

-c

检查是否安装了有效许可证。

--help

-h

显示此工具的使用选项的帮助。

--install

-i

<arg>安装指定的许可证文件。

--ldap

-l

仅在 LDAP 上安装。

--print

-p

显示许可证信息。

zmmetadump

zmmetadump命令是一个支持工具,用于转储文件的内容 项目的元数据采用人类可读的形式。

语法
zmmetadump -m <mailbox id/email> -i <item id>

zmmetadump -f <file containing encoded metadata>

zmmypasswd

使用zmmypasswd更改zimbra_mysql_password。 如果--root选项 被指定时,mysql_root_passwd被改变了。 在这两种情况下,MariaDB 都是 使用新密码更新。 参考MariaDB文档查看 如何临时启动 MariaDB 服务器以跳过授权表 覆盖 root 密码。

这需要重新启动才能使更改生效。
语法
zmmypasswd [--root] <new_password>

zmplayredo

使用快照维护备份和恢复机制的用户 存储层使用的便利性zmplayredo恢复备份的数据。 此命令将所有备份数据恢复到当前状态,以便 恢复过程中不会丢失信息。

语法
zmplayredo <option>
说明
长名称 短名称 说明

--fromSeq

<arg>重播指定重做日志序列中的快照。

--fromTime

<arg>回放指定时间的快照。

--help

-h

显示此命令的帮助信息。

--logfiles

<arg>按顺序重播指定的日志文件。

--mailboxId

<arg>重播指定邮箱的快照。

--queueCapacity

<arg>用于指定每个播放器线程的队列容量。 的 默认值为 100。

--stopOnError

发生任何错误时停止重播。

--threads

<arg>指定并行重做线程的数量。 默认值为 50.

--toSeq

<arg>将快照重播到指定的重做日志序列。

--toTime

<arg>将快照重播到指定时间。

时间以本地时区指定。 年、月、日、时、 应指定分钟、秒和可选的毫秒。 月/日/时/分/秒以 0 填充至 2 位数字,毫秒至 3 位数字。 必须以 24 小时格式指定小时。

zmproxyconfgen

使用zmproxyconfgen生成 Nginx 代理配置文件。 它 读取 LDAP 设置以替换模板变量并生成 最终 Nginx 配置。

语法
ProxyConfGen [options]
说明
长名称 短名称 说明

--config

-c

<arg>覆盖配置变量。 <arg>格式应该是name=value。 要查看名称列表,请使用-d-D.

--defaults

-d

打印默认变量映射。

--definitions

-D

加载 LDAP 配置后打印定义变量映射 处理覆盖。

--help

-h

显示帮助信息。

--include-dir

-i

<arg>显示目录路径(相对于$workdir/conf),其中 写入包含的配置文件。

--dry-run

-n

指定不写入配置并仅显示将要写入的文件 被写下来。

--prefix

-p

<arg>显示配置文件前缀。 默认值为nginx.conf

--template-prefix

-P

<arg>显示模板文件前缀。 默认值为$prefix.

--server

-s

<arg>指定有效的服务器对象。 配置是根据生成的 在指定服务器的属性上。 默认是生成 基于全局配置值的配置。

--templatedir

-t

<arg>指定代理模板目录。 默认值为 $workdir/conf/nginx/templates.

--verbose

-v

显示详细数据。

--workdir

-w

<arg>指定代理工作目录。 默认值为 /opt/zimbra.

zmproxypurge

使用zmproxypurge清除来自一个或多个 POP/IMAP 代理路由信息 更多 memcached 服务器。 可用的 memcached 服务器由 zmprov gamcs函数。 如有必要,可以使用以下命令指定其他内容 服务器端口。

语法
ProxyPurgeUtil [-v] [-i] -a account [-L accountlist] [cache1] [cache2]...]
说明
长名称 短名称 说明

--help

-h

显示此工具的使用选项的帮助。

--verbose

-v

显示详细数据。

--info

-i

显示帐户路由信息。

--account

-a

显示帐户名称。

--list

-L

显示包含帐户列表的文件,每行一个。

--output

-o

指定用于打印路由信息的格式 信息。 默认显示的字段为

  • 缓存服务器

  • 帐户名

  • 路由信息

cacheN

(可选命令) 以以下形式指定附加 Memcache 服务器 服务器:端口。

zmredodump

使用zmredodump进行调试并转储 a 的内容 重做日志文件。 当用户调试问题时,Zimbra 支持可能会 要求他们使用特定选项运行zmredodump

可以使用所有重做日志文件指定多个日志文件/目录 每个目录下按升序排序并处理。

语法
zmredodump [options] <redolog file/directory> [...]
说明
长名称 短名称 说明

--help

-h

显示帮助消息。

-m

指定以逗号或空格分隔的邮箱 ID。 整个清单 如果使用空格作为分隔符,则必须用引号引起来的邮箱 ID。

要转储所有重做日志文件的内容,请忽略此选项。

--no-offset

指定每个重做日志转储的文件偏移量和大小是否不应 显示。

--quiet

-q

激活安静模式。 用于仅打印日志文件名和错误, 如果有的话。 对于以最少的输出验证重做日志的完整性很有用。

--show-blob

显示 blob 内容。 指定项目的 blob 打印有<START OF BLOB><END OF BLOB>标记 blob 的开始和结束。

zmskindeploy

使用zmskindeploy简化为经典 Web 应用程序部署外观的过程。 该工具处理可用的皮肤,为 Zimbra 部署的所有用户启用它们,并重新启动 Web 服务器以使其识别新皮肤。

语法
zmskindeploy <path/to/skin/dir/or/zipfile>

zmsoap

使用zmsoap以 SOAP 格式打印邮件、帐户和管理信息。

语法
zmsoap [options] {path1} [path2]...
说明
长名称 短名称 说明

--help

-h

打印使用信息。

--mailbox

-m

<name>显示邮箱帐户名称。 邮件和帐户请求已发送 到这个帐户。 如果-a则此属性也用于身份验证 和-z未指定。

--target

<name>显示请求发送到的目标帐户名称。 仅用于非管理会话。

--admin name

-a

<name>显示要进行身份验证的管理员帐户名称。

--zadmin

-z

显示进行身份验证的 Zimbra 管理员名称和密码。

--password

-p

<pass>显示帐户密码。

--passfile

-P

<path>从文件中读取密码。

--element

-e

<path>显示根元素路径。 如果指定,则所有路径参数 不以斜杠 (/) 开头的内容与此元素相关。

--type

-t

<type>显示 SOAP 请求类型。 可以是mail, account, 或admin.

--url

-u

<http[s]://…​>显示服务器主机名和可选端口值。

--verbose

-v

打印 SOAP 请求和其他状态信息。

path

<[path]…​>显示元素或属性路径和值。 大致 遵循 XPath 语法:[/]element1[/element2][/@attr][=value].

zmstat-chart

使用zmstat-chart收集CPU、IO的统计信息,mailboxd、MTAqueue、MariaDB 和其他组件并在其上运行脚本 csv 文件以在各种图表中显示使用详细信息。 这些 csv 文件 保存到/opt/zimbra/zmstat/.

您必须启用zmstat来收集性能图表数据:

  1. 进入zmprov ms {hostname} zimbraServerEnable stats.

  2. 重启服务器,输入:

    zmcontrol stop
    zmcontrol start
语法
zmstat-chart -s <arg> -d <arg> [options]
说明
长名称 短名称 描述

--aggregate-end-at

<arg>如果指定,则聚合计算在此结束 时间戳。 用法是MM/dd/yyyy HH:mm:ss.

--aggregate-start-at

<arg>如果指定了此项,聚合计算将从这里开始 时间戳。 用法为MM/dd/yyyy HH:mm:ss.

--end-at

<arg>如果指定此项,则指定时间戳之后的所有样本 被忽略。 用法为MM/dd/yyyy HH:mm:ss.

--start-at

<arg>如果指定此项,则此时间戳之前的所有样本 被忽略。

--title

<arg>这为图表提供了一个显示的标题。 默认为最后一个 srcdir 的目录名。

--no-summary

不包括摘要数据生成。

--conf

-c

<arg>绘制配置 xml 文件的图表。

--destdir

-d

<arg>生成的图表文件的保存目录。

--srcdir

csv 文件所在的一个或多个目录。 csv 文件是 移至zmstat/.

zmstat-chart-config 下按日期列出的目录

使用zmstat-chart-config生成 xml 文件 /opt/zimbra/conf/zmstat-chart.xml来自模板,考虑到 服务器设置,包括 LDAP 节点和运行的进程等 规格。

zmstatctl

使用zmstatctl运行控制脚本来检查zmstat数据 收藏家。 该指令启动或停止监视进程,并且 检查状态或轮换日志。

语法
zmstatctl start|stop|status|rotate

zmthrdump

使用zmthrdump在 Zimbra 服务器进程中调用线程转储并 打印输出文件。 该命令还提供了保存 线程转储到文件并在日志文件上插入时间戳。

语法
zmthrdump [-h] [-i] [-t <timeout seconds>] [-p <pid file>] [-f <file>] [-o <out-file>]
说明
短名称 说明

-h

显示帮助消息。

-i

在调用 SIGQUIT 之前将时间戳附加到 LOGFILE。

-p

返回发送 SIGQUIT 的 PID。 默认值可以在中找到zmmailboxd_java.pid

-f

指定保存线程转储输出的 LOGFILE。默认值 iszmmailbox.out.

-o

指定线程的输出文件 转储。 默认值是标准输出。

-t

指定进程退出的超时值(以秒为单位) 没有反应。 默认值为 30 秒。

zmtrainsa

使用zmtrainsa训练反垃圾邮件过滤器。 该命令运行 每晚自动训练 SpamAssasin 邮件过滤器 用户将其邮箱标记为“垃圾”/“非垃圾”。 参见 SpamAssassin 的 sa-update 工具,即 包含在 SpamAssassin 中。 此工具更新 SpamAssassin 规则 SA组织。 该工具安装到/opt/zimbra/common/bin.

中。可以手动运行zmtrainsa命令以转发来自任何文件夹的任何文件夹。 邮箱到垃圾邮件培训邮箱。 如果不输入文件夹名称 当你手动运行时zmtrainsa对于帐户,对于垃圾邮件,默认值 文件夹是垃圾。 对于火腿,默认文件夹是“收件箱”。

语法
zmtrainsa <user> <spam|ham> [folder]

zmtzupdate

使用zmtzupdate更新现有约会中的时区更改 特定用户或所有用户。 应首先创建.ics规则文件 使用此命令运行。 规则文件列出了一系列匹配时间的规则 区和替换时区定义。 有关更多信息 该命令可以在以下位置找到: https://www.zimbra.com.cn/wiki/Changing_ZCS_Time_Zones.

语法
zmtzupdate --rulefile <rule file> -a <"all" or list of specific email addresses> [--sync] [--after <date/time stamp>]
描述
长名称* 短名称 描述

--account

-a

<arg>帐户电子邮件地址,以空格分隔。 使用“全部” 所有帐户均需更新。

--after

<arg>在此字段中指定的日期/时间之后发生的约会 已更新。 默认截止时间为2008 年1 月1 日。

--help

-h

显示帮助信息。

--rulefile

指定应用于更新时区的.icsXML 文件 定义。

--server

-s

<arg>指定邮件服务器主机名。 默认值为 本地主机。

--sync

如果指定,此选项会导致zmtzupdate命令阻塞,直到 服务器处理所有请求的帐户。 默认值为否。

zmvolume

使用zmvolume从 CLI 管理存储卷。 请注意,卷 可以从管理控制台服务器页面进行管理。

语法
zmvolume {-a|-d|-l|-e|-dc|-sc} [options]
说明
长名称 短名称 说明

--add

-a

添加卷。

--compress

-c

<arg>压缩 BLOB; “真”或“假”。

--compressionThreshold

-ct

压缩阈值;默认 4KB。

--delete

-d

删除卷。

--displayCurrent

-dc

显示当前音量。

--edit

-e

编辑卷。

--help

-h

显示此工具的使用选项的帮助。

--id

-id

<arg>卷 ID。

--list

-l

列出卷。

--name

-n

<arg>卷名。

--path

-p

<arg>根路径。

--server

-s

<arg>邮件服务器主机名。 默认是本地主机。

--setCurrent

-sc

设置当前音量。

--type

-t

<arg>卷类型(primaryMessage、 secondaryMessage 或索引)

--turnOffSecondary

-ts

关闭当前辅助消息音量。

zmzimletctl

使用zmzimletctl管理 Zimlet 并列出服务器上的所有 Zimlet。 附加信息提供于齐姆莱茨。 大多数齐姆莱特 可以从 Zimbra 管理控制台完成部署。

语法
zmzimletctl [-l] {command} [<zimlet.zip>|<config.xml>|<zimlet>]
描述
长名称 描述

deploy

<zimlet.zip>在 LDAP 服务器中创建 Zimlet 条目,安装 服务器上的 zimlet 文件,授予默认成员的访问权限 COS,然后打开 Zimlet。

undeploy

<zimlet>从 Zimbra 服务器卸载 zimlet。

install

<zimlet.zip>在主机上安装 Zimlet 文件。

ldapDeploy

<zimlet>将 Zimlet 条目添加到 LDAP。

enable

<zimlet>启用 Zimlet。

disable

<zimlet>禁用 Zimlet。

acl

<zimlet> <cos1> {grant | deny} | [<cos2> {grant|deny}…​]

设置对 COS 的访问控制 grant|deny。

listAcls

<zimlet>列出 Zimlet 的 ACL。

listZimlets

查看有关服务器上所有 Zimlet 的详细信息。

getConfigTemplate

<zimlet.zip>从 Zimlet.zip 文件中提取配置模板。

configure

<config.xml>安装配置。

listPriority

显示当前 Zimlet 优先级(0 为高,9 为低)

setPriority

<zimlet>设置 Zimlet 优先级。

zmproxyconfig

使用zmproxyconfig管理 Zimbra 代理,并且仅应在以下情况下使用 安装 Zimbra 代理后,您必须对其进行更改。 请参阅Zimbra 代理服务器.

在 Zimbra Collaboration 6.0 之前,此命令称为zmproxyinit.
语法
/opt/zimbra/libexec/zmproxyconfig [-h] [-o] [-m] [-w] [-d [-r] [-s] [-a w1:w2:w3:w4] [-i p1:p2:p3:p4] [-p p1:p2:p3:p4] [-x mailmode]] [-e [-a w1:w2:w3:w4] [-i p1:p2:p3:p4] [-p p1:p2:p3:p4] [-x mailmode]] [-f] -H hostname
说明
短名称 说明

-h

显示帮助消息。

-H

启用/禁用代理功能的服务器的主机名。

-a

以冒号分隔的要使用的 Web 端口列表。 格式:HTTP-STORE:HTTP-PROXY:HTTPS-STORE:HTTPS-PROXY(例如:8080:80:8443:443)

-d

禁用代理。

-e

启用代理。

-f

完全重置 memcached 端口和搜索查询以及 POP/IMAP 限制。

-i

以冒号分隔的要使用的 IMAP 端口列表。 格式: IMAP-STORE:IMAP-PROXY:IMAPS-STORE:IMAPS-PROXY(例如:7143:143:7993:993)

-m

切换邮件代理部分。

-o

覆盖启用的检查。

-p

使用冒号分隔的 POP 端口列表。 格式: POP-STORE:POP-PROXY:POPS-STORE:POPS-PROXY(例如:7110:110:7995:995)

-r

针对远程主机运行。 请注意,这需要服务器 在 LDAP 主服务器中正确配置。

-s

禁用时将 Cleartext 设置为 FALSE(安全模式)。

-t

禁用存储服务器的反向代理查找目标。 仅适用于 -d。 确保您打算使用服务器的所有代理功能 被禁用。

-w

切换 Web 代理部分。

-x

zimbraMailMode用于禁用(默认为 HTTP)

hostnamezimbra_server_hostnameLC 钥匙用于 服务器正在修改。

必需的选项是-f本身,或-f-d-e.

请注意

  • -d-e需要-m-w.

  • -i之一或两者或-p需要-m.

  • -a需要-w.

  • -x需要-w-d进行存储。

  • -x需要-w作为代理。

以下是-a, -i, -p的默认值,以及-x如果它们是 不作为选项提供。

-a

默认启用:8080:80:8443:443

默认禁用:80:0:443:0

-i

默认启用:7143:143:7993:993

默认禁用:143:7143:993:7993

-p

默认启用:7110:110:7995:995

默认禁用:110:7110:995:7995

-x

默认存储禁用:http

默认启用/禁用代理:http

zmsyncreverseproxy

使用zmsyncreverseproxy反向代理移动同步 HTTP 流量 源服务器和转发服务器以及端口之间。 解码同步 请求/响应并在详细模式打开时记录它们。

语法
zmsyncreverseproxy [-v] [-d] [-L log4j.properties] -p <port number> -fs <fwd server> -fp <fwd port> [-sv syncversions]
说明
长名称 短名称 说明

--help

-h

显示帮助。

--verbose

-v

详细模式,转储完整的异常堆栈跟踪。

--debug

-d

调试模式,转储解码的同步消息。

--port

-p

该服务侦听的端口。

--forwardserver

-fs

将请求转发到的服务器主机。

--forwardport

-fp

将请求转发到的服务器端口。

--syncversions

-sv

支持活动同步版本。

--logpropertyfile

-L

log4j属性文件,仅对-l.

zmmoveblobs 有效

zmmoveblobs该实用程序旨在帮助管理员在存储卷之间有效地移动 blob 数据。该工具支持内部和外部卷的多种移动场景,并提供对数据传输过程的细粒度控制。该实用程序支持多个参数来有效配置斑点移动过程。

zmmoveblobs允许 blob 在以下卷之间移动:

  • 内部到内部卷。

  • 内部到外部卷。

  • 外部到外部卷。

  • 外部到内部卷。

此功能对于优化 Blob 存储和跨卷管理存储至关重要。

重要说明
  • 卷:验证 sourceVolumeIds 和 destVolumeId 是否存在并且可访问。

  • 最大字节约束:确保 maxBytes 值符合您的系统容量和要求。

  • 查询过滤:调整查询(is:anywhere)以匹配您的特定用例。

语法
zmmoveblobs {-sid <sourceVolumeId> -did <destinationVolumeId>} [options]
描述
长名称 短名称 描述

--help

-h

显示帮助。

--sourcevolumeid

-sid

指定要从中移动 blob 的源卷的 ID。

--destinationvolumeid

-did

指定 blob 将移动到的目标卷的 ID。

--types

-t

指定要移动的以逗号分隔的项目类型列表,或“all”以移动所有类型。

支持的值: message, contact, appointment, task, wiki, document

Default: "all" if not specified.

--query

-q

Defines query parameters for filtering blobs during the movement process.

Useful in Hierarchical Storage Management (HSM) to move data to a secondary store.

Default: "is:anywhere" if not specified.

--maxbytes

-mb

Limits the total number of bytes to be moved. The operation will abort if this threshold is exceeded.

Default: No limit.

Examples
  • 命令将所有类型的 blob (-t all) 从卷 ID 1 移动到卷 ID 5,查询过滤器为:anywhere,将 blob 的总大小限制为 1 MB(1048576 字节)。

$ zmmoveblobs -sid 1 -did 5 -t all -q is:anywhere -mb 1048576
  • 成功响应:成功执行后,实用程序将显示以下详细信息:

    • Blobsmoved:移动的 Blob 总数。

    • 字节移动:移动的 blob 的总大小(以字节为单位)。

    • 邮箱总数:受操作影响的邮箱数量。

  • 移动约会的命令:

$ zmmoveblobs -sid 1 -did 4 -t appointment
  • 使用查询参数移动所有类型数据的命令:

    $ zmmoveblobs -sid 1 -did 4 -t all -q after:-60minutes
    • -t all / --types all:指示移动中应包含所有类型的 Blob(例如消息、联系人、约会、任务)。

    • -q after:-60minutes / --query after:-60minutes:根据修改时间过滤要移动的 blob。

      • 仅选择在过去 60 分钟内(比 60 分钟前更近)修改或创建的 Blob 进行移动。

  • 以下是带有查询参数的更多示例:

$ zmmoveblobs -sid 1 -did 3 -t all -q in:junk
$ zmmoveblobs -sid 1 -did 3 -t all -q in:inbox
$ zmmoveblobs -sid 1 -did 3 -t all -q before:9/5/2025
$ zmmoveblobs -sid 1 -did 3 -t all -q is:anywhere
  • 使用查询和最大大小移动文档 blob 的命令:

$ zmmoveblobs -sid 1 -did 4 -t document -mb 52428800
  • 使用-mb参数限制文档大小移动文档的命令:

场景:

两个文档上传到用户的收件箱:

  1. 文档 1:大小 211 KB(约 215,362 字节)。

  2. 文档 2:大小 324 KB。

执行以下命令来移动文档:

$ zmmoveblobs -sid 1 -did 4 -t document -mb 250000

示例输出:

Blobs Moved: 1
Bytes Moved: 215362
Total Mailboxes: 9

移动的总字节数: 215,362 字节(文档 1)。

行为:

  1. -mb 参数将移动的 blob 总大小限制为 250,000 字节。

  2. 仅移动符合此大小限制的 Blob。

结果:

  1. 文档 1 已被移动,因为其大小 (211 KB) 在限制范围内。

  2. 文档 2 被跳过,因为其大小 (324 KB) 超出了限制。

文档 2 永远不会被移动,直到尺寸达到-mb选项增加。

  • 大数据量移动的建议

根据各种因素 - 数据大小、网络速度、I/O 速度等,您可能需要更新超时值socket_so_timeout当进行大数据集移动时增加到合适的限度。

默认值socket_so_timeout30000。该值以毫秒为单位,转换为 30 秒。因此,如果您想将默认值更改为 60 秒,请执行以下步骤:

  1. 作为zimbra用户,执行以下命令来更新socket_so_timeout:

    $ zmlocalconfig -e socket_so_timeout=60000
  2. 重新启动邮箱服务:

zmmailboxdctl restart

附录 B:配置 SPNEGO 单点登录

可以在 Zimbra 上配置 SPNEGO 协议机制,以对 Zimbra Classic Web App 进行单点登录身份验证, 现代网络应用程序, 以及 Zimbra Connector for Outlook (ZCO)。 有关 ZCO 配置,请参阅设置 ZCO 的单点登录选项.

当用户通过 Active Directory 对其 Intranet 进行身份验证后,他们可以使用经典 Web 应用程序或现代 Web 应用程序进入其 Zimbra 邮箱,而无需重新进行身份验证。

SPNEGO Architecture

Zimbra 服务器配置会将尝试登录经典 Web 应用程序或现代 Web 应用程序的用户重定向到 SPNEGO 保护下的 URL。 服务器通过 SPNEGO 请求 Kerberos 身份验证,并将用户重定向到他们的 Zimbra 邮箱。 当用户注销时,他们会被重定向到显示启动按钮的注销 URL。 当用户单击它时,他们将被定向到 Zimbra 登录页面。

当用户从以下位置登录其 Zimbra 帐户时Internet,显示 Zimbra 登录页面,他们必须输入 Zimbra 密码才能登录。
在域上启用 SPNEGO SSO 后,相应的浏览器配置至关重要。 请参阅配置您的浏览器。 配置不当的浏览器可能会通过打开身份验证对话框来绕过 SPNEGO,从而允许用户通过输入正确的 AD 域用户名/密码来登录 Zimbra 邮箱。 在这种情况下,某些其他浏览器可能会显示“401 Unauthorized”错误。

配置过程

  1. 创建 Kerberos 密钥表文件。

    • 创建 Active Directory 服务帐户。 您可以使用此帐户生成 Kerberos 密钥表文件。

    • 添加 Active Directory 服务帐户的服务主体名称 (SPN) 目录属性。

    • 创建密钥表文件。

  2. 在 Zimbra 服务器上启用并配置 SPNEGO 协议。

  3. 配置浏览器

创建 Kerberos Keytab 文件

为每个邮件存储服务器创建 Active Directory 服务域帐户。

  1. 创建 Active Directory 服务帐户。 您使用此帐户生成 Kerberos 密钥表文件以添加到 Zimbra 服务器。

    1. 转到 Active Directory开始 → 程序 → 管理工具 → Active Directory 用户和计算机控制台。

    2. 要创建服务帐户,请单击 AD 域名,然后从展开的内容中右键单击用户并选择新建 → 用户。 完成“新建对象 - 用户”对话框。

      AD New User
      • 全名:输入 AD 服务帐户的用户显示名称。 我们建议使用 Zimbra 邮箱服务器名称作为全名。

        示例:Zimbra SPNEGO.

      • 用户登录名:此名称是为 LDAP 中的zimbraSpnegoAuthTargetName服务器属性设置的值。 把它写下来。

        示例:zimbraspnego/zimbralab.local.

      • 用户登录名(Windows2000 之前版本):该名称用于–mapUser参数setspnktpass命令。

        例子:ZIMBRALAB\zimbraspnego.

        New AD User Dialog
      • 单击接下来.

    3. 输入并确认–pass {AD-user-password}命令中ktpass参数的密码,如下配置。

    4. 检查密码永不过期用户无法更改密码,然后单击下一步.

    5. 单击完成创建用户。 服务帐户名称显示在用户目录中。

  2. 使用setspn命令将邮箱服务器名称映射到用户帐户作为服务主体名称 (SPN)。 SPN 的特点是在客户端和托管特定服务的服务器之间进行相互身份验证。

    1. 在命令提示符下,键入setspn –a {userlogonname} {serviceaccountname}

      示例 87. 将邮箱服务器名称映射为用户帐户的服务主体名称
      setspn –a HTTP/mail1.example.com mail1
    2. 要验证 SPN 是否已注册,请键入C:\>setspn –l {accountname}
      将显示已注册 SPN 的列表。

  3. 创建登录 Kerberos 域时使用的密钥表文件。 使用ktpassWindows Server 工具包中的工具用于创建 Kerberos 密钥表。

    Kerberos 密钥表文件包含类似于用户密码的密钥列表。 限制和监视您创建的任何密钥表文件的权限。

    要键入的命令如下:

    ktpass -out {keytab-file-to-produce} -princ {Service-Principal-Name}@\{the-kerberos-realm} -mapUser {AD-user} -mapOp set -pass {AD-user-password} -crypto RC4-HMAC-NT -pType KRB5_NT_PRINCIPAL

    ktpass -out

    密钥将写入此输出文件。

    输入目录位置和密钥表文件名。 keytab 文件名为jetty.keytab.

    例如,C:\Temp\spengo\jetty.keytab.

    -princ

    主体名称。

    输入步骤 2中使用的服务主体名称创建 Kerberos 密钥表文件.

    例如,HTTP/mail1.example.com@MY_COMPANY.COM.

    -mapUser

    将主体名称从-princ参数映射到此用户帐户。

    输入之前设置的 AD 服务帐户的名称用户登录名(Windows2000 之前的版本)步骤1.b创建 Kerberos 密钥表文件.

    -mapOp

    该选项设置映射。 此参数的值为set.

    -pass

    指定与-princ帐户一起使用的密码。

    输入密码用户登录名(Windows2000 之前版本)步骤 1.c中设置创建 Kerberos 密钥表文件.

    -crypto

    要使用的密码系统。

    输入RC4-HMAC-NT.

    -pType

    输入KRB5_NT_PRINCIPAL.

    要避免工具包发出警告消息,请输入此值。

  4. 使用ktpass创建jetty.keytab文件

    ktpass -out C: \Temp\spengo\jetty.keytab -princ HTTP/mail1.example.com@MY_COMPANY.COM -mapUser mail1 -mapOp set - pass password123 -crypto RC4-HMAC-NT -pType KRB5_NT_PRINCIPAL

    命令确认带有类似于以下示例的内容。

    Targeting domain controller:
       ...
    
        Using legacy password setting method
        Successfully mapped HTTP/mail1.example.com to mail1.
        Key created.
        Output keytab to c:\Temp\spengo\jetty.keytab:
        Keytab version: 0x502
    
        keysize 71 HTTP HTTP/mail1.example.com@MY_COMPANY.COM ptype 1 (KRB5_NT_PRINCIPAL) vno3 etype 0x17 (RC4-HMAC) keylength 16 (0xc383f6a25f1e195d5aef495c980c2bfe)
    `spnegofile.keytab`
  5. 将密钥表文件 (jetty.keytab) 传输到 Zimbra 服务器。 将步骤 3 中创建的文件复制到以下 Zimbra 服务器位置: /opt/zimbra/data/mailboxd/spnego/jetty.keytab.

不要重命名jetty.keytab文件。 许多配置文件引用此文件名。

重复步骤 1 到 4 为每个 Zimbra 邮件存储服务器创建 keytab 文件 (jetty.keytab)。

配置 Zimbra

SPNEGO 属性在全局配置和每个 Zimbra 服务器上进行配置,并为域配置域预身份验证。 使用zmprov命令修改 Zimbra 服务器。

Zimbra 安装可能仅支持一个 Kerberos 领域。
  1. 修改以下全局配置属性,使用zmprov mcf命令。

    zimbraSpnegoAuthEnabled

    设置为 TRUE。

    zimbraSpnegoAuthErrorURL

    该值是 SPNEGO 身份验证失败时用户重定向到的 URL。 将其设置为/zimbra/?ignoreLoginURL=1会将用户重定向到常规 Zimbra 登录页面,用户在其中输入其 Zimbra 用户名和密码。

    zimbraSpnegoAuthRealm

    域控制器中的 Kerberos 领域; Active Directory 中的域名。 (MY_COMPANY.COM)

    要修改全局配置属性,请键入:

    1. zmprov mcf zimbraSpnegoAuthEnabled TRUE

    2. zmprov mcf zimbraSpnegoAuthErrorURL '/zimbra/?ignoreLoginURL=1'

    3. zmprov mcf zimbraSpnegoAuthRealm <MY_COMPANY.COM>

  2. 在每台 Zimbra 服务器上,使用zmprov ms命令修改以下全局配置属性。

    zimbraSpnegoAuthTargetName

    这是步骤 1 B“用户登录名”中的用户登录名。

    zimbraSpnegoAuthPrincipal

    输入在中设置的用户登录名zimbraSpnegoAuthTargetName以及全局配置zimbraSpnegoAuthRealm.

    中设置的地址 键入zimbraSpnegoAuthTargetName@zimbraSpnegoAuthRealm.

    例如,HTTP/mail1.example.com@MY_COMPANY.COM.

    要修改服务器全局配置属性,请键入:

    1. zmprov ms mail1.example.com zimbraSpnegoAuthTargetName HTTP/mail1.example.com

    2. zmprov ms mail1.example.com zimbraSpnegoAuthPrincipal HTTP/mail1.example.com@MY_COMPANY.COM

  3. 为域设置以下内容。

    • Kerberos 领域

    • 虚拟主机

    • Web 客户端登录 URL 和 UA

    • Web 客户端注销 URL 和 UA

      1. 将域的 Kerberos 领域设置为全局配置属性中设置的相同领域zimbraSpnegoAuthRealm。 键入zmprov md {domain} zimbraAuthKerberos5Realm {kerberosrealm}.

      2. 设置域的虚拟主机。 Virtual-hostname-* 是您可以浏览到 Zimbra Classic Web App UI 的主机名。 类型:

        zmprov md {domain} +zimbraVirtualHostname {virtual-hostname-1} +zimbraVirtualHostname {virtual-hostname-2}
        ...
      3. 设置 Web 客户端登录 URL 以及域上允许登录 URL 的 UA。

        • 设置登录 URL。 登录 URL 是 Zimbra 身份验证令牌过期时将用户重定向到的 URL。 zmprov md {domain} zimbraWebClientLoginURL '../service/spnego'.

        • 仅荣耀支持的平台和浏览器。

          zimbraWebClientLoginURLAllowedUA是一个多值属性,值是正则表达式。 如果未设置,则允许所有 UA。 如果设置了多个值,则只要与其中任意一个值匹配,就允许UA。

          zmprov md {domain} +zimbraWebClientLoginURLAllowedUA {UA-regex-1} +zimbraWebClientLoginURLAllowedUA {UA-regex-2} ...

          例如,为了纪念zimbraWebClientLoginURL仅适用于运行 Windows 的计算机上的 Firefox、Internet Explorer、Chrome 和 Safari,以及 Apple Mac 计算机上的 Safari,请键入以下命令。

          zmprov md {domain} +zimbraWebClientLoginURLAllowedUA '._Windows._Firefox/3.*'
          zmprov md {domain} +zimbraWebClientLoginURLAllowedUA '._MSIE._Windows.*'
          zmprov md {domain} +zimbraWebClientLoginURLAllowedUA '._Windows._Chrome.*'
          zmprov md {domain} +zimbraWebClientLoginURLAllowedUA '._Windows._Safari.*'
          zmprov md {domain} +zimbraWebClientLoginURLAllowedUA '._Macintosh._Safari.*'
      4. 设置 Web 客户端注销 URL 和域上允许注销 URL 的 UA。

        • 设置注销 URL。 注销 URL 是当用户单击注销.

          zmprov md {domain} zimbraWebClientLogoutURL '../?sso=1'
        • 时将用户重定向到的 URL 仅适用于支持的平台和浏览器。 zimbraWebClientLogoutURLAllowedUA是一个多值属性,其中接受的值为正则表达式。 如果该属性没有设置值,则允许所有UA。 当有多个值时,只要匹配任意一个值,UA 就被允许。

          zmprov md {domain} +zimbraWebClientLogoutURLAllowedUA {UA-regex-1} +zimbraWebClientLogoutURLAllowedUA {UA-regex-2} ...

          例如,要仅对运行 Windows 的计算机上的 Firefox、Internet Explorer、Chrome 和 Safari 以及 Apple Mac 计算机上的 Safari 启用 zimbraWebClientLogoutURL,请键入以下命令。

          zmprov md {domain} +zimbraWebClientLogoutURLAllowedUA '._Windows._Firefox/3.*'
          zmprov md {domain} +zimbraWebClientLogoutURLAllowedUA '._MSIE._Windows.*'
          zmprov md {domain} +zimbraWebClientLogoutURLAllowedUA '._Windows._Chrome.*'
          zmprov md {domain} +zimbraWebClientLogoutURLAllowedUA '._Windows._Safari.*'

配置您的浏览器

在您的域上启用 SPNEGO SSO 功能后,您必须配置用户的浏览器以使用其身份验证机制。 配置不当的浏览器会根据浏览器的不同表现出不同的行为。

支持以下浏览器:

  • 对于运行 Windows 的计算机: Edge、Firefox 52 或更高版本、Chrome、Safari

  • Apple Mac 电脑:Safari

配置步骤:

  1. 适用于运行 Windows 的计算机的 Firefox 浏览器

    1. 在 Firefox 浏览器地址字段中,键入about:config。 现在显示警告 — 这可能会使您的保修失效

    2. 点击我会小心的,我保证!

    3. 在过滤器中搜索,输入network.n。 输入以逗号分隔的受信任域或 URL 列表。

      双击network.negotiate-auth.delegation-uris。 输入http://,https://.

      双击network.negotiate-auth.trusted-uris。 输入http://,https://.

      或者,要设置特定 URL,

      双击network.negotiate-auth.delegation-uris。 输入域地址。 例如,http://mail1.example.com,https://mail2.example.com.

      双击network.negotiate-auth.trusted-uris。 输入域地址。 例如,http://mail1.example.com,https://mail2.example.com.

  2. 适用于运行 Windows 的计算机的 Internet Explorer、Chrome 和 Safari

    1. 在这些浏览器中,转至工具 → Internet 选项 → 安全 → 本地 Intranet > 站点。 在“站点”对话框中,选中所有项目。

    2. 选择高级。 添加域服务器(主机名)URL,包括http://https://.

    3. 单击确定关闭文件。

    4. 转到工具 → 选项 → 高级 → 安全。找到并选中启用集成 Windows 身份验证.

    5. 单击确定并关闭浏览器。

  3. 适用于 Apple Mac 计算机的 Safari。 无需配置。

测试您的设置

  1. 在 Windows 计算机或 Apple Mac 计算机上,以域用户身份登录到计算机。

    您的域用户令牌将保存在计算机上。 该令牌由支持 SPNEGO 的浏览器获取,并在授权标头中发送到 Zimbra 服务器。

  2. 浏览至 Zimbra Classic Web 应用程序登录页面。 您应该会被重定向到收件箱,而不会提示您输入用户名和密码。

    如果 SPNEGO 身份验证失败,用户将被重定向到错误 URL。

故障排除设置

确保以下内容正确。

  • 浏览器位于 Intranet 区域。

  • 用户正在使用主机名而不是 IP 地址访问服务器。

  • 集成 Windows 身份验证已在 Internet Explorer 中启用,并且主机已在 Firefox 中“受信任”。

  • 服务器对于浏览器来说不是本地的。

  • 客户端的 Kerberos 系统通过域控制器进行身份验证。

  • 如果浏览器显示“401 Unauthorized”,则很可能浏览器没有发送另一个带有授权的请求来响应 401,或者在未使用 GSS-API/SPNEGO 方案的情况下发送了授权。

    检查您的浏览器设置并确保它是受支持的浏览器/平台之一。

  • 如果您被重定向到zimbraSpnegoAuthErrorURL中指定的错误 URL,则意味着 SPNEGO 身份验证序列不起作用。

    进行网络跟踪,确保浏览器发送授权标头以响应401。 确保 Negotiate 使用 GSS-API/ SPNEGO,而不是 NTLM(使用网络数据包解码器,如Wireshark).

    验证浏览器发送正确的 Negotiate 后,如果仍然不起作用,请打开以下调试并检查 Zimbra 日志:

    • 添加(不要替换)-DDEBUG=true -Dsun.security.spnego.debug=all到本地配置键spnego_java_options.

    • log4j.logger.org.mortbay.log=DEBUG中添加log4j.

    然后重新启动邮箱服务器。

    浏览至调试监听页面 (http://{server}:{port}/spnego/snoop.jsp)。 查看是否可以访问snoop.jsp.

    检查zmmailboxd.outmailox.log以进行调试输出。

    • 此阶段的错误之一可能是由于码头服务器上的时钟偏差造成的。 如果是这种情况,它应该显示在zmmailboxd.out中。 修复时钟偏差并重试。

使用 SPNEGO Auth 配置 Kerberos 身份验证

Kerberos 身份验证和 SPNEGO 可以在域上共存。 在此用例中,当用户无法通过 SPNEGO 进入时,您将使用 Kerberos 作为针对 KDC 验证用户主体/密码的机制,而不是本机 Zimbra LDAP。

在正确配置的浏览器中,当 SPNEGO 身份验证失败时,用户将被重定向到 Zimbra 登录页面。 用户可以在登录页面输入 Zimbra 用户名和密码来手动登录。 域属性zimbraAuthMech控制验证密码的机制。 如果zimbraAuthMech是“kerberos5”,则首先使用输入的用户名来标识有效的 Zimbra 用户(用户必须出现在 Zimbra LDAP 中)。 Zimbra 用户被映射到 Kerberos 主体,然后根据 KDC 验证 Kerberos 主体 + 密码。 此 KDC 可能与 Active Directory 域控制器(用于 SPNEGO 身份验证)使用的 KDC 不同或相同。

每个 Microsoft Active Directory 域控制器都充当 Kerberos KDC。 对于 SPNEGO 身份验证,邮箱服务器不会联系 KDC。 从授权 HTTP 标头发送的 Kerberos 令牌以及 jetty 的 keytab 文件可以识别/验证用户。

对于 Kerberos 身份验证 (zimbraAuthMech*="kerberos5"),邮箱服务器需要联系 KDC 来验证主体+密码。 对于 java Kerberos 客户端(即 Zimbra 邮箱服务器),默认领域和该领域的 KDC 在 Kerberos 配置文件中指定。 在可选 JVM 参数中指定此配置文件的位置:java.security.krb5.conf。 如果未指定,则默认为/etc/krb5.conf。 当在 Zimbra 中启用 SPNEGO 时,邮箱服务器的java.security.krb5.conf设置为/opt/zimbra/jetty/etc/krb5.ini。 因此,这是用于配置 Kerberos 身份验证的活动文件。

请注意/opt/zimbra/jetty/etc/krb5.ini每次邮箱服务器重新启动时都会从/opt/zimbra/jetty/etc/krb5.ini.in重写。 对于持久配置,您需要修改/opt/zimbra/jetty/etc/krb5.ini.in文件,而不是/opt/zimbra/jetty/etc/krb5.ini.

在 [realms] 部分下,KDC 和 admin_server 未设置 SPNEGO 身份验证,但 Kerberos 身份验证需要它们。

配置:

  1. 编辑/opt/zimbra/jetty/etc/krb5.ini.in.

  2. 更改:

    [realms]
    %%zimbraSpnegoAuthRealm%% = {
    default_domain = %%zimbraSpnegoAuthRealm%%
    }

    to

    %%zimbraSpnegoAuthRealm%% = {
                 kdc = YOUR-KDC
                 admin_server = YOUR-ADMIN-SERVER
                 default_domain = %%zimbraSpnegoAuthRealm%%
    }
  3. 将 YOUR-KDC 和 YOUR-ADMIN-SERVER 替换为运行 Kerberos 身份验证的kdc/admin_server的主机名。

  4. 保存文件并重新启动邮箱服务器。

一个重要的限制是 SPNEGO 和 Kerberos 身份验证的领域必须相同。 对于 SPNEGO 身份验证,授权标头中的 Kerberos 主体将映射到唯一的 Zimbra 帐户。 对于 Kerberos 身份验证,Zimbra 帐户将映射到唯一的 Kerberos 主体。 两者的映射(通过域属性zimbraAuthKerberos5Realm)是相同的。

为 ZCO 设置单点登录选项

要使用 SSO,必须在 Zimbra 服务器上配置 SPNEGO 才能使用此选项。

单点登录选项适用于特定服务器。 ZCO 配置文件中使用的服务器名称必须与 SPNEGO 配置中的服务器名称匹配。 确保在安装之前将服务器名称合并到.msi文件中。

要在.msi自定义脚本中设置单点登录选项:

  1. 将服务器名称设置为为 SPNEGO 配置的服务器名称,输入-sn <spnegoserver.example.com>.

  2. 设置密码规则,输入-pw 0.

cscript ZmCustomizeMsi.js <path/msi-filename> -sn <spnegoserver.example.com> -pw 0

附录 C:Zimbra Crontab 作业

crontab 用于计划命令定期执行 Zimbra 服务器。

如何读取 crontab

crontab 文件中的每个条目由六个字段组成,在 以下顺序:分钟、小时、日、月、工作日、命令

这些字段由空格或制表符分隔。

字段 说明

分钟

0 到 59

小时

0 到 23

(月)中的某天

1 到 31

1 到 12

(周)中的某一天

0 到 7(0 或 7 是星期日,1 是星期一等,或使用名称)

命令

这是为作业执行的完整命令序列

当显示星号 (*) 时,表示所有可能的值为 场。例如,小时时间字段中的星号将是 相当于“每小时”。

Zimbra Cron 作业

您可以通过以 zimbra 身份登录并键入来查看 Zimbra crontab crontab -l.

计划作业

以下 cron 作业计划为 Zimbra 运行:

日志剪枝

日志剪枝删除日志/opt/zimbra/log八岁以上 天了。该作业于凌晨 2:30 运行

状态记录

zmstatuslog调用zmcontrol status并将其数据输出到系统日志中。

这主要是为了记录器可以读取数据并保留 管理控制台状态是最新的。

状态日志记录作业每 2 分钟运行一次。

备份

完整备份和增量备份按计划运行 定义为zmschedulebackup命令。默认情况下,完整备份是 预定每周六凌晨 1:00。增量备份是 预计周日至周五凌晨 1:00。

默认情况下,一个月前的备份将在每个备份的第一天被删除 月上午 12 点

crontab.store 的作业

日志修剪

日志修剪将从中删除日志/opt/zimbra/mailboxd/logs已经结束了 八天了。该作业在凌晨 2:30 运行

清理隔离目录

被识别为病毒或垃圾邮件的邮件不会立即被丢弃,而是 被隔离。超过 7 天的邮件将被删除 每天凌晨 1:00。

工作台维护

ANALYZE TABLE语句在数据库中的所有表上运行 更新所有索引的统计信息。这样做是为了确保 SQL查询优化器在执行SQL时选择正确的索引 声明。该脚本在周日凌晨 1:30 运行。

关于任何数据库不一致的报告

zmdbintegrityreport每周运行一次以检查 SQL 数据库是否存在 腐败,如果发现任何腐败,将通知管理员。 运行时,可能会消耗大量 I/O。如果你发现 如果这是一个问题,您可能需要更改频率 zmdbintegrityreport通过编辑 Zimbra crontab 条目来运行。 本报告于晚上 11:00 发布。周日。

大型站点可以选择通过设置禁用此功能:

zmlocalconfig -e zmdbintegrityreport_disabled=TRUE

如果您选择禁用此功能,建议完整性报告 在正常维护时段和运行之前手动运行 任何 Zimbra 升级。

监视多个 mysqld 以防止损坏

执行脚本以查看 mysqld 进程是否正在运行以检测案例 哪里有可能引起腐败。如果找到,则会生成一封电子邮件 超过 1 个 mysqld 进程正在运行。该脚本每 5 分钟运行一次。

crontab.logger 的作业

进程日志

zmlogprocess每 10 分钟运行一次以解析日志并生成 MTA 指标(as/av、数量、计数等)。

每日报告

安装logger软件包后,会自动生成每日邮件报告 安排在 crontab 中。该报告每天早上 11:30 运行, 发送到管理员的电子邮件地址。

crontab.mta 的作业

队列记录

zmqueue通过系统日志查看报告状态。这是记录器 数据。状态每 10 分钟更新一次。

垃圾邮件培训

zmtrainsa启用脚本来提供已分类为的邮件 SpamAssassin 应用程序的垃圾邮件或非垃圾邮件。垃圾邮件刺客学习 哪些迹象可能意味着垃圾邮件或火腿邮件。这项工作应该只在一台机器上运行 Zimbra MTA。该作业在晚上 11:00 运行。

垃圾邮件培训清理

zmtrainsa每天清空垃圾邮件和火腿邮箱。该作业运行于 晚上 11:45

垃圾邮件贝叶斯自动到期

垃圾邮件贝叶斯自动到期维护 SpamAssassin 贝叶斯数据库。这个 将数据库保持在可管理的大小,确保垃圾邮件处理保持不变 尽可能快。该活动每天晚上 11:20 运行。

清理amavisd/tmp

此作业用于清理amavisd 临时文件。运行时间为 5:15 上午和晚上 8:15

单服务器 Crontab -l 示例

示例 88. 使用 SAML 和 SimpleSAMLphp 的crontab -l
# ZIMBRASTART -- DO NOT EDIT ANYTHING BETWEEN THIS LINE AND ZIMBRAEND
#
# Log pruning
#
30 2 * * * find /opt/zimbra/log/ -type f -name *.log* -mtime +8 -exec rm {} \; > /dev/null 2>&1
35 2 * * * find /opt/zimbra/log/ -type f -name *.out.???????????? -mtime +8 -exec rm {} \; > /dev/null 2>&1
#
# Status logging
#
*/2 * * * * /opt/zimbra/libexec/zmstatuslog
#
# Backups
#
# BACKUP BEGIN
# BACKUP END
#
# crontab.ldap
#
#
#
# crontab.store
#
# Log pruning
#
30 2 * * * find /opt/zimbra/mailboxd/logs/ -type f -name \*log\* -mtime +8 -exec rm {} \; > /dev/null 2>&1
30 2 * * * find /opt/zimbra/log/ -type f -name stacktrace.\* -mtime +8 -exec rm {} \; > /dev/null 2>&1
#
# Table maintenance
#
30 1 * * 7 /opt/zimbra/libexec/zmmaintaintables >> /dev/null 2>&1
#

# # Report on any database inconsistencies
#
0 23 * * 7 /opt/zimbra/libexec/zmdbintegrityreport -m
#
# Monitor for multiple mysqld to prevent corruption

*/5 * * * * /opt/zimbra/libexec/zmcheckduplicatemysqld -e > /dev/null 2>&1
#
# crontab.logger
#
# process logs
#
00,10,20,30,40,50 * * * * /opt/zimbra/libexec/zmlogprocess > /tmp/logprocess.out 2>&1
#
# Graph generation
#
10 * * * * /opt/zimbra/libexec/zmgengraphs >> /tmp/gengraphs.out 2>&1
#
# Daily reports
10 1 * * * /opt/zimbra/libexec/zmdailyreport -m
#

#
crontab.mta
#
#
# Queue logging
#
0,10,20,30,40,50 * * * * /opt/zimbra/libexec/zmqueuelog
#
# Spam training
0 23 * * * /opt/zimbra/bin/zmtrainsa >> /opt/zimbra/log/spamtrain.log 2>&1
#
# Spam training cleanup
#
45 23 * * * /opt/zimbra/bin/zmtrainsa --cleanup >> /opt/zimbra/log/spamtrain.log 2>&1
#
# Dspam cleanup
#
0 1 * * * [ -d /opt/zimbra/data/dspam/data/z/i/zimbra/zimbra.sig ] && find /opt/zimbra/dspam/var/dspam/data/z/i/zimbra/zimbra.sig/ -type f -name \*sig -mtime +7 -exec rm {} \; > /dev/null 2>&1
8 4 * * * [ -f /opt/zimbra/data/dspam/system.log ] && /opt/zimbra/dspam/bin/dspam_logrotate -a 60 -l /opt/zimbra/data/dspam/system.log
8 8 * * * [ -f /opt/zimbra/data/dspam/data/z/i/zimbra/zimbra.log ] && /opt/zimbra/dspam/bin/dspam_logrotate -a 60 -l /opt/zimbra/data/dspam/data/z/i/zimbra/zimbra.log
#
# Spam Bayes auto-expiry
#
20 23 * * * /opt/zimbra/libexec/sa-learn -p /opt/zimbra/conf/salocal.cf --dbpath /opt/zimbra/data/amavisd/.spamassassin --siteconfigpath /opt/zimbra/conf/spamassassin --force-expire --sync > /dev/null 2>&1
#
# Clean up amavisd/tmp
#
15 5,20 * * * find /opt/zimbra/data/amavisd/tmp -maxdepth 1 -type d -name 'amavis-*' -mtime +1 -exec rm -rf {} \; > /dev/null 2>&1
#
# Clean up the quarantine dir
#
0 1 * * * find /opt/zimbra/data/amavisd/quarantine -type f -mtime +7 -exec rm -f {} \; > /dev/null 2>&1

ZIMBRAEND -- DO NOT EDIT ANYTHING BETWEEN THIS LINE AND ZIMBRASTART

Zimbra 单点登录的输出

您知道 Zimbra 支持 SAML 单点登录吗? SAML 是一种开放标准,允许您为组织中的所有应用程序使用单一登录页面。 SAML 是 Zimbra 网络版的一项功能。设置好 SAML 门户后,您可以轻松添加[Multi Factor Authentication](多重身份验证)。

在 SimpleSAMLphp 中设置 Zimbra SP

在 SAML 术语中,应用程序称为服务提供商或 SP。为您提供用户数据库并负责身份验证的服务在 SAML 术语中称为身份提供商或 IDP。通常,您只有一个 IDP 和与您的应用程序一样多的 SP。在此示例中,我们将设置 Zimbra 作为 SAML SP 并使用 SimpleSAMLphp 作为 IDP。这是 SimpleSAMLphp 上所需的配置(在/etc/simplesamlphp/metadata/saml20-sp-remote.php):

$metadata['https://zimbra.example.com/service/extension/samlreceiver'] = [
    'simplesaml.attributes'     => true,
    'metadata-set' => 'saml20-sp-remote',
    'debug' => TRUE,
    'AssertionConsumerService' = [
        [
            'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
            'Location' =>; 'https://zimbra.example.com/service/extension/samlreceiver',
            'index' => 0,
            'isDefault' => true,
        ],
    ],
    'SingleLogoutService' => [
        [
            'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
            'Location' => 'https://zimbra.example.com/service/extension/samlslo',
        ],
    ],
    'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
       'authproc' => array (
          10 => array(
             'class' => 'saml:AttributeNameID',
              'identifyingAttribute' => 'mail',
              'Format' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
          ),
       )
];

中)。您还需要获取用于签署从 IDP 到 Zimbra 的 SAML 请求的 X.509 公共证书。您需要下载它并将其保存在您的 Zimbra 服务器上。本指南假设您将证书存储在/tmp/idpcert.pem中,不要忘记chown zimbra:zimbra /tmp/idpcert.pem。如果您遵循 SimpleSAMLphp设置指南,您可以在/etc/simplesamlphp/cert/server.crt.

设置 Zimbra

添加文件/opt/zimbra/conf/saml/saml-config.properties以在 Zimbra 中配置 SAML 添加内容:

# Issuer
     saml_sp_entity_id=https://zimbra.example.com/service/extension/samlreceiver
     # Login receiver for the service provider
     saml_acs=https://zimbra.example.com/service/extension/samlreceiver
     # Name ID format for the IDP to use in the SAMLResponse
     saml_name_id_format=urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
     # Date format for issue instant
     saml_date_format_instant=yyyy-MM-dd'T'HH:mm:ss'Z'
     # Identity provider login endpoint for redirect method
     saml_redirect_login_destination=https://saml.example.tk/simplesaml/saml2/idp/SSOService.php?spentityid=https://zimbra.example.com/service/extension/samlreceiver
     # Identity provider login endpoint for POST method
     saml_post_login_destination=
     # Identity provider logout endpoint for redirect method
     saml_redirect_logout_destination=https://saml.example.tk/simplesaml/saml2/idp/SingleLogoutService.php
     # Identity provider logout endpoint for POST method
     saml_post_logout_destination=
     # Logout redirect page if we are the landing page logout endpoint
     saml_landing_logout_redirect_url=/
     # Disable the audience path check
     saml_skip_audience_restriction=true
     # URL to send the user with error_code, error_msg query params. Default results in HTTP error code pages.
     saml_error_redirect_url=
     # The SAML logout document encoding, and SAML login receiver parameter encoding.
     saml_document_encoding=ASCII
     # Set to true to disable the audience path check.
     saml_skip_audience_restriction=false
     # The redirect location to send the user if their Zimbra account is not active.
     saml_inactive_account_redirect_url

从命令行作为用户root,复制samlextn.jar并设置 IDP 证书:

mkdir /opt/zimbra/lib/ext/saml
cp /opt/zimbra/extensions-network-extra/saml/samlextn.jar /opt/zimbra/lib/ext/saml/
su - zimbra
cat /tmp/idpcert.pem |xargs -0 zmprov md exampledomain.com zimbraMyoneloginSamlSigningCert
zmprov mcf zimbraCsrfRefererCheckEnabled FALSE
zmmailboxdctl restart

创建用户

您的用户帐户必须在 Zimbra 中手动创建,并在 IDP 用户数据库中可用。将 IDP 中的电子邮件属性设置为与 Zimbra 帐户名完全相同非常重要。否则用户将无法登录。如果它不起作用,请运行tail -f /opt/zimbra/log/*在执行身份验证请求时,并深入查看日志以找出可能存在的问题。 grep 查找的关键字:SAML、受众和断言。

中的可配置属性saml-config.properties

samlextn.jar 使用位于以下位置的属性文件:${zimbra_home}/conf/saml/saml-config.properties.

支持以下属性:

Key 说明 默认 可选

saml_sp_entity_id

Issuer

saml_acs

Login receiver for the service provider

saml_redirect_login_destination

Identity provider login endpoint for redirect method

saml_redirect_logout_destination

Identity provider logout endpoint for redirect method

saml_post_login_destination

Identity provider login endpoint for POST method (unused)

saml_post_logout_destination

Identity provider logout endpoint for POST method (unused)

saml_name_id_format

Name ID format for the IDP to use in the SAMLResponse

urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

saml_date_format_instant

Date format for issue instant

yyyy-MM-dd’T’HH:mm:ss’Z'

saml_error_redirect_url

URL to send the user with i`error_code`, error_msg query params. Default results in HTTP error code pages.

saml_landing_logout_redirect_url

Logout redirect landing page if we are the last logout service.

/

saml_document_encoding

The SAML logout document encoding, and SAML login receiver parameter encoding.

ASCII

saml_skip_audience_restriction

Set to true to disable the audience path check.

false

saml_inactive_account_redirect_url

The redirect location to send the user if their Zimbra account is not active.

/service/extension/samllogout

SLO 端点

如果您需要支持从 IDP 发起的 SLO,则需要 SLO URL:https://zimbra.example.com/service/extension/samlslo

另外,如果您希望在用户单击 Zimbra 中的注销时触发 IDP 注销,则必须将 Zimbra 配置为使用此注销 URL:https://zimbra.example.com/service/extension/samllogout.

CsrfRefererCheck

在 Zimbra 9 上,大多数情况下,您需要禁用 SAML 的 CsrfRefererCheck 并重新启动邮箱服务才能工作。

su - zimbra
zmprov mcf zimbraCsrfRefererCheckEnabled FALSE
zmmailboxdctl restart

术语表

术语表列出了本文档中使用的术语和首字母缩写词,包括 行业术语和特定应用术语。 如果是一般行业 概念或实践已在范围内以特定方式实施 产品,也已注明。

记录

A(“地址”)记录将主机名映射到数字 IP 地址。 对于 Zimbra,A 记录是 Zimbra 服务器的 IP 地址。

ABQ

允许/阻止/隔离功能使系统管理员可以控制允许哪些设备 通过 ActiveSync 进行同步。

帐户策略

Zimbra 管理控制台中公开的服务类别。

AD

Microsoft Active Directory 服务器。 在 Zimbra Collaboration 中用作 身份验证和 GAL 的可选选择,以及适用于所有用户的 OpenLDAP 其他 Zimbra 协作功能。

别名

“也称为”电子邮件地址,应路由到位于 不同的电子邮件地址。

属性

包含目录服务器条目的对象相关数据。 属性 存储服务器主机名或电子邮件转发等信息 地址。

身份验证

使用用户提供的登录信息进行验证的过程 该用户进入系统的权限。

黑名单

反垃圾邮件术语,表示已知的错误 IP 地址。 这可能是一个 已被垃圾邮件发送者劫持,或者也来自不良的 维护但合法的站点,允许从以下地址转发邮件 未经授权的各方。

BLOB

二进制大对象。

服务等级 (COS)

描述 Zimbra Collaboration LDAP 数据模式中的对象,该对象 包含用户邮件配额等设置。 每个 Zimbra 协作账户包含 COS,账户继承所有 来自所选 COS 的设置。

CLI

命令行界面。 用于指代集合 Zimbra Collaboration 命令行工具,例如zmprov.

Cluster

一种使用集群实现高可用性的网络配置 服务器(节点)的数量。 如果一台服务器发生故障或断开网络, 备用接管。

联系人

在 Zimbra Collaboration 中,联系人是一项用户界面功能 列出该用户的个人地址和联系方式集合 信息。

对话

在 Zimbra Collaboration 中,对话是一项用户界面功能 将电子邮件线程(共享同一主题行的电子邮件)显示为 单个对话列表。 用户可以将对话扩展到 查看其中的所有电子邮件。

DHTML

动态 HTML。 Zimbra Classic Web 应用程序中采用的一项技术。

DNS

域名系统是一种互联网目录服务。 DNS是如何域名的 名称被转换为 IP 地址,DNS 还控制电子邮件 交货。 Postfix 需要正确配置 DNS 才能路由 发送到远程目标的邮件

Edge MTA

用于指代第一个邮件传输代理的通用术语 处理传入电子邮件流量的防线。 可能的功能 发生在 Edge MTA 上的包括垃圾邮件过滤。

条目

目录服务器中的项目,例如帐户或邮件主机。

短暂数据

本质上是短暂的或快速变化的数据。登录时间戳、身份验证令牌等。

故障转移

备用服务器计算机检测到主服务器的接管过程 服务器不可用,备用服务器接管该服务器的处理 服务器。

FQDN

完全限定域名。 主机名和主机路径。 例如,www.zimbra.com是一个完全限定的域名,其中www是 主持人,zimbra是二级域名,并且.com是顶级的 域。

GAL

全局地址列表,公司目录的 Outlook 版本。 列表 所有员工的联系信息,包括电子邮件地址 在一个组织内。

全局配置

包含服务器默认设置的 Zimbra Collaboration 对象 和服务等级。

高可用性

缩写为HA,高可用性是指可用性 计算机系统中的组件发生故障后的资源 系统。

HTTP

超文本传输​​协议,与 SOAP 一起用于 UI 集成。

IMAP

Internet 消息访问协议是一种从 Internet 访问邮件的方法 远程消息存储就像用户是本地用户一样。

存储

在 Zimbra Collaboration 中,存储所有 特定邮箱服务器上邮件消息的索引信息。

索引

解析传入电子邮件以查找搜索词的过程。

Java

Java 是一种行业标准的面向对象编程语言。 用于核心 Zimbra Collaboration 应用程序服务器。

JavaScript

脚本主要由 Netscape 开发,可以与 HTML 交互 源代码。 Zimbra Classic Web 应用程序中使用的技术。

LDAP

轻量级目录访问协议,行业标准协议 用于身份验证。

LMTP

本地邮件传输协议,用于传输来自 将 MTA 后缀到 Zimbra 协作服务器以进行最终交付。

邮箱服务器

Zimbra 协作服务器的替代术语。

MAPI

消息传递应用程序编程接口。 内置系统 Microsoft Windows 支持不同的电子邮件应用程序运行 在一起。

消息存储

在 Zimbra Collaboration 中,存储邮件的目录区域 特定邮箱服务器上的邮件。

MDA

邮件传送代理,有时称为邮件主机。 的 Zimbra Collaboration 服务器充当 MDA。

元数据

描述其他数据的数据,而不是实际内容。 内 Zimbra Collaboration,元数据由用户文件夹、线程、 消息标题和标签以及指针。

MIME

多用途 Internet 邮件扩展,格式规范 非 ASCII Internet 消息内容,例如图像文件。 格式用于 将消息存储在消息存储中。

MTA

消息传输代理。 MTA 是一个传递邮件和 在机器之间传输它。 Zimbra 协作部署 假定 Postfix MTA 和边缘 MTA。

MX 记录

邮件交换。 MX 记录是域名数据库中的一个条目, 标识负责处理电子邮件的邮件服务器 那个域名。 电子邮件系统依赖 DNS MX 记录来 在域之间传输电子邮件。 处理邮件时,MX记录 在目标地址的 A 记录之前检查。

OOTO

“离开办公室”的常用简写,用于发送假期 消息。

开源

指由用户组创建的用于非商业目的的软件 分发,其中源代码是发布的而不是专有的。

操作系统

操作系统,例如 Linux、UNIX 或 Microsoft Windows。

POP

邮局协议用于从远程服务器检索电子邮件 通过 TCP/IP 并将其保存到本地计算机。

配置

创建帐户或其他数据的过程,通常是批量或 自动化时尚。

RBH

实时黑洞。 通常指的是作为公共网站 服务,提供已知不良 IP 地址列表,应从这些地址发送邮件 被阻止,因为服务器要么是垃圾邮件发送者,要么是 不安全并被垃圾邮件发送者利用。

响应式(网络应用程序)

这种设计方法可确保应用程序在各种设备和窗口或屏幕尺寸上都能正常显示和运行。 现代 Web 应用程序是响应式 Web 应用程序,可在任何屏幕上提供一致的用户体验。

重做日志

Zimbra 协作服务器的详细事务日志,用于重放和 复制。

SAN

存储阵列网络。 高可用性数据存储区域。

架构

描述目录服务使用的数据结构 特定的组织站点。

SMTP

简单邮件传输协议。 用于 Zimbra 协作 Edge MTA 和 Postfix MTA 之间的部署。

SNMP

简单网络监控协议。 由监控软件用来 从系统日志中找出严重错误。

SOAP

简单对象访问协议,一种基于 XML 的消息传递协议,用于 发送 Web 服务请求。 Zimbra 协作服务器 使用 SOAP 来接收和处理请求,这些请求可以来自 Zimbra Collaboration 命令行工具或 Zimbra Collaboration 用户 接口。

垃圾邮件

未经请求的商业电子邮件。 垃圾邮件发送者将他们的输出称为“批量 商务电子邮件”。

SQL

结构化查询语言,用于在Message中查找消息 商店。

SSL

安全套接字层。

标签

Zimbra 经典 Web 应用程序功能。 用户可以定义标签并将其应用到 用于搜索的邮件消息。

TCO

总拥有成本。 Zimbra 协作降低了总成本 通过降低对服务器硬件、操作系统的要求来实现所有权 (TCO) 许可费、支持应用程序许可费、磁盘存储 要求和人员(IT、服务台、咨询)。

TLS

传输层安全。

UCE

未经请求的商业电子邮件,也称为垃圾邮件。

虚拟别名

Postfix MTA 中识别的一种邮件别名。

白名单

已知良好邮件或 IP 地址的反垃圾邮件术语。 邮件来自 这样的地址可能是“自动信任的”。

XML

扩展标记语言。

Zimbra 管理控制台

Zimbra Collaboration 管理员界面。

Zimbra Web 客户端

指作为 Zimbra 服务器的一部分通过 Web 提供的任何最终用户界面。

返回顶部
×
Zimbra China
扫码咨询
云璨
专属顾问
021-50583875
service@yuncan.com
扫码加我们然后发送需求
企微二维码