2024年3月14日发(作者:)

Zimbra管理员手册

1 核心功能

ZCS是一个创新的消息和协作应用系统,提供了如下一些解决方案:

 电子邮件

 群组日历

 通讯录

 任务管理

 基于Web的文档管理和创作

ZCS的核心功能包括:

 邮件投递和存储

 邮件的索引

 邮箱服务器的日志

 IMAP和POP支持

 目录服务

 防垃圾邮件保护

 防病毒保护

管理员可以通过基于浏览器的管理控制台方便地管理域名、服务器、账号,

包括:

 管理服务类型(COS,ClassofService)

 添加账号和域名

 针对每个账号或服务类型设置一些限制

 创建和编辑分发列表

 导入MicrosoftExchange用户账号

第1页

 为一个域名设置虚拟主机

 管理服务器

 查看和管理服务器的状态

 控制使用情况

Zimbra提供两个基于浏览器的客户端(ZWC,ZimbraWebClient),即采用

Ajax技术的高级ZWC和使用标准HTML技术的标准ZWC。ZWC的特征包括:

 编写、阅读、回复、转发以及其它一些标准的电子邮件操作

 按照对话查看邮件

 给邮件加上标签

 执行高级搜索

 保存搜索结果

 使用日历安排日程

 共享日历、邮件夹、通讯录

 创建通讯录并共享

 设置邮箱的使用喜好,包括定义邮件过滤选项

 使用ZCS文档来创建、组织和共享Web文档

 使用任务功能来创建待办事项列表,并管理任务

ZCS被设计成为一个端到端的可伸缩的、高可信的邮件解决方案。这个消息

架构基于行业内熟知的开源技术和标准而构建,由一个服务器应用和客户端界面

构成。

架构包括如下一些优点:

 开源组件的集成。Linux,Jetty,Postfix,MySQL,OpenLDAP

 使用行业内的标准、开放协议。SMTP、LMTP、SOAP、XML、IMA、

POP等。

第2页

 时髦的技术设计。Java、JavaScript瘦客户端、DHTML

 水平的伸缩性。由于每个邮箱服务器都包括它自己的数据存储、消息存

储、邮箱账号,

 所以你在扩充系统时可以豪不担心。要支持更多的账号,只需添加更多

的服务器。RHEL的集群套件、SYMANTEC的VeritasClusterServer等

可以使用。

 基于浏览器的客户端。ZimbraWebClient使用户可以通过浏览器享受所

有ZCS的功能。

 管理控制台。管理控制台用于管理账号和服务器。

2 创建账号

2.1 创建单个账号

管理控制台中的New Account Wizard 可以用来创建单个账号,步骤如下:

1.从管理控制台的导航板上选择账户(Accounts) 提示:至少显示4 个已经

存在的账户:1 个管理员、2 个与垃圾邮件相关的、1个与全局文档相关的。这4 个

账号不需要做额外的修改。

2.点击新建(New),New Account Wizard 出现。

3.输入账户名称(邮件地址格式)和姓氏。这两项信息是必须。

4.此时可直接点击完成(Finish),账户将使用默认的服务类型(COS)及全

局设置。

5.如果要为此账户配置别名、转发地址或其它的特定功能,可在

New Account Wizard 的界面里完成,最后再点击完成(Finish)。

6.当账户创建完成的时候,就可以收发邮件了。

2.2 批量创建账号

使用批量账户向导(Bulk Account Wizard),每次可以导入多达500 个账户。

该向导要求你上传一个CSV 文件,其中包括用户名、显示名称、密码(可选)

第3页

基本信息。通过这种方式创建的账户使用默认服务类型。

2.3 将现有数据迁移到ZCS

Zimbra 开发了几个工具,帮助用户将现有的电子邮件、日历及联系人迁移

到ZCS服务器上。当用户文件被导入时,文件夹的结构仍被保留。使用ZCS 的

工具来迁移数据可以保证信息能够正确导入。.

如下几个程序及使用指南可从管理控制台中下载。

