首 页 教育新闻课件中心论文中心教学教案试题中心语文专题综合下载技术教程公务员  
设为首页
加入收藏
联系我们
您当前的位置:中国教育资源网 -> 技术教程 -> 网络相关 -> 服务器 -> 邮件服务器 -> 技术内容 退出登录 用户管理

vpopmail quota_warn的BUG邮件服务器教程

论文作者:佚名  论文来源:不详  论文发布时间:2006-6-18 23:55:35  论文发布人:chjchjchj

减小字体 增大字体

              摘要:vpopmail quota_warn的BUG
前提:安装qmail-1.0.3+vpopmail-5.2.1后收发信正常。
若某用户使用空间超过100%(缺省)后vpopmail发送空间警告。
现象:用户使用邮件客户端删除邮件后,第二天vpopmail会再次发送空间警告,
而此时邮件用户的邮箱里并没有那么多邮件,占用空间小于100%。
验证:用户删除邮件后,vuserinfo -Q 查询用户邮件使用空间,发现vpopmail
并没有update邮件空间占用率。
原因:vpopmail在发送quota_warn警告信之前没有重新计算maildirsize。
请问:有没有现成的补丁?

 gadfly 回复于:2003-05-19 12:28:36这个恐怕得pop和投递服务都得支持quota的修改。

sqwebmail和maildrop都支持。

但是让pop3和imap都支持得另外打patch

 akid 回复于:2003-05-19 12:40:56[quote:a5213578ca="gadfly"]这个恐怕得pop和投递服务都得支持quota的修改。
但是让pop3和imap都支持得另外打patch[/quote:a5213578ca]
最好修改vpopmail,使之在发送quota_warn警告信之前重新计算maildirsize,这应该说是vpopmail的问题。

 akid 回复于:2003-05-19 12:55:39[quote:7807f48345="peijun.jiang"]我的也有这个问题。
如果我发一封邮件到我服务器的一个帐户,使用sqwebmail登录可以看到邮件空间占用了比如2%,如果我使用sqwebmail删除改邮件,邮件空间占用情况可以看到恢复到了0%,查看用户的maildirquota可以..........[/quote:7807f48345]
用igenus就好了,igenus是自己重新计算一遍的,不过这样会慢一点。

 peijun.jiang 回复于:2003-05-19 12:48:31我的也有这个问题。
如果我发一封邮件到我服务器的一个帐户,使用sqwebmail登录可以看到邮件空间占用了比如2%,如果我使用sqwebmail删除改邮件,邮件空间占用情况可以看到恢复到了0%,查看用户的maildirquota可以看到在该封邮件记录的下面出现一个-1282 -1。但是如果我是用foxmail客户端收取改邮件,而不是使用sqwebmail删除的话,这是的sqwebmail的空间占用情况还是2%,其实这时的邮件目录下已经没有了邮件,但是不会自动恢复到0%,查看用户的maildirquota文件,在该封邮件1282 1的下面不会出现-1282 -1。

不知道maildirquota是怎样计算的◎!

 gadfly 回复于:2003-05-19 12:48:31你研究一下它怎么发的,可以在判断之前,删除或这个文件看看

 ljjsys 回复于:2003-05-22 15:12:35去掉.qmail就正常了.
可以如何让.qmail存在,计算空间又正确呢?

 大麻 回复于:2003-05-22 15:29:25  我最近也被 maildirsize 搞的头痛,不知道 courier 和 vpopmail 对这个文件是怎么考虑的,没有必要搞的那么复杂嘛!我在程序里面干脆直接把这个文件每次都删除,反正 vpopmail 会自己建立。

 笨笨鸟 回复于:2003-05-22 16:13:20可以修改源文件,更改计算方式。

 akid 回复于:2003-05-23 00:55:32[quote:2d947525fc="ljjsys"]去掉.qmail就正常了.
可以如何让.qmail存在,计算空间又正确呢?[/quote:2d947525fc]

跟.qmail的存在有什么关系呢?

 akid 回复于:2003-05-23 01:05:20[quote:10ed1ade12="大麻"]  我最近也被 maildirsize 搞的头痛,不知道 courier 和 vpopmail 对这个文件是怎么考虑的,没有必要搞的那么复杂嘛!我在程序里面干脆直接把这个文件每次都删除,反正 vpopmail 会自己建立。[/quote:10ed1ade12]
大麻可以改folder.php里,根据要删掉的mail文件的文件名得到quota_size,加个负号append到maildirsize文件后面,然后再unlink掉这个文件。对qmail打完maildir++patch是这样的结果。
不过用这样的办法,maildirsize文件会慢慢增大,什么时候vpopmail才会自动总结一下?
vpopmail的源代码读起来不爽,我觉得代码写得比较乱。如user_over_maildirquota()函数,看名字应该只是判断用户是否超过负载空间,但是细看这个函数内容,里面竟还有对maildir_addquota()的调用,而这完全应该移到vdelivermail()里去调用的!真是郁闷!

 akid 回复于:2003-05-23 01:16:47[quote:d78c6c1e86="笨笨鸟"]可以修改源文件,更改计算方式。[/quote:d78c6c1e86]
