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 或更高版本开始)
-
许可证是作为入职流程的一部分颁发的。
-
根据您选择的计划包含聊天功能(基本或高级)。
-
一旦获得许可:
-
聊天功能将自动启用。
-
您将通过电子邮件收到许可证密钥。
-
-
如果您没有收到聊天功能或希望升级,请联系您的 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)的客户
-
您的旧许可证 (v2) 必须先迁移到新格式 (v3),然后才能继续升级。
-
请联系您的 Zimbra 代表并请求 v3 许可证以获得更新的权利。
-
-
升级到 Zimbra Daffodil 版本 10.1.7 或更高版本。
-
一旦使用最新的 Zimbra 版本:
-
可以免费启用基本聊天。
-
高级聊天可通过付费升级获得。
-
您现在可以使用新的聊天功能。
对于拥有现有 Zimbra Talk 权利(8.8.15、9.0.x)的客户
-
在继续升级之前,您的旧许可证 (v2) 必须迁移到新格式 (v3)。
-
请联系您的 Zimbra 代表并请求 v3 许可证以获得更新的权利。
-
-
升级到 Zimbra Daffodil 版本 10.1.7 或更高版本。
-
一旦使用最新的 Zimbra 版本:
-
基本聊天将无需额外费用即可启用。
-
高级聊天在以下条件下可用:
-
高级聊天限制默认设置为
ZTalkAccountsLimit. -
在 ZTalk SKU/合同的支持结束日期之前可用。
-
新的 Zimbra Chat SKU 将免费提供给此类客户。
-
-
您现在可以使用新的聊天功能。
安装 Zimbra Chat 之前需要了解的事项
在继续安装之前,管理员应了解以下先决条件和限制:
-
单独的服务器要求:Zimbra Chat 必须安装在专用服务器上。它不能与 Zimbra Collaboration Suite 组件共同托管。
-
版本兼容性:支持 Zimbra 聊天仅在Zimbra Daffodil 版本 10.1.7 及更高版本上。使用早期版本的客户必须升级其 ZCS 环境。
-
现代 UI:从 Zimbra Daffodil 版本 10.1.7 开始,现代 UI 支持聊天。
-
经典 UI:Zimbra Daffodil 版本 10.1.8 的经典 UI 支持聊天。
-
LDAP 集成:Zimbra Chat 使用 Zimbra Collaboration Suite (ZCS) 的 LDAP 身份验证来确保用户登录和配置的安全。
-
无内置视频:这是仅聊天的解决方案,并且不包括视频会议解决方案。然而,已经提供了与开源视频解决方案的集成。欲了解更多详情,请参阅聊天管理员 → 视频部分.
-
不支持迁移:不支持迁移来自早期的聊天解决方案,如 Zimbra Talk 或托管聊天和视频。
-
性能注意事项:虽然该解决方案针对 50k 以上的总用户和单个服务器上最多 10k 的用户进行了测试,但实际性能可能会有所不同,具体取决于使用模式、在线用户、每个域的用户、用于聊天的基础设施等。请参阅扩展和基础设施指南部分了解有关有效扩展解决方案的最佳实践的更多信息。
-
支持的操作系统:仅 Ubuntu 22 和 24 正式支持安装 Zimbra Chat 服务器。
-
附加模型:默认情况下,Zimbra Chat 不与 Zimbra Collaboration Suite (ZCS) 捆绑在一起 — 它作为附加功能提供,使客户能够选择所需的功能级别。
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 实例
-
本地和常规 Zimbra 配置自定义
-
调整相关支持 Zulip 的 Zimbra 选项
-
-
对于每个 Zulip 实例
-
确定 Zulip 实例容量和大小
-
部署和配置 Zulip
-
配置域和用户
-
配置 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 已被烟幕使用。
请按照以下步骤解决此问题:
-
使用
zulip用户停止烟幕supervisorctl stop smokescreen -
使用
zulip用户启动聊天服务/home/zulip/deployments/current/scripts/start-server -
使用
zulip用户检查所有服务是否已启动supervisorctl status -
用户如果发现任何服务处于停止状态,请尝试使用
zulip用户单独启动它们。例如:-
如果
zulip-django未启动,使用supervisorctl start zulip-django启动 -
如果
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 聊天模块
-
安装 ZCS 10.1.7 或更高版本
-
请使用 wiki 继续安装补丁Zimbra Releases/10.1.0/patch 安装 - Zimbra :: 技术中心
-
-
在所有邮件存储服务器上安装聊天模块:
zimbra-zimlet-chat和zimbra-zimlet-classic-chat分别包含现代 UI 和经典 UI 的聊天模块。
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 Encrypt和Self-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 协议:选择
ldap或ldaps.
如果 LDAP 源是外部 LDAP/AD:
-
外部 LDAP/AD 主机:外部 LDAP 或 Active Directory 服务器的主机名。如果您有多个 LDAP/AD 服务器,请选择其中之一进行使用。
-
外部 LDAP/AD 端口:用于 LDAP/AD 通信的端口。
-
外部 LDAP/AD 密码:用于身份验证的外部 LDAP 或 Active Directory 服务器密码。
-
外部 LDAP/AD 协议:在
ldap或ldaps. -
外部 LDAP/AD 身份验证绑定 DN 之间进行选择:用于身份验证的专有名称 (DN)。
-
外部 LDAP/AD 电子邮件属性:存储用户电子邮件地址的 LDAP/AD 属性。
-
外部 LDAP/AD 全名属性:存储用户全名的 LDAP/AD 属性。
部署模式
单节点设置
在单个服务器上安装聊天服务器应用程序 (Zulip) 和 PostgreSQL。
多节点设置
在不同节点上安装聊天服务器应用程序 (Zulip) 和 PostgreSQL。安装顺序有两种选择。
选项 1:先安装 Zulip,然后安装 PostgreSQL
-
安装独立 Zulip
-
出现提示时:
Have you installed PostgreSQL on another VM, and is it ready for use? (yes/no)→ 选择no
-
-
安装独立 PostgreSQL
-
重新配置独立 Zulip 以与独立 PostgreSQL 实例连接
-
再次提示时:
Have you installed PostgreSQL on another VM, and is it ready for use?→ 选择yes
-
选项 2:先安装 PostgreSQL,然后安装 Zulip
-
安装独立 PostgreSQL
-
安装独立 Zulip
-
出现提示时:
Have you installed PostgreSQL on another VM, and is it ready for use?→ 选择yes -
提供独立 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 模式。
-
有关更多详细信息,请参阅:32.19。 SSL 支持
-
在单个服务器上安装 Zulip 和 PostgreSQL
| 如果您要从 Zimbra Daffodil 版本 10.1.7 升级到 10.1.8 - 请参阅升级指南 → 更新自定义部分. |
如果您要从 Chat 9.2 升级到 10.2 - 请参阅升级 → 升级聊天部分.
-
从以下位置下载聊天安装程序 .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 -
切换到
root用户。 -
提取存档:
tar xf zfzi-2.0.0.tgz cd zfzi-2.0.0 ./install.pl -
安装程序将提示您输入
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 -
安装程序将提示您提供
Zimbra Proxy Host,Zimbra Proxy Admin Port,Zulip Admin Email和Zulip 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 -
然后,安装程序将验证与 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. -
安装程序将提示您输入
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. -
安装程序将提示您输入聊天服务器 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 -
如果您选择
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 -
如果您选择
letsencrypt或commercial作为聊天服务器 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. -
安装程序将根据您指定的 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 -
安装程序将检查 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 -
安装过程将开始,可能需要一些时间才能完成。安装完成后请稍候。
-
安装输出如下所示(可能会根据提供的输入而有所不同):
[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
-
从下面的链接下载聊天安装程序 .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 -
切换到
root用户。 -
提取存档:
tar xf zfzi-2.0.0.tgz cd zfzi-2.0.0 ./install.pl -
安装程序将提示您输入
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 -
安装程序将提示您提供
Zimbra Proxy Host,Zimbra Proxy Admin Port,Zulip Admin Email和Zulip 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 -
然后,安装程序将验证与
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. -
安装程序将提示您输入
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. -
安装程序将提示您输入
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 -
如果您选择
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 -
如果您选择了
letsencrypt或commercial作为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. -
安装程序将根据您指定的
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 -
安装程序将检查与 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,因为我们首先安装独立 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. -
安装程序将提示“系统将被修改 - 继续?(是/否):”。您需要输入
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 -
安装过程将开始,可能需要一些时间才能完成。安装完成后请稍候。
-
安装输出如下所示(可能会根据提供的输入而有所不同):
[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
-
下载聊天安装程序
.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 -
切换到
root用户。 -
解压压缩包:
tar xf zfzi-2.0.0.tgz cd zfzi-2.0.0 ./install.pl -
安装程序会提示您输入
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 -
安装程序将提示您提供
Zimbra Proxy Host,Zimbra Proxy Admin Port,Zulip Admin Email和Zulip 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 -
然后,安装程序将验证与
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. -
安装程序将提示您输入连接到 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 -
安装程序将显示:
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 -
安装过程将开始,可能需要一些时间才能完成。安装完成后请稍候。
-
安装输出如下所示(可能会根据提供的输入而有所不同):
[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 服务器
-
返回到独立 Zulip 服务器
-
运行
./install.pl --use-remote-db以使用独立 PostgreSQL 配置独立 Zulip 服务器。 -
安装程序将提示
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 -
安装程序将提示您输入 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 -
安装程序将检查 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. -
配置输出如下所示(可能会根据提供的输入而有所不同):
[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 LDAP或AD. -
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:
yes或no。指示 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_name和email被返回。
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服务器上部署商业证书。 如果获取商业证书不可行,您可以使用以下设置禁用证书验证。然而,它是不安全的。 不建议在生产中使用。
|
|
警告: 请确保设置了权限 640(或 600)。 请考虑计划更改 如果您使用聊天服务器 SSL 证书类型安装聊天服务器:自签名,Zimbra 邮件存储服务器将无法与聊天服务器通信,因为证书不受信任。 要解决此问题,您需要在所有邮件存储服务器上将 ssl_allow_untrusted_certs 设置为 false,以便每个邮件存储服务器不检查 SSL 证书。但是,它不仅会影响与聊天服务器的通信,还会影响从邮件存储服务器发起的所有通信。这会导致安全问题。 不要将其应用于生产。
|
允许从
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不需要手动设置。 例如,对于域,当zimbraChatBaseHost为chat1.mydomain.com且zimbraZulipChatDomainId为domain1example.com时domain1.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 代理和邮件存储服务器访问。最终用户不得访问它。
您可以通过以下步骤为现有域创建领域:
-
确认 zimbraChatBaseHost 和 zimbraChatJwtSecret 已在域上配置
(Run as zimbra on a Zimbra mailstore server) zmprov gd DOMAIN zimbraChatBaseHost zimbraChatJwtSecret -
确认创建领域 URL 的 FQDN 可以由代理和邮件存储服务器解析
-
为现有域创建领域
-
最好设置一个域名,删除 @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.net⇒anotherdomainexamplenet确保在创建域之前,代理和邮件存储服务器可以解析新域的领域 URL 的 FQDN。
如果部署了多个聊天服务器(即如果
zimbraChatBaseHost和zimbraChatJwtSecret尚未在 globalConfig 中设置),zimbraChatBaseHost和zimbraChatJwtSecret也需要指定。## Realm is created automatically $ zmprov cd DOMAIN zimbraFeatureZulipChatEnabled TRUE zimbraChatBaseHost CHAT_HOSTNAME zimbraChatJwtSecret SECRET -
-
确认
zimbraZulipChatDomainId已在域上设置(Run as zimbra on a mailstore server) $ zmprov gd DOMAIN zimbraZulipChatDomainId zimbraZulipChatDomainId: domain1examplecom -
确认已在聊天服务器
(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 -
上创建领域,运行
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作为解决方法。
在领域上配置帐户
有关更多详细信息,请参阅:管理员指南
-
登录管理控制台
-
转到配置 > 域 > 域
-
单击“配置所有帐户”按钮
-
单击“获取帐户”按钮并确认帐户已部署在聊天服务器上
|
集成聊天服务器后创建帐户时,聊天服务器上会自动创建聊天帐户。
笔记:
|
启用基本聊天
现代 Web 客户端 - Zimbra Daffodil 10.1.7 版本
-
启用
zimbraFeatureZulipChatEnabled和zimbraFeatureBasicOneToOneChatEnabled在域、COS 或账户级别(Run as zimbra on a Zimbra mailstore server) (Example) $ zmprov mc default zimbraFeatureZulipChatEnabled TRUE zimbraFeatureBasicOneToOneChatEnabled TRUE -
启用
zimbra-zimlet-chat域、COS 或帐户级别中的 zimlet -
登录到现代 Web 客户端上的帐户。基本聊天显示在页面右侧(侧边栏中)。
-
有关更多详细信息,请参阅单独的文档:“现代 Web 应用程序用户指南 → Zimbra Chat”.
-
经典 Web 客户端 - Zimbra Daffodil 10.1.8 及以上
-
启用
zimbraFeatureZulipChatEnabled并zimbraFeatureBasicOneToOneChatEnabled在域、COS 或帐户级别(Run as zimbra on a Zimbra mailstore server) (Example) $ zmprov mc default zimbraFeatureZulipChatEnabled TRUE zimbraFeatureBasicOneToOneChatEnabled TRUE -
在域、COS 或帐户级别启用 zimbra-zimlet-classic-chat zimlet
-
登录经典 Web 客户端上的帐户。基本聊天显示在页面右侧(侧边栏中)。
-
。有关更多详细信息,请参阅单独的文档:“现代 Web 应用程序 → Zimbra 聊天用户指南”.
启用高级聊天
现代 Web 客户端 - Zimbra Daffodil 10.1.7 版本
-
启用
zimbraFeatureZulipChatEnabled和zimbraFeatureAdvancedChatEnabled在域、COS 或帐户级别(Run as zimbra on a Zimbra mailstore server) (Example) $ zmprov mc default zimbraFeatureZulipChatEnabled TRUE zimbraFeatureAdvancedChatEnabled TRUE -
在域、COS 或帐户级别启用
zimbra-zimlet-chatzimlet -
登录到现代 Web 客户端上的帐户。消息图标显示在页面顶部的导航栏中。
-
有关更多详细信息,请参阅单独的文档:“现代 Web 应用程序 → Zimbra 聊天用户指南”
-
经典 Web 客户端 - Zimbra Daffodil 10.1.8 及以上
-
启用
zimbraFeatureZulipChatEnabled并zimbraFeatureAdvancedChatEnabled在域、COS 或帐户级别(Run as zimbra on a Zimbra mailstore server) (Example) $ zmprov mc default zimbraFeatureZulipChatEnabled TRUE zimbraFeatureAdvancedChatEnabled TRUE -
启用 zimlet -
zimbra-zimlet-classic-chat和zimbra-zimlet-chat适用于域、COS 或帐户级别。 -
登录经典 Web 客户端上的帐户。 “高级聊天”选项卡显示在页面顶部的导航栏中。
-
有关更多详细信息,请参阅单独的文档:“现代 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 服务器上执行。
-
更改部署设置
crudini --set /etc/zulip/zulip.conf machine pgroonga enabled -
更新部署以遵循新设置
/home/zulip/deployments/current/scripts/zulip-puppet-apply -
将以下设置添加到
/etc/zulip/settings.pyUSING_PGROONGA = True -
应用 PGroonga 迁移。 请注意,迁移可能需要很长时间,并且在迁移完成之前用户将无法发送新消息。
su zulip -c '/home/zulip/deployments/current/manage.py migrate pgroonga' -
重新启动 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
-
下载聊天安装程序
.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 -
切换到
root用户。 -
提取存档:
tar xf zfzi-2.0.0.tgz cd zfzi-2.0.0 ./install.pl -
系统将提示您输入以下内容,请相应地提供您的输入。
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): -
升级过程将开始,可能需要一些时间才能完成。安装完成后请稍候。
-
升级输出如下所示(可能会根据提供的输入而有所不同):
[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 -
更新
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
-
从下面的链接下载聊天安装程序 .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 -
切换到
root用户。 -
提取存档:
tar xf zfzi-2.0.0.tgz cd zfzi-2.0.0 ./install.pl -
系统将提示您输入以下内容,请相应地提供您的输入。
Have you taken a backup of what you intend to upgrade? (yes/no): Do you want to proceed with the Zulip upgrade? (yes/no): -
升级过程将开始,可能需要一些时间才能完成。安装完成后请稍候。
-
升级输出将如下所示(可能会根据提供的输入而有所不同):
[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 -
更新
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
-
下载聊天安装程序
.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 -
切换到
root用户。 -
提取存档:
tar xf zfzi-2.0.0.tgz cd zfzi-2.0.0 ./install.pl -
系统将提示您输入以下内容,请相应地提供您的输入。
Have you taken a backup of what you intend to upgrade? (yes/no): Do you want to proceed with the PostgreSQL upgrade? (yes/no): -
升级过程将开始,可能需要一些时间才能完成。安装完成后请稍候。
-
升级输出将如下所示(可能会根据提供的输入而有所不同):
[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 -
完成独立 PostgreSQL 升级后,切换回独立 Zulip 服务器并使用以下命令以
zulip用户身份启动它:/home/zulip/deployments/current/scripts/start-server
使用配置文件升级
安装程序通过指定的配置文件支持非交互模式。
使用以下命令以非交互模式使用特定配置文件进行安装:./install.pl --config=<file>
所有配置键必须根据所选服务类型的要求在配置文件中定义。
配置文件键描述
CONFIRM_BACKUP_DONE: yes或no。在继续升级之前确认备份是否已完成。
CONFIRM_ZULIP_UPGRADE: yes或no。确认用户是否要继续升级 Zulip。
CONFIRM_DB_UPGRADE: yes或no。确认用户是否要继续升级数据库。
CONFIRM_REINSTALL: yes或no。确认是否应执行重新安装。一般不建议重新安装,因为这可能会破坏现有系统。提供此选项是为了防止用户再次运行安装程序时意外重新安装。
升级配置文件示例
组合 (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,则必须使用此新版本更新聊天自定义项。-
下载聊天安装程序
.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 -
切换到
root用户。 -
提取存档并更新自定义
tar xf zfzi-1.0.1.tgz cd zfzi-1.0.1 ./install.pl --update-customizations -
更新自定义输出将如下所示
[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 中删除帐户后,该帐户会在聊天服务器上自动停用。 |
欲了解更多详情,请参阅:常见问题解答部分关于如何从聊天服务器中删除帐户。
-
配置所有帐户:将域上的所有帐户配置到聊天服务器。
-
为了提供多个帐户,我们开发了一个实用程序,请参阅:配置多个域部分下面的
-
-
激活/停用帐户列表不会自动更新。单击“获取帐户”以显示最新列表。
帐户配置的成功和失败次数显示在对话框中。当您看到失败时,失败事件日志用户creation failed: EMAIL_ADDRESS写入聊天服务器上的/var/log/zulip/server.log中。您可以在/var/log/zulip/server.log和/或/var/log/zulip/error.log.
|
-
配置帐户:将域上的单个帐户配置到聊天服务器。在文本字段中输入电子邮件地址,然后单击配置帐户。激活/停用的帐户列表不会自动更新。单击“获取帐户”以显示最新列表。
-
如果尚未在聊天服务器上创建领域,则该域上的聊天设置不可用。
配置多个域
先决条件
运行此脚本需要 Zimbra Collaboration Suite 版本 10.1.10 或更高版本。 当域数量超过 4 个且每个域有 4,000 个或更多帐户时,建议使用此设置。
-
在聊天服务器上更新 Harakari 参数
-
vi /etc/zulip/uwsgi.ini -
找到 harakari 并将其更新为 300
-
-
添加
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 小时的频率收到定期通知。
表现统计
这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 中。您可以查看有关设置的其他信息。
-
pingIntervalActiveInSeconds:默认 180(秒)-
当用户处于活动状态时,状态每 3 分钟发送到聊天服务器。即,它用于活动状态下的存在更新请求。
-
-
pingIntervalIdleInSeconds:默认 900(秒)-
当用户空闲时,每 15 分钟将状态发送到聊天服务器。即它用于空闲状态下的存在更新请求。
-
-
maxAllowedSecondsForNoActivity:默认240(秒)-
当用户4分钟没有使用键盘或鼠标(移动设备上的触摸动作)时,用户被视为空闲状态。在那之后,
pingIntervalIdleInSeconds用于发送用户的在线状态。 -
当用户使用键盘或鼠标时,用户状态从空闲变为活动。之后,使用
pingIntervalActiveInSeconds。
-
-
presenceUpdateMinFreqInSeconds:默认 60(秒)-
当短时间内从客户端(或浏览器)发送许多状态更新请求时,聊天服务器会忽略它们,不频繁更新数据库。
-
默认情况下,最小更新周期为 55 秒。例如,当聊天服务器在 55 秒内收到来自同一用户的 5 个请求时,它接受第一个请求并更新数据库,但忽略其他 4 个请求。
-
当用户空闲时,状态将发送到聊天服务器。但是,如果在活动状态发送到聊天服务器后发生这种情况,则聊天服务器上将忽略空闲状态通知。考虑到限制,zimlet 在指定值之后发送额外的空闲存在状态。
在聊天服务器上修改最小更新周期 55 秒之前,不得更改该值。
-
-
idleEventCallDelay:默认 60(秒)-
通过存在事件通知检查其他用户收到消息和状态更改为在线等事件。当用户处于活动状态时,下一个事件请求将在上一个存在事件通知完成后立即发送。
-
当用户空闲时,在发送下一个事件请求之前添加 1 分钟的等待时间。 这意味着,
-
接收存在事件通知
-
等待 1 分钟
-
发送下一个事件请求
-
-
如果用户在等待时间内收到来自其他用户的消息或其他用户在线,则该事件将在下一个事件请求的响应中通知并反映在 UI 中。
-
-
enablePresenceEvents: 默认:true-
当它是true:
-
在初始加载过程中从聊天服务器获取同一域中所有用户的状态数据。
-
当其他用户变为活动状态时,将通过事件请求的响应来通知。
-
存在更新请求的响应包括其时间戳被更新的其他用户的存在数据。
-
-
当为false 时:
-
不加载所有用户的状态数据。相反,仅获取侧栏中显示的用户(固定和未固定用户)的状态数据。
-
当其他用户变为活动状态时,不会通知在线状态。
-
状态更新请求的响应不包括时间戳被更新的其他用户的状态数据。
-
不使用存在事件通知和存在更新请求的响应,而是在发送存在更新请求时一起发送仅获取必要用户的存在数据的另一个http请求。 (以下称为“状态获取请求”。)
-
-
优点和缺点
-
当true 时,
-
优点
-
当另一个用户变为活动状态时,可以在更短的时间内检测到
-
-
缺点
-
所有其他用户的状态数据在初始加载过程中获取。
-
所有其他用户的“活动”状态更改都会通过存在事件通知来通知,即使用户仅与某些其他用户通信也是如此。
-
这意味着初始加载的响应大小可能很大并且可能发生许多存在事件通知。
-
它将增加客户端计算机上的内存使用、增加服务器负载并增加网络流量。
-
-
当为false 时,
-
优点
-
初始加载的尺寸较小。
-
仅从聊天服务器获取必要用户的状态数据。
-
它将减少客户端上的内存使用,并减少服务器负载和网络流量,尤其是在许多情况下在存在事件通知上。
-
-
缺点
-
当用户变为活动状态时,不会立即反映在其他用户上。它将在下次触发存在请求时反映出来。
-
发送额外的存在获取请求。客户端和服务器端可能都会有一些开销。然而,与通过大域中的存在更新请求的响应来获取存在更新相比,它不应该有那么多。
-
-
-
约束
-
的值
pingIntervalActiveInSeconds,pingIntervalIdleInSeconds,maxAllowedSecondsForNoActivity并且presenceUpdateMinFreqInSeconds必须以秒为单位提供。 -
所需的最小值
pingIntervalActiveInSeconds,pingIntervalIdleInSeconds和presenceUpdateMinFreqSeconds必须是 60 秒。 -
presenceUpdateMinFreqInSeconds值必须小于pingIntervalActiveInSeconds并且pingIntervalIdleInSeconds. -
presenceUpdateMinFreqInSeconds不得更改,除非在 Zimbra Chat 服务器上修改了状态更新的最小频率秒数设置。 -
所需的最大值
idleEventCallDelay必须是 60 秒。
推荐设置
在小域上
-
默认值应该很好
在大型域上
-
enablePresenceEvents为 false -
如果您在聊天服务器上看到性能问题,请考虑:增加
pingIntervalActiveInSeconds,b。增加pingIntervalIdleInSeconds和/或c.减少maxAllowedSecondsForNoActivity以减少存在更新请求的频率。
它们是调整参数。更改的效率取决于并发用户数、聊天服务器规格、网络带宽等。
配置步骤
修改config_template.xml并在部署 zimlet 后应用更改。
所有步骤都应在 Zimbra 邮件存储服务器上作为zimbra运行。
-
部署 zimlet
-
检查当前配置
$ zmzimletctl info zimbra-zimlet-chat ... Config: <zimletConfig name="zimbra-zimlet-chat" version="1.0.0">...</zimletConfig> -
编辑
config_template.xml。例如:$ cd /path/to/your-working-directory/ $ cp /opt/zimbra/zimlets-deployed/zimbra-zimlet-chat/config_template.xml ./ $ vi config_template.xml-
设置较高版本号
-
修改设置的值
-
-
应用更改
$ zmzimletctl configure config_template.xml -
确认更改
$ zmzimletctl info zimbra-zimlet-chat -
运行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 状态代码
-
处理时间
-
(可选性能数据详细信息)
-
来自的端点/URL
zproject/urls.py
Nginx 日志文件access.log和error.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, FATAL或PANIC登录postgresql-16-main.log.
Zimbra Chat 管理员
管理组织基础知识
作为 Zimbra Chat 管理员,了解如何管理用户角色和权限是维护组织有序的工作空间的关键。 本节介绍可用的不同用户角色、如何管理它们以及如何配置组织范围的权限。
|
这些角色是特定于聊天的,与 Zimbra 电子邮件管理员角色不同。 |
用户角色概述
Zimbra Chat 支持多个角色,可帮助您根据组织的需求分配正确的权限:
| 角色 | 描述 |
|---|---|
组织所有者 |
对设置、用户和其他管理员的完全控制。只有所有者才能停用组织。 |
组织管理员 |
可以管理用户、频道、设置。无法提升其他人为所有者或修改所有者角色。 |
主持人 |
可以执行有限的管理功能。权限可以由所有者和管理员配置。 |
会员 |
大多数用户的默认角色。可以访问所有公共频道。 |
访客 |
只能访问他们明确添加到的频道。无法看到其他用户或频道。 |
管理用户角色
您可以通过用户配置文件或组织设置来分配和更改角色。
通过用户配置文件
-
将鼠标悬停在右侧边栏中的用户名上。
-
单击三点菜单 →管理此用户.
-
下用户角色,选择一个新角色。
-
单击保存更改.
通过组织设置
-
转到设置 → 组织设置 → 用户选项卡。
-
使用用户名旁边的下拉菜单分配新角色。
-
点击保存更改.
组织设置管理
仅Owner和Administrator可以配置和查看组织设置。
常用设置:
-
组织概况和类型。
-
组织徽标也可以配置和自定义。
-
默认用户权限。
-
自动消息和电子邮件语言。
访问:前往设置 → 组织设置.
管理用户访问
停用用户
停用会删除所有设备的访问权限、禁用凭据和机器人。
步骤:
-
打开用户配置文件或转至组织 → 用户选项卡。
-
单击管理该用户.
-
单击停用用户 → 确认.
-
笔记:
Owner角色不能被停用Administrator.
重新激活用户
-
转至设置 → 组织 → 用户 → 已停用选项卡。
-
点击重新激活在用户旁边。
用户在重新激活时保留所有先前的设置和角色。
新用户的默认设置
管理员可以为新用户配置默认首选项,例如:
-
主题、字体大小、时间格式。
-
隐私选项。
-
通知。
-
主页视图(收件箱与最近的对话)。
用户身份控制
在组织设置 → 组织权限 → 用户身份:
下配置这些选项 防止用户更改: * 姓名、电子邮件、头像。
停用组织
此操作在组织方面是不可逆转的。
仅Owners可以停用:
-
转至组织设置 → 组织配置文件.
-
单击停用组织 → 确认.
|
要撤消停用,请立即联系您的服务器管理员。 停用无法通过 Zimbra Chat 界面撤消。 只有 Zimbra 系统管理员才拥有从服务器端恢复或还原组织所需的访问权限和工具。 |
频道管理
作为管理员,您可以完全控制频道的创建、管理和使用方式。
控制谁可以创建频道
前往:设置 → 组织设置 → 组织权限 → 频道权限
您可以选择:
-
仅管理员
-
管理员和版主
-
管理员、版主和成员
-
所有正式成员
如果您想保持整洁,请将创建限制为管理员和/或版主。
启用/禁用通道类型
通道类型:
-
公共 – 任何人都可以加入,所有消息可见。
-
私人 - 仅限受邀者。
-
Web-public – 通过公共链接进行只读访问。
向频道授予网络公共类型:
只有Administrator和Moderator可以创建网络公共频道。
-
转至组织设置 → 组织权限 → 频道权限.
-
启用:允许网络公共频道.
设置谁可以在频道中发帖
您可以随时更改此设置 - 即使对于现有频道也是如此。
对于每个通道:
-
打开通道设置→ 单击通道名称 →高级配置部分。
-
在发帖政策下,选择:所有人、管理员和版主、仅限版主、仅限管理员。
管理订阅者
作为管理员,您可以:
-
从任何频道添加/删除用户 -频道设置 → 单击频道名称 → 订阅者选项卡。
-
强制用户订阅强制频道(通过“默认频道”)。
-
为新用户设置默认频道
-
转到:设置 → 组织设置 → 默认频道.
-
这些频道是为新用户自动订阅的。非常适合:
#announcements,#company-news.
-
重命名频道和编辑频道设置
管理员可以:
-
更改频道名称和描述。
-
公开频道。
-
设置发布策略。
-
删除频道。
转到任意频道 →频道设置→ 进行更改。
删除频道
管理员可以:
-
删除频道 - 删除频道将立即取消所有人的订阅。此操作无法撤消。
需要频道消息中的主题
默认情况下,用户可以在不选择主题的情况下发送消息 - 这些显示为“(无主题)”。
作为管理员,您可以禁止用户发送没有主题的消息。
要启用此功能:
-
转到设置 → 组织设置
-
滚动到其他设置
-
切换需要频道消息中的主题
-
单击保存更改
控制谁可以编辑主题和移动消息
作为管理员,您可以决定:
-
谁可以编辑消息主题
-
谁可以将主题移动到其他频道
-
是否有时间限制编辑或移动消息
要管理这些权限:
-
转至设置 → 组织设置 → 组织权限
-
在移动消息下,配置以下各项:
-
谁可以将消息移动到另一个主题
-
编辑主题的时间限制
-
谁可以将消息移动到另一个频道
-
在频道之间移动消息的时间限制
-
-
单击保存更改每次更新后
|
管理员和版主都可以编辑和移动消息,无论消息是多久前编写的。 |
控制谁可以发送直接消息 (DM)
作为Owner或Administrator,您可以控制 DM 在组织中的工作方式。
您可以配置两个设置:
要设置 DM 权限:
-
转至设置 → 组织设置 → 组织权限
-
滚动至直接消息权限
-
谁可以授权 DM(对话中必须至少有一个人有权启动它。)
-
设置谁可以授权直接消息对话
-
单击保存更改
-
-
谁可以启动 DM(定义允许谁启动新的 DM 对话。)
-
设置谁可以启动直接消息对话消息对话
-
单击保存更改
-
-
要完全禁用 DM:
-
设置谁可以授权直接消息对话到
Direct messages disabled -
单击保存更改
-
控制谁可以使用通配符提及(@all、@channel、@topic)
作为Owner或Administrator,您可以管理谁可以使用通知大量人员的通配符提及。
通配符提及包括:
-
@all,@channel或@everyone→ 通知频道中的每个人 -
@topic→ 通知主题
中活跃的每个人 默认情况下,这些可以通知很多用户。您可以限制此设置以避免向大型群组发送垃圾邮件。
仅当频道成员超过 15 人,或者主题参与者超过 15 人时,此设置才适用。
要限制通配符提及:
-
转到设置 → 组织设置 → 组织权限
-
滚动到频道权限
-
设置谁可以通过通配符提及通知大量用户
-
单击保存更改
管理消息编辑、删除和编辑历史记录
作为管理员,您可以控制:
-
谁可以编辑或删除自己的消息
-
编辑或删除的时间限制
-
用户是否可以看到编辑历史记录
消息编辑
-
用户只能编辑自己的消息。
-
管理员始终可以删除任何消息。
配置编辑:
-
转至设置 → 组织设置 → 组织权限
-
在消息编辑下:
-
切换允许消息编辑.
-
切换启用消息编辑历史记录.
-
设置编辑消息的时间限制.
-
-
单击保存更改.
消息删除
-
删除消息将永久删除该消息。
-
用户可以删除自己的消息。
-
管理员可以删除任何消息。
-
用户还可以删除他们拥有的机器人发送的消息。
配置删除:
-
转至设置 → 组织设置 → 组织权限
-
下消息删除:
-
设置谁可以删除自己的消息.
-
放删除消息的时间限制(不适用于管理员)。
-
-
单击保存更改.
消息保留
作为管理员,您还可以配置全局默认消息保留策略:
-
转至组织设置 → 消息保留.
-
选择消息保留期限。
-
默认情况下,所有消息都会无限期保留。
-
使用自定义保留期并选择保留期(以天为单位).
媒体预览行为
Zimbra 聊天显示图像、视频和链接的小预览,以保持聊天的可读性。
作为管理员,您可以完全关闭预览: * 上传和链接的图像/视频 * 链接网站
-
转到设置 → 组织设置
-
在其他设置下:
-
切换显示上传和链接的图像和视频的预览
-
切换显示链接网站的预览
-
单击保存更改
视频
Zimbra Chat 仅是聊天解决方案,不包含任何视频会议解决方案。但是,已经提供了与开源聊天解决方案的集成。默认情况下,Zimbra Advanced Chat 提供与Jitsi Meet的内置集成,这是 100% 开源视频会议解决方案。用户将能够使用撰写框中的“添加视频通话”或“添加语音通话”按钮发起 Jitsi Meet 通话并邀请其他人。
配置 Jitsi Meet 的自托管实例
管理员可以使用 Jitsi Meet 的自托管实例。 Zimbra Advanced Chat 将 Jitsi Meet云版本作为其默认视频通话提供商。这是 Jitsi 开源平台的社区版本。
要以管理员身份配置自托管 Jitsi Meet:
-
单击网络或桌面应用程序右上角的齿轮图标。
-
选择组织设置.
-
在左侧,单击组织设置.
-
在撰写设置下, 确认
Jitsi Meet在调用提供程序中选择下拉菜单。 -
选择自定义网址来自Jitsi 服务器 URL下拉列表,然后输入您的自托管 Jitsi Meet 服务器的 URL。
-
单击保存更改.
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
恢复备份
-
使用与备份相同的基本操作系统以及相同版本的 Zulip 和 postgreSQL 创建新的 ZImbra Chat 服务器设置。使用 Zimbra Zulip 安装程序来安装和配置设置。
-
与操作系统、Zulip 版本或 postgreSQL 版本相关的任何升级都应在成功恢复备份后完成。
-
确保安装指南中建议的网络安全措施对于新实例安全到位。
-
-
将备份的 .tar.gz 文件从旧的 Zimbra Chat 服务器复制到新的 Chat 服务器。
-
根据您的 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.confhost 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_name和email被返回。
(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) 备份和恢复的重要注意事项:
-
Zimbra Chat 服务器上没有帐户级备份和恢复。
-
Zimbra Chat 服务器没有内置的自动备份计划,但可以使用 crontab 进行配置。
-
Zimbra Chat 服务器备份未与 ZCS 的备份和恢复集成。 Zimbra Chat 备份和恢复是单独管理的。
-
Zimbra 聊天服务器日志未备份。如果需要,聊天管理员应手动创建服务器日志文件的备份。
-
从备份恢复 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 error在Initiating 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
1.4.成功的用户搜索
full_name和email当用户搜索正常工作时应该返回。
$ /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但未在聊天服务器上创建领域,请检查以下项目:
-
聊天服务器主机名可以在邮件存储服务器
-
上解析 聊天服务器允许从已在域中配置的邮件存储服务器
-
zimbraChatBaseHost和zimbraChatJwtSecret进行 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在域上启用 -
基本聊天
-
zimbraFeatureZulipChatEnabled和zimbraFeatureBasicOneToOneChatEnabled在帐户上启用
-
-
高级聊天
-
zimbraFeatureZulipChatEnabled和zimbraFeatureAdvancedChatEnabled在帐户上启用
-
-
如果有多个邮件存储服务器,运行 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增加了。请找到以下步骤:
-
打开
/etc/memcached.confzulip 服务器上的root用户-
将以下行添加到文件末尾 -
-
-I 2m # Increase slab page size to 2MB
-I 标志控制最大项目大小。增加它可以确保可以缓存更大的数据结构(例如用户/消息列表)。 -
-
运行 -
systemctl restart memcached.service -
使用 -
systemctl status memcached.service
检查服务状态 -
-
内存使用量增长:随着用户执行事务(发送/接收消息、登录/注销),__ZSEP_9f7__ memcached 内存使用量持续增长。
-
请查看手册:Memcached Linux 手册页
-
使用 watch
systemctl 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:领域的所有者 -
管理员帐户
zimbraIsAdminAccount或zimbraIsDelegatedAdminAccount = 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
警告:影响来自邮件存储服务器的所有出站通信并带来安全风险。不要在生产中使用。