ORF反垃圾邮件系统

邮件服务器-邮件系统-邮件技术论坛(BBS)

 找回密码
 会员注册
查看: 7686|回复: 8
打印 上一主题 下一主题

[经验] 给kerio webmail加速!

[复制链接]
跳转到指定楼层
顶楼
发表于 2008-6-12 18:32:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为了感谢斑竹和各位的帮忙,我也分享一点小经验。

webmail的用户体验很重要,一个是速度,一个就是方便性,这次和大家分享一下关于webmail提速的经验。

webmail里包含两部分内容:
1、静态文件,html页面和图片,还有庞大的js。kerio web mail用了不少ajax技术,里面的js都是200多K一个的。针对这类文件,我们可以使用expire(cache)和压缩技术减少文件下载的数量和流量。

2、动态PHP程序。针对这类文件,我们可以使用xcache或者ea之类的php加速器加速,但是由于kerio使用的自己封装好的php解释器,上次尝试过修改php.ini的参数,但失败了,暂时先不搞这个。

这个方案如下:
1、用lighttpd的proxy模块转发web请求到kerio web server。
2、lighttpd开启expire和gzip功能,对静态文件进行压缩和cache。

步骤如下:
1、设置kerio web server的监听IP和端口为127.0.0.1:81
2、配置lighttpd,使用他的proxy模块转发web请求到127.0.0.1:81端口
3、配置lighttpd,启用expire和gzip模块。

使用1.5版的lighttpd,因为他有deflate模块,压缩文件更爽。
http://www.lighttpd.net/download/lighttpd-1.5.0-r1992.tar.gz

编译过程很简单,configure ; make ; make install即可。
下面给出我lighttpd.conf的配置:

  1. server.modules              = (
  2.                                 "mod_access",
  3.                                "mod_proxy_core",
  4.                                "mod_proxy_backend_http",
  5.                                "mod_expire",
  6.                                  "mod_deflate",
  7.                                 "mod_accesslog" )
  8. server.document-root        = "/opt/kerio/mailserver/webmail/"
  9. server.errorlog             = "/usr/local/lighttpd/logs/error.log"
  10. index-file.names            = ( "index.php", "index.html",
  11.                                 "index.htm", "default.htm" )
  12. mimetype.assign             = (
  13.   ".pdf"          =>      "application/pdf",
  14.   ".sig"          =>      "application/pgp-signature",
  15.   ".spl"          =>      "application/futuresplash",
  16.   ".class"        =>      "application/octet-stream",
  17.   ".ps"           =>      "application/postscript",
  18.   ".torrent"      =>      "application/x-bittorrent",
  19.   ".dvi"          =>      "application/x-dvi",
  20.   ".gz"           =>      "application/x-gzip",
  21.   ".pac"          =>      "application/x-ns-proxy-autoconfig",
  22.   ".swf"          =>      "application/x-shockwave-flash",
  23.   ".tar.gz"       =>      "application/x-tgz",
  24.   ".tgz"          =>      "application/x-tgz",
  25.   ".tar"          =>      "application/x-tar",
  26.   ".zip"          =>      "application/zip",
  27.   ".mp3"          =>      "audio/mpeg",
  28.   ".m3u"          =>      "audio/x-mpegurl",
  29.   ".wma"          =>      "audio/x-ms-wma",
  30.   ".wax"          =>      "audio/x-ms-wax",
  31.   ".ogg"          =>      "application/ogg",
  32.   ".wav"          =>      "audio/x-wav",
  33.   ".gif"          =>      "image/gif",
  34.   ".jpg"          =>      "image/jpeg",
  35.   ".jpeg"         =>      "image/jpeg",
  36.   ".png"          =>      "image/png",
  37.   ".xbm"          =>      "image/x-xbitmap",
  38.   ".xpm"          =>      "image/x-xpixmap",
  39.   ".xwd"          =>      "image/x-xwindowdump",
  40.   ".css"          =>      "text/css",
  41.   ".html"         =>      "text/html",
  42.   ".htm"          =>      "text/html",
  43.   ".js"           =>      "text/javascript",
  44.   ".asc"          =>      "text/plain",
  45.   ".c"            =>      "text/plain",
  46.   ".cpp"          =>      "text/plain",
  47.   ".log"          =>      "text/plain",
  48.   ".conf"         =>      "text/plain",
  49.   ".text"         =>      "text/plain",
  50.   ".txt"          =>      "text/plain",
  51.   ".dtd"          =>      "text/xml",
  52.   ".xml"          =>      "text/xml",
  53.   ".mpeg"         =>      "video/mpeg",
  54.   ".mpg"          =>      "video/mpeg",
  55.   ".mov"          =>      "video/quicktime",
  56.   ".qt"           =>      "video/quicktime",
  57.   ".avi"          =>      "video/x-msvideo",
  58.   ".asf"          =>      "video/x-ms-asf",
  59.   ".asx"          =>      "video/x-ms-asf",
  60.   ".wmv"          =>      "video/x-ms-wmv",
  61.   ".bz2"          =>      "application/x-bzip",
  62.   ".tbz"          =>      "application/x-bzip-compressed-tar",
  63.   ".tar.bz2"      =>      "application/x-bzip-compressed-tar"
  64. )
  65. server.tag                 = "Apache"
  66. accesslog.filename          = "/usr/local/lighttpd/logs/access.log"
  67. url.access-deny             = ( "~", ".inc" )
  68. static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
  69. server.pid-file            = "/usr/local/lighttpd/logs/lighttpd.pid"
  70. dir-listing.activate       = "disable"
  71. server.username            = "nobody"
  72. server.groupname           = "nobody"
  73. #压缩模块,压缩静态文件,减少文件下载流量
  74. deflate.enabled = "enable"
  75. deflate.compression-level = 5
  76. deflate.mem-level = 5     
  77. deflate.window-size = 15  
  78. deflate.allowed_encodings = ( "gzip", "deflate" )
  79. deflate.min-compress-size = 200
  80. deflate.work-block-size = 512
  81. deflate.mimetypes = ("text/html", "text/plain", "text/css", "image/gif", "image/jpeg", "text/javascript")

  82. #反向代理,转发数据到kerio web server
  83. $HTTP["host"] == "mail.xxx.com" {
  84. $HTTP["url"] =~ "^/" {
  85.     proxy-core.protocol = "http"
  86.     proxy-core.balancer = "static"
  87.     proxy-core.backends = (
  88.         "127.0.0.1:81"
  89.     )
  90.     proxy-core.max-pool-size = 16
  91. }

  92. #expire模块减少下载文件数量
  93. $HTTP["url"] =~ "\.(html|htm|jpg|gif|png|css|js)$" { expire.url = ( "" => "access 7 days" ) }
  94. }