看不懂怎么改,vpopmail-5.2.1里README.quotas说
qmail-pop3d does not update maildirsize when you delete messages.  This  problem will correct itself within 15 minutes, since the Maildir++ specdictates that the maildirsize file must be recalculated at least every 15 minutes. 
我看到docheckquota()函数里确实写了
if (maildirsize_nlines == 1 && tm < stat_buf.st_mtime + 15*60)
return (n);
但是我把这段代码注释掉了,vpopmail还是不会重算maildirsize!

 大麻 回复于:2003-05-25 12:56:03  vpopmail 对 maildirsize 的处理很简单,没有该文件,则 vpopmail 会自动建立,我在 iGENUS 中则每次删除文件或者增加邮件以后直接将该文件删除,省的和他打交道。

 akid 回复于:2003-05-24 18:09:02不知道各位有没有碰到和小弟这样的问题?
怎么没有人在意啊?

 gadfly 回复于:2003-05-25 09:03:19建议你调试一下,写写日志,例如记录一下计算前后的数值。

这样就能看出是否计算了,以及计算是否正确。

 akid 回复于:2003-05-25 13:40:42[quote:e9ddd08f34="大麻"]  vpopmail 对 maildirsize 的处理很简单,没有该文件,则 vpopmail 会自动建立,我在 iGENUS 中则每次删除文件或者增加邮件以后直接将该文件删除,省的和他打交道。[/quote:e9ddd08f34]
但是,这样子会使vpopmail要重新遍历用户的Maildir去计算maildirsize,如果邮件系统的很多用户在线并且收信频繁,会大大降低系统的速度。我想vpopmail搞这么个maildirsize文件目的是做cache,免得每次delivermail都去遍历Maildir目录。
为此,我采用以下解决办法:
1、为qmail打patch:patch -0 < qmail-maildir++.patch
使得qmail的qmail-pop3d和qmail-local支持更新maildirsize
2、为webmail客户端增加支持更新maildirsize功能,如iGENUS,需要修改:
1)folder.php
//如果是强行删除或者删除垃圾箱,则更新maildirsize
if ( $get_MoveTo=="force" || ($SMailbox==$DMoveTo && $get_Mailbox='trash') {
list($size,$other)=split(":",$File,2);
list($other,$size)=split(",",$size,2);
list($other,$size)=split("=",$size,2);
if(is_numeric($size)){
$MaildirsizeFile="$G_HOME/Maildir/maildirsize";
$buff="-$size -1\n";
if(file_exists($MaildirsizeFile)){
  ($FD=fopen($MaildirsizeFile,"a")) || die("Fail to open maildirsize file");
  fputs($FD,$buff);
  fclose($FD);
}
}

}
2)mailbox.php
if( $get_Cmd=='ClearTrash'){

$Mailbox=".Trash";
$AllMailSize = 0;
$AllMailSum = 0;

$home = $G_HOME . "/Maildir/".$Mailbox."/new";
$handle=opendir($home);

while (($file = readdir($handle))!==false) {
    if ($file !='.' && $file !='..' && is_file("$home/$file"))
    unlink("$home/$file");

list($size,$other)=split(":",$file,2);
list($other,$size)=split(",",$size,2);
                list($other,$size)=split("=",$size,2);
if(is_numeric($size)) $AllMailSize += $size;
$AllMailSum += 1;
}
closedir($handle); 

$home = $G_HOME . "/Maildir/".$Mailbox."/cur";
$handle=opendir($home);

while (($file = readdir($handle))!==false) {
    if ($file !='.' && $file !='..' && is_file("$home/$file"))
    unlink("$home/$file");

list($other,$size)=split(",",$file,2);
                list($other,$size)=split("=",$size,2);
if
[] [返回上一页] [打 印] [收 藏]  
 ∷相关技术评论  (评论内容只代表网友观点,与本站立场无关!) [查看发表评论...]
 
 中国教育资源网免费技术教程下载中心-站内广告 站内广告 中国教育资源网免费技术教程下载中心-站内广告 
 中国教育资源网站内搜索 站内搜索 中国教育资源网站内搜索 
 

   
 中国教育资源网免费技术教程下载中心-栏目导航 栏目导航 中国教育资源网免费技术教程下载中心-栏目导航 
· Windows 9XMEXP · Windows NT20002003
· LinuxBSD · 系统综合
· IISApache · 硬件技术
· Web服务器 · FTP服务器
· 邮件服务器 · 域名服务器
· Windows服务器 · 代理服务器
· 服务器综合
 
中国教育资源网免费技术教程下载中心-相关教程  相关技术 中国教育资源网免费技术教程下载中心-相关教程
· 注意隐藏杀手 要小心
· Dreamweaver 限制访
· (五)vpopmail和qm
· vpopmail添加域名时
· vpopmail 管理员手册
· 偶写的Qmail邮箱申请
· qmailadmin+vpopmai
· [图文] 通过vpopmail实现qm
· [灌水]qmail+vpopma
· [图文] qmail+mysql+vpopma
 中国教育资源网免费技术教程下载中心-本月热门教程 本月热门 中国教育资源网免费技术教程下载中心-本月热门教程 
 
 中国教育资源网免费技术教程下载中心-本日热门论文 本日热门 中国教育资源网免费技术教程下载中心-本日热门论文 
 
关于本站 - 网站帮助 - 免费课件 - 美容 - 绿色软件 - 软件下载 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 网站留言
浙ICP备06010405号 Email:cnkjz@163.com 技术支持:名流设计
版权所有 Copyright© 2002-2004 名流