<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Extmail Blog</title>
<link rel="alternate" type="text/html" href="http://extmail.org/blog/" />
<modified>2005-11-18T13:08:05Z</modified>
<tagline>A high-performance flexible webmail</tagline>
<id>tag:extmail.org,2007:/blog//2</id>
<generator url="http://www.movabletype.org/" version="3.15">Movable Type</generator>
<copyright>Copyright (c) 2005, hzqbbc</copyright>
<entry>
<title>Extmail 在线书签使用的简易指南</title>
<link rel="alternate" type="text/html" href="http://extmail.org/blog/archives/extmail_online_bookmark_system_usages.html" />
<modified>2005-11-18T13:08:05Z</modified>
<issued>2005-11-18T10:27:32Z</issued>
<id>tag:extmail.org,2005:/blog//2.90</id>
<created>2005-11-18T10:27:32Z</created>
<summary type="text/plain">About BookMark Service 2005年11月18日，Extmail 网站试推出第一个在线服务：网络书签 该服务完全免费，注册后立刻可以使用。 其主要特点如下： 帐户完全免费，很适合自由软件爱好者 应用Ajax技术，自动化大量工作，使用更简便 方便收藏喜爱的链接到自己的书签里 随时随地可以访问，不受任何限制 可将本地IE/Mozilla/Netscape地址本导入本系统 在本站提供导出模块后，可轻松导出书签备份 注意： 目前导入功能还有待完善，对于中/日/韩等8bit文字还不能正确导入，将导致乱码，原因 是系统使用的是UTF8编码，迟些将增加一个字符集选项，在导入时选择合适的语言就可以 完美转换，敬请留意。 Step by step manual 以下是一个简易的入门教程，每一步都有演示，希望用户只用几分钟就学会使用。 注册 要使用书签服务，当然要拥有一个帐户了，请点击这里注册。看到注册界面后，按要求输入用户名，名字，密码和邮箱即可。 如果要注册的用户名没问题，注册成功后就可以登陆到系统，开始在线书签之旅了！:-) 添加书签 登陆进入书签系统后，点击“添加书签”按钮，将书签上图界面，要输入的信息主要包括了标题，地址，描述，标签，并需要选择隐私类型，是公开还是私有。 注意的是，书签系统使用Ajax技术，输入了地址后，能在服务器端自动取该链接的标题，因此建议先输入地址，然后写描述及标签，如果系统不能自动获得标题，再手工输入。这样能提高效率，见下图说明：...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>docs</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://extmail.org/blog/">
<![CDATA[<h4>About BookMark Service</h4>

<p>2005年11月18日，Extmail 网站试推出第一个在线服务：<b>网络书签</b> 该服务完全免费，注册后立刻可以使用。</p>

其主要特点如下：<br />
<ul>
<li>帐户完全免费，很适合自由软件爱好者</li>
<li>应用<b>Ajax</b>技术，自动化大量工作，使用更简便</li>
<li>方便收藏喜爱的链接到自己的书签里</li>
<li>随时随地可以访问，不受任何限制</li>
<li>可将本地IE/Mozilla/Netscape地址本导入本系统</li>
<li>在本站提供导出模块后，可轻松导出书签备份</li>
</ul>

<p><strong><font color="#FF0000">注意：</font></strong></p>


<pre>
目前导入功能还有待完善，对于中/日/韩等8bit文字还不能正确导入，将导致乱码，原因
是系统使用的是UTF8编码，迟些将增加一个字符集选项，在导入时选择合适的语言就可以
完美转换，敬请留意。
</pre>



<h4>Step by step manual</h4>

<p>以下是一个简易的入门教程，每一步都有演示，希望用户只用几分钟就学会使用。</p>

<p><b>注册</b><br />
<img src="/images/manual_bookmark/register.gif" border=1 /></p>

<p>要使用书签服务，当然要拥有一个帐户了，请点击<a href="/scuttle/register.php">这里注册</a>。看到注册界面后，按要求输入用户名，名字，密码和邮箱即可。</p>

<p>如果要注册的用户名没问题，注册成功后就可以登陆到系统，开始在线书签之旅了！:-)</p>

<h4>添加书签</h4>

<p><img src="/images/manual_bookmark/newbookmark_step1.gif" border=1 /></p>

<p>登陆进入书签系统后，点击“添加书签”按钮，将书签上图界面，要输入的信息主要包括了标题，地址，描述，标签，并需要选择隐私类型，是公开还是私有。</p>

<p>注意的是，书签系统使用Ajax技术，输入了地址后，能在服务器端自动取该链接的标题，因此建议先输入地址，然后写描述及标签，如果系统不能自动获得标题，再手工输入。这样能提高效率，见下图说明：</p>]]>
<![CDATA[<p><img src="/images/manual_bookmark/newbookmark_step2.gif" border=1 /></p>

<p>标签则是描述这个书签的关键字，用半角逗号分隔。例如“perl, extmail, opensource”。</p>

<p><img src="/images/manual_bookmark/newbookmark_step3.gif" border=1 /></p>

<p>这是添加书签的例子。</p>

<p><img src="/images/manual_bookmark/newbookmark_step4.gif" border=1 /></p>

<p>添加完毕后，系统将提示“书签保存成功”，并显示当前自己的书签列表。</p>

<h4>定义私人书签</h4>

<p><img src="/images/manual_bookmark/newbookmark_step5.gif" border=1 /></p>

<p>在隐私下拉菜单里，选私人，那么这条书签只有自己才能看，其他人是看不到的。</p>

<p><img src="/images/manual_bookmark/newbookmark_step6.gif" border=1 /></p>

<p>这是保存后的结果，私人书签将以粉红色显示。</p>

<h4>如何使用关注功能？</h4>

<p>所谓关注功能，是指将那些自己有兴趣看的用户纳入自己关注列表里，这样他们任何更新都能在关注的书签列表里看到。</p>

<p><img src="/images/manual_bookmark/newwatch_step1.gif" border=1 /></p>

<p>首先，必须进入要关注的用户书签首页，例如要关注用户chifeng，则访问地址<a href="http://extmail.org/scuttle/bookmark.php/chifeng">http://extmail.org/scuttle/bookmark.php/chifeng</a>，可以看到该用户的书签列表。</p>

<p><img src="/images/manual_bookmark/newwatch_step2.gif" border=1 /></p>

<p>其次，在该用户首页右边菜单处，看到有一个叫“添加到关注列表”的按钮，点击即可。</p>

<p><img src="/images/manual_bookmark/newwatch_step3.gif" border=1 /></p>

<p>点击之后，返回自己的首页，点击“我关注的书签”即可看到刚才添加到关注列表里用户的书签列表。</p>

<p><img src="/images/manual_bookmark/newwatch_step4.gif" border=1 /></p>

<p>在右边的菜单处，有一个关注列表（Watch List），上面罗列了自己关注的用户列表，点击可进去该用户的书签首页。</p>

<h4>如何使用快速添加书签功能？（Bookmarklet）</h4>

<p>按上述添加书签的步骤，依然显得有点烦琐，对于要快速添加到书签并返回正在阅读的页面的用户，需要一种快捷的手段。本节介绍如何实现快速添加方法。</p>

<p><img src="/images/manual_bookmark/fastadd_step1.gif" border=1 /></p>

<p>假设用户使用IE浏览器，点击“添加书签”，在中下部有一个栏目叫“书签快捷方式”，例如需要增加一个快捷方式（同一窗体打开），则鼠标右键点击“发布到Ext Bookmark”，并选中“添加到收藏夹 (F)...”。</p>

<p>IE将提示“您正在添加一个可能不安全的收藏页。是否继续？”，点“是”。</p>

<p><img src="/images/manual_bookmark/fastadd_step2.gif" border=1 /></p>

<p>在添加到收藏夹对话框中，将该链接放到“链接”目录。并点“确定”保存。</p>

<p><img src="/images/manual_bookmark/fastadd_step3.gif" border=1 /></p>

<p>在浏览器的导航条上空白处，点右键，确保“链接（L）”一栏打了勾，那么，浏览器将增加一条导航条，叫“链接”，其中就包含了刚才增加的“发布到Ext Bookmark”的链接。见上图。</p>

<p>这样快捷方式就增加完毕了。</p>

<p>当遇到想保存的页面，则点“发布到Ext Bookmark”快捷方式，将返回到“添加书签”页面，然后参考上述添加书签的步骤完成即可。最后添加完毕，进入书签列表后，点击刚添加书签的链接，将返回正在阅读的页面。</p>

<p>Enjoy your Ext bookmark! :-)  by Extmail Dev Team</p>]]>
</content>
</entry>
<entry>
<title>Perl 编码风格基本约定</title>
<link rel="alternate" type="text/html" href="http://extmail.org/blog/archives/extmail_perl_coding_style.html" />
<modified>2005-10-23T02:43:07Z</modified>
<issued>2005-10-23T02:21:39Z</issued>
<id>tag:extmail.org,2005:/blog//2.87</id>
<created>2005-10-23T02:21:39Z</created>
<summary type="text/plain"><![CDATA[对于要参加ExtMail开发计划的朋友，入门的第一步除了认识perl以外，还必须开始养成良好的编码习惯。 Perl的语法和c/php都有几分相似，因此也遵循了类似的习惯，本文所提到的perl编码风格与K&amp;R style较类似，但在少数地方，例如代码块、括号等地方有少许差异。...]]></summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>dev</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://extmail.org/blog/">
<![CDATA[<p>对于要参加ExtMail开发计划的朋友，入门的第一步除了认识perl以外，还必须开始养成良好的编码习惯。</p>

<p>Perl的语法和c/php都有几分相似，因此也遵循了类似的习惯，本文所提到的perl编码风格与K&amp;R style较类似，但在少数地方，例如代码块、括号等地方有少许差异。</p>]]>
<![CDATA[<p>参考资料：</p>

<ul>
<li><a href="http://perl.apache.org/docs/2.0/devel/core/coding_style.html">Mod_perl Coding Style Guide</a></li>
<li><a href="http://www.extremeperl.org/bk/coding-style">Extreme Perl - Coding style</a></li>
<li><a href="http://www.extropia.com/tutorials/web_design/coding_style.html">Web Design Coding Style</a></li>
<li><a href="http://www.greatcircle.com/lists/majordomo-workers/mhonarc/majordomo-workers.199611/msg00197.html">Majodomo mailinglist discuss#199611</a></li>
<li><a href="http://cdsware.cern.ch:8000/hacking/style.html"><span class="caps">PHP</span>/Perl/C/PY Coding Style</a></li>
</ul>]]>
</content>
</entry>
<entry>
<title>Extmail 0.1x 多国语言显示能力屏幕截图</title>
<link rel="alternate" type="text/html" href="http://extmail.org/blog/archives/extmail_snapshot_multi_charset_mail.html" />
<modified>2005-09-23T07:17:14Z</modified>
<issued>2005-09-23T06:50:11Z</issued>
<id>tag:extmail.org,2005:/blog//2.81</id>
<created>2005-09-23T06:50:11Z</created>
<summary type="text/plain">Extmail 自设计时就是为了适应复杂的邮件应用环境，多语言、多字符集支持就是一个基本的特征，也是和一般的webmail软件相比较为突出的优点。 以下是几张同屏显示多种语言/字符集邮件的截图，其中浏览器的语言为中文简体*（GB2312），而邮件的标题和正文则分别是繁体中文（Big5）、韩文（Kr）、日文（Shift_jis 或ISO2022_JP）等。 截图1：收件箱，各国邮件标题列表：...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>docs</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://extmail.org/blog/">
<![CDATA[<p>Extmail 自设计时就是为了适应复杂的邮件应用环境，多语言、多字符集支持就是一个基本的特征，也是和一般的webmail软件相比较为突出的优点。</p>

<p>以下是几张同屏显示多种语言/字符集邮件的截图，其中浏览器的语言为中文简体*（GB2312），而邮件的标题和正文则分别是繁体中文（Big5）、韩文（Kr）、日文（Shift_jis 或ISO2022_JP）等。</p>

<p><b>截图1：</b>收件箱，各国邮件标题列表：</p>

<p><img src="/images/extmail_i18n_inbox.gif" border=1></p>]]>
<![CDATA[<p>从上图可以看到，不同语言的mail中，来信人，标题等都能在同一屏幕（GB2312的字符集环境下）正确显示。这里包括了最常见的CJK（Chinese/Japanese/Korea）字符集。</p>

<p><b>截图2：</b>阅读日文邮件：</p>

<p><img src="/images/extmail_i18n_iso2022_jp.gif" border=1></p>

<p>这是一封日文邮件，邮件编码是iso-2022-jp，显示完全正确。而此时浏览器的当前语言仍然是GB2312（简体中文），无需进行任何切换。</p>

<p><b>截图3：</b>阅读繁体中文邮件：</p>

<p><img src="/images/extmail_i18n_big5.gif" border=1></p>

<p>这是一封繁体中文的邮件，发自Gmail，通过Extmail的转化，在简体中文环境下可以顺利的阅读，不需任何页面编码的切换。</p>

<p><b>截图4：</b>阅读韩文邮件：</p>

<p><img src="/images/extmail_i18n_euc_kr.gif" border=1></p>

<p>阅读韩文邮件同样也没有任何问题。</p>

<p>由于Extmail的设计能支持主流的各国语言，因此使用它能摆脱乱码的窘况，再也不需要为往来邮件的乱码烦恼了。</p>]]>
</content>
</entry>
<entry>
<title>Configuration Document - Extmail配置方法</title>
<link rel="alternate" type="text/html" href="http://extmail.org/blog/archives/extmail_configuration_document.html" />
<modified>2005-09-22T03:34:37Z</modified>
<issued>2005-09-20T21:02:50Z</issued>
<id>tag:extmail.org,2005:/blog//2.79</id>
<created>2005-09-20T21:02:50Z</created>
<summary type="text/plain">Extmail的配置较为简单，主要集中在源码包根目录中的webmail.cf文件。该文件主要包含了几个部分： 系统级配置参数 用户初始默认参数 MySQL认证参数 LDAP认证参数 以下将分别介绍配置参数的含义和方法： Basic|基本配置 以下是0.13版的基本配置部分内容，不同发行版之间的配置参数可能会发生变化，因此以对应版本中的ChangeLog和INSTALL等文件中的描述的为准。 注意：为方便对照，注释将直接写在下文的配置当中，所有配置参数的值不能以空格结尾，请务必留意！ # sys_config, the config file and webmail programe root # 该参数是所有参数之首，必须正确配置，它表明了webmail程序 # 所安放的绝对目录，请务必书写正确 SYS_CONFIG = /var/www/cgi-bin/extmail/ # sys_langdir, the i18n dir # 语言包的目录，必须为绝对目录，必须书写正确 SYS_LANGDIR = /var/www/cgi-bin/extmail/lang # sys_templdir, the template dir...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://extmail.org/blog/">
<![CDATA[<p>Extmail的配置较为简单，主要集中在源码包根目录中的webmail.cf文件。该文件主要包含了几个部分：</p>

<ul>
<li>系统级配置参数</li>
<li>用户初始默认参数</li>
<li>MySQL认证参数</li>
<li><span class="caps">LDAP</span>认证参数</li>
</ul>

<p>以下将分别介绍配置参数的含义和方法：</p>

<h4>Basic|基本配置</h4>
以下是0.13版的基本配置部分内容，不同发行版之间的配置参数可能会发生变化，因此以对应版本中的ChangeLog和INSTALL等文件中的描述的为准。

<p><b>注意：</b>为方便对照，注释将直接写在下文的配置当中，所有配置参数的值不能以空格结尾，请务必留意！</p>



<pre>
# sys_config, the config file and webmail programe root
# 该参数是所有参数之首，必须正确配置，它表明了webmail程序
# 所安放的绝对目录，请务必书写正确
SYS_CONFIG = /var/www/cgi-bin/extmail/

# sys_langdir, the i18n dir
# 语言包的目录，必须为绝对目录，必须书写正确
SYS_LANGDIR = /var/www/cgi-bin/extmail/lang

# sys_templdir, the template dir
# 界面模板的目录，也为绝对目录。
SYS_TEMPLDIR = /var/www/cgi-bin/extmail/html

# sys_warn, show system warning or not, 
# default to yes
# 是否显示系统的一些警告信息？默认为空，如不确定请
# 保留默认值0
SYS_SHOW_WARN = 0

# sys_permit_noquota, permit an account without qouta?
# 是否允许“无限额”配置？对于有些邮件系统配置中，没给用户
# 限制磁盘大小，如果该参数设置为1则允许这样的情况，如果设置0
# 则webmail将强加一个默认的限额（100MB）
SYS_PERMIT_NOQUOTA = 1

# sys_sess_dir, the session dir
# Session文件存放目录，推荐/tmp
SYS_SESS_DIR = /tmp/

# sys_sess_timeout, session timeout in seccond, 
# default 6 hours
# Session的会话超时时间，默认6小时（21600秒），必须以秒
# 为单位
SYS_SESS_TIMEOUT = 21600

# Webmail version, useful on outgoing email header
# X-Mailer邮件头的信息
SYS_WEBMAIL_VER = ExtMail 0.13fcgi/cgi

# sys auth type, mysql/ldap/flat
# 用户登陆认证类型，目前可选的是mysql或ldap，必须全部小写
SYS_AUTH_TYPE = mysql

# maildir_base, the base dir of user maildir, use 
# absolute path if not set.
# 邮件存储的基本目录，如果用户的maildir的home目录是相对
# 目录，那么home目录的绝对路径则由：
# SYS_MAILDIR_BASE + '/' + home 构成，详细请参阅所使用
# 邮件系统的文档，以及存储目录设计。
SYS_MAILDIR_BASE = /home/domains
</pre>]]>
<![CDATA[<h4>用户初始默认参数</h4>
以下参数将为用户登陆时设置默认的参数。



<pre>
# sys_user_psize, user default page_size
# 邮件列表中每页显示的邮件记录数，默认20
SYS_USER_PSIZE = 20

# sys_user_lang, user default language
# 默认的用户语言，默认是en_US，对于中国用户，可以将该值
# 设置为zh_CN，这样新用户第一次登陆就可以看到中文
SYS_USER_LANG = en_US

# sys_user_template, user default template
# 默认的界面模板，目前发行包里只带了一个模板，名称是standard
# 因此请保持该值不变。
SYS_USER_TEMPLATE = standard

# sys_user_charset, user default charset
# 默认的邮件发送字符集，该值必须与SYS_USER_LANG对应，如果
# SYS_USER_LANG设置为zh_CN，则该值应设置为gb2312
SYS_USER_CHARSET = iso-8859-1
</pre>



<h4>MySQL认证参数</h4>
如果SYS_AUTH_TYPE 设置为mysql时，则该部分的参数将起作用，否则将不起作用。



<pre>
# if mysql, all relate paramters should prefix as SYS_MYSQL
# mysql的用户名
SYS_MYSQL_USER = postfix
# mysql的密码
SYS_MYSQL_PASS = postfix
# mysql的数据库名
SYS_MYSQL_DB = postfix
# mysql的主机名
SYS_MYSQL_HOST = localhost
# table name
# 存储用户帐户信息的表名
SYS_MYSQL_TABLE = mailbox
# 存储用户名的字段名
SYS_MYSQL_ATTR_USERNAME = username
# 存储用户密码的字段名
SYS_MYSQL_ATTR_PASSWD = password
# 存储用户磁盘限额的字段名
SYS_MYSQL_ATTR_QUOTA = quota
# 用户maildir主目录（home）的字段名
SYS_MYSQL_ATTR_HOME = homedir
# 用户maildir的路径（绝对或相对）字段名
SYS_MYSQL_ATTR_MAILDIR = maildir
</pre>



<p><b>注意：</b><br />
<b>有关密码加密类型</b></br><br />
目前MySQL认证模块只支持crypt类型的加密，因此SHA, <span class="caps">SHA1</span>或者MD4/MD5等加密类型还不支持。请确认这一点。</p>

<p><b>有关maildir/home字段问题</b><br />
为了获得最大兼容性，Extmail被设计得可以兼容“相对路径”，“绝对路径”，以及只有“home”或只有“maildir”的情况。</p>

<h4><span class="caps">LDAP</span>认证配置</h4>
如果SYS_AUTH_TYPE 设置为ldap时，则该部分的参数将起作用，否则将不起作用。



<pre>
# if ldap, all relate paramters should prefix as SYS_LDAP
# LDAP的base dn，具体请查阅openLDAP的手册
SYS_LDAP_BASE = dc=extmail.org
# rootdn，用于程序bind操作，必须提供
SYS_LDAP_RDN = cn=Manager,dc=extmail.org
# rootpw，bind操作时的密码，必须提供
SYS_LDAP_PASS = secret
# ldif attributes
# 存储用户的属性名
SYS_LDAP_ATTR_USERNAME = mail
# 存储用户密码的属性名
SYS_LDAP_ATTR_PASSWD = userPassword
# 存储用户磁盘限额的属性名
SYS_LDAP_ATTR_QUOTA = mailQuota
# 存储用户home路径的属性名
SYS_LDAP_ATTR_HOME = homeDirectory
# 存储用户maildir路径的属性名
SYS_LDAP_ATTR_MAILDIR = mailMessageStore
</pre>



<p><b>注意：</b> 与mysql的注意基本一致。</p>

<h4>模板修改问题</h4>
用户可以自行修改模板，具体模板里的标签在这里做简要说明，详细的请参阅HTML::Ktemplate的帮助，地址是：<a href="http://search.cpan.org/~kasper/HTML-KTemplate-1.33/KTemplate.pm">http://search.cpan.org/~kasper/HTML-KTemplate-1.33/KTemplate.pm</a>

<p>1) IF <span class="caps">ELSE </span>判断块</p>


<pre>
&lt;!-- IF FOLDERS_LIST -- &gt;
hello world
&lt;!-- END FOLDERS_LIST -- &gt;
</pre>



<p>模板引擎解析上述代码时，将会判断内存中FOLDERS_LIST变量是否为真，如果为真，则输出“hello world”，否则不输出。如果将判断块结尾替换成:</p>


<pre>
&lt;!-- ELSE FOLDERS_LIST -- &gt;
Ooops !
&lt;!-- END FOLDERS_LIST -- &gt;
</pre>


<p>则在FOLDERS_LIST为假的时候输出Ooops!</p>

<p>2)LOOP 循环块<br />
在webmail模板里大量使用了循环，其基本结构是：</p>


