Main | October 2005 »

September 22, 2005

Extmail 0.1x 多国语言显示能力屏幕截图

Extmail 自设计时就是为了适应复杂的邮件应用环境,多语言、多字符集支持就是一个基本的特征,也是和一般的webmail软件相比较为突出的优点。

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

截图1:收件箱,各国邮件标题列表:

从上图可以看到,不同语言的mail中,来信人,标题等都能在同一屏幕(GB2312的字符集环境下)正确显示。这里包括了最常见的CJK(Chinese/Japanese/Korea)字符集。

截图2:阅读日文邮件:

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

截图3:阅读繁体中文邮件:

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

截图4:阅读韩文邮件:

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

由于Extmail的设计能支持主流的各国语言,因此使用它能摆脱乱码的窘况,再也不需要为往来邮件的乱码烦恼了。

Posted by hzqbbc at 10:50 PM | Comments (2)

September 20, 2005

Configuration Document - Extmail配置方法

Extmail的配置较为简单,主要集中在源码包根目录中的webmail.cf文件。该文件主要包含了几个部分:

以下将分别介绍配置参数的含义和方法:

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
# 界面模板的目录,也为绝对目录。
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

用户初始默认参数

以下参数将为用户登陆时设置默认的参数。
# 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

MySQL认证参数

如果SYS_AUTH_TYPE 设置为mysql时,则该部分的参数将起作用,否则将不起作用。
# 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

注意:
有关密码加密类型

目前MySQL认证模块只支持crypt类型的加密,因此SHA, SHA1或者MD4/MD5等加密类型还不支持。请确认这一点。

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

LDAP认证配置

如果SYS_AUTH_TYPE 设置为ldap时,则该部分的参数将起作用,否则将不起作用。
# 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

注意: 与mysql的注意基本一致。

模板修改问题

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

1) IF ELSE 判断块

<!-- IF FOLDERS_LIST -- >
hello world
<!-- END FOLDERS_LIST -- >

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

<!-- ELSE FOLDERS_LIST -- >
Ooops !
<!-- END FOLDERS_LIST -- >

则在FOLDERS_LIST为假的时候输出Ooops!

2)LOOP 循环块
在webmail模板里大量使用了循环,其基本结构是:

<!-- BEGIN LOOP_A -- >
This var = <%VAR1%>, That var = <%VAR2%>
<!-- END LOOP_A -- >

如果循环进行2次,每次VAR1和VAR2分别解析为对应的循环代号+1和+2的话,则结果为:

This var = 2, That var = 3
This var = 3, That var = 4

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

FAQ 问题集锦

Posted by hzqbbc at 01:02 PM | Comments (2)

September 19, 2005

Installation Document - Extmail 安装文档

Pre-requisites

由于Extmail是纯perl语言编写的,而且Maildir标准只在Unix类平台上实现,因此不能在Win32平台下安装。 要安装并使用Extmail至少要满足如下的系统条件: