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
重置所有用户密码脚本
获取用户列表,有几个系统帐户需要排除,分别是 admin@abc.com spam.l7qgvr9lv@abc.com ham.du8kfr5j1@abc.com virus-quarantine.kl5h2qtc@abc.com galsync.rza2hhfn@abc.com galsync@abc.com 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 admin@abc.ocm 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,添加三行(注意对比已有的配置文件)
1
2
3
4
5
6
|
第一行
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,内容如下
1
2
|
localhost OK
abc.com OK
|
创建文件/opt/zimbra/postfix/conf/protected_recipients,内容如下
1
2
3
|
all@abc.com permitted_senders_list
sale@abc.com permitted_senders_list
tech@abc.com permitted_senders_list
|
运行命令
1
2
3
4
|
postmap
/opt/zimbra/postfix/conf/permitted_senders
postmap
/opt/zimbra/postfix/conf/protected_recipients
postfix reload
zmmtactl restart
|
现在从外部发送邮件到all@abc.com 就会收到退信,而从内部发就没问题。