« Installation Document - Extmail 安装文档 | Main | Extmail 0.1x 多国语言显示能力屏幕截图 »

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 September 20, 2005 01:02 PM

Comments

请问一下:在你的ExtMail-OSS-0。20的里谈到的
简化postfix配置:
postconf -n > /etc/postfix/main2.cf 是不是有误?要运行这个语句在哪个目录下?我把ExtMail-OSS解压在/usr/src/目录下,文件夹为ExtMail-OSS-0.22。
我的email:iminx@126.com

Posted by: iminx at October 20, 2005 03:44 AM

环境:extmail 0.23/extman 0.12
Can't call method "prepare" on an undefined value at /usr/local/www/cgi-bin/extman/libs/Ext/Mgr/MySQL.pm line 59.

Posted by: http://XXXX.com/extman/ 报错 at March 8, 2006 07:06 PM

Post a comment




Remember Me?