Open WebMail 是一个基于Neomail 1.14(作者:Ernie Miller)的webmail系统,它的目标是在内存中非常有效的处理非常大的邮件文件夹,它也提供了许多特性来帮助用户从Microsoft Outlook方便平滑的切换
特性
---------
Open WebMail有如下增强特性:
1. 快速文件夹访问
2. efficient messages movement
3. smaller memory footprint
4. 方便的文件夹和信息操作
5. 完美的文件锁定
6. 支持remote SMTP relaying
7. 虚拟主机
8. 用户别名
9. 用户自定制功能
10. 各种认证模块
11. 支持pam认证
12. 全文检索
13. 强大的处理MIME信息能力
14. 支持垃圾箱
15. 拼写校验支持
16. 支持POP3
17. 支持邮件过滤
18. 邮件统计预览
19. 支持读取邮件收条
20. 支持GB/BIG5码切换(仅对中文环境)
要求
-----------
支持cgi的Apache Web服务器和Perl 5.005以上版本
CGI.pm-2.74.tar.gz (必须)
MIME-Base64-2.12.tar.gz (必须)
libnet-1.0901.tar.gz (必须)
Authen-PAM-0.12.tar.gz (可选)
ispell-3.1.20.tar.gz (可选)
hc-30.tar.gz (可选)
安装必须的包
-------------------------
首先,必须从http://turtle.ee.ncku.edu.tw/openwebmail/download/packages/下载需要的包,并把它们复知道/tmp目录
对于CGI.pm 按照下面的步骤安装:
cd /tmp
tar -zxvf CGI.pm-2.74.tar.gz
cd CGI.pm-2.74
perl Makefile.PL
make
make install
注:有报道说如果使用老版本的CGI模块Open Webmail在受到攻击的时候会挂起。因此我们建议你使用2.74以上版本的CGI模块。使用下面的命令来检查你的模块的版本:
perldoc -m CGI.pm | grep CGI::VERSION
MIME-Base64 的安装:
cd /tmp
tar -zxvf MIME-Base64-2.12.tar.gz
cd MIME-Base64-2.12
perl Makefile.PL
make
make install
注:尽管你可能已经安装过MIME-Base64的perl模块,我们还是建议你从源代码方式安装MIME-Base64。这样将打开XS支持,改功能将很大的提高MIME附件的编码解码速度。
安装libnet:
cd /tmp
tar -zxvf libnet-1.0901.tar.gz
cd libnet-1.0901
perl Makefile.PL (ans 'no' if asked to update configuration)
make
make install
安装 OPENWEBMAIL
-------------------
可以在http://turtle.ee.ncku.edu.tw/openwebmail/找到OpenWebMail的最新版本。如果你使用FreeBSD并且安装了它的pkg的Apache只需要:
1. cd /usr/local/www
tar -zxvBpf openwebmail-X.XX.tgz
2. 修改/usr/local/www/cgi-bin/openwebmail/etc/openwebmail.conf.
3.如果是FreeBSD 4.2以上版本
a. chmod 4555 /usr/bin/suidperl
b. 将下列文件中的#!/usr/bin/perl 改为#!/usr/bin/suidperl
openwebmail.pl, openwebmail-main.pl,
openwebmail-read.pl, openwebmail-viewatt.pl,
openwebmail-send.pl, openwebmail-spell.pl,
openwebmail-prefs.pl, openwebmail-folder.pl and checkmail.pl
如果使用带有Apache的RedHat 6.2/CLE 0.9p1或者其他Linux
(by clarinet.AT.totoro.cs.nthu.edu.tw)
1. cd /home/httpd
tar -zxvBpf openwebmail-X.XX.tgz
mv data/openwebmail html/
rmdir data
2. cd /home/httpd/cgi-bin/openwebmail
修改auth_unix.pl
a. 设置变量 $unix_passwdfile为'/etc/shadow'
b 设置变量 $unix_passwdmkdb为 'none'
3. 修改/home/httpd/cgi-bin/openwebmail/etc/openwebmail.conf
a. 设置mailspooldir 为 '/var/spool/mail'
b. 设置 ow_htmldir 为 '/home/httpd/html/openwebmail'
设置ow_cgidir 为'/home/httpd/cgi-bin/openwebmail'
c. 设置spellcheck为'/usr/bin/ispell'
d.将default_signature修改为你自己的默认签名
e. 改变其他任何你想改变的设置
4. 向/etc/logrotate.d/syslog中追加如下几行以开启openwebmail.log的日志轮询功能:
/var/log/openwebmail.log {
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
注:如果使用RedHat7.1,请用/var/www 来替换/home/httpd,如果在RedHat上安装的话强烈建议阅读doc/RedHat-README.txt(作者:elitric.AT.yahoo.com) 。
注:Thomas Chung (tchung.AT.pasadena.oao.com)维护一个tar打包的版本,该版本有安装教本可以支持在 RedHat7.x下自动安装。可以从一下地址获得http://openwebmail.org/openwebmail/download/redhat-7x-installer/.
如果你在其他带Apache的UNIX上使用的话也是没有问题的。找到放置你的data和cgi-bin的目录,例如:/usr/local/apache/share然后:
1. cd /usr/local/apache/share
tar -zxvBpf openwebmail-X.XX.tgz
mv data/openwebmail htdocs/
rmdir data
2. 修改/usr/local/apache/share/cgi-bin/openwebmail/etc/openwebmail.conf
a. 设置mailspooldir 为你系统的存放邮件的spool目录
b. 设置ow_htmldir为 '/usr/local/apache/share/htdocs'
设置ow_cgidir为 '/usr/local/apache/share/cgi-bin'
c. 设置spellcheck 为'/usr/local/bin/ispell'
d. 修改default_signature 为你自己喜欢的签名
e. 其他你想修改的地方
3. cd /usr/local/apache/share/cgi-bin/openwebmail
修改#!/usr/bin/perl为你系统suidperl的路径
openwebmail.pl, openwebmail-main.pl,
openwebmail-read.pl, openwebmail-viewatt.pl,
openwebmail-send.pl, openwebmail-spell.pl,
openwebmail-prefs.pl, openwebmail-folder.pl and checkmail.pl
修改auth_unix.pl
a. 设置变量 $unix_passwdfile 为'/etc/shadow'
b 设置变量 $unix_passwdmkdb to 'none'
检查你的DBM系统
---------------------
unix系统之间的DBM系统是不同的,所以必须针对不同的系统来改变在openwebmail.conf文件里的dbm_ext和dbmopen_ext 选项来使得Openwebmail在你的系统上正常工作(例如: Colbat,Solaris,Linux/Slackware)
通过下面两种方法找出你的正确设置:
perl cgi-bin/openwebmail/uty/dbmtest.pl [enter]
得到输出:
dbm_ext db
dbmopen_ext none
然后把这两行放到openwebmail.conf文件中
配置OPENWEBMAIL使用其他的SMTP服务器
----------------------------------------
要配置openwebmail 来使用其他的SMTP服务器来发送电子邮件,必须在openwebmail.conf设置’smtpserver’参数。只要把默认的参数'127.0.0.1' SMTP服务器的域名或者IP地址就可以了。
请确认你配置的SMTP服务器允许你的OpenWebMail主机转发邮件。
邮件过滤
--------------
邮件过滤检查收件箱中的邮件是否符合用户定义的过滤规则,如果匹配则移动/复制这些邮件到目标文件夹。如果移动这些文件到垃圾箱,意味着从文件夹中删除邮件,如果在一个过滤规则中定义目标文件夹为收件夹,那么这些规则将被忽略,任何匹配规则的邮件将被保留在收件夹二其他的规则将被忽略。
命令工具 checkmail.pl
-------------------------
因为邮件过滤只在打开WebMail的时候才生效,这就以为着邮件一直保留在收件夹中知道用户打开webmail。所以'finger' 或者其他的邮件状态检查工具可能会给我们错误信息,因为他们不知道过滤的事情。
有一个命令行工具可以用来替换状态检查命令,它首先对邮件进行过滤然后报告邮件的状态。一些fingerd允许用户通过-p参数定义finger程序的名字(例如: FreeBSD的fingerd). To通过改变/etc/inetd.conf文件中的fingerd的参数,用户可以获得他们在远程服务器上的邮件状态。checkmail.pl 也可以用crontab来预取pop3邮件或者对用户的文件夹重建索引:
59 23 * * * /usr/local/www/cgi-bin/openwebmail/checkmail.pl -a -p -i -q
上面的crontab将预取pop3邮件,并且在每天的23:59分自动处理邮件过滤和文件夹索引。
全局地址簿和全局过滤规则
---------------------------------
目前版本的OpenWebmail对全局地址簿支持非常有限。管理员自己必须复制地址簿文件/过滤为定义的文件
注:可以创建一个维护全局地址簿和过滤规则的用户,如:'global'
ln -s your_global_addressbook ~global/mail/.address.book
ln -s your_global_filterbook ~global/mail/.filter.book
请确认全局文件可以被用户'global'写以及所有用户可读。
拼写检查支持
-------------------
要在 openwebmail中支持拼写检查,必须安装ispell或者aspell包。
1. 从系列地址下载ispell-3.1.20.tar.gz :
http://www.cs.ucla.edu/ficus-members/geoff/ispell.html
或者你可以安装FreeBSD或Linux的发行包。
注:如果从源代码包编译ispell,需要使用更好的字典包来加强拼写检查:
a. 从http://turtle.ee.ncku.edu.tw/ope ... ad/contrib/words.gz下载
b. gzip -d words.gz
c. mkdir /usr/dict; cp words /usr/dict/words
d.阅读README来安装
2.检查openwebmail.conf以确认spellcheck指向了正确的ispell执行文件路径
3. 如果对ispell/aspell安装了多个字典,可以把它们放到openwebmail.conf 中的spellcheck_dictionaries 选项后面,这些字典的名字应该用逗号分隔。
注:检查系统的字典是否安装成功可以用下面的命令测试:
ispell -d dictionaryname -a
4. 如果使用的字典用的语言不是英语,必须在定义openwebmail-spell.pl 中的%dictionary_letters为那个字典定义作定义
自动回复支持
-----------------
在OpenWebMail中的自动回复功能用的是vacation特性。但vacation功能并不是在所有的UNIX上都有的,所以openwebmail发布了一个perl版本的vacation程序'vacation.pl' 该程序预Soalris上的有同样的语法
如果自动回复在你的系统上不工作,你可以使用-d参数来开启这个程序的debug功能:
1. 选择一个用户,在openwebmail中开启自动回复的功能。
2. 编辑用户的~user/.forward 文件,在vacation.pl后加上-d 参数。
3. 向这个用户发送一个邮件来测试自动回复
4. 检查/tmp/vacation.debug 来获得可能的信息
冷风注:在RedHat7.x上你需要作如下步骤才能正常使用自动回复功能:
cd /etc/smrsh
ln –s /var/www/cgi-bin/openwebmail/vaction.pl /etc/smrsh
BIG5<->GB编码转换
--------------------
Openwebmail支持在阅读和书写邮件的时候对中文字符集的GB(大陆中文编码)和Big5(应用于台湾香港的中文字符编码)之间的编码转换。为了使该功能正常实现,必须按照一下步骤安装:
1.下载hc-30.tar.gz(作者:Ricky Yeung(Ricky.Yeung.AT.eng.sun.com) 和Fung F. Lee (lee.AT.umunhum.stanford.edu)。
2. tar -zxvf hc-30.tar.gz
cd hc-30
make
3. 复制'hc'和'hc.tab'到cgi-bin/openwebmail或者/usr/local/bin(我的机器上复制到/usr/local/bin无效。
4. 修改openwebmail.conf、g2b_converter和b2g_converter.
虚拟主机
---------------
只要安装一份Openwebmail就可以在上面运行我们需要的任何数量的虚拟主机。OpenWebmail可以为每个域设置单独的配置文件。每个域可以有自己的一套配置参数.包括域名,认证模块,空间限制以及mailspooldir等等
甚至可以创建非UNIX系统帐户的用户作为邮件帐户,相关内容请访问Kevin Ellis的主页:
How to setup virtual users on Open WebMail using Postfix & vm-pop3d"(http://www.bluelavalamp.net/owmvirtual/)
例子:为虚拟域sr1.domain.com创建一个配置文件
1. cd cgi-bin/openwebmail/etc/sites.conf/
2. cp ../openwebmail.conf sr1.domain.com
3. 编辑文件'sr1.domain.com' 文件重的参数来定制它
使用别名地址映射
------------------
OpenWebmail可以用sendmail的virtusertable来作用户的别名映射。登录名可以是纯的用户名也可以是用户名◎域名的方式。这个登录名可以在virtusertable被映射为另外一个名字或者名字◎域名。这样我们在帐户管理上就有很大的弹性了。请访问http://www.sendmail.org/virtual-hosting.html获取详细信息
当一个用户登录OpenWebMail后会按照下面的顺序检测:
if (loginname is in the form of 'someone@somedomain') {
user=someone
domain=somedomain
} else { # a purename
user=loginname
domain=HTTP_HOST # hostname in url
}
is user@domain a virtualuser defined in virtusertable?
if not {
if (domain is mail.somedomain) {
is user@somedomain defined in virtusertable?
} else {
is user@mail.domain defined in virtusertable?
}
}
if (no mapping found && loginname is pure name) {
is loginname a virtualuser defined in virtusertable?
}
if (any mapping found) {
if (mappedname is in the form of 'mappedone@mappeddomain') {
user=mappedone
domain=mappeddomain
} else {
user=mappedname
domain=HTTP_HOST
}
}
if (option auth_withdomain is on) {
check_userpassword for user@domain
} else {
if (domain == HTTP_HOST) {
check_userpassword for user
} else {
user not found!
}
}
注:如果任何在virtusertable中发现别名,别名就会被用为默认的邮件地址。
下面是/etc/virtusertable的一个例子:
projectmanager pm
johnson@company1.com john1
tom@company1.com tom1
tom@company2.com tom2
mary@company3.com mary3
假设webmail 服务器的地址是http://mail.company1.com/那么上面的virtusertable意思是:
1. 如果用户用projectmanager登录,那么openwebmail认为
projectmanager@mail.company1.com
projectmanager@company1.com
projectmanager 是虚拟用户 ---> pm
2. 如果用户以johnson@company1.com 登录openwebmail认为
johnson@company1.com ---> john1
如果用户以johnson登录, openwebmail 认为
johnson@mail.company1.com
johnson@company1.com ---> john1
3. tom@company1.com"如果用户以tom@company1.com登录
openwebmai认为tom@company1.com ---> tom1
tom@company2.com"如果用户以tom@company2.com登录
openwebmail 认为tom@company2.com ---> tom2
如果用户以tom登录
openwebmail认为tom@mail.company1.com
tom@company1.com ---> tom1
4. 如果用户以mary登录:
openwebmail 认为mary@mail.company1.com
mary@company1.com
mary as virtualuser ---> not an alias
每用户配置
---------------------------------
尽管在系统配置文件(openwebmail.conf) 中的设置对所有用户都有效,你还是可以发现单独为某些用户设置参数有时也是十分必要的。例如,限制某些IP对服务器的访问或者限制用户可以发送邮件的目的域名。这些都可以很容易的在每用户配置文件中实现。
用户配置文件位于in cgi-bin/openwebmail/etc/user.conf/并以真实的用户名命名。这个文件中的参数其实是openwebmail.conf中的子集。这个目录下有一个文件'SAMPLE',其中是用户配置文件的样例:
例如下面为用户guest创建一个配置文件:
1. cd cgi-bin/openwebmail/etc/users.conf/
2. cp SAMPLE guest
3. 编辑文件guest
注:Openwebmail按照下面的顺序加载配置文件
1. cgi-bin/openwebmail/etc/openwebmail.conf.default
2. cgi-bin/openwebmail/etc/openwebmail.conf
3. cgi-bin/openwebmail/etc/sites.conf/domainname (如果存在该文件的话)
a.加载认证模块。
b. 映射用户别名.。
c. 验证用户身份。
4. cgi-bin/openwebmail/etc/users.conf/username (如果该文件存在的话)
后面配置文件中参数将覆盖全面配置文件中的参数
PAM认证支持
-----------
PAM (可插拔认证模块)为认证用户身份提供了一个弹性的模式具体细节请访问Linux-PAM 的主页
http://www.kernel.org/pub/linux/libs/pam/
Solaris 2.6、Linux 和FreeBSD 3.1 都支持PAM,为了使OpenWebMail支持PAM认证,按照下面步骤进行:
1. 下载Perl Authen::PAM模块(Authen-PAM-0.12.tar.gz)
http://www.cs.kuleuven.ac.be/~pelov/pam/
2. cd /tmp
tar -zxvf Authen-PAM-0.12.tar.gz
cd Authen-PAM-0.12
perl Makefile.PL
make
make install
注:建议编译的时候执行'make test',如果在make test中出错,PAM可能不能在你的系统上正常工作。
3.向/etc/pam.conf加入下面三行
(Solaris系统)
openwebmail auth required /usr/lib/security/pam_unix.so.1
openwebmail account required /usr/lib/security/pam_unix.so.1
openwebmail password required /usr/lib/security/pam_unix.so.1
(Linux系统)
openwebmail auth required /lib/security/pam_unix.so
openwebmail account required /lib/security/pam_unix.so
openwebmail password required /lib/security/pam_unix.so
(如果你的 Linux系统没有/etc/pam.conf protech.AT.protech.net.tw注)
如果你没有/etc/pam.conf 而是目录etc/pam.d/,
请创建/etc/pam.d/openwebmail文件,并加入一下内容:
auth required /lib/security/pam_unix.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_unix.so
(FreeBSD系统)
openwebmail auth required /usr/lib/pam_unix.so
openwebmail account required /usr/lib/pam_unix.so
openwebmail password required /usr/lib/pam_unix.so
注:PAM 在一些版本的 FreeBSD 上可能不能正常工作(例如:4.1)
4. 改变openwebmail.conf文件中的auth_module 为 'auth_pam.pl'
5.检查auth_pam.pl 是否适应你的系统
注:更多关于 PAM 的配置信息建议阅读《The Linux-PAM System Administrators' Guide》
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html
by Andrew G. Morgan, morgan.AT.kernel.org
添加新的认证模块
--------------------------------------------
openwebmail可以直接使用各种认证模块,包括auth_unix.pl, auth_ldap.pl, auth_mysql, auth_mysql_vmail.pl,auth_pgsql, auth_pop3.pl和auth_pam.pl。万一发现这些模块不能适应自己的需要,你可以写一个属于你自己的新的认证模块。
向 openwebmail添加新的认证模块:
1.为新的认证模块选择一个所写名字例如:xyz
2.向auth_xyz.pl 文件添加下面的4个定义的函数:
( $realname, $uid, $gid, $homedir)=get_userinfo( $domain, $user);
@userlist=get_userlist( $domain);
$retcode=check_userpassword( $domain, $user, $password);
$retcode=change_userpassword( $domain, $user, $oldpassword, $newpassword);
这里的 $retcode意思使:
-1 : 功能不支持
-2 : 参数格式错误
-3 : 认证系统内部错误
-4 : 密码错误
可以参开auth_unix.p或者 auth_pam.pl 来编写
3.修改openwebmail.conf中的参数为auth_xyz.pl
4. 测试你的新认证模块:)
注:如果你希望你的认证模块包含在下一个版本的opernwebmail中,请提交把它提交给openwebmail.AT.turtle.ee.ncku.edu.tw.
添加新的语言支持
-----------------------------
在openwebmail添加新的语言支持非常简单:
1. 选择一个你语言的所写,例如:xy
注:你也可以参考下面的URL地址来选择
http://i18n.kde.org/stats/gui/i18n-table-KDE_2_2_BRANCH.html
http://babel.alis.com/langues/iso639.en.htm
http://www.unicode.org/unicode/onlinedat/languages.html
2. cd cgi-bin/openwebmail/etc.
cp lang/en lang/xy
cp -R templates/en templates/xy
3.将lang/xy和templates/xy/* 中的所有文件从英文翻译成你自己的语言
4. 将你的语言添加到openwebmail-shared.pl中的 %languagenames中,然后在openwebmail.conf中设置你的语言为xy
注:如果你希望你的翻译包含在下一版的openwebmail中的话,请将它提交给openwebmail.AT.turtle.ee.ncku.edu.tw.
添加更多的背景
--------------------------------------------
如果想在openwebmail中为你的用户添加更多的背景图片,只要把它们复制到%ow_htmldir%/images/backgrounds,然后用户就可以在他们的属性菜单里选择这些图片作为背景了
注:如果你想和其他人共享你美妙的背景,请将他们提交给openwebmail.AT.turtle.ee.ncku.edu.tw
设计自己的OPENWEBMAIL图标
---------------------------------------
如果你对openwebmail中的图标设计很感兴趣,你必须
1. 在%ow_htmldir%/images/iconsets/目录创建一个子目录,例如:MyIconSet
注:%ow_htmldir%是openwebmail查找html对象的路径,该路径在openwebmail.conf定义
2. 从%ow_htmldir%/images/iconsets/Default复制所有的图片到MyIconSet
3. 按照你的需要修改 %ow_htmldir%/images/iconsets/MyIconSet 中的图片
注:如果你希望你的新图标可以包含在下一版本的openwebmail中请将它们提交给openwebmail.AT.turtle.ee.ncku.edu.tw
测试
-----
1. 改变工作路径到openwebmail的cgi目录(例如:/usr/local/www/cgi-bin/openwebmail)
检查这些文件的属主以及权限是否为:
~/openwebmail.pl - owner=root, group=mail, mode=4755
~/openwebmail-main.pl - owner=root, group=mail, mode=4755
~/openwebmail-read.pl - owner=root, group=mail, mode=4755
~/openwebmail-viewatt.pl - owner=root, group=mail, mode=4755
~/openwebmail-send.pl - owner=root, group=mail, mode=4755
~/openwebmail-spell.pl - owner=root, group=mail, mode=4755
~/openwebmail-prefs.pl - owner=root, group=mail, mode=4755
~/openwebmail-folder.pl - owner=root, group=mail, mode=4755
~/checkmail.pl - owner=root, group=mail, mode=4755
~/vacation.pl - owner=root, group=mail, mode=0755
~/etc - owner=root, group=mail, mode=755
~/etc/sessions - owner=root, group=mail, mode=770
~/etc/users - owner=root, group=mail, mode=770
/var/log/openwebmail.log - owner=root, group=mail, mode=660
2. 通过访问http://your_server/cgi-bin/openwebmail/openwebmail.pl来测试
如果有任何问题请于阅读faq.txt.,最新版本的FAQ可以从http://turtle.ee.ncku.edu.tw/openwebmail/download/doc/faq.txt获得。
TODO
----
我们在下一步工作中要实现:.
1. web日历
2. web硬盘
3. 共享目录
4. mod_perl兼容
人们所感兴趣的功能:
1. maildir支持
2. 在线签收
3. 日志分析
03/14/2002
openwebmail.AT.turtle.ee.ncku.edu.tw
冷风的openwebmail.conf文件
# Open WebMail configuration file
#
# This file contains just the overrides from openwebmail.conf.default
# please make all changes to this file.
#
# This file sets options for all domains and all users.
# To set options on per domain basis, please put them in sites.conf/domainname
# To set options on per user basis, please put them in users.conf/username
#
domainnames chinalinuxpub.com
auth_module auth_pam.pl
mailspooldir /var/spool/mail
dbm_ext db
dbmopen_ext none
timeoffset +0800
ow_cgidir /home/linuxpub/cgi-bin/openwebmail
ow_htmldir /home/linuxpub/data/openwebmail
logfile /var/log/openwebmail.log
spellcheck /usr/bin/aspell
default_iconset Cool3D.English
default_confirmmsgmovecopy no
default_moveoldmsgfrominbox no
default_language zh_CN.GB2312
vacationpipe /home/linuxpub/cgi-bin/openwebmail/vacation.pl -d -t60s
<default_signature>
--
Linux技术中坚站 (http://www.chinalinuxpub.com)
</default_signature>