ZCS Migration Wizard for 格式

使用此工具可以将Microsoft Exchange 服务器中的邮件账户迁移到ZCS 服

务器中。

ZCS Migration Wizard for Lotus 格式。使用此工具可以将

Lotus Domino 服务器中的邮件账户迁移到ZCS服务器中。

Zimbra Collaboration Suite Import Wizard for 格式。使用此工具可

以将Outlook 文件(.pst)中的内容迁移到ZCS 服务器上。

3 zimbra中包含的组件

Zimbra 架构中包括对使用标准协议的开源项目的整合。包括在Zimbra 中的

第三方的软件如下表列示,并且会在安装过程中被安装。所有的这些组件都已经

经过测试和配置,可以和Zimbra 工作得很好。

名称

jetty

Postfix

OpenLDAP

MySQL

Lucene

ClamAV

SpamAssassin

Amavisd-new

James/Sieve

描述

Zimbra的软件运行时需要的Web 服务器

一个开源的邮件传输代理(MTA)

一个开源的目录服务软件,提供用户的验证服务

数据库软件

开源的全文检索和搜索引擎

防病毒软件

反垃圾邮件过滤器

在MTA和内容过滤器之间提供接口

用于建立电子邮件的过滤规则

第4页

4 zimbra软件包

ZCS 包括如下应用程序包:

4.1 Zimbra Core (安装)

包括核心的类库、实用工具、监控工具和基本的配置文件

4.2 Zimbra LDAP (安装)

ZCS 使用开源的OpenLDAP 作为目录服务,实现用户身份验证功能。每个

账号都有一个唯一的邮箱ID 作为账号的主要身份编号。ZCS 中使用的

OpenLDAP 已经经过定制。

4.3 Zimbra MTA (安装)

Postfix 是一个开源的MTA 程序,通过SMTP 协议接收邮件,并通过LMTP 协

议将邮件传递到合适的Zimbra 邮箱服务器中。Zimbra MTA 包中还包括防病毒软

件和反垃圾邮件软件。

4.4 Zimbra Store(邮箱服务器) (安装)

包括了邮箱服务器需要的各个组件,包括Jetty,一个开源的Servlet 容器。

在ZCS 中,邮箱服务器被称作mailboxd。

每个账号只能在一个邮箱服务器中存在;每个账号都会对应一个邮箱,其中

包括所有的邮件和附件。

邮箱服务器中包括如下组件:

4.4.1 数据存储

是一个MySQL 数据库,内部的邮箱ID 与用户账号相关联。数据存储将邮

箱ID 与用户的OpenDLAP 账号进行映射。数据存储包括每个用户的标签定义、

邮件夹、日程安排、联系人,同时也包括每封邮件的状态、所在邮件夹等。

4.4.2 消息存储

消息存储是用来存放邮件及附件的。消息以MIME 格式存放。有多个收件

人的邮件,在消息存储中只存放一份。

第5页

4.4.3 索引存储

索引和搜索技术由Lucene 提供。索引文件基于单个邮箱。 每个服务器都有

单独的数据存储、邮件存储和索引存储。 当新邮件到达时,服务器会安排一个

新的线程来对邮件做索引。

4.5 Zimbr-SNMP (安装)

非必须安装。如果你决定使用它来做监控,建议在每种服务器(邮箱服务器、

LDAP、MTA)上都安装。Zimbra 使用swatch 查看syslog 输出生成SNMP 信号。

4.6 Zimbra Logger (安装)

可选择性地安装于一台邮箱服务器上。这个组件用于syslog 的聚合和报表。

如果未安装,则无法在管理控制台中看到服务器的统计信息。

4.7 Zimbra Spell (不安装)

可选择性安装。它是一个开源的拼写检查工具,用在ZWC 中。如果此包安

装了,Zimbra-apache也会被安装。

4.8 Zimbra Proxy (不安装)

可选择性安装。使用代理服务器可以将同一个域名的邮箱分散到不同的服务

器上。

