zimbra 原是商业产品,被vmware收购后开源,成为开源界重量级办公协作系统,市场上可以与之比肩的竞争对手主要是microsoft exchange和lotus notes 。


这里采用的是最新的8.0.2版本,支持主流的Linux发行版,见官网下载页面http://www.zimbra.com/downloads/os-downloads.html


平台ubuntu 12.04.1 x64,内网IP 192.168.122.133

下载地址 http://www.zimbra.com/downloads/os-downloads.html


zimbra搭建邮件系统首先需要DNS的MX解析,这让私网单机安装测试变得困难,因此我们需要搭建内网DNS来应对之。


bind太复杂,这里采用dnsmasq,涉及解析的全过程如下

本地解析 
# echo "127.0.0.1 localhost" >/etc/hosts    
# echo "192.168.122.133 mail.abc.com mail" >>/etc/hosts    
主机名    
# echo mail >/etc/hostname    
# hostname mail    
# hostname -f  
resolv解析    echo "search abc.com" >/etc/resolv.conf    
echo "nameserver 127.0.0.1" >>/etc/resolv.conf    
dnsmasq 解析    
# echo "no-resolv" >/etc/dnsmasq.conf    
# echo "server=8.8.8.8" >>/etc/dnsmasq.conf    
# echo "domain=abc.com" >>/etc/dnsmasq.conf    
# echo "mx-host=abc.com,mail.abc.com,5" >>/etc/dnsmasq.conf    
重启服务
# /etc/init.d/dnsmasq restart
查询MX记录   
 # dig abc.com MX

安装zimbra需要的软件包

# apt-get install sysstat sqlite3 libgmp3c2 libperl5.14


安装zimbra

进入解压后的目录,运行./install.sh  ,回答两回yes,几乎一路回车

接下来会有一个报错,如下:

DNS ERROR resolving MX for mail.abc.com
It is suggested that the domain name have an MX record configured in DNSChange domain name? [Yes]


这报错很正常,因为我们要给abc.com搭建邮箱,而不是mail.abc.com,回答yes,然后输入abc.com即可。


接下来出现如下对话,输入3,然后输入4,设置管理员密码

8) Default Class of Service Configuration:r) Start servers after configuration        yes s) Save config to filex) Expand menuq) Quitress unconfigured (**) items  (? - help) 3


接下输入a,完成几个对话即可实现安装

  8) Default Class of Service Configuration:  r) Start servers after configuration        yes  s) Save config to file  x) Expand menu  q) Quit*** CONFIGURATION COMPLETE - press 'a' to applySelect from menu, or press 'a' to apply config (? - help) a


批量创建用户脚本

创建新用户,预设密码123456,并强制第一次使用时修改密码
for user in `cat /tmp/userlist`;do   
  zmprov ca $user\@abc.com 123456   
  zmprov ma $user\@abc.com zimbraPasswordMustChange TRUE   
  echo user $user created
done


重置所有用户密码脚本

获取用户列表,有几个系统帐户需要排除,分别是
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
userlist=`zmprov -l gaa |egrep -v '(admin|ham|virus|spam|sync)'`
for user in $userlist;do   
zmprov sp $user newpassword
done


默认的webmail登陆地址是https://ip 和 http://ip:7072

默认的管理后台是https://ip:7071


在客户端通过web或foxmail、outlook、雷鸟等邮件客户端来收取邮件。


建议采用zimbra desktop,它与zimbra服务端配套,可以直接使用文档,日程、任务等功能。


tips


重置管理员密码

su - zimbrazmprov sp [email protected] 123456


查找mysql密码

su - zimbrazmlocalconfig -s | grep mysql | grep password

修改mysql root密码

zmmypasswd --root newrootpass


修改登录界面端口(默认443)

su zimbrazmprov ms mail.abc.com zimbraMailSSLPort 8443zmcontrol restart

修改管理界面端口(默认7071)

su zimbrazmprov ms mail.abc.com zimrbaAdminPort 8443zmcontrol restart


优化jvm (计算公式 Xmx=Xms=Xmn*5 )

# su zimbra
$ zmlocalconfig -e zimbra_zmjava_options="-Xmx2500m -Xms2500m -Xmn500m -Djava.net.preferIPv4Stack=true"
$ zmlocalconfig -e mailboxd_java_options="-server -Djava.awt.headless=true -Dsun.net.inetaddr.ttl=60 -XX:+UseConcMarkSweepGC -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SoftRefLRUPolicyMSPerMB=1 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:-OmitStackTraceInFastThrow -Djava.net.preferIPv4Stack=true"


系统所有ldap查询默认都要求STARTTLS加密,这对于公司内部邮件系统而言没有必要且消耗资源。

zmlocalconfig -e zimbra_require_interprocess_security=0


优化ldap线程 (官方推荐设置为 CPU内核数*4)

zmlocalconfig -e ldap_common_threads=32

修改各种限额

zmprov ms `zmhostname` zimbraFileUploadMaxSize 20480000 
上传文件限额
zmprov ms `zmhostname` zimbraMailContentMaxSize 20480000 
邮件最大
zmprov mcf zimbraMtaMaxMessageSize 20480000
postfix reload



zimbra 社区版没有备份功能,需要借助第三方开源工具zmbkpose,见附件,

官方下载地址https://github.com/bggo/Zmbkpose

apt-get install ldap-utils curl zip unzip


邮件系统还会有一些特殊需求,下面提供一些部分解决方案和相关的链接地址


1、限制某个用户只允许收到内部地址发来的邮件,无法收到外部邮件,

这对于内部用户组非常有用,防止垃圾邮件流入内部。


编辑/opt/zimbra/postfix/conf/maim.cf,添加三行(注意对比已有的配置文件)

第一行
smtpd_recipient_restrictions = check_recipient_access hash:/opt/zimbra/postfix/conf/protected_recipients, reject_non_fqdn_recipient, reject_unlisted_recipient, reject_non_fqdn_sender, reject_unknown_sender_domain, permit
第二行
smtpd_restriction_classes = permitted_senders_list
第三行
permitted_senders_list = check_sender_access hash:/opt/zimbra/postfix/conf/permitted_senders, reject


创建文件/opt/zimbra/postfix/conf/permitted_senders,内容如下

localhost               OK
abc.com                 OK


创建文件/opt/zimbra/postfix/conf/protected_recipients,内容如下

[email protected]            permitted_senders_list
[email protected]            permitted_senders_list
[email protected]            permitted_senders_list


运行命令

postmap /opt/zimbra/postfix/conf/permitted_senders
postmap /opt/zimbra/postfix/conf/protected_recipients
postfix reload
zmmtactl restart


现在从外部发送邮件到[email protected] 就会收到退信,而从内部发就没问题。


参考文档

http://wiki.zimbra.com/wiki/RestrictPostfixRecipients

http://www.postfix.org/RESTRICTION_CLASS_README.html#internal


2、限制某个用户只能发送到内部地址,邮件不能往外发


http://wiki.zimbra.com/wiki/Restrict_users_to_certain_domain