最近我们的邮件服务器 (Zimbra) 崩溃了,无法恢复。我们决定换一家邮件提供商,我想把我们在 Zimbra 服务器上的所有电子邮件地址都发给他们。账户接近 1300 个,所以我不可能一个一个地记住。我们手头有 zimbra 目录 (/opt/zimbra) 的备份。可以从那里获取用户吗?
问候,Nicos
答案1
注意:下面列出的命令适用于 ZCS 7.x 网络版,可能需要更改才能与其他版本配合使用。具体来说,我相信只有网络版包含内置备份功能,尽管希望其他选项之一会有用。
如果 Zimbra LDAP 服务器仍在运行,您应该能够使用以下命令检索地址信息:
su - zimbra
/opt/zimbra/libexec/zmslapcat /tmp
egrep '^(zimbraMailAlias|zimbraMailDeliveryAddress):' /tmp/ldap.bak
如果 LDAP 服务器不可用,但您可以访问 Zimbra 配置为备份到的位置(默认为/opt/zimbra/backup
),则每次成功备份时它都应该有一份 LDAP 数据的副本。使用:
find /opt/zimbra/backup -maxdepth 3 -name ldap -exec ls -ld {}/ldap.bak ';'
显示所有可用的副本,然后选择最新的文件。然后,您可以使用 grep 从此文件中提取电子邮件地址,如上所述。
如果 LDAP 服务器和都不可用,则可能存在/opt/zimbra/backup
的副本。我相信此副本仅在系统修补时才会更新。ldap.bak
/opt/zimbra/data/ldap
注意:根据系统崩溃的具体情况,使用该工具可能可以恢复 LDAP 信息db_recover
。如果需要这种类型的恢复,您应该提出一个新问题,因为它超出了本文的范围,但这里有一些起点:
资料来源:
答案2
我试验了类似的情况,从 zimbra 上存储的 mysql 中获取用户。这是可能的,但需要很长时间。您可以(在沙盒环境中)安装具有相同崩溃版本的 zimbra。因此,您将 /opt/zimbra/db 文件夹重命名为 /opt/zimbra/db-new,并将 /opt/zimbra/db 从崩溃的服务器(或备份)复制到同一路径。这将为您提供对旧 mysql/mariaDB 的访问权限,您可以在 zimbra db 中检查“comments”列以获取用户列表。有了这个列表,在沙盒服务器中将 /opt/zimbra/db 重命名为 /opt/zimbra/db-orig,将 /opt/zimbra/db-new 重命名为 /opt/zimbra/db。现在使用该列表使用 zimbra 在此处提供的批量流程创建所有用户
https://wiki.zimbra.com/wiki/Bulk_Provisioning
当您创建了所有用户(数据库中没有消息)后,您必须再次访问 zimbra db 并运行选择查询以获取用户 ID 和电子邮件帐户。有了这些信息,再次重命名 db 文件夹 ($path/db 改为 $path/db-new 和 $path/db-orig 改为 $path/db),并使用 zimbra 使用批量流程创建用户时提供的新 ID 更新所有用户 ID。
现在,您已将所有“邮箱”与存储在新 ldap 中的 zimbra ID 正确绑定。因此,您现在可以访问旧邮箱。
之后,您决定如何移动信息。按帐户导出、启用 imap 并连接到新服务器等。
我告诉过你这是一个漫长的过程,但我使用了这个解决方案并且有效。
PD:永久备份到 ldap 以防止将来出现类似的问题。