4.9 Zimbra Memcached (不安装)

Memcached 是一个与代理相关的包,当代理包被安装时,它也会被安装。

运行代理服务器的必须使用Memcached,多台代理可使用同一台Memcached 服

务器。

5 zimbra磁盘结构

邮箱服务器包括如下卷:

邮件存储,位于/opt/zimbra/store

数据存储,位于/opt/zimbra/db下的MySQL数据库

索引存储,位于/opt/zimbra/index

第6页

日志文件,位于/opt/zimbra/log

5.1 邮件存储

邮件存储是用来存放邮件的,包括邮件的正文和附件。邮件以MIME 格式

存放。邮件存储位于每台服务器的/opt/zimbra/store 目录下,每个邮箱都有一个

以ZCS 内部ID 命名的专用目录。

5.2 数据存储

ZCS 的数据存储是一个MySQL 数据库,包含了与邮件相关的元信息,如标

签、会话、或在文件系统中的指针。

每个账号(邮箱)只存在于一台服务器上。每台服务器有它自己独立的数据

存储,包括它所管理的所有邮箱。

数据存储包括:

A、邮箱-账号的映射。在ZCS 中,主要的标识是邮箱的内部ID,无论是

用户名还是账号。 邮箱内部ID 在一台服务器中是唯一的。数据存储将邮箱内部

ID 映射到用户的OpenLDAP账号;

B、每个用户的标签定义、邮件夹、联系人、日程安排、任务、邮件过滤器

等 ;

C、关于每封邮件的信息,包括是否被阅读、与哪个标签相关联等。

5.3 索引存储

索引和搜索技术由Apache Lucene 提供。邮件在进入系统的时候被自动索引。

每个邮箱都有一个对应的索引文件。

管理员或用户无法管理或配置索引进程。 索引过程如下:

将进站的邮件投递到邮箱服务器中

2.邮箱服务器分析邮件,包括邮件头、正文及所有可读的附件如PDF 或DOC,

进行分词索引。

3.邮箱服务器将分词索引传递给Lucene 来创建索引文件。

第7页

5.4 日志

ZCS 部署由很多个第三方的组件构成。每个组件都可能产生它自己的日志。

一些ZCS 日志信息会生成SNMP Trap,你可以用SNMP 监控工具来捕获。

详见监控ZCS 服务器。

6 zimbra命令行方式常用的操作

6.1 更改登录方式

$ zmprov ms zimbraMailSSLPort (将HTTPS更改

成非443端口)

$ zmtlsctl httphttps $ tomcat restart

6.2 smtp认证错误的解决

zmprov ms `zmhostname` zimbraMtaAuthHost

6.3 日志服务器错误的解决

$ zmprov getConfig zimbraLogHostname

$ zmprov modifyConfig zimbraLogHostname

6.4 查看系统参数

可以通过zmlocalconfig -s命令查看系统的参数

$ postconf //查看postfix的所有配置

$ zmlocalconfig //查看各种组件的配置信息

$ zmlocalconfig -s|grep zimbra_ldap_userdn //查看zimbra帐号在LDAP中

的DN

$ zmlocalconfig -s|grep zimbra_ldap_userdn //查看zimbra帐号在

第8页

LDAP中的密码

$ zmlocalconfig -s|grep zimbra_mysql //查看mysql的配置信息

6.5 更改系统最大邮件大小

查看最大系统邮件大小,显示当前系统最大邮件为10M。

$ postconf message_size_limit message_size_limit = 10240000

将系统最大邮件大小更改为20M。

$ zmprov modifyConfig zimbraMtaMaxMessageSize 2048000

$ postfix reload

6.6 更改系统最大附件大小

将系统中所有帐户允许最大的附件更改为5M

$ zmprov modifyConfig zimbraFileUploadMaxSize 5000000

将系统中帐户允许最大的附件更改为20M

$ zmprov modifyServer zimbraFileUploadMaxSize 20000000

6.7 更改管理员密码:

$ zmprov gaaa //列出所有管理员

