本文档主要讲述Extmail的模板原理和Extmail模板的修改方法、语言包对应关系等,最后给出修改实例。编写本文的初衷,是给希望修改Extmail界面元素或编写新的Extmail模板的网管/用户参考,本文采用了部分王鹏辉2007-06-17讲座资料。

本文档假设读者安装EMOS1.3/1.4(即Extmail安装目录为:/var /www/extsuite/extmail),并具有一定的Unix平台 / Linux平台系统经验,懂得常规的系统操作,如文件的删除、目录创建、改名和vi编辑器的基本使用以及具有HTML基础知识。

本文档所有内容均在EMOS1.3/1.4系统安装、测试通过,其它系统酌情修改对应文件的路径。

本文档由Extmail项目组负责解释,并根据Extmail项目的建设和发展,适时予以更新。如手册与实际项目情况有冲突,以文档服从实际为原则。

ExtMail模板系统是以Perl的HTML::KTemplate模块为核心(HTML::KTemplate是由Kasper Dziurdz先生开发的一款功能强大的HTML代码解析模块,详细信介绍参见http://search.cpan.org/~kasper/HTML-KTemplate-1.33/KTemplate.pm),加上与之配合的多语言系统与模板文件,构成了完整的ExtMail模板系统。

此结构设计大大简化了模板开发的难度和压力,您无需掌握Perl、无需拥有太多的编程经验,只需依照现有的编码规则编制模板文件,就可以做出自己的个性化界面。

clip_p_w_picpath001

ExtMail模板在技术上是一体的,但是如果不会修改模板,创建就无从谈起。下面我们通过修改ExtMail的登陆页和首页来说明如何修改。注: ? 本例中以修改简体中文语言为主,如果您使用的是改其他语言,请修改相应文件; ? 本例均以ExtMail为说明,ExtMan的结构和修改大同小异,请自行对照修改;

1. 页面Title

clip_p_w_picpath002

修改文件:/var/www/extsuite/extmail/lang/zh_CN 修改位置: %lang_login = ( meta_title => '欢迎使用ExtMail',

2. Logo

clip_p_w_picpath003

修改文件:/var/www/extsuite/extmail/html/default/p_w_picpaths/logo.gif 修改内容:替换成需要的Logo图片文件

3. 鼠标指向Logo的显示

clip_p_w_picpath004

修改文件:/var/www/extsuite/extmail/html /default/index.html 修改位置:<DIV class=lg><A href="http://www.extmail.org/" target=_blank><IMG alt=ExtMail>

4. 技术支持和自愿捐助连接

clip_p_w_picpath005

修改文件:/var/www/extsuite/extmail/html /default/index.html 修改位置: <div class=donate> <a href="http://www.extmail.org/support/<%LANG%>/index.html" target="_blank"> <b><%support_link%></b> | <img style="vertical-align: middle" src=\'#\'" /extmail/p_w_picpaths/donate.png"> <a href="http://www.extmail.org/donate/" target="_blank"><b style="color: #5678A6"><%donate%></b> </div>

5. 欢迎词

clip_p_w_picpath006

修改文件:/var/www/extsuite/extmail/lang/zh_CN 修改位置: %lang_login = ( wsplash => '快速可靠, 高性能I/O 开源MAIL开足马力迈进中...',

6. 页面底部信息

clip_p_w_picpath007

修改文件:/var/www/extsuite/extmail/html /default/index.html修改位置:<div class=pb>Powered by <font style="font-weight: bold; color: #000"><%VERSION%></font> ? 2004-2006 ExtMail.Org Runtime: <%TIME%></div>

7. 设定默认域名

clip_p_w_picpath008

修改文件:/var/www/extsuite/extmail/html /default/index.html 修改位置:<TD><INPUT TYPE="text" class="input_n" NAME="domain"></TD> 修改结果:<TD><INPUT TYPE="text" class="input_n" NAME="domain" value="example.com"></TD>

8. 修改IP security为默认不选择

clip_p_w_picpath009

修改文件:/var/www/extsuite/extmail/html /default/index.html 修改位置:<td><input type=checkbox checked name=nosameip><%ip_security%> 修改结果:<td><input type=checkbox name=nosameip><%ip_security%>

即去掉checked或者把checked 改成<!-- IF IPSEC_ON -->checked<!-- END IPSEC_ON -->

9. 欢迎使用

clip_p_w_picpath010

修改文件:/var/www/extsuite/extmail/lang/zh_CN 修改位置: %lang_login = ( welcome_index => '欢迎使用ExtMail!',

10. POP3和SMTP设置信息提示

clip_p_w_picpath011

修改文件:/var/www/extsuite/extmail/html /default/index.html 修改位置: POP3 <b>:</b>& nbsp;& nbsp;pop3.yourdomain.com
SMTP <b>:</b>& nbsp;& nbsp;smtp.yourdomain.com

11. 特点介绍

clip_p_w_picpath012

修改文件:/var/www/extsuite/extmail/lang /zh_CN 修改位置: %lang_login = ( intro2 => '<b>快速而可靠</b>
引入索引缓存(Cache)技术和高效核心,WebMail操作疾步如飞', intro3 => '<b>多语言同屏读写</b>
全面支持UTF8,实现同屏读写多国语言,真正做到国际邮、无乱码', intro4 => '<b>真正模板化设计</b>
MVC设计+高速模板引擎,实现了内容数据完全分离,轻松修改模板', intro5 => '<b>高性能I/O</b>
;轻松应付>1GB邮箱/200M附件,远强于流行的各式php webmail',

12. 去除免费注册按钮

clip_p_w_picpath013

修改文件:/var/www/extsuite/extmail/webmail.cf 修改位置:SYS_SHOW_SIGNUP = 1 修改结果:SYS_SHOW_SIGNUP = 0

clip_p_w_picpath014

修改文件:/var/www/extsuite/extmail/html /default/TOP_BAN.html 修改位置: <a href="index.cgi?__mode=logout&sid=<%SID%>"><%logout%> | <a target=_blank href="http://www.extmail.org/support/<%LANG%>/about.html"><%about%> | <a target=_blank href="http://www.extmail.org/support/<%LANG%>/help.html"><%help%>

2. 页底部信息

clip_p_w_picpath015

修改文件:/var/www/extsuite/extmail/html /default/BOTTOM.html 修改位置: <div id="Bcr">Powered by <%VERSION%> ? 2006 ExtMail.Org Runtime: <%TIME%><br> <%extmail_whatis%></div>

3. 项目新闻

clip_p_w_picpath016

修改文件:/var/www/extsuite/extmail/html /default/welcome.html 修改位置: </div> <div style="padding-left: 5px;padding-right:5px"> <div class="panelout" id="etnews_div"> <div class="paneltit">&nbsp;ExtMail Project News</div> <div class="panelin" id="etnews_container"> </div>

4. 天气预报

clip_p_w_picpath017

修改文件:/var/www/extsuite/extmail/html /default/welcome.html 修改位置: <TD  valign=top style=""> <div class="panelout" id="coolweather_div"> <div class="paneltit">&nbsp;<%weatherinfo%></div> <div class="panelin" id="coolweather_container"> </div> <script type="text/javascript"> coolweather_iconspath = '/extmail/plugins/coolweather/icons/'; coolweather_init(); </script> </div> </TD>

http://loong.blog.51cto.com/358149/515620

Extmail修改模板及其它设置

1 修改文件:/var/www/extsuite/extmail/html/default/index.html  
设定默认域名    
<TD><INPUT TYPE="text" class="input_n" NAME="domain" value="example.com"></TD>    
其中的domain和example.com随自己实际情况进行更改。    
POP3和SMTP设置信息提示    
POP3 <b>:</b>& nbsp;& nbsp;pop3.yourdomain.com

SMTP <b>:</b>& nbsp;& nbsp;smtp.yourdomain.com

技术支持和自愿捐助连接,用<!-- -->注释掉。    
<div class=donate> <a href="http://www.extmail.org/support/<%LANG%>/index.html" target="_blank"> <b><%support_link%></b> | <img style="vertical-align: middle" src="/extmail/p_w_picpaths/donate.png"> <a    
2 修改文件:/var/www/extsuite/extmail/webmail.cf    
去除免费注册    
修改位置:SYS_SHOW_SIGNUP = 1    
修改结果:SYS_SHOW_SIGNUP = 0    
去掉网络磁盘功能    
修改位置:SYS_NETDISK_ON = 1    
修改结果:SYS_NETDISK_ON = 0    
3 更换logo标志    
修改文件:/var/www/extsuite/extmail/html/default/p_w_picpaths/logo.gif    
修改内容:替换成需要的Logo图片文件    
4 修改文件:/var/www/extsuite/extmail/lang/zh_CN    
修改位置:    
%lang_login = (    
meta_title => '欢迎使用ExtMail'    
修改位置:    
%lang_login = (    
intro2 => '<b>快速而可靠</b>
引入索引缓存(Cache)技术和高效核心,WebMail操作疾步如飞',    
intro3 => '<b>多语言同屏读写</b>
全面支持UTF8,实现同屏读写多国语言,真正做到国际邮、无乱码',    
intro4 => '<b>真正模板化设计</b>
MVC设计+高速模板引擎,实现了内容数据完全分离,轻松修改模板',    
intro5 => '<b>高性能I/O</b>
;轻松应付>1GB邮箱/200M附件,远强于流行的各式php webmail',    
修改位置:    
%lang_login = (    
wsplash => '快速可靠, 高性能I/O    
开源MAIL开足马力迈进中...',    
修改位置:    
%lang_login = (    
welcome_index => '欢迎使用ExtMail!'    
5 修改文件:/var/www/extsuite/extmail/html/default/TOP_BAN.html    
注释掉    
href="http://www.extmail.org/support/<%LANG%>/about.html"><%about%> | <a target=_blank href="http://www.extmail.org/support/<%LANG%>/help.html"><%help%></span>    
6修改文件:/var/www/extsuite/extmail/html/default/BOTTOM.html    
<div id="Bcr">Powered by <%VERSION%> ? 2006 ExtMail.Org Runtime: <%TIME%><br>    
<%extmail_whatis%></div>    
上面内容可以根据页面底部的显示信息对比修改。    
7 修改文件:/var/www/extsuite/extmail/html/default/welcome.html    
去掉项目新闻 注释掉下面内容    
<div style="padding-left: 5px;padding-right:5px">    
               <div class="panelout" id="etnews_div">    
               <div class="paneltit">&nbsp;ExtMail Project News</div>    
               <div class="panelin" id="etnews_container">    
               </div>    
               </div>    
               <script type="text/javascript">    
                       etnews_init();    
               </script>    
               </div>    
8 更换原天气预报代码    
更换掉原来的这段代码    
<TD   valign=top style="">    
               <div class="panelout" id="coolweather_div">    
                       <div class="paneltit">&nbsp;<%weatherinfo%></div>    
                       <div class="panelin" id="coolweather_container">    
                       </div>    
                       <script type="text/javascript">    
                               coolweather_iconspath = '/extmail/plugins/coolweather/icons/';    
                               coolweather_init();    
                       </script>    
               </div>    
       </TD>    
       <TD ;</TD>    
新的代码为    
<TD   valign=top style="">    
       <iframe src="http://www.thinkpage.cn/weather/weather.aspx?c=BU5CI&l=&p=CMA&a=1&u=C&s=1&m=1&x=1&d=3&fc=&bgc=&bc=" frameborder="0" scrolling="no" ;200" height="260" allowTransparency="true">    
       </iframe>    
       </TD>    
       <TD ;</TD>    
以上是extmail相关界面的模板修改,个人认为extman界面只是管理员使用,不建议修改模板了。    
[[i] 本帖最后由 syhandwork 于 2009-9-14 09:58 编辑 [/i]]

syhandwork发表于 2009-9-14 09:59

三 防火墙的相关设置  
先下介绍下常用的命令:    
[root@tp ~]# service iptables restart    
[root@tp ~]# service iptables stop    
[root@tp ~]# service iptables start    
更改配置文件/etc/sysconfig/iptables (如果之前没有开启防火墙,不会有iptables文件,需运行命令启动防火墙便会生成此文件)    
原则是input,forward默认drop,output默认acceput。    
然后开启ping DNS 相应服务端口。    
#头两行是注释说明    
# Firewall configuration written by system-config-securitylevel    
# Manual customization of this file is not recommended.    
#使用filter表    
*filter    
#下面四条内容定义了内建的INPUT、FORWAARD、ACCEPT链,还创建了一个被称为RH-Firewall-1-INPUT 的新链    
:INPUT DROP [0:0]    
:FORWARD DROP [0:0]    
:OUTPUT ACCEPT [0:0]    
:RH-Firewall-1-INPUT - [0:0]    
#下面这条规则,所有发往INPUT、forward链上的数据包将跳转到RH-Firewall-1 //链上。    
-A INPUT -j RH-Firewall-1-INPUT    
-A FORWARD -j RH-Firewall-1-INPUT    
#下面这条规则将被添加到RH-Firewall-1-input链。它可以匹配所有的数据包其中流入接口(-i)//是一个环路接口(lo)。    
-A RH-Firewall-1-INPUT -i lo -j ACCEPT    
#定制相应的规则    
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT    
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT    
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT    
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT    
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT    
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT    
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT    
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT    
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT    
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT    
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT    
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT    
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT    
COMMIT    
上面的语句只做了--dport连接,这是因为-A RH-Firewall-1-INPUT只针对了input和forward这两项,而output在上面也经默认为accept,如果output默认 规则为drop,那一条规则我们需要两条语句来完成,一条是input的dport,一条是output的sport,则还需再加一句类似的规则。    
-A output -m state --state NEW -m tcp -p tcp --sport 25 -j ACCEPT    
[[i] 本帖最后由 syhandwork 于 2009-9-14 10:13 编辑 [/i]]

syhandwork发表于 2009-9-14 10:25

四 垃圾邮件防护  
我使用的是slockd+Dspam    
对于slockd,主要编辑黑白名单,及RBL    
1 blacklist  黑名单,这项里只能写域名    
whitelist    白名单,这项里只能写域名    
sender_blackist 黑名单,这项里即可写域名也可以对某域里某一用户。    
sender_whitelist 白名单,同上。    
recip_whitelist    
recip blacklist    
黑白名单配置文件路径 /usr/local/slockd/config/    
黑白名单的编辑方法可以用正值表达式。编辑时格式:/正值表达式/    
如里直接写就是普通表达式    
2 RBL    
vi /usr/local/slockd/config/plugin.cf    
少数RBL可能拦截过于敏感,建议只使用以下的RBL    
zen.spamhaus.org    
bl.spamcop.net    
3 关于启动slockd的命令,EMOS1.4集成的slockd可以不重启,修改即时生效。    
/usr/local/slockd/slockd-init start    
这里我还闹了一个笑话,在测试黑白名单时,明明已经在黑名单里把163设值了,结果还是可以正常通信,无论正值表达式还是普通表达式都无效果,最后一看白名单才明白,系统默认就已经在白名单里加了好多正规邮箱域名了,白名单是先于黑名单起作用的,所以大家测试时一定要细心,不要再犯这样类似的错。还有我上 面提到的黑白名单不同的效果,大家千万不要在blacklist文件里去编辑形如[email]emos@extmail.org[/email]的表达式,它只支持域的形式extmail.org,若是要编辑[email]emos@extmail.org[/email]那只能在 sender_blacklist文件里去设置,还有所有的正值表达式都是用/表达式/的形式,不用/把内容括起来就被认为普通表达式。    
关于DSPAM方面,我没有太多的研究,只是参照了论坛中的帖子,链接如下    
[url]http://www.extmail.org/forum/redirect.php?tid=11250&goto=lastpost#lastpost[/url]    
[[i] 本帖最后由 syhandwork 于 2009-9-14 10:44 编辑 [/i]]

syhandwork发表于 2009-9-14 11:06

五 是EMOS的备份  
1 邮箱的账号及密码邮件用户的用户名,密码,过期时间,邮箱容量等信息都存放在mysql数据库中ExtMail使用的库是extmail库    
2 用户的邮件内容 /home/domains    
鉴于邮箱账号等信息,文件不是很大,我选择了先用mysqldump备份数据库到某一目录下,每天晚上备份一次,只保留最近5天的备份,然后再通过 rsync把这些文件同步到固定文件服务器上去。关于用户邮件内容文件肯定会较大,我不在本地压缩保留几天的备份了,直接用rsync同步到文件服务器。    
mysql本地备份脚本back_mysql.sh文件,    
NowTime=`date +%Y_%m_%d`    
preTime=`date +%Y_%m_%d --date="-5 day"`    
Directory=/back/mysql    
mkdir -p $Directory    #-p的作用是可以建多级目录    
mysqldump -uroot -ppasswd extmail > $Directory/extmail_$NowTime.sql  # -u和-p后不要跟空格,若是备份所有库文件可以--all-database    
rm -rf $Directory/extmail_$pretime.sql  #-rf强制并琢级删除文件或文件夹    
默认建立的脚本没有执行权限,所以要用命令对其赋权。    
chmod back_mysql.sh 764    
然后添加计划任务,定义每天运行一次,    
运行crontab -e命令添加任务计划:    
40 01 * * * /back/mysql/back_mysql.sh    
解释:    
*号之间是有空格的    
01 1 * * *  此5个"*"的意思. 第一个是分钟,取值范围0-59    
第二个是小时,取值范围0-23    
第三个是天,取值范围1-31    
第四个是月,取值范围1-12    
第五个是周,取值范围0-6(0表示是周日)    
上面的内容就已经可以达到每天在/back/mysql目录下自动备份邮箱用户名及密码相关信息了,并可以保持最近5天的记录。接下来就是要用rsync来同步备份的内容到其它服务器了。    
rsync的配置:    
rsync分服务端和客户端,在这里服务端就是运行Extmail服务的服务器,客户端就是备份Extmail数据的服务器.    
服务端的配置:    
1.  编辑 /etc/xinetd.d/rsync文件,    
将rsync文件中的    
disable = yes  改成  disable = no    
保存退出.    
2.  编辑rsyncd.conf文件,此文件可能没有,需要新建(=号的两边一定要有空格,否则无效)    
编辑 /etc/rsyncd.conf文件,在此文件中添加:    
uid = root   #运行RSYNC守护进程的用户    
gid = root   #运行RSYNC守护进程的组    
use chroot = no                 #不使用chroot    
max connections = 4             # 最大连接数为4    
strict modes = yes               #是否检查口令文件的权限    
port = 873                      #默认端口873    
  #模块参数    
[mail]  #这里是认证的模块名,在client端需要指定    
path = /home/domains  #需要做镜像的目录,不可缺少!    
ignore errors          #可以忽略一些无关的IO错误    
read only = yes        # 只读    
list = no              #不允许列文件    
auth users = beifen  #认证的用户名,如果没有这行则表明是匿名,此用户与系统无关    
secrets file = /etc/rsyncd.pas  #密码和用户名对比表,密码文件自己生成    
#下面的设置可以选用,因为这些安全设置完全可以在防火墙中来实现。    
hosts allow = 192.168.0.254,10.10.10.10     #允许主机    
hosts deny = 0.0.0.0/0                  #禁止主机    
[mysql]    
path = /back/mysql    
ignore errors          #可以忽略一些无关的IO错误    
read only = yes        # 只读    
list = no              #不允许列文件    
auth users = beifen  #认证的用户名,如果没有这行则表明是匿名,此用户与系统无关    
secrets file = /etc/rsyncd.pas  #密码和用户名对比表,密码文件自己生成    
保存退出.    
3. 编辑/etc/rsyncd.pas文件,此文件是rsyncd的密码文件,里面只存放了用户名和密码    
,在这里是beifen用户和密码,此文件内容:    
beifen:123456    
保存退出.    
权限:因为rsyncd.pas存储了rsync服务的用户名和密码,所以非常重要。要将rsyncd.pas设置为root拥有, 且权限为600。    
#cd /etc    
#chown root.root rsyncd.pas  #如果属主属组本身就是root,这步可以省略。    
#chmod 600 rsync.pas    
因rsync使用了873端口,因此我们需要在服务端上打开873端口,否则客户端连接不上.    
到此,服务端的配置就完了.    
让配置生效    
#service xinetd restart    
如果rsync不能同步的话,可以用这个命令来启动rsync为server模式启动    
#/usr/bin/rsync –daemon    
设置开机自动启动rsync    
编辑    
vi /etc/rc.d/rc.local    
在文档未尾加入service xinetd start    
服务端配置就已经成功了,我们来配置客户端,我的是windows系统,配置如下,    
安装完成之后,记下安装路径,先点"我的电脑"属性——设置环境变量,对path增加安装路径下的bin目录,要加;号。这样可以在CMD窗口中任意目录 下调用rsync命令。然后建立一个批处理文件,内容是同步目标服务器上的文件到本地目录。Password.txt是验证文件,其中只有密码同上的 rsync.pass    
下面命令".\test8\"用的是相对命令,一定是相对命令,切记。先用命令进入备份目录的上级目录,然后再用相对命令。    
rsync -vzrtopg --progress --delete --password-file="/cygdrive/C/Documents and Settings/Administrator/password.txt"

http://blog.sina.com.cn/s/blog_64d0f40d0100ricl.html