<pre>
&lt;!-- BEGIN LOOP_A -- &gt;
This var = &lt;%VAR1%&gt;, That var = &lt;%VAR2%&gt;
&lt;!-- END LOOP_A -- &gt;
</pre>



<p>如果循环进行2次，每次VAR1和VAR2分别解析为对应的循环代号+1和+2的话，则结果为：</p>


<pre>
This var = 2, That var = 3
This var = 3, That var = 4
</pre>



<p>3)<% %>变量替换<br />
模板里最大量的还是具体的模板变量，其格式为<%变量名%>，其中全部大写的变量名是由应用程序中指定的数据内容，而全部小写的变量名大多数是语言包的内容。例如：<br />
<%USERNAME%> 将被替换成test@xxx.com的形式，而<%lang_charset%>则由语言包里的lang_charset 变量所指定的内容决定。</p>

<h4><span class="caps">FAQ </span>问题集锦</h4>]]>
</content>
</entry>
<entry>
<title>Installation Document - Extmail 安装文档</title>
<link rel="alternate" type="text/html" href="http://extmail.org/blog/archives/extmail_installation_document.html" />
<modified>2005-10-04T08:08:32Z</modified>
<issued>2005-09-19T17:57:43Z</issued>
<id>tag:extmail.org,2005:/blog//2.78</id>
<created>2005-09-19T17:57:43Z</created>
<summary type="text/plain">Pre-requisites 由于Extmail是纯perl语言编写的，而且Maildir标准只在Unix类平台上实现，因此不能在Win32平台下安装。 要安装并使用Extmail至少要满足如下的系统条件： 操作系统（OS) 至少可以可靠工作的Unix类系统，如Linux, BSD, Solaris等。建议使用Linux或FreeBSD系统，在这些系统下，OpenSource/GNU软件运行配置成功的机会将大大提高。 Email软件 一个支持Maildir/Maildir++的email系统，如Qmail或Postfix，或者Courier MTA，建议使用Postfix MTA。对于其他MTA，本文档暂不涉及，原则上支持Maildir的都将被支持。 Web 服务器 一个工作正常，并至少支持CGI的web服务器，例如apache, lighttpd, thttpd等。强烈建议使用Apache，对于超大流量超大规模的ISP或特殊用户，可以考虑lighttpd+FCGI的方式，但需要对Extmail进行小量的改写以适应FCGI。 Perl解析器 毫无疑问，没有了perl，就不能运行Extmail。为了减少麻烦和问题，请尽量使用最新的Perl解析器，建议使用Perl 5.8.0或以上版本。 必备Perl模块 DB_File(可到CPAN下载 Fcntl DBI Benchmark 通过如下命令校验这些模块在系统里是否有安装： # perl -e &apos;use DBI&apos; 如果DBI没有安装，则perl解析器将报错，可以到CPAN搜索下载。 如果不太熟悉命令行的，可以使用Extmail发行包里tools目录的pkg_stats.sh工具来检查模块的存在，检查结果将以彩色显示（但需要bash，如果在FreeBSD下，必须修改该脚本的第一行bash路径）。 首先进入发行包的根目录然后执行： . ./tools/pkg_stats.sh 注意： 两个“.”号之间有空格 如果模块都没有问题，程序将打印出每个模块的检查结果，如果有个别模块找不到，也将打印出出错信息并提供一个建议的下载URL，一个可能的结果如下： Benchmark found...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://extmail.org/blog/">
<![CDATA[<h4>Pre-requisites</h4>
由于Extmail是纯perl语言编写的，而且Maildir标准只在Unix类平台上实现，因此不能在Win32平台下安装。

要安装并使用Extmail至少要满足如下的系统条件：<br />
<ul>
<li><b>操作系统（OS)</b></br>
至少可以可靠工作的Unix类系统，如Linux, <span class="caps">BSD,</span> Solaris等。建议使用Linux或FreeBSD系统，在这些系统下，OpenSource/GNU软件运行配置成功的机会将大大提高。<br />
</li>

<li><b>Email软件</b></br>
一个支持Maildir/Maildir++的email系统，如Qmail或Postfix，或者Courier <span class="caps">MTA</span>，建议使用Postfix <span class="caps">MTA</span>。对于其他MTA，本文档暂不涉及，原则上支持Maildir的都将被支持。</li>

<li><b>Web 服务器</b></br>
一个工作正常，并至少支持CGI的web服务器，例如apache, lighttpd, thttpd等。强烈建议使用Apache，对于超大流量超大规模的ISP或特殊用户，可以考虑lighttpd+FCGI的方式，但需要对Extmail进行小量的改写以适应FCGI。<br />
</li>

<li><b>Perl解析器</b></br>
毫无疑问，没有了perl，就不能运行Extmail。为了减少麻烦和问题，请尽量使用最新的Perl解析器，建议使用Perl 5.8.0或以上版本。<br />
</li>

<h4>必备Perl模块</h4>
<ul>
<li>DB_File(可到<a href="http://search.cpan.org/search?query=db_file&amp;mode=module"><span class="caps">CPAN</span></a>下载</a></li>
<li>Fcntl</li>
<li><span class="caps">DBI</span></li>
<li>Benchmark</li>
</ul>

<p>通过如下命令校验这些模块在系统里是否有安装：</p>




<pre>
<code>
# perl -e 'use DBI'
</code>
</pre>




<p>如果DBI没有安装，则perl解析器将报错，可以到<a href="http://search.cpan.org/"><span class="caps">CPAN</span></a>搜索下载。</p>

<p>如果不太熟悉命令行的，可以使用Extmail发行包里tools目录的pkg_stats.sh工具来检查模块的存在，检查结果将以彩色显示（但需要bash，如果在FreeBSD下，必须修改该脚本的第一行bash路径）。</p>

<p>首先进入发行包的根目录然后执行：</p>


<pre>
. ./tools/pkg_stats.sh
</pre>



<p><b>注意：</b> 两个“.”号之间有空格</p>

<p>如果模块都没有问题，程序将打印出每个模块的检查结果，如果有个别模块找不到，也将打印出出错信息并提供一个建议的下载URL，一个可能的结果如下：</p>


<pre>
Benchmark found
Carp found
DB_File found
DBI found
Exporter found
Fcntl found
File::Spec found
  Net::LDAP not found!
   Try http://search.cpan.org/search?query=Net::LDAP&amp;mode=module
MIME::Base64 found
MIME::QuotedPrint found
POSIX found
</pre>



<h4>可选Perl模块</h4>
<ul>
<li>Net::LDAP</li>
<li>BerkeleyDB</li>
</ul>

<p>其中Net::LDAP模块在使用ldap认证时是必须安装的，同样也可以在CPAN下载。</p>]]>
<![CDATA[<h4>开始进行安装</h4>
下载最新的Extmail 源码包，目前最新版本是0.13，下载的地址：<br />
<a href="http://extmail.org/cgi-bin/download.cgi">http://extmail.org/cgi-bin/download.cgi</a>

<p>下载后，用tar命令解开源码包，并将解包后的extmail-0.13目录移动到安装的目录，例如/var/www/cgi-bin/下，</p>



<pre>
tar xfz extmail-0.13.tar.gz
mv extmail-0.13 /var/www/cgi-bin/
</pre>



<h2>Apache的配置</h2>
如果是新安装的Apache或Unix系统，则请增加一个虚拟主机配置，如果是在用系统，则请参考下面的虚拟主机配置进行更改。

<p>确保没有其他NameVirtual指令在httpd.conf中激活后，在httpd.conf中增加如下的内容：</p>



<pre>
NameVirtual *:80
&lt;VirtualHost *:80&gt;
ServerName mail.example.com
DocumentRoot /var/www/cgi-bin/extmail/html/
ScriptAlias /extmail/cgi/ /var/www/cgi-bin/extmail/cgi/
Alias /extmail/ /var/www/cgi-bin/extmail/html/
&lt;/VirtualHost&gt;
</pre>



<p>保存httpd.conf，接下来请确认下一步的配置方式：</p>

<h4>Apache + User/Group变更安装模式</h4>
该方法的最大特点是需要改变当前Apache的运行用户，即User/Group，使之和邮件存储的uid/gid一致，这样webmail才能对邮件有完全的读写权限。假设邮件的存取uid/gid是mail/mail，那么Apache运行时就以mail:mail来运行了。通过ps aux|grep httpd命令可以证实这一情况。



<pre>
# vi /etc/httpd/conf/httpd.conf
将User Group两条指令更改成当前邮件存储的uid/gid，例如：
User mail
Group mail
</pre>



<p>保存httpd.conf</p>

<p>这样做的主要优点是完全避免了setuid/gid的问题，但随之而来的是所有的web应用程序都将以mail/mail的uid/gid运行，包括创建的php的session文件等，某些特定软件将不能正常工作，而且也容易造成其他web程序的漏洞波及webmail甚至邮件数据本身！</p>

<h4>Apache + Suexec 模式</h4>
有关Suexec的介绍请看<a href="http://httpd.apache.org/docs/2.0/suexec.html">这里</a>，利用Suexec模块，可以只改变Extmail的运行Uid/gid，而不需要改变apache的主User/Group，这样的好处很明显，可以运行多种web程序，每个web程序都可以以自己的uid/gid运行，相互之间不会互相影响。

<p>要使用Suexec，首先要确定apache安装中是否编译了suexec的支持，最简单的办法是看看编译时的编译指令，或者Apache的libexec目录里是否有mod_suexec.so文件。</p>

<p>其次在上述的虚拟主机配置里，增加如下指令：</p>


<pre>
SuexecUserGroup vuser vgroup
</pre>



<p>保存httpd.conf后，重启Apache。</p>

<p>然后检查error_log或suexec的日志，如果出现Unknow Directive 或者Invalid command等错误，则说明suexec没有被安装正确或激活，请按Suexec的安装配置文档说明，重新安装并激活，本文将不再赘述。</p>

<p>建议使用发行版自带的Apache软件，通常都已激活suexec的支持，对于FreeBSD用户，可以安装/usr/ports/www/apache2，并在Makefile.modules里给默认的CATEGORY增加SUEXEC的标签即可，因为SUEXEC已定义好，但默认没被打开。</p>

<p>最后确认Suexec安装配置正确后，在上述的虚拟主机配置中增加如下信息：</p>


<pre>
SuexecUserGroup mail mail
</pre>



<p>然后将extmail中的cgi程序的拥有者和组（即uid/gid）改成mail/mail，即：</p>


<pre>
# chown -R mail.mail /var/www/cgi-bin/extmail/cgi/
</pre>



<p><b>Suexec 注意事项</b><br />
如果使用操作系统带的Apache，Suexec有一定的限制，例如在RedHat 发行版中，Suexec的MIN_UID=500, <span class="caps">MIN</span>_GID=100，如果邮件系统的邮件存储uid/gid 比这个限制小则suexec拒绝执行。可能出现如下的错误：</p>



<pre>
[2005-07-21 15:50:34]: cannot run as forbidden uid (47/abook.cgi)
</pre>



<p>要获得suexec的限制，请运行：</p>


<pre>
/usr/sbin/suexec -V
</pre>



<p>例如在CentOS 4.1上的结果：</p>


<pre>
 -D AP_DOC_ROOT=&quot;/var/www&quot;
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER=&quot;apache&quot;
 -D AP_LOG_EXEC=&quot;/var/log/httpd/suexec.log&quot;
 -D AP_SAFE_PATH=&quot;/usr/local/bin:/usr/bin:/bin&quot;
 -D AP_UID_MIN=500
 -D AP_USERDIR_SUFFIX=&quot;public_html&quot;
</pre>



<p>一般的问题，多数集中在权限问题，或者uid/gid不够大等问题上。</p>

<p>此外，如果是从源码包安装的Apache，<b>suexec默认没有激活</b>，因此如果需要打开请仔细阅读Apache的suexec安装/配置文档。</p>

<h4>配置Extmail</h4>
重新启动apache，接下进行Extmail的配置，如果没有正确配置extmail，Extmail将不能正确运行，甚至访问首页也不能成功。如下是没有正确配置webmail.cf文件导致的一个错误：



<pre>
Can't locate /en_US in @INC (@INC contains: /var/www/cgi-bin/extmail/
libs /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 
/usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/
5.8 /usr/local/lib/site_perl .) at /var/www/cgi-bin/extmail/libs/
Ext/Lang.pm line 46. 
</pre>



<p>详细请参阅<a href="/blog/archives/extmail_installation_document.html">Extmail配置</a></p>

<p>至于其他一些问题，请务必多查看Apache的error_log和suexec.log，日志文件的名称随安装配置的不同而略有不同，详细请检查Apache的安装/配置指令及httpd.conf</p>

<p><b>基于lighttpd的安装</b></p>]]>
</content>
</entry>
<entry>
<title>About Extmail - 关于Extmail的介绍</title>
<link rel="alternate" type="text/html" href="http://extmail.org/blog/archives/about_extmail.html" />
<modified>2005-09-22T03:35:30Z</modified>
<issued>2005-09-19T04:47:52Z</issued>
<id>tag:extmail.org,2005:/blog//2.77</id>
<created>2005-09-19T04:47:52Z</created>
<summary type="text/plain">什么是Extmail? Extmail 是一个以perl语言编写，面向大容量/ISP级应用，免费的高性能Webmail软件。它以GPL版权释出，设计初衷是希望设计一个适应当前高速发展的IT应用环境，满足用户多变的需求，能快速进行开发、改进和升级，适应能力强的webmail系统。 Extmail还被设计成一个能够替代目前国内外一些主流webmail软件的系统，例如：SqWebMail，OpenWebmail及squirrel，Igenus等。 Extmail设计背景 流行在互联网上的Unix平台webmail软件相当多，有的功能还非常强大，但在实际的应用中，尤其是在ISP、企业邮局、办公邮件平台等要求较高的环境下，这些webmail软件就暴露了很多不足，有的安装要求高、软件包依赖多，有的没实现模板化导致修改困难，有的速度慢，有的功能太简单，有的兼容性差，有的对邮件解析的能力弱，还有大量的并不支持多语言显示。 因此，为了适应严格的IT应用环境，我们迫切需要一个拥有实用的功能，便于修改，速度快而稳定，兼容性好，能适应多国邮件的webmail系统，Extmail就是在这样的需求下被设计的。 Why Perl? 为什么使用perl语言呢？因为这两年我做过多次测试，对于Maildir++的webmail系统而言，操作最多的I/O动作，以c速度最快，perl次之，而php慢了很多，有时耗费的时间是perl的10-100倍不等。 其次，php不同版本之间的api变动比较大，而perl变动小，perl5以后95%以上的核心api没有大的变化，程序兼容性强。php则有一些升级的问题。 最后，c的开发速度慢，不便修改，perl兼顾了php开发速度快和c性能较好的优点。所以我计划使用perl。 Webmail 特性介绍 目前Extmail 的版本还非常低，截止本文发布时，也只有0.12版，其主要特性有： 完整支持Maildir++标准 这里主要包括了maildirsize文件的维护，softquota和quota warning的支持，子目录的支持等。严格按照Maildir++和Maildir标准来实现。在google上能找到的完整的maildir++实现的webmamil只有SqWebmail。OpenWebmail的maildir支持非常有限，且不规范。 支持Index Cache速度极快 对于大型的email系统而言，邮件索引是使用率非常高，当需要支持大型邮箱时，没有索引将导致速度大幅度降低，为此extmail引入了Index Cache，将索引转化成cache，减少了大量的I/O和CPU消耗，并大幅度提高速度，对用户而言则完全透明。目前支持/部分支持Index Cache的有openWebmail和SqWebmail...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://extmail.org/blog/">
<![CDATA[<h4>什么是Extmail?</h4>
Extmail 是一个以perl语言编写，面向大容量/ISP级应用，免费的高性能Webmail软件。它以<b><span class="caps">GPL</span>版权</b>释出，设计初衷是希望设计一个适应当前高速发展的IT应用环境，满足用户多变的需求，能快速进行开发、改进和升级，适应能力强的webmail系统。

<p>Extmail还被设计成一个能够替代目前国内外一些主流webmail软件的系统，例如：SqWebMail，OpenWebmail及squirrel，Igenus等。</p>

<h4>Extmail设计背景</h4>
流行在互联网上的Unix平台webmail软件相当多，有的功能还非常强大，但在实际的应用中，尤其是在ISP、企业邮局、办公邮件平台等要求较高的环境下，这些webmail软件就暴露了很多不足，有的安装要求高、软件包依赖多，有的没实现模板化导致修改困难，有的速度慢，有的功能太简单，有的兼容性差，有的对邮件解析的能力弱，还有大量的并不支持多语言显示。

<p>因此，为了适应严格的IT应用环境，我们迫切需要一个拥有实用的功能，便于修改，速度快而稳定，兼容性好，能适应多国邮件的webmail系统，Extmail就是在这样的需求下被设计的。</p>

<h4>Why Perl?</h4>
为什么使用perl语言呢？因为这两年我做过多次测试，对于Maildir++的webmail系统而言，操作最多的I/O动作，以c速度最快，perl次之，而php慢了很多，有时耗费的时间是perl的10-100倍不等。

<p>其次，php不同版本之间的api变动比较大，而perl变动小，perl5以后95%以上的核心api没有大的变化，程序兼容性强。php则有一些升级的问题。</p>

<p>最后，c的开发速度慢，不便修改，perl兼顾了php开发速度快和c性能较好的优点。所以我计划使用perl。</p>

<h4>Webmail 特性介绍</h4>
目前Extmail 的版本还非常低，截止本文发布时，也只有0.12版，其主要特性有：

<ul>
<li><strong>完整支持Maildir++标准</strong></li>

<p>这里主要包括了maildirsize文件的维护，softquota和quota warning的支持，子目录的支持等。严格按照Maildir++和Maildir标准来实现。在google上能找到的完整的maildir++实现的webmamil只有SqWebmail。OpenWebmail的maildir支持非常有限，且不规范。</p>

<li><strong>支持Index Cache速度极快</strong></li>

对于大型的email系统而言，邮件索引是使用率非常高，当需要支持大型邮箱时，没有索引将导致速度大幅度降低，为此extmail引入了Index Cache，将索引转化成cache，减少了大量的I/O和CPU消耗，并大幅度提高速度，对用户而言则完全透明。目前支持/部分支持Index Cache的有openWebmail和SqWebmail<br />
</ul>]]>
<![CDATA[<ul>
<li><strong>支持巨型邮箱（超过1GB）海量文件</strong></li>

<p>通过优化的设计和小巧的代码，extmail能够较好的应付大型邮箱，例如拥有5000封到1万封的邮箱，I/O速度远超Igenus等php的webmail，也比OpenWebmail/maildir补丁快。仅次于SqWebMail，如需要提速则可用c写相关的XS扩展以达到和c一样的性能速度！</p>

<li><strong>支持大附件，可随意调整限制</strong></li>

<p>传统的Webmail系统附件限制较严格，通常不能上载太大，例如php的webmail如果上载太大将导致php执行超时，而extmail支持几乎无限的上载时间，经过良好设计的I/O库能以低开销，支持大型附件，及高速Base64编码。目前测试版本至少上载100MB-150MB附件没任何问题。</p>

<li><strong>速度快，安全可靠，无suid问题</strong></li>

<p>考虑到安全可靠的因素，extmail没有使用常规的suid设计来访问Maildir，也不需要象igenus那样必须改apache运行权限来实现直接访问Maildir，而是透过Suexec来实现安全的变换运行用户。这样的设计，能避免suid带来的安全问题和改apache运行id带来的隐患及麻烦。</p>

<p>同时，extmail充分考虑到性能的问题，通过大量优化的短小代码和减少不必要的perl模块，并尽量不依赖任何其他第三方perl模块，能实现相当高的web访问速度。如果觉得性能还不够，可以通过mod_perl/fastcgi来大幅度提高速度。</p>

<li><strong>模板化，MVC设计</strong></li>

<p>igenus和sqiurrel等不支持真正意义的模板技术，因此修改界面基本上都需要改动php代码，而openwebmail及sqwebmail的模板设计也不甚有效，例如sqwebmail就将大量html代码嵌入c中，修改起来也必不可少的需要改c代码，重新编译，相当麻烦。</p>

<p>extmail使用了轻量级的Template引擎，实现了内容和数据的完全分离，代码中不包含任何html信息，最大化的降低了修改界面的难度。而且支持cache技术，便于提速。</p>

<li><strong>多字符，多语言支持</strong></li>

<p>一直以来，webmail软件对非本土字符的支持就不太好，为了能在不改动设置的前提下顺利阅读简体中文，繁体中文，日文，韩文及其他国家的文字，extmail利用utf8转化及Iconv技术，提供了同屏显示多种文字的能力。真正的解决了邮件乱码的问题。</p>

<p>多语言能力主要体现在利用模板引擎，配上不同语言种类的界面。</p>

<li><strong>面向对象设计，体积小易修改</strong></li>

<p>从高性能角度出发，extmail屏弃了大而全的设计思路，采取了综合面向对象和过程设计优点的方法，尽量利用perl系统函数来实现功能，不依赖其他外挂模块或CPAN上的模块，这样整个代码的维护难度低，且体积小，修改容易。</p>

面向对象的设计利于开发人员理解整个webmail系统。<br />
</ul>

<p><H4>Extmail的系统架构</H4><br />
Extmail按分层的结构设计，最底层的是处理核心CORE modules，中间是应用模块App modules，上层是应用cgi/fcgi程序及模板显示等业务逻辑。</p>

<p>以下是系统结构图；</p>

<p><img src="http://www.hzqbbc.com/images/web/extmail_bigpicture.gif" width=497 height=519 /></p>

<p>详细的系统结构图介绍可以参考<a href="http://www.hzqbbc.com/blog/arch/2005/09/webmail_bigpict.html">Webmail Bigpicture - Webmail的结构图</a></p>

<h4>未来发展</h4>
从长远来看，Extmail开发队伍将紧紧以OpenSource为基础，并逐步充实Extmail，最终发展成为一个完整的邮件应用解决方案，将包括如下的主要备件：<br />
<ul>
<li><b>Webmail</b></br>
目前的extmail webmail日后将逐步完善成为一个既能单独工作又能与extmail协作工作的软件。<br />
</li>
<li><b>Spam Filter</b></br>
垃圾邮件，病毒邮件过滤器，这个部件将基于<a href="http://apf.org.cn"><span class="caps">APF</span></a>技术和软件，融合其他过滤软件的特色。<br />
</li>
<li><b>Statistic Monitor</b></br>
流量、日志分析软件，将以RRDTools、商业系统<acronym title="jagmail">DMS</acronym>的分析软件为基础，发展成为一个完善的监控软件。<br />
</li>
<li><b>Webman admin</b></br>
新开发一个能兼容mysql/ldap/flat text的帐户管理软件，并基于webmin开发相应的MTA管理软件。替换当前的postfixadmin及其他相关的web管理程序。<br />
</li>
<li><b>Passport Auth/Manager</b></br>
基于OpenID和其他单点登陆技术的单点登陆和认证系统，统一所有的web应用的登陆接口。<br />
</li>
<li><b>ExtMail Installer</b></br>
基于source或RPM/PKG的邮件解决方案安装包（软件），计划利用商业软件DMS的安装包为蓝本开发。<br />
</li>
<li>其他部件.....</li>
</ul>

<p>但发展的路子还是很漫长的，诚挚邀请国内外的朋友一同开发，最终完成这一计划。:-)</p>]]>
</content>
</entry>

</feed>