$ zmprov sp //更改管理员

密码

例如:zmprov sp admin q1w2e3r4 或 *****************************

6.8 更改LDAP密码

$ ldap status(start)

$ zmldappasswd --root newpass (root)

第9页

$ zmldappasswd newpass (zimbra)

6.9 更改MYSQL Database密码

$ status(start)

$ zmmypasswd --root newrootpass

$ zmmypasswd newpass

6.10 更改Logger MYSQL Database密码

$ status(start)

$ zmmylogpasswd --root newrootpass (root)

$ zmmylogpasswd newpass (zimbra)

6.11 清空邮箱

$*****************************************/[inbox][chats][sent][drafts]

[junk][trash] inbox(收件箱) chats(聊天) snet(已发送邮件) drafts(草稿箱) junk(垃

圾邮件) trash(已删除邮件)

6.12 备份还原LDAP

1、备份LDAP(两个命令是相等的)

1)

ldapsearch -h

服务器对外的地址

-x -D "uid=zimbra,cn=admins,cn=zimbra" -w

objectclass=* >

2)

ldapsearch -h

服务器对外的地址

-x -D "uid=zimbra,cn=admins,cn=zimbra" -w

>

6.13 还原LDAP

ldapadd -h

服务器对外的地址

-x -c -D "uid=zimbra,cn=admins,cn=zimbra" -w

<

第10页

6.14 导出导入用户的邮件

#!/bin/bash

while read USER

do

TODAY=`date`

LOGFILE="/tmp/bak/"

echo $TODAY >> $LOGFILE

echo $USER >> $LOGFILE

/opt/zimbra/bin/zmmailbox -z -m $USER gms >> $LOGFILE

zmmailbox-z-m$***********************"//?fmt=tgz">/tmp/bak/$

done < /tmp/

PS:里是用户名,不需要跟域名

6.15 恢复用户的邮件

zmmailbox -z -m $*************postRestURL "//?fmt=tgz&resolve=reset"

tmp/bak/$

6.16 签发证书

我们可以重新签发一个证书,而且有效期可以自己设定:

#/opt/zimbra/bin/zmcertmgr createca -new

#/opt/zimbra/bin/zmcertmgr deployca

#/opt/zimbra/bin/zmcertmgr createcrt -new -days 3650

这后面的数字就是证书的使用年限,以天为单位:

$/opt/zimbra/bin/zmcertmgr deploycrt self

$/opt/zimbra/bin/zmcertmgr viewdeployedcrt

$ /etc/init.d/zimbra restart

(zimbra用户)

第11页

$zmcontrol restart

6.17 无法生成证书

Step 1:查看/opy/zimbra/.ssh目录下文件

#ls -l /opt/zimbra/.ssh/

If doesn't exist, we need to create new one

Step 2:创建sshkey

#su - zimbra

$zmsshkeygen

$zmupdateauthkeys

Step 3 (Restart Zimbra service)

#su - zimbra

$zmmtactl restart

Sometimes we need to restar all Zimbra Services.

#su - zimbra

$zmcontrol stop

$zmcontrol start

7 zimbra备份恢复

7.1 备份

7.1.1 备份mailbox

su – zimbra

mkdir /opt/zimbra/backup/store

mkdir /opt/zimbra/backup/index