复制代码
修改配置文件里的mail.xxx.com为你的域名。
启动lighttpd
lighttpd -f lighttpd.conf

然后就可以正常访问你的webmail了,看下,速度是不是快了N多。(第一次访问不会快,刷新一下页面就知道快很多了)
我机器没装PHOTOSHOP,我就不抓效果图上来了。

过段时间研究一下他的php看能否自己DIY一个,给动态程序加速,同时还可以提高安全性。

[ 本帖最后由 justkiding 于 2008-6-12 18:33 编辑 ]

评分

参与人数 1经验积分 +5 技术积分 +3 收起 理由
tdk + 5 + 3

查看全部评分

沙发
发表于 2008-6-12 23:31:12 | 只看该作者
需要这样的兄弟!
感谢分享经验!
众人拾柴火焰高!
藤椅
发表于 2008-6-13 13:18:20 | 只看该作者
按我的理解,是不是给配置一个proxy,给webmail,这样会因为缓存就快很多 ?
板凳
 楼主| 发表于 2008-6-14 11:14:27 | 只看该作者
1、缓存,开一个反向代理。
2、压缩,用web server的压缩模块压缩。
你用个http sniffer抓包就可以发现kms webmail占用下载时间多的地方了。

[ 本帖最后由 justkiding 于 2008-6-14 11:15 编辑 ]
报纸
发表于 2008-6-16 08:44:18 | 只看该作者
这是一个好方法,那些公共的邮件系统应该都这么样使用的。
不过存在一些不足,因为不可能像公共邮件系统那样投入,多了个proxy,就多了一些风险。
最好能在他的php上做些什么优化或简化。
地板
 楼主| 发表于 2008-6-16 14:40:05 | 只看该作者
kms的php我搞不定
我想了两个办法修改他的PHP参数
1、改他的php.ini,不行,kms启动的时候会重写php.ini,如果写入失败,则载入默认的php参数。
2、使用.htaccess,还是不行,不知道为什么……可能php模块不是在apache上面跑的导致的。
7
发表于 2008-6-16 14:56:46 | 只看该作者
我也曾经实验过,
感觉kerio自己的引擎加入了更多的参数处理 不是单纯的apache封装
8
 楼主| 发表于 2008-6-16 15:28:28 | 只看该作者
  1. './configure' '--with-tsrm-pthreads' '--enable-maintainer-zts' '--without-mysql' '--without-sqlite' '--without-pdo-sqlite' '--enable-embed=static' '--enable-mbstring=shared' '--with-libxml-dir=/Autobuild/Builds/KMS-5340-XSImpQS/autobuild/BUILD/libs/common/external' '--prefix=/Autobuild/Builds/KMS-5340-XSImpQS/autobuild/BUILD/libs/common/external'
复制代码


kerio
Kerio plugin utils :-)


kerio_utils
Kerio MailServer utilities :-)
9
 楼主| 发表于 2008-6-16 15:29:29 | 只看该作者
我看了他的phpinfo的输出,禁用了不少危险函数,加入了他自己的扩展。
所以自己编译一套apache php是无法跑起来的。
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

小黑屋|手机版|Archiver|邮件技术资讯网

GMT+8, 2024-5-19 20:20

Powered by Discuz! X3.2

© 2001-2016 Comsenz Inc.

本论坛为非盈利中立机构,所有言论属发表者个人意见,不代表本论坛立场。内容所涉及版权和法律相关事宜请参考各自所有者的条款。
如认定侵犯了您权利,请联系我们。本论坛原创内容请联系后再行转载并务必保留我站信息。此声明修改不另行通知,保留最终解释权。
*本论坛会员专属QQ群:邮件技术资讯网会员QQ群
*本论坛会员备用QQ群:邮件技术资讯网备用群

快速回复 返回顶部 返回列表