<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>傑傑劉的技术博客</title>
	<atom:link href="http://www.lj1984.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lj1984.com</link>
	<description>看事物看本质</description>
	<pubDate>Tue, 09 Sep 2008 03:39:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Mysql的架构体系</title>
		<link>http://www.lj1984.com/2008/09/09/mysql%e7%9a%84%e6%9e%b6%e6%9e%84%e4%bd%93%e7%b3%bb/</link>
		<comments>http://www.lj1984.com/2008/09/09/mysql%e7%9a%84%e6%9e%b6%e6%9e%84%e4%bd%93%e7%b3%bb/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 03:39:05 +0000</pubDate>
		<dc:creator>傑傑劉</dc:creator>
		
		<category><![CDATA[服务器]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lj1984.com/?p=15</guid>
		<description><![CDATA[今天在mysql的手册中翻到一张mysql的架构图，觉得挺好的，这里贴出来share一下，估计大多人都没有太怎么花时间研究手册而miss掉这张图，这张图可以非常直观的说明mysql的层次和架构体系

]]></description>
			<content:encoded><![CDATA[<p>今天在mysql的手册中翻到一张mysql的架构图，觉得挺好的，这里贴出来share一下，估计大多人都没有太怎么花时间研究手册而miss掉这张图，这张图可以非常直观的说明mysql的层次和架构体系</p>
<p><a href="http://www.lj1984.com/wp-content/uploads/2008/09/mysql.jpg"><img class="alignnone size-medium wp-image-16" title="mysql层次架构体系" src="http://www.lj1984.com/wp-content/uploads/2008/09/mysql-300x201.jpg" alt="" width="300" height="201" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lj1984.com/2008/09/09/mysql%e7%9a%84%e6%9e%b6%e6%9e%84%e4%bd%93%e7%b3%bb/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Xdebug 概览</title>
		<link>http://www.lj1984.com/2008/07/14/xdebug-%e6%a6%82%e8%a7%88/</link>
		<comments>http://www.lj1984.com/2008/07/14/xdebug-%e6%a6%82%e8%a7%88/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 06:10:21 +0000</pubDate>
		<dc:creator>傑傑劉</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://www.lj1984.com/?p=6</guid>
		<description><![CDATA[xdebug是一个开源的、用于调试PHP程序的调试工具（debug tools），它是以zend扩展的形式和PHP的内核集成在一起的，功能实现在相对底层，对外的接口是PHP函数和配置文件选项，安装xdebug后，还可利用dbgp和gdb协议来对php脚本进行调试，例如php eclipse就同时支持ZendDebug和Xdebug，xdebug与eclipse的通讯就是基于dbgp协议来完成的
以下是官方网站对xdebug的介绍

xdebug 扩展帮助你在调试PHP程序时提供大量有价值的调试信息，xdebug能提供包括以下调试信息：
在错误消息中提供堆栈及函数信息，例如：

显示用户自定义函数中全部的参数信息
函数名、源文件以及出错代码的所在行
同时也支持类方法的上述信息
内存分配
防止死循环

xdebug的安装
在xdebug的官方网站上提供和PHP版本对应的源代码和Windows下的dll文件下载
对于Linux用户，可下载源代码自行编译
对于Windows用户可下载dll文件直接使用
在Linux下编译xdebug的方法在源码包中的README文件有详细描述，按步骤编译和安装即可
另外，从源码包的结构来看，xdebug也可作为PECL模块的形式来安装
pecl主页：http://pecl.php.net/
pecl命令的详细使用：
$pecl help 或
$pecl help [command]进行查看，例如：$pecl help install
在Linux下：编译并在编译目录成功生成xdebug.so后，在Windows下：下载到与PHP版本对应的xdebug.dll后，修改php.ini文件，加入以下一行以启动xdebug：
在Linux下：zend_extension="/wherever/you/put/it/xdebug.so"
在Windows下：zend_extension_ts="c:/php/modules/xdebug.dll"
与安装PHP扩展不同，安装zend扩展需要明确指定.so(dll)文件的绝对路径，而安装PHP扩展，.so(dll)文件的路径是通过extension_dir来指定的
xdebug使用了Zend扩展的机制实现了debug功能，并且没有对其它zend扩展产生依赖，所以不安装ZendExtensionManager也可照常使用
安装完毕，使用php -m查看，如xdebug出现在了模块列表中，则表示安装成功
重启apache以便apache中的php_module及时载入新增加的xdebug模块
对于cli模式，对php.ini的修改是即时生效的
以下是xdebug的所有可配置选项，通过phpinfo()或者php -i查看当前xdebug配置
xdebug
xdebug support =&#62; enabled
Version =&#62; 2.0.0
Supported protocols =&#62; Revision
DBGp - Common DeBuGger Protocol =&#62; $Revision: 1.125 $
GDB - GNU Debugger protocol =&#62; $Revision: 1.87 $
PHP3 - PHP 3 Debugger protocol =&#62; $Revision: 1.22 $
Directive =&#62; Local Value =&#62; Master Value
xdebug.auto_trace =&#62; On =&#62; On
xdebug.collect_includes [...]]]></description>
			<content:encoded><![CDATA[<p>xdebug是一个开源的、用于调试PHP程序的调试工具（debug tools），它是以zend扩展的形式和PHP的内核集成在一起的，功能实现在相对底层，对外的接口是PHP函数和配置文件选项，安装xdebug后，还可利用dbgp和gdb协议来对php脚本进行调试，例如php eclipse就同时支持ZendDebug和Xdebug，xdebug与eclipse的通讯就是基于dbgp协议来完成的</p>
<p>以下是官方网站对xdebug的介绍</p>
<p><a href="http://www.lj1984.com/wp-content/uploads/2008/03/snap1.jpg"><img src="http://www.lj1984.com/wp-content/uploads/2008/03/snap1.jpg" border="0" alt="" /><span id="more-6"></span></a></p>
<p>xdebug 扩展帮助你在调试PHP程序时提供大量有价值的调试信息，xdebug能提供包括以下调试信息：</p>
<p>在错误消息中提供堆栈及函数信息，例如：</p>
<ul>
<li>显示用户自定义函数中全部的参数信息</li>
<li>函数名、源文件以及出错代码的所在行</li>
<li>同时也支持类方法的上述信息</li>
<li>内存分配</li>
<li>防止死循环</li>
</ul>
<p>xdebug的安装</p>
<p>在xdebug的官方网站上提供和PHP版本对应的源代码和Windows下的dll文件下载<br />
对于Linux用户，可下载源代码自行编译<br />
对于Windows用户可下载dll文件直接使用</p>
<p>在Linux下编译xdebug的方法在源码包中的README文件有详细描述，按步骤编译和安装即可<br />
另外，从源码包的结构来看，xdebug也可作为PECL模块的形式来安装<br />
pecl主页：<a href="http://pecl.php.net/">http://pecl.php.net/</a><br />
pecl命令的详细使用：<br />
$pecl help 或<br />
$pecl help [command]进行查看，例如：$pecl help install</p>
<p>在Linux下：编译并在编译目录成功生成xdebug.so后，在Windows下：下载到与PHP版本对应的xdebug.dll后，修改php.ini文件，加入以下一行以启动xdebug：</p>
<p>在Linux下：zend_extension="/wherever/you/put/it/xdebug.so"<br />
在Windows下：zend_extension_ts="c:/php/modules/xdebug.dll"</p>
<p>与安装PHP扩展不同，安装zend扩展需要明确指定.so(dll)文件的绝对路径，而安装PHP扩展，.so(dll)文件的路径是通过extension_dir来指定的</p>
<p>xdebug使用了Zend扩展的机制实现了debug功能，并且没有对其它zend扩展产生依赖，所以不安装ZendExtensionManager也可照常使用</p>
<p>安装完毕，使用php -m查看，如xdebug出现在了模块列表中，则表示安装成功</p>
<p>重启apache以便apache中的php_module及时载入新增加的xdebug模块<br />
对于cli模式，对php.ini的修改是即时生效的</p>
<p>以下是xdebug的所有可配置选项，通过phpinfo()或者php -i查看当前xdebug配置</p>
<p>xdebug</p>
<p>xdebug support =&gt; enabled<br />
Version =&gt; 2.0.0</p>
<p>Supported protocols =&gt; Revision<br />
DBGp - Common DeBuGger Protocol =&gt; $Revision: 1.125 $<br />
GDB - GNU Debugger protocol =&gt; $Revision: 1.87 $<br />
PHP3 - PHP 3 Debugger protocol =&gt; $Revision: 1.22 $</p>
<p>Directive =&gt; Local Value =&gt; Master Value<br />
xdebug.auto_trace =&gt; On =&gt; On<br />
xdebug.collect_includes =&gt; On =&gt; On<br />
xdebug.collect_params =&gt; 1 =&gt; 1<br />
xdebug.collect_return =&gt; On =&gt; On<br />
xdebug.collect_vars =&gt; Off =&gt; Off<br />
xdebug.default_enable =&gt; On =&gt; On<br />
xdebug.dump.COOKIE =&gt; no value =&gt; no value<br />
xdebug.dump.ENV =&gt; no value =&gt; no value<br />
xdebug.dump.FILES =&gt; no value =&gt; no value<br />
xdebug.dump.GET =&gt; no value =&gt; no value<br />
xdebug.dump.POST =&gt; no value =&gt; no value<br />
xdebug.dump.REQUEST =&gt; no value =&gt; no value<br />
xdebug.dump.SERVER =&gt; no value =&gt; no value<br />
xdebug.dump.SESSION =&gt; no value =&gt; no value<br />
xdebug.dump_globals =&gt; On =&gt; On<br />
xdebug.dump_once =&gt; On =&gt; On<br />
xdebug.dump_undefined =&gt; Off =&gt; Off<br />
xdebug.extended_info =&gt; On =&gt; On<br />
xdebug.idekey =&gt; Administrator =&gt; no value<br />
xdebug.manual_url =&gt; <a href="http://www.php.net/">http://www.php.net</a> =&gt; <a href="http://www.php.net/">http://www.php.net</a><br />
xdebug.max_nesting_level =&gt; 100 =&gt; 100<br />
xdebug.profiler_aggregate =&gt; Off =&gt; Off<br />
xdebug.profiler_append =&gt; Off =&gt; Off<br />
xdebug.profiler_enable =&gt; On =&gt; On<br />
xdebug.profiler_enable_trigger =&gt; Off =&gt; Off<br />
xdebug.profiler_output_dir =&gt; D:/php_xdebug_info =&gt; D:/php_xdebug_info<br />
xdebug.profiler_output_name =&gt; cachegrind.out.%p =&gt; cachegrind.out.%p<br />
xdebug.remote_autostart =&gt; Off =&gt; Off<br />
xdebug.remote_enable =&gt; Off =&gt; Off<br />
xdebug.remote_handler =&gt; dbgp =&gt; dbgp<br />
xdebug.remote_host =&gt; localhost =&gt; localhost<br />
xdebug.remote_log =&gt; no value =&gt; no value<br />
xdebug.remote_mode =&gt; req =&gt; req<br />
xdebug.remote_port =&gt; 9000 =&gt; 9000<br />
xdebug.show_exception_trace =&gt; Off =&gt; Off<br />
xdebug.show_local_vars =&gt; Off =&gt; Off<br />
xdebug.show_mem_delta =&gt; Off =&gt; Off<br />
xdebug.trace_format =&gt; 0 =&gt; 0<br />
xdebug.trace_options =&gt; 0 =&gt; 0<br />
xdebug.trace_output_dir =&gt; D:/php_xdebug_info =&gt; D:/php_xdebug_info<br />
xdebug.trace_output_name =&gt; trace.%c =&gt; trace.%c<br />
xdebug.var_display_max_children =&gt; 128 =&gt; 128<br />
xdebug.var_display_max_data =&gt; 512 =&gt; 512<br />
xdebug.var_display_max_depth =&gt; 3 =&gt; 3</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lj1984.com/2008/07/14/xdebug-%e6%a6%82%e8%a7%88/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP &#038; Zend Engine</title>
		<link>http://www.lj1984.com/2008/03/24/php-zend/</link>
		<comments>http://www.lj1984.com/2008/03/24/php-zend/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 08:18:56 +0000</pubDate>
		<dc:creator>傑傑劉</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[soap]]></category>

		<category><![CDATA[windows]]></category>

		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.lj1984.com/2008/03/24/php-zend/</guid>
		<description><![CDATA[Zend支持PHP开源社区的历史到如今已是由来已久了，Zend每年都会调配强大的技术团队及其它资源为PHP语言本身和PHP开源社区的培养和发展做出贡献
Zend和PHP的历史
在1997年，在Zeev Suraski and Andi Gutmans为PHP的核心解释器进行重写工作时，Zend开始为PHP贡献力量，而重写的核心解释器帮助PHP成为了一个全面发展的程序开发语言
Zend为PHP的贡献一直持续到了PHP4，在PHP4中开始出现了关于Zend Engine的介绍：一个高度优化的解释执行引擎，实现了类似debugger, performance booster等功能众多的自定义扩展采用动态装载的方式集成到PHP里来，在各种扩展功能遍布PHP语言的今天，当你在使用任何PHP语言核心之外的扩展功能时，你都会感激Zend Engine为PHP带来的可扩展性，除此之外，Zend Engine还为PHP提供了内存和资源管理及其它常规的功能
Zend再接再励为PHP贡献了Zend Engine2，Zend Engine2的首次出现是在PHP5中，它为PHP5带来了健壮和可扩展的对象模型以及更多效率上的改善
对PHP持续的支持
Zend领导和指导着PHP语言核心的发展方向及其它各个方面的改进，另外，在当前我们针对Zend Engine而展开的工作上，Zend为PHP注入了十分有意义的改变，例如在PHP5和未来PHP6中带来的几个改变：命名空间和性能的改善、国际化和unicode的全面支持等
另外一个关键领域是在PHP对外协同方面，Zend与各大数据库供应商保持沟通，以确保PHP的数据库功能保持一致，通过这项工作，我们使得大多数数据库开发商所有动作，例如Oracle近期开始支持PHP发起的连接常驻连接池，通过这个功能，使PHP在大型商务应用的开发方面更具可控性
Zend也为PHP注入了十分有价值的Web Service支持，专门定制的SOAP API得以在编译时选择安装，在新平台支持方面，Zend与IBM合作，使得PHP也可在运行在IBM的i5/OS上
同时，Zend也是PHP安全响应小组的支持者，PHP安全响应小组负责发现PHP在安全性方面的问题，同时也负责在收到PHP安全性方面的问题的报告后，快速和有效的解决这些问题
Zend也在进行着效率改善方面的工作，我们最近与微软合作使得PHP 5.2在Windows平台上的运行效率提高了200%到300%，第一次让PHP在Windows上的运行效率与Linux旗鼓相当
Zend将继续保持一贯的在PHP社区上的投资，并带领着核心技术团队继续改善PHP的机能，让PHP变得尽善尽美
原文地址： http://www.zend.com/en/community/php
同步发表在 http://www.yeeyan.com/articles/view/ljj8384/5922
]]></description>
			<content:encoded><![CDATA[<p id="article_body">Zend支持PHP开源社区的历史到如今已是由来已久了，Zend每年都会调配强大的技术团队及其它资源为PHP语言本身和PHP开源社区的培养和发展做出贡献</p>
<p>Zend和PHP的历史</p>
<p>在1997年，在Zeev Suraski and Andi Gutmans为PHP的核心解释器进行重写工作时，Zend开始为PHP贡献力量，而重写的核心解释器帮助PHP成为了一个全面发展的程序开发语言<span id="more-13"></span></p>
<p>Zend为PHP的贡献一直持续到了PHP4，在PHP4中开始出现了关于Zend Engine的介绍：一个高度优化的解释执行引擎，实现了类似debugger, performance booster等功能众多的自定义扩展采用动态装载的方式集成到PHP里来，在各种扩展功能遍布PHP语言的今天，当你在使用任何PHP语言核心之外的扩展功能时，你都会感激Zend Engine为PHP带来的可扩展性，除此之外，Zend Engine还为PHP提供了内存和资源管理及其它常规的功能</p>
<p>Zend再接再励为PHP贡献了Zend Engine2，Zend Engine2的首次出现是在PHP5中，它为PHP5带来了健壮和可扩展的对象模型以及更多效率上的改善</p>
<p>对PHP持续的支持</p>
<p>Zend领导和指导着PHP语言核心的发展方向及其它各个方面的改进，另外，在当前我们针对Zend Engine而展开的工作上，Zend为PHP注入了十分有意义的改变，例如在PHP5和未来PHP6中带来的几个改变：命名空间和性能的改善、国际化和unicode的全面支持等</p>
<p>另外一个关键领域是在PHP对外协同方面，Zend与各大数据库供应商保持沟通，以确保PHP的数据库功能保持一致，通过这项工作，我们使得大多数数据库开发商所有动作，例如Oracle近期开始支持PHP发起的连接常驻连接池，通过这个功能，使PHP在大型商务应用的开发方面更具可控性</p>
<p>Zend也为PHP注入了十分有价值的Web Service支持，专门定制的SOAP API得以在编译时选择安装，在新平台支持方面，Zend与IBM合作，使得PHP也可在运行在IBM的i5/OS上</p>
<p>同时，Zend也是PHP安全响应小组的支持者，PHP安全响应小组负责发现PHP在安全性方面的问题，同时也负责在收到PHP安全性方面的问题的报告后，快速和有效的解决这些问题</p>
<p>Zend也在进行着效率改善方面的工作，我们最近与微软合作使得PHP 5.2在Windows平台上的运行效率提高了200%到300%，第一次让PHP在Windows上的运行效率与Linux旗鼓相当</p>
<p>Zend将继续保持一贯的在PHP社区上的投资，并带领着核心技术团队继续改善PHP的机能，让PHP变得尽善尽美</p>
<p>原文地址： <a href="http://www.zend.com/en/community/php">http://www.zend.com/en/community/php</a><br />
同步发表在 <a href="http://www.yeeyan.com/articles/view/ljj8384/5922">http://www.yeeyan.com/articles/view/ljj8384/5922</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lj1984.com/2008/03/24/php-zend/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MDaemond邮件系统安装手记</title>
		<link>http://www.lj1984.com/2007/12/12/mdaemond-install/</link>
		<comments>http://www.lj1984.com/2007/12/12/mdaemond-install/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 00:05:31 +0000</pubDate>
		<dc:creator>傑傑劉</dc:creator>
		
		<category><![CDATA[服务器]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[MDaemon]]></category>

		<category><![CDATA[sendmail]]></category>

		<category><![CDATA[smtp]]></category>

		<category><![CDATA[邮件系统]]></category>

		<guid isPermaLink="false">http://www.lj1984.com/2007/12/12/mdaemond%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f%e5%ae%89%e8%a3%85%e6%89%8b%e8%ae%b0/</guid>
		<description><![CDATA[（原创文章，转载请说明出处：http://www.lj1984.com）
mdaemond是个不错的邮件系统，功能丰富、完整、强大，配置灵活，最新版本为9.62，从版本号来看，多年邮件系统的开发经验积累而成的产品想必不会差，但往往功能和易用性往往都是成反比的，即功能越多、越强大、越灵活，则易用性就越差，复杂的东东让人一点都不觉得友好，我也是花了不少时间才上手，和另一个 Windows下常常提起的imail相比，imail就显得太简单了，mdaemon的整个安装过程不算顺利，甚至可以说是非常不顺利，主要问题出在了由于我是远程安装，看不到某些界面，造成不少麻烦，还有就是McAfee和mdaemond的莫名冲突，让我很是抓狂了一阵……！@#￥%……&#38;×（）
虽然mdaemon的设置选项特别繁多，但看清楚邮件系统的几个最根本的东东后，你就不会被mdaemon弄得晕头转向了，这是我安装完 mdaemon后最大的感受，sendmail是邮件系统的鼻祖，其设计理念至今仍被各种邮件系统采用，按照sendmail的模块划分，一个邮件系统从逻辑上划分为如下模块：
首先是MTA，（mail transfer agent的缩写），从名字看就不难理解这个模块一定是用来发送邮件的，当然，他还负责接收邮件，负责与其他MTA或叫其它邮件系统进行邮件收发工作，例如反向域名解析、黑名单检测、垃圾邮件阻挡等功能都是在这一层来实现
再来就是MDA，（mail delivery agent的缩写），MTA负责将邮件接收到本地之后，交付给MDA，由MDA完成邮件分发到本地用户的工作，例如处理别名、群发通知等功能都是在这一层实现
最后是MUA，（mail user agent的缩写），MUA负责根据客户的请求返回存储在本地服务器的邮件给用户，实现用户对邮件的管理，webmail，pop，imap等功能都是在这一层实现
当然，以上的模块划分只是逻辑概念上的，根据实际应用需求的不同，具体实现可能是各有千秋，不过也由此可见，邮件从一个用户到另一个用户的过程实际是很复杂的，当然，不论实现是怎样的、有多复杂都不是问题，将系统各个功能模块拆分来理解，降低难度，各个击破就可以很快上手了
针对以上逻辑概念，MDaemon分别实现了如下子模块
SMTP Server，SMTP协议的实现（MTA、MDA），SMTP是服务器与服务器之间交换邮件的主要协议，但也不是邮件系统的全部，切记
POP Server，POP3协议的实现（MUA），和webmail一样，pop也是收发邮件的方式一种，安装了此模块你就可以使用foxmail, outlook等客户端通过pop3协议与服务器通讯，最终达到本地收发邮件的目的
IMAP Server（MUA），IMAP协议的实现，供webmail、pop3读取邮件服务器内容的接口系统，安装了此模块即可通过IMAP服务提供给pop3服务器或者任何一个webmail程序访问邮件，不仅仅限制于mdaemon自带的worldclient
Minger，一个本地服务器用户信息查询的服务，由finger协议演变而来，用于垃圾邮件防护及其它安全用途
LDAP Server，LDAP协议的实现，mdaemon支持使用LDAP来实现的帐户数据管理
AntiVirtus，防病毒组件，可以查杀邮件附件中含带的病毒，并在邮件中标注、隔离病毒，以保证用户安全
AntiSpam，防垃圾邮件组件，可以用于阻止垃圾邮件，例如贝叶斯算法自动学习，黑名单、白名单检测等一系列防垃圾邮件的功能，垃圾邮件泛滥的今天，此功能看来是越来越必不可少了，当然，这也是一把双刃剑，你可以指定一系列严格的规定来最大化防止垃圾邮件泛滥，当然，也可能因为这些严格的规定而阻扰了正常的邮件接收，到时boss看到一个重要客人的业务邮件给你维护的邮件系统标识为垃圾邮件，并在一个月后才发现这封邮件，那时，你就真是吃不了兜着走了
DomainPop，可以通过POP协议到指定的远程主机下载邮件后再分发给本地用户
MultiPop，和DomainPop类似，用户通过POP协议到指定的远程主机下载邮件，并保存在自己的邮箱中，如果你用过qq、126、163邮箱中收取其它邮箱邮件到本地这个免费服务你就不难理解这个模块的功能了
WebAdmin，远程配置服务器，如果你是postmaster管理员帐号登入，或者拥有weadmin权限的用户，可以通过 worldclient的入口进入webadmin，远程对邮件服务器，如邮件列表、用户等系统数据进行管理工作，如果你的邮件服务器有专人维护，但服务器又不只做邮件服务器单一用途，你就可以开放webadmin给邮件系统的维护人员通过web形式进行邮件系统维护就OK了，webadmin这时就派上用场了
WorldClient（MUA），Webmail，long long ago，人们收发邮件是用终端登录上服务器来看的，今天的linux依然保留这个功能，MTA接收了邮件后，放到你的home目录，你登录系统时就会有提示有未读邮件了，然后进化到了pop3，再然后就到了webmail，webmail就是查看邮件的一种方式，网页的而已，通过IMAP协议去读取用户邮箱的内容，在网页上显示，worldclient算是很有名气的客户端了，一看到mdaemon就想起worldclient，反之亦然，最难能可贵的是，worldclient还自带了HTTP服务器，紧密的集成为worldclient实现一些高级功能打下了很好的基础，例如状态监视等
整个安装过程是向导式的，安装完毕后会自动提示你配置主域，主域的概念就像apache, iis中的主站点一样，不过apache, iis是制定的web站点，用域名A记录解析，供用户使用浏览器找到主机并浏览主页，这里的主域是其他人通过其它邮件系统发送邮件到本地邮件系统时，通过解析域名的MX记录而到达主机，邮件服务器响应会根据请求的域名作出相应处理，当然，你可以在一台主机上配置多个域名，这样可以同时为多个站点提供邮件服务，除主域外，其它主机可以通过设置菜单中的次域子菜单进行设置， mdaemon的最高管理员（即postmaster）也会在主域配置时一并要求配置，很简单，输入用户名、密码即可，该用户同时也是postmaster用户的别名，拥有此帐号即拥有所有邮件系统的最高操作权限
安装完毕后，你可以立刻通过worldclient登录体验一下mdaemon，用http://localhost:3000即可访问，worldclient默认监听3000端口，如果你的主机没有提供其他web服务，你可以修改为80，这样不用加端口号即可访问
mdaemon默认是禁止smtp开放式转发的，除非你是经过认证的本地用户，关于SMTP交互和SMTP认证，有一个很好的办法可以让你身临其境，在windows下cmd界面，输入telnet 127.0.0.1 25，在看到提示后，先跟SMTP服务器说你好，输入EHLO xxx，xxx可以随便，正式的交互中，xxx往往是可反向域名解析的域名，在收到服务器回应后即可请求验证身份，输入AUTH LOGIN，回车，服务器响应后再输入经过base64编码后的用户名和密码，登录成功后，你就可以要求服务器转发你的邮件了，RCPT命令即指定收件人的地址，SMTP服务器在检测收件人地址不是本地帐户后，会帮你把邮件发出去的！
mdaemon的队列管理也是非常直观和智能化的，主操作界面的大窗口即可一目了然，有本地、远程、重试、坏队列几种之分，具体稍微看看就明白了
以上介绍的都是mdaemon的基础功能，还有很多高级功能这里就不一一说明了，不然mdaemon的说明书就白写了，最后，如果你是远程安装mdaemon，建议你不要用windows自带的远程桌面来操作远程机器，pcanywhere我没试过，我用的netop，一切OK，因为有些安装界面你用远程桌面是看不到的，会让你误以为是操作失败，实际却并不是，只是你看不到而已，另外，装mdaemon就别再装McAfee了，具体原因我没有追究下去，只是装了McAfee后smtp无法收发，具体网上已经说得很多了，可以搜索看看，最后，提醒一下，不管任何邮件系统，他们无非都是在做一件事情，就是在各种协议的基础上实现了某些功能而已，随着你对协议的了解加深，邮件系统的使用就只是熟练问题了，故，学习的过程一定是由协议到软件，而千万不要是软件到协议，mdaemon做为一款专业的邮件系统，对于企业级邮件应用和其它非运营商的使用者来说，都是不错的选择
]]></description>
			<content:encoded><![CDATA[<p>（原创文章，转载请说明出处：<a href="http://www.lj1984.com" title="傑傑劉的技术博客">http://www.lj1984.com</a>）</p>
<p>mdaemond是个不错的邮件系统，功能丰富、完整、强大，配置灵活，最新版本为9.62，从版本号来看，多年邮件系统的开发经验积累而成的产品想必不会差，但往往功能和易用性往往都是成反比的，即功能越多、越强大、越灵活，则易用性就越差，复杂的东东让人一点都不觉得友好，我也是花了不少时间才上手，和另一个 Windows下常常提起的imail相比，imail就显得太简单了，mdaemon的整个安装过程不算顺利，甚至可以说是非常不顺利，主要问题出在了由于我是远程安装，看不到某些界面，造成不少麻烦，还有就是McAfee和mdaemond的莫名冲突，让我很是抓狂了一阵……！@#￥%……&amp;×（）<span id="more-4"></span></p>
<p>虽然mdaemon的设置选项特别繁多，但看清楚邮件系统的几个最根本的东东后，你就不会被mdaemon弄得晕头转向了，这是我安装完 mdaemon后最大的感受，sendmail是邮件系统的鼻祖，其设计理念至今仍被各种邮件系统采用，按照sendmail的模块划分，一个邮件系统从逻辑上划分为如下模块：</p>
<p>首先是MTA，（mail transfer agent的缩写），从名字看就不难理解这个模块一定是用来发送邮件的，当然，他还负责接收邮件，负责与其他MTA或叫其它邮件系统进行邮件收发工作，例如反向域名解析、黑名单检测、垃圾邮件阻挡等功能都是在这一层来实现</p>
<p>再来就是MDA，（mail delivery agent的缩写），MTA负责将邮件接收到本地之后，交付给MDA，由MDA完成邮件分发到本地用户的工作，例如处理别名、群发通知等功能都是在这一层实现</p>
<p>最后是MUA，（mail user agent的缩写），MUA负责根据客户的请求返回存储在本地服务器的邮件给用户，实现用户对邮件的管理，webmail，pop，imap等功能都是在这一层实现</p>
<p>当然，以上的模块划分只是逻辑概念上的，根据实际应用需求的不同，具体实现可能是各有千秋，不过也由此可见，邮件从一个用户到另一个用户的过程实际是很复杂的，当然，不论实现是怎样的、有多复杂都不是问题，将系统各个功能模块拆分来理解，降低难度，各个击破就可以很快上手了</p>
<p>针对以上逻辑概念，MDaemon分别实现了如下子模块</p>
<p>SMTP Server，SMTP协议的实现（MTA、MDA），SMTP是服务器与服务器之间交换邮件的主要协议，但也不是邮件系统的全部，切记</p>
<p>POP Server，POP3协议的实现（MUA），和webmail一样，pop也是收发邮件的方式一种，安装了此模块你就可以使用foxmail, outlook等客户端通过pop3协议与服务器通讯，最终达到本地收发邮件的目的</p>
<p>IMAP Server（MUA），IMAP协议的实现，供webmail、pop3读取邮件服务器内容的接口系统，安装了此模块即可通过IMAP服务提供给pop3服务器或者任何一个webmail程序访问邮件，不仅仅限制于mdaemon自带的worldclient</p>
<p>Minger，一个本地服务器用户信息查询的服务，由finger协议演变而来，用于垃圾邮件防护及其它安全用途</p>
<p>LDAP Server，LDAP协议的实现，mdaemon支持使用LDAP来实现的帐户数据管理</p>
<p>AntiVirtus，防病毒组件，可以查杀邮件附件中含带的病毒，并在邮件中标注、隔离病毒，以保证用户安全</p>
<p>AntiSpam，防垃圾邮件组件，可以用于阻止垃圾邮件，例如贝叶斯算法自动学习，黑名单、白名单检测等一系列防垃圾邮件的功能，垃圾邮件泛滥的今天，此功能看来是越来越必不可少了，当然，这也是一把双刃剑，你可以指定一系列严格的规定来最大化防止垃圾邮件泛滥，当然，也可能因为这些严格的规定而阻扰了正常的邮件接收，到时boss看到一个重要客人的业务邮件给你维护的邮件系统标识为垃圾邮件，并在一个月后才发现这封邮件，那时，你就真是吃不了兜着走了</p>
<p>DomainPop，可以通过POP协议到指定的远程主机下载邮件后再分发给本地用户</p>
<p>MultiPop，和DomainPop类似，用户通过POP协议到指定的远程主机下载邮件，并保存在自己的邮箱中，如果你用过qq、126、163邮箱中收取其它邮箱邮件到本地这个免费服务你就不难理解这个模块的功能了</p>
<p>WebAdmin，远程配置服务器，如果你是postmaster管理员帐号登入，或者拥有weadmin权限的用户，可以通过 worldclient的入口进入webadmin，远程对邮件服务器，如邮件列表、用户等系统数据进行管理工作，如果你的邮件服务器有专人维护，但服务器又不只做邮件服务器单一用途，你就可以开放webadmin给邮件系统的维护人员通过web形式进行邮件系统维护就OK了，webadmin这时就派上用场了</p>
<p>WorldClient（MUA），Webmail，long long ago，人们收发邮件是用终端登录上服务器来看的，今天的linux依然保留这个功能，MTA接收了邮件后，放到你的home目录，你登录系统时就会有提示有未读邮件了，然后进化到了pop3，再然后就到了webmail，webmail就是查看邮件的一种方式，网页的而已，通过IMAP协议去读取用户邮箱的内容，在网页上显示，worldclient算是很有名气的客户端了，一看到mdaemon就想起worldclient，反之亦然，最难能可贵的是，worldclient还自带了HTTP服务器，紧密的集成为worldclient实现一些高级功能打下了很好的基础，例如状态监视等</p>
<p>整个安装过程是向导式的，安装完毕后会自动提示你配置主域，主域的概念就像apache, iis中的主站点一样，不过apache, iis是制定的web站点，用域名A记录解析，供用户使用浏览器找到主机并浏览主页，这里的主域是其他人通过其它邮件系统发送邮件到本地邮件系统时，通过解析域名的MX记录而到达主机，邮件服务器响应会根据请求的域名作出相应处理，当然，你可以在一台主机上配置多个域名，这样可以同时为多个站点提供邮件服务，除主域外，其它主机可以通过设置菜单中的次域子菜单进行设置， mdaemon的最高管理员（即postmaster）也会在主域配置时一并要求配置，很简单，输入用户名、密码即可，该用户同时也是postmaster用户的别名，拥有此帐号即拥有所有邮件系统的最高操作权限</p>
<p>安装完毕后，你可以立刻通过worldclient登录体验一下mdaemon，用http://localhost:3000即可访问，worldclient默认监听3000端口，如果你的主机没有提供其他web服务，你可以修改为80，这样不用加端口号即可访问</p>
<p>mdaemon默认是禁止smtp开放式转发的，除非你是经过认证的本地用户，关于SMTP交互和SMTP认证，有一个很好的办法可以让你身临其境，在windows下cmd界面，输入telnet 127.0.0.1 25，在看到提示后，先跟SMTP服务器说你好，输入EHLO xxx，xxx可以随便，正式的交互中，xxx往往是可反向域名解析的域名，在收到服务器回应后即可请求验证身份，输入AUTH LOGIN，回车，服务器响应后再输入经过base64编码后的用户名和密码，登录成功后，你就可以要求服务器转发你的邮件了，RCPT命令即指定收件人的地址，SMTP服务器在检测收件人地址不是本地帐户后，会帮你把邮件发出去的！</p>
<p>mdaemon的队列管理也是非常直观和智能化的，主操作界面的大窗口即可一目了然，有本地、远程、重试、坏队列几种之分，具体稍微看看就明白了</p>
<p>以上介绍的都是mdaemon的基础功能，还有很多高级功能这里就不一一说明了，不然mdaemon的说明书就白写了，最后，如果你是远程安装mdaemon，建议你不要用windows自带的远程桌面来操作远程机器，pcanywhere我没试过，我用的netop，一切OK，因为有些安装界面你用远程桌面是看不到的，会让你误以为是操作失败，实际却并不是，只是你看不到而已，另外，装mdaemon就别再装McAfee了，具体原因我没有追究下去，只是装了McAfee后smtp无法收发，具体网上已经说得很多了，可以搜索看看，最后，提醒一下，不管任何邮件系统，他们无非都是在做一件事情，就是在各种协议的基础上实现了某些功能而已，随着你对协议的了解加深，邮件系统的使用就只是熟练问题了，故，学习的过程一定是由协议到软件，而千万不要是软件到协议，mdaemon做为一款专业的邮件系统，对于企业级邮件应用和其它非运营商的使用者来说，都是不错的选择</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lj1984.com/2007/12/12/mdaemond-install/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