cp -r /opt/zimbra/store/* /opt/zimbra/backup/store/

cp –r /opt/zimbra/index/* /opt/zimbra/backup/index

7.1.2 备份mysql

su - zimbra

第12页

/opt/zimbra/mysql/bin/mysqldump -uroot -pyoyosys --socket=/opt/zimbra/db/

--all-databases > /opt/zimbra/backup/mysql_all_

7.1.3 备份ldap

su - zimbra

/opt/zimbra/libexec/zmslapcat /opt/zimbra/backup/

会在/opt/zimbra/backup/目录下生成 后面接日期的文件 ..$data

7.1.4 备份脚本

[zimbra@mail backup]$ more zimbra_

#!/bin/bash

#zimbra backup

date=`date '+%Y%m%d'`

#备份zimbra mailbox

mkdir -p /opt/zimbra/backup/$date/store

mkdir -p /opt/zimbra/backup/$date/index

cp -r /opt/zimbra/store/* /opt/zimbra/backup/$date/store

cp -r /opt/zimbra/index/* /opt/zimbra/backup/$date/index

#备份数据库

mysqldump -uroot -pyoyosys --socket=/opt/zimbra/db/

--all-databases > /opt/zimbra/backup/$date/mysql_all_

#备份ldap

/opt/zimbra/libexec/zmslapcat /opt/zimbra/backup/$date/ldap

rm -rf `date --date "7 days ago" +"%Y%m%d"`

exit

0

第13页

7.2 恢复

7.2.1 恢复 mailbox

su – zimbra

mkdir /opt/zimbra/backup/

mv /opt/zimbra/store/* /opt/zimbra/backup//

cp -r /opt/zimbra/backup/store/* /opt/zimbra/store

7.2.2 恢复 mysql

mysql -uroot -p$mysql_pswd < /opt/zimbra/backup/

7.2.3 恢复 ldap

mkdir /opt/zimbra/backup/

mv /opt/zimbra/data/ldap/hdb/db/* /opt/zimbra/backup//

/opt/zimbra/openldap/sbin/slapadd -q -b "" -F /opt/zimbra/data/ldap/config -cv

–l/opt/zimbra/backup/ ..$data

重启zimbra: zmcontrol restart

8 zimbra数据迁移

8.1 备份用户的LDAP

# /opt/zimbra/libexec/zmslapcat /opt/zimbra/data/ldap/mdb/db

备份完是.26和

8.2 删除本机原有的mdb

因为的大小是80G,数据迁移速度太慢,故先备份后迁移。

8.3 拷贝zimbra

通过scp命令将本地的zimbra目录全部拷贝到新安装的服务器上。

8.4 修改LDAP备份文件

在新服务器上编辑.26和更改原服务器地址为

新服务器地址。

第14页

8.5 还原LDAP

# /opt/zimbra/openldap/sbin/slapadd -q -n 0 -F /opt/zimbra/data/ldap/config

-cv -l .26

# /opt/zimbra/openldap/sbin/slapadd -q -b "" -F /opt/zimbra/data/ldap/config

-cv -l

8.6 更改zimbra权限

将新服务器上的/opt/zimbra目录全部更改为zimbra:zimbra

##chown –R zimbra:zimbra /opt/zimbra

8.7 检查/opt/zimbra的权限:

以用户root运行#/opt/zimbra/libexec/zmfixperms

8.8 完成

#su- zimbra

#zmcontrol start

8.9 测试

IP地址:7071测试

9 zimbra垃圾邮件过滤

提高本域权值,提高特定域名权值

本域加权值,避免本域错误过滤。特殊邮箱增加权值

/opt/zimbra/conf/

{ # a hash-type lookup table (associative array)

##如下面的格式

##首先增加本域。修改@放入白名单。避免错误过滤.

##例如'' => -9.0,

##其次,可把和公司相关的,一些域放入白名单。比如下头这些都是一些招

第15页

聘网站投递简历的邮箱。省得hr收不到简历。

##-10是信任,相反+10是阻挡。

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

'' => -9.0,

//重新加载对应服务

#zmamavisdctl reload

9.1 设置白名单,黑名单

如果在中,对某个邮箱加分。会碰到很特殊的情况,其他权

限弄的分很高。导致错误过滤。所以对于特殊邮件采用黑白名单机制。这种方式

完全跳过了过滤。所以只是针对单个邮箱设置即可。

第16页

9.2 增加黑白名单读取机制

vim /opt/zimbra/conf/

##增加以下两行

read_hash(%whitelist_sender,"/opt/zimbra/conf/whitelist");

read_hash(%blacklist_sender,"/opt/zimbra/conf/blacklist");

9.2.1 建立黑白名单文件

cd /opt/zimbra/conf

mkdir {blacklist,whitelist}

##格式形如下,一行一个邮箱名

***********

***********

3:两个文件付权限给zimbra账户

chown zimbra blacklist

chown zimbra whitelist

4:重启服务

zmamavisdctl reload

9.3 关键字过滤

因zimbra对于某些中文关键词的支持并不是很高。所以可以自定义一些权

cd /opt/zimbra/zimbramon/bin/spamassassin

##中创建自定义的邮件过滤规则集

cn_

第17页

##格式如下,设定自己觉的是垃圾邮件的词,。

header CN_SUBJECT_1 Subject =~ /优惠/

describe CN_SUBJECT_1 Subject contains "优惠"

score CN_SUBJECT_1 1.254

header CN_SUBJECT_5 Subject =~ /合作/

describe CN_SUBJECT_5 Subject contains "合作"

score CN_SUBJECT_5 0.233

header CN_SUBJECT_6 Subject =~ /发票/

describe CN_SUBJECT_6 Subject contains "发票"

score CN_SUBJECT_6 0.055

##重启服务

zmamavisdctl reload

9.4 使用rbl列表配置

垃圾邮件过滤比较好的方式是用公开的垃圾邮件过滤列表来实现。国内用一

下这个比较好 / 其中有4种列表:CBL,CDL,CBL+,CBL-

zimbra具体设置是在,管理全局设定--MTA设定--RBL列表中添加适合自己

的即可。

可以添加一些国外的列表。根据需求来。这样结合对本域的白名单设定,可

以去除90%以上的垃圾邮件。

使用rbl需要注意的是。会有部分错误过滤,可以根据情况调整。

10 zimbra主机安全策略

10.1 禁止root用户远程登录

##修改/etc/ssh/下的PermitRootLogin值,将yes改为no

第18页

10.2 设置口令最小长度

##在文件/etc/中设置 PASS_MIN_LEN 不小于标准值

10.3 设置密码复杂度策略

##改/etc/pam.d/system-auth文件, 在ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

选3种,追加到password requisite pam_后面,添加到配置文件中 注:

ucredit:大写字母个数;lcredit:小写字母个数;dcredit:数字个数;ocredit:特

殊字符个数

10.4 设置口令生存周期

##在文件/etc/中设置 PASS_MAX_DAYS 不大于标准值

10.5 设置命令行界面超时退出

##以root账户执行,vi /etc/profile,增加 export TMOUT=180(单位:秒,可根

据具体情况设定超时退出时间,要求不小于180秒),注销用户,再用该用户登录

激活该功能

10.6 防火墙端口策略

将zimbra所用端口开放,不用的端口关闭。Zimbra端口如下 ##

Web server HTTP port: 8080

Web server HTTPS port: 8443

Web server mode: https

IMAP server port: 7143

POP server port: 7110

POP server SSL port: 7995

POP3: 110

POP3 SSL: 995

IMAP: 143

IMAP SSL: 993

SMTP: 25

第19页

SMTP SSL: 465

SMTP TLS: 587

10.7 如有需要可以设置禁ping

##echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all 然后把此命令放到

/etc/中,每次启动自动执行

10.8 禁止提供finger服务

##使用finger命令可以显示本地或远程系统中目前已登录用户的详细信息,

黑客可以利用这些信息,增大侵入系统的机会。为了系统的安全,最好禁止提供

finger服务。如下:从/usr/bin下删除finger命令;

如果要保留finger服务,应将finger文件换名,或修改其权限,使得只允许

root用户执行finger命令

10.9 防止DoS攻击

##对系统所有的用户设置资源限制可以防止DoS类型攻击(denial of service

attacks)。如最大进程数,内存数量等。

编辑/etc/security/加如下几行:

* hard core 0

* hard rss 5000

* hard nproc 20

编辑/etc/pam.d/login文件检查这一行是否存在。session required

/lib/security/pam_ 上面的命令禁止调试文件,限制进程数为50,且限制

内存使用为5MB。

第20页