!
|
***************
*** 601,605 ****
|
! Help
|
--- 601,605 ----
|
! Help
|
Index: help_gif.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/resources/help_gif.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** help_gif.py 29 Sep 2003 07:28:12 -0000 1.1
--- help_gif.py 3 Oct 2003 18:52:08 -0000 1.2
***************
*** 4,19 ****
source = 'help.gif'
package = 'spambayes.resources'
! data = "GIF89aq\000q\000\000\0003f@p9k!\025Created with The GIMP\000!\004\001\012\000\003\000,\000\
! \000\000\000q\000q\000\000\002m\000ًδ{h}9z\0132\013o0XP5\013\"x(K \014\026\
! \023fz.Rߧڈb[CUt%\020@5\0367Z;ȭ#\037UDr\007($8H\027T(\
! H\002\007Q7#\011\010BA\011嘙cc\031I\030\030\012::W\001\021j\033[\0120\"\031+\
! q\034<%Q\004Sd\015=Hː,\016\011NNuXp.t+.bB=/~\
! A4^=f\\\013\010=c`%x\030o\014\027}o2\003CrȎ\000OK\030\0060\024\017\
! Ke\023\020JTXFgI8Er(M(d\032nFM\024\026̅\0073a~\"[ꙉ\006\016*\
! Mhj侥[Wm[w+\036\004\027^\0157v\034ϵ#G4WVjN=4+h~\
! t&gd\001H]:/ӱ\012͏u۷۸\013\015qq\012l\015\036w*uvG\023}Ss\
! v\003+\\e=m^w7vy\007α0\016,gz\036\036e%Q\037z-܀\000*\
! i`J3\005H'\022>E\035t\010\035\033N˃\027á\007\"\037'ڒKV\"R\032j\025c fy\
! A\010ފwWBx\011
Update of /cvsroot/spambayes/spambayes/spambayes/resources
In directory sc8-pr-cvs1:/tmp/cvs-serv14946
Modified Files:
ui_psp.py ui.psp
Log Message:
Source image (Paint Shop Pro 7) for the new Help icon.
Index: ui_psp.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/resources/ui_psp.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ui_psp.py 3 Oct 2003 18:52:08 -0000 1.4
--- ui_psp.py 3 Oct 2003 22:00:48 -0000 1.5
***************
*** 5,169 ****
package = 'spambayes.resources'
data = "Paint Shop Pro Image File\012\032\000\000\000\000\000\005\000\000\000~BK\000\000\000.\000\000\000.\000\000\000\001\000\000F\000\000\000j\
! tX<@\002\002\000\030\000\001\000\000\000\000\001\000`\002\000\000\000\000\000\002\000\003\000\000%~BK\000\012\000\030\000\000\000~FL\000\001\000\016\000\000\000\000\012\000\000\000\
! \012\000\000\000\000\000~BK\000\001\0008\000\000\000~FL\000\001\000\004\000\000\000'>~FL\000\002\000\004\000\000\000?}?~FL\000\006\000\004\000\000\000\001\000\000\000~F\
! L\000\007\000\004\000\000\000\004\004\000\007~BK\000\020\000\035\000\000\010\000\000\000\002\000\000\000~BK\000\021\000\030\000\000\000\030\000\000\000\000\000\000\037\000\000\000\030\000\003\000\001\000\000\000\
! \000\001\001\000~BK\000\021\000\030\000\000\000\030\000\000\000\001\000\000F\000\000\000\030\000\003\000\001\000\000\000\000\001\000\000~BK\000\022\000#\013\000\000\016\000\000\000\025\013\000\000H\000\000\
\005\000\000\020JFIF\000\001\001\000\001,\001,\000\000\000C\000\002\001\001\001\001\001\002\001\001\001\002\002\002\002\002\004\003\002\002\002\002\005\004\004\003\004\006\005\006\006\006\005\006\
\006\006\007\011\010\006\007\011\007\006\006\010\013\010\011\012\012\012\012\012\006\010\013\014\013\012\014\011\012\012\012\000C\001\002\002\002\002\002\002\005\003\003\005\012\007\006\007\012\012\012\012\012\012\012\012\012\012\
\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\000\021\010\000\037\000\003\001\"\000\002\021\001\003\021\001\
! \000\033\000\001\000\002\003\001\001\000\000\000\000\000\000\000\000\000\000\000\006\007\004\005\010\003\011\0005\020\000\002\002\001\004\002\001\003\002\003\005\011\000\000\000\000\001\002\003\004\005\000\006\007\021\010\022\
! !\023\0241\"Q\011\025A\026\027#28BUaqv\000\031\001\000\003\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\003\005\002\006\001\000)\021\001\000\001\003\004\
! \001\004\001\005\001\001\000\000\000\000\000\001\002\003\004\021\000\005\022!1\006\"AQa\023Bq#\000\014\003\001\000\002\021\003\021\000?\000}]ٵbmg\
! :2ѣ5Khbݒuw1:$z _8|\034ne\\[ܱf\016%>vu\
! X<,\027aܓ'J&\013\030\031+z_dڷۊocm$3\024G\030{rqyZ\
! \024Y \024.k.v\027aߖx)'m,83..JF\032،\036\
! {t\001\0325\005N*siO\021m奏N{\0033^F|\000\001T\005\000\011֥SgTv4\
! 2\020H\001|fH\016-\0336f(ʿl\021U\027\031{tk'\016tmϑ{:\030\
! \024\024%_\036\020ݟ\010=u|g3\\y7a/!A\025#Uڴ2\010fU1Hcep\
! 7)[ם68kuڻRVz\033s\010v\017+?w\022HB\030\026h\00418[ޗv}3\
! iL\0078\027){p`,Muڥ\030[\0363;%)nj{˖Y\000NnBW\
! Zx'dh\\2Hv\031H \010#MV^+\026\033,W9c'Gkcfi(% \012ߩH\
! .z\036G\021'՛b\013kңSG\004\000>îʵkXT\016\022N?`C\
! ;+\035Yc1(3ζ?G\001\027a0F>#\020; [%_\031yqkWmf\
! :ȇ\026ܕdC*FH\031\000UGiӍI\016W1q|H:t'Z\
! rNQ\024aR<{z\017#~3CܳrPY~+2\004H\013HQU\
! \0310/{Cunɶr}\026јźl>\011u?{\015i\031U(\027H7(\004m̹\036\
! 䍗\033ܬ\033~ҳu\006.ݕAfgDc\017(k*\011\036ڡe.\003_'d܆\006\027\003c\
! 䩷׳mKB^\025\024EET\0001\006˲l\0272Ԕa\031\011$r.0\001\031bd/:\
! x([ƹN2\0271\023\005\031U%Db}&sz+n,Rx+\035\010 -G\
! 8cdrZxSa;\034216\012\035N\007gX\037m\026\033k?Q|}k;\002\
! b:ѣ#C\002?Pk'x'.ğ\034$\035\014yd>Ԉ8~\010\\\012\"%3\
! #\017!\014\036,kӥBDp{1Jx\0148ԧ{y!¼i%\010y\037|ŷ+cb7Nz\037\
! %Eg\017R\016s\025t&\006٣\035V\020\020%E\016;\007E\017\025&vy?\033K\
! 3\016_\021,6\024(\035[\017\000En\026;uZLV(O(ɏ\024\
! \007{Ƒc{^*)\013\014\011?o\022\\O/X|y\000;;vmL\021W\030\025LI\030!X\026\
! 'ݺV>PX2kܭ\035sJ6\014v\010#?~t\\,$\0339\0325SU\
! A\003\026OW.'tYx\033DYB2\031\024/bq~Y9o(bO)bqMMxc)D\036y\033z\
! .!Q\012T\023s(&3ӌ!Ykwu;\011\000c2\035E\033|\
! \032ێL`J RX\001e\005J=dw\021s-Ӓ6(2ZGS\007c#\030m댷/p;675S`F:+{=.?!WZ\032\024\0171$\
! :\022u;~Gy3<9w\032\035fYgr-+yB(\0177\016E}ߢ\011]5=\
! pFL\032c9X\036\021Y\004WƢ{\015Ua1\"\001\037t)H\030O)\004VA]5\
! lj/h,Cxoֆz\022ȠaO`=v\011\004\035Iᶶ\016ۘicc\
! Fd\013\034\020ơR5\003@\000~YzneBw3\010E\031_<^6+#09!q\037\002ii\032\
! vi\032i4ihѦiFlͩ.U91c}!Ȓ>ߟBuzi\
! s9+\007?\032a\010g_y]O%N\\~FSמ6x&2H:*~\010 A\027h>?\
! \020\030j7\024lGW\0167b#|~59MwwoNTTc/ \000!Ҫש\031\
! )G{7Ż3=e6^F\032Vn3Vy^(J\032ywѕHtV\
! AZrbtQX\012\0203M⻛\0005yb\032JԨU:я\024HQ\
! \007?YZkU.n+GIWYooI \017\0154M'NM4ѣMDw\004q\036䝹cս6\
! ==O:~0WǸoS^'R4\027\027\026gFlTL8(\021G*\013\020\002@\020LG\
! \004~\023&i馚hѯ~BK\000\022\000\021\000\000\016\000\000\000\021\000\000q\001\000\010\000\000\020JFIF\000\001\001\000\001,\001\
! ,\000\000\000C\000\005\003\004\004\004\003\005\004\004\004\005\005\005\006\007\014\010\007\007\007\007\017\013\013\011\014\021\017\022\022\021\017\021\021\023\026\034\027\023\024\032\025\021\021\030!\030\032\035\035\037\037\
! \037\023\027\"$\"\036$\034\036\037\036\000C\001\005\005\005\007\006\007\016\010\010\016\036\024\021\024\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\
! \036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\000\021\010\000F\001\003\001\"\000\002\021\001\003\021\001\000\034\000\001\000\003\000\003\001\001\000\000\000\000\000\000\000\000\
! \000\000\005\006\007\001\003\010\004\002\000F\020\000\001\004\002\001\002\003\005\003\006\011\014\003\000\000\000\001\000\002\003\004\005\021\006\022!\007\0231\024\025\"AQ\0262a#Bq\0103\
! CRV\027$&78Fbfuv\000\033\001\001\000\003\001\001\001\001\000\000\000\000\000\000\000\000\000\000\004\005\006\003\002\001\007\0001\021\000\001\003\002\
! \004\003\007\003\005\001\001\000\000\000\000\000\001\000\002\003\004\021\005!1Q\022Aa\023\"2qR\006\024B\000\014\003\001\000\002\021\003\021\000?\000Z\"\"\
! \"\"\"\"(\016w1\\;\006NM\003O3\000~Jo';e\0361Y\031\024mF\"\017l\
! IS[A3Uk0\020/:\026\012kȽ\035U\021\024%-\021\021\021\021\021\021\021\021\021\021\021\021\021\027yc\011'8^8\
! 4\001J\001t9/*E\034Cޓ\023\026\034-L\022\0164\010\033\000qKn\024(\0377[K.lGZ'M4\0148=\
! \000\003I=qa(*9\007p\021G]\021P(J7!f\011dX*'U\003#N\011\
! q9H\016|i@?dEG_ O%E\\499l\020v\010\\B\"\"\"\"g97\031lU\
! G''+آkH'h.$.31\031mwy7j$Ť㶻v66\006\
! h\021(®\022;5aDE\025IDEKe\033qY\007\026\027\015\036\007g~v\037\
! L!g@7*\025}|409|\021`N\037~kɛϲQ\\\007ע'#m\016\015\004AGqux\
! 9bz\0366-E\005\031!ֻ]\011Vo<\034v~ /q3UX$c'\
! M}K~DEWȈ#\000exse1rjlи\0233;k)~\
! }a\036wzk\036qԛP}PIծ;龑⼱|\
! \026=>zin|3\017hck͟\035\\\\g%ű\0322BvIn\036eק5-3\
! ʛ<ͩU\010%{1\000+~\015q\013\034/\014m-\023v79o@?=\006\000]\006\
! 4i\014ANH;\006gwz\007\034n::Ahm}\013\007\007\032y\035}\021\026\
! Mi\021\021\024\0075\0377[\035Dž\005P۴\"I\034gIpX\016\036\007l._7o\027p\
! r\014ۣtukWILen=OvoZ#-F)\0348{x\015\017,\032̒8w\017\015\
! Dyr+N$b+Xn9еA\027\003x\032K6epіC`\
! \000|\001N*DBg\010MsknK{Ne14;ۢ唦q\\:\004gzI\033\034\034\
! 5\013\036a\016d+ulf\035Vxf=$A\034.ڭ]\037_\001݅Zr˱8\\s\014ΰ\
! 5\037v;r8c|Obe\000oGQ_/\031ĭz5[W$c\026lBK\014\035;or7[\033n2O\016\
! 71+l\001 00\022\007v\017sܭMdt\003\020'uט/eIk̋\
! -\005W\004DY5ERg3w\017ä\030td\035\012nd\016?\020\025Po\016s=%u/\000\
! \026;\014c_W\033\\/}B^Re۟@;P~#\036\031\023w$|SH~~d=\
! \0028^f-Rmx]%ŏg=]m^FK\023%{\036湧`BO\003\000\
! j\013\037lgWx$\0222K\036\002N@]>1\034\021\034@\014ȶ-8Aƥ}ra\006:;>)\
! \000~Z?\027hv/4@kW\016\017@\017è\025Pawr\\\033\015H\037+o_W<\0246\
! 7\025i[!h# \005Qr?\\\000\004~B->\025\021\025jT/p\
! \037\025g~\006-\005Av\031\035x\032j̇{\\]\000O\000W5ݵt獣\
! MQCQQ@8\0117A~AvxՎ>-Z\016\033%\015k[\025tH\016\\ݎ}\026_C\0231~\
! m-2A\004\007\010#Dz*8I\031~j\031\031 \007\
! T5'GO\021{_a̪#ߑ\006麤*\035M0y^\021m4i\030\022VR\006\
! .jhcѲ\\\017\012*ZKbnc*FLK(^\003Iq`\
! $ʶ\020֗\037kuuaLG\021\014=ܭMȫ{Q\004v(X5b{D2\
! #l~#FJiY.xvA\007u\011;9\003\030댹ªY}\023A%V=\004\0358w\033\004֡CHJ!\010`Y\020O,ox_a\
! uvZq\005\016\026V9)ɼ (\004\006'7je[Kr!\0134#\025̙- \001GzTS!R\
! +-G<\023ƲC4.\031$B;\014{\020A\004\021MV^upĿ\026+[9c'Gkcfi(% \012S\
! \"]<#DO\0217\\\012\026oJNj\014\0060H$AGeZŪT\030}25P?W\
! [gwp㰱\013=lf;%\025y&E\030:\016\026wx\027^-z]J\
! Y\020RےeHI\0260C1 \020\030Qj6;kf\017\026P2\001F5+\
! [ݻ\034\000A\\4GjNTs\017 >\000zJ\020QI^\037/xѺ[=4&\004\017>5DI\"r~O]O%N\\~FSמ6x&\
! 2H:*} A\0274p\037\037\010wN5\033C\0126#AD@\033\\\021a}ڜѻ\
! TeV\002@?;\000t+@̽\022\001#O_暏ffg,k(Jfj7/+\
! \033\011S#O1_.2_s\016]*ը\022iRq\037n\032U\025\024\020=3&⻛k\000ӭ\023\015\
! ۘj{\007I+RV:F>E\012?(\003kզR䏒NNޑ@\017\003M4IӴM4\
! hQ\037G\021Ǩozc\017Wo>Wþ|~/\037mKӨ\\[NW*`*{\
! \006;\007\034\035&\013?U\003q!`=4M'NM4ѣ_~BK\000\022\000\014\022\000\000\016\000\000\000\021\000\000q\001\
! \000\010\000\000\020JFIF\000\001\001\000\001,\001,\000\000\000C\000\005\003\004\004\004\003\005\004\004\004\005\005\005\006\007\014\010\007\007\007\007\017\013\013\011\014\021\017\022\022\021\017\
! \021\021\023\026\034\027\023\024\032\025\021\021\030!\030\032\035\035\037\037\037\023\027\"$\"\036$\034\036\037\036\000C\001\005\005\005\007\006\007\016\010\010\016\036\024\021\024\036\036\036\036\036\036\036\036\036\
! \036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\036\000\021\010\000F\001\003\001\"\000\002\021\001\003\021\001\
! \000\034\000\001\000\003\000\003\001\001\000\000\000\000\000\000\000\000\000\000\005\006\007\003\004\010\001\002\000F\020\000\001\003\003\002\003\005\003\010\006\006\013\000\000\000\000\001\000\002\003\004\005\021\006\022\
! \007!1\023\024\"AQ\0252a\010\026#Bq3Vb\027$&CR78Ffuv\000\033\001\001\000\003\001\001\001\001\000\000\000\000\000\000\
! \000\000\000\000\004\005\006\003\002\001\007\0002\021\000\001\003\002\004\004\004\006\002\002\003\000\000\000\000\000\001\000\002\021\003\004\005!1Q\022\023Aa\"q2R\024B\006\025\
! \000\014\003\001\000\002\021\003\021\000?\000Z\"\"\"\"\"\"(\015w-Z:L\003Og\000U\006{ӷK\
! \035uFv(Q\020\031?i$g]D0\020'sDu\026\013i1舡)h\
! \023\034\020ICW\017PǨSȠ~z\017\030rSj)S\
! Q\03556M4\0148sp\000\001$XCi\\fX}\012\013' \024\"(\"*\005\004j\033K'gUQO\
! t'R\001N:\022\"8:\016cO2\007U\036~Q\0222>ߺ\002z+/s\\摐A\
! !}QԄDDDEXk[mRGqۊw(R\011\\4\027`\022ZH0\0276\026ƪNƶ\007\
! >\011'-$\034\0232\024e\\S\026\013%Յ\021\024U%\021\026W2[k5W\010|39\
! \024N\000\016G7\021\0061뜅.*d,+:\002\021a\016':l^u+MAnǴ=\
! \031\031?д>\032q\002Ѯhe}\033$xZ\017G4y\036_\0209)wX-յ.q\000dKH \036[b\
! \025y `\011oDER\021\021\021\021\021\021\021\021\021\021\021\026GUu\027)t˂;f3>-p~\
! c|\036/\035özoZBEmN=浻\001h\033\032R\
! !p6:I\0076\031(\0378;;A\024\033v\026\017Rњ\021\026Mi\
! \021\021\024\006v!buʵGߞCѣ>_U\003f]q\037Pۢyl6)\020D6:B^n\
! !q$\006\0175cff*\015\035ֆNT?c<\034\0160\017\025\003R6îZoTqG)\
! kc|R\006\001\014.G\010$\022|\014\037E|t\021\025\006#T\000\004\016\037]\007#ܪ>\
! ZgLXu&U\006I_%`q8\016kZ׆0\\\036N\006pz-\002\035)cRXoF\007wMNҢ\
! Ų\006Ip\037,nݧl\002T6)\011dry\016ŀe\000[-\036-\016\031\
! +*t^\033|tˆ\\w=`j1Ju\005:L>0>\"Cc|\007\0137Q\
! i\004dGOZv[%knFy9k\007PZ\017K\0155Oe%|`!\
! \000\000\000\005:<\024g\012&[&'X跶橤Tx8\024fncf3xJEΛ\034\
! \0345\013\036a\034A-ꚶQTұԳ1K\021z;\024\000@9M\0335uoa\
! \016\003\031\001>\033\006\002y\023(\00388E{c4^m-ɒ*j!%Xv\034;o23[6d\
! ;[()\033<\000H\"4%9\007V\035@b\024\011\035\004fc/E6\025\"@D\
! M\004\010kPśmGH-r:\0127g\033d?h\0334\033=p\006\
! |\015qi\0008S5t9}NJ\026\"2֣c-v\002=A=\031\023s$xq$\
! CX=\017\025)nԚJJxëds\011qcy\035,^FK\023%{\036湧 Ѕ\
! \007\025\037kgWx%Kx\0073\030BXY#\001\021ovnRn\000[Y\
! L`\003q\005wz:z 5T\001\005c]{\015\025ʑw\032:zg\031\02219\031i\004\036|\032\0259u\003|q]0\
! M-V\012vJO\015\024l,Mc,f2\017?\017,s\035U\"\013N{d,̨\035\003\014\
! Q\035!#;N0Ei\032FشCa\022\036[;qɮĎ\013m˝=pm5l\
! u\0011\007dNn4\035 s+kU#fu'e}\016c^SqCPpx]\0152g]F\
! GN\025nDEBf\027\010iKSpzʉ*$lsD\032\034\027\0203\0318+OQ:\015\037z6o\
! &<ٻhh\0340\002awqoR(?\004w.)fq\006汮=2q\013(5n|mMH\037Fݎ\016\
! 恞霮ɛFݭsk\022RGSM顐a4/#x@\036>X#2%Y{T1\
! I\036\031\031\033\\XIsq\006>x^Zj\027j0LÄ=\0367[Į]dZaDD\
! XDDDDDDDDDDDDE\037KOi]yីH\"bW1!0\
! HiઅT\024;d\016iA\\A\020\016EB7Hi6KڷK\033&sPD\017L\033\"\
! Ʊ\030kZ0\000\005EjTO^YI@\010Y{$qI\015#c\0322\\x\003\
! 媷jn\030E\024{E=\\ѳpA!\036.#\005i'Z\026\\\035;e\032(.\007h9DDP\
! \024\\\027\032:k\0045jj\034F\010\\辂Zd/\002 Sp=[n:Fv4\
! F}f'\016\003/U[w\030S\003\005\024\024&\022\003[\0333W\021_[m*q|3Ƿ3FZNFA\007S\012\024\\k\037YpUu2c|J\000\001\036g\000\001++*\
! \\>Z\022rv~U_F2-!\014۰R(V2W*cɠnA\007\016\034A#PN\
! 6\013F_-7TнUW\006\032IH\031\"Re:k\033\000)Ri\002\000;7\021\025\
! jDDDDDDDDD_cd:)XZd8\036]v\0329KL3IݠD\016\0040o\\OW?p\
! \".1Ɔ':\\?(ꋥbWӚ8GY\034֒\033E\007\002D\
! .\004\001p_ڻQZ.EWGT\036C k;֗\002\013FH\015g淕ҠZm\023TP[(&i \
! t\031?z\014V2!M\004\015PpZx+2s?dDEZ\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
! \021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
! \021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
! \021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\027~BK\000\003\0008\007\000\000~\
! BK\000\004\000\001\000\000\000\000\000\012\000Background\001\000\000\000\000\000\000\000\000\001\000\000F\000\000\000\000\000\000\000\000\000\000\000\001\000\000F\000\000\000\000\
! \001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
! \000\000\000\000\000\000\000\000\000\000\010\000\000\000\001\000\003\000~BK\000\005\000L\000\000\000\020\000\000\000<\000\000\000q\001\000\000\000\001\000x\000\
! \000\000\000 ]\010U\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0007\000\000\000\003\000%\033~BK\000\005\000\
! L\000\000\000\020\000\000\000<\000\000\000q\001\000\000\000\002\000x\000\000\000\000 ]\010U\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
! \000\000\000\000\000\000\0007\000\000\000\003\000%\033~BK\000\005\000L\000\000\000\020\000\000\000<\000\000\000q\001\000\000\000\003\000x\000\000\000\000 ]\
! \010U\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0007\000\000\000\003\000%\033~BK\000\004\000\005\000\000}\000\000\000\
! \004\000Text\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
! \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
! ~BK\000\015\000\010\005\000\000\010\000\000\000\001\000\000\000~BK\000\016\000\004\000\000\024\000\000\000\000\000\001\000\007\000\000\000\001\000\000\000\000\000\000\000U\000\000\000\000\000\000\000\000\000\000\
! \000\000\000\000\000\000\000\000?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\034@\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\000\000\000\000\000\000B@\000\000\000\000\000\000\000\000\000\000\
! \000\000\000\000\000\000\000\000\000\000\000\000?\010\000\000\000\016\000\000\000\006\000\000\000\003\000\010\000\000\000\000\000\000\000\006\000\000\000\002\000Y\000\000\000\010\000Webdings\000\000\000\000\
! \001\000\000\002\000\000\0005\000\000\000\000UUUUUU5@\000\001\000\001\000\000\001ףp=\012\034@ףp=\012\034@\000\000\000\000\000\000\000\000?\000\000\000\000\000\000\
! ?\000\000\000\000\000\000\000$@~BK\000\017\000\022\000\000\000\006\000\000\000\001\000\014\000\000\000\000\000\000\000~BK\000\017\000\022\000\000\000\006\000\000\000\001\000\014\000\000\000\000\
! \000~BK\000\023\000-\000\000\000-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
! \000\000\006\000\000\000\001\000\010\000\000\000a\000\000\000\006\000\000\000\002\000Y\000\000\000\010\000Webdings\000\000\000\000\001\000\000\002\000\000\000%\000\000\000\000-\
! @\000\001\000\001\000\000\001ףp=\012\034@ףp=\012\034@\000\000\000\000\000\000\000\000?\000\000\000\000\000\000?\000\000\000\000\000\000\000$@~BK\000\017\000\022\000\000\
! \000\006\000\000\000\001\000\014\000\000\000\000\000\000\000~BK\000\017\000\022\000\000\000\006\000\000\000\001\000\014\000\000\000\000\000~BK\000\023\000-\000\000\000-\000\000\
! \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\001\000\010\000\000\000N\000\000\000\006\000\000\000\
! \001\000\010\000\000\000L\000\000\000\006\000\000\000\001\000\010\000\000\000i\000\000\000\006\000\000\000\002\000Y\000\000\000\010\000Webdings\000\000\000\000\002\000\000\002\000\000\000%\000\000\000\
! \000-@\000\001\000\001\000\000\001ףp=\012\034@ףp=\012\034@\000\000\000\000\000\000\000\000?\000\000\000\000\000\000?\000\000\000\000\000\000\000$@~\
! BK\000\017\000\022\000\000\000\006\000\000\000\001\000\014\000\000\000\000\000\000\000~BK\000\017\000\022\000\000\000\006\000\000\000\001\000\014\000\000\000\000\000~BK\000\023\
! \000-\000\000\000-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\001\000\010\000\000\000\
! \000\000\000\006\000\000\000\002\000Z\000\000\000\011\000Wingdings\000\000\000\000\001\000\000\002\000\000\000%\000\000\000\000-@\000\001\000\001\000\000\001ףp\
! =\012\034@ףp=\012\034@\000\000\000\000\000\000\000\000?\000\000\000\000\000\000?\000\000\000\000\000\000\000$@~BK\000\017\000\022\000\000\000\006\000\000\000\001\000\014\000\000\000\
! \000\000\000\000~BK\000\017\000\022\000\000\000\006\000\000\000\001\000\014\000\000\000\000\000~BK\000\023\000-\000\000\000-\000\000\000\000\000\000\000\000\000\000\000\000\000\
! \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\001\000\010\000\000\000C\000\000\000\006\000\000\000\001\000\010\000\000\000D\000\000\000\006\
! \000\000\000\002\000Y\000\000\000\010\000Webdings\000\000\000\000\001\000\000\002\000\000\000#\000\000\000\000+@\000\001\000\001\000\000\001ףp=\012\034@\
! p=\012\034@\000\000\000\000\000\000\000\000?\000\000\000\000\000\000?\000\000\000\000\000\000\000$@~BK\000\017\000\022\000\000\000\006\000\000\000\001\000\014\000\000\000\000\000\000\000\
! ~BK\000\017\000\022\000\000\000\006\000\000\000\001\000\014\000\000\000\000\000~BK\000\023\000-\000\000\000-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
! \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\001\000\010\000\000\000s\000\000\000\010\000\000\000\000\000\000\000~BK\000\006\000r\000\000\000$\000\000\
! \000o\001\000\000\005\000\000\000\001\000\000.\000\000\000\000\000\000\000\000\000\000\000)\000\000\000)\000\000\000\010\000\000\000\001\000\001\000~BK\000\005\000<\000\000\000\020\000\000\000,\000\000\0004\
! \013\000\000\003\000\000\000xJG\034H80oTQ\012G\025*D(I$\016\000\000\000\000\003\0003C"
### end
Index: ui.psp
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/resources/ui.psp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
Binary files /tmp/cvsvKUtac and /tmp/cvsOJy75d differ
From anadelonbrin at users.sourceforge.net Sun Oct 5 21:24:14 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Sun Oct 5 21:24:17 2003
Subject: [Spambayes-checkins] spambayes/spambayes ImapUI.py,1.22,1.23
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv417/spambayes
Modified Files:
ImapUI.py
Log Message:
Trivial fix for imap over ssl being offered when it is available. Thanks to
Paul Wagland for pointing out the problem & fix.
Index: ImapUI.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/ImapUI.py,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -d -r1.22 -r1.23
*** ImapUI.py 29 Sep 2003 04:43:09 -0000 1.22
--- ImapUI.py 6 Oct 2003 01:24:12 -0000 1.23
***************
*** 111,115 ****
# Only offer SSL if it is available
try:
! from imaplib import IMAP_SSL
except ImportError:
parm_list = list(parm_map)
--- 111,115 ----
# Only offer SSL if it is available
try:
! from imaplib import IMAP4_SSL
except ImportError:
parm_list = list(parm_map)
From anadelonbrin at users.sourceforge.net Sun Oct 5 21:24:39 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Sun Oct 5 21:24:42 2003
Subject: [Spambayes-checkins] spambayes/spambayes ImapUI.py, 1.18.2.2,
1.18.2.3
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv484/spambayes
Modified Files:
Tag: release_1_0
ImapUI.py
Log Message:
Trivial fix for imap over ssl being offered when it is available. Thanks to
Paul Wagland for pointing out the problem & fix.
Index: ImapUI.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/ImapUI.py,v
retrieving revision 1.18.2.2
retrieving revision 1.18.2.3
diff -C2 -d -r1.18.2.2 -r1.18.2.3
*** ImapUI.py 28 Sep 2003 23:57:12 -0000 1.18.2.2
--- ImapUI.py 6 Oct 2003 01:24:37 -0000 1.18.2.3
***************
*** 109,113 ****
# Only offer SSL if it is available
try:
! from imaplib import IMAP_SSL
except ImportError:
parm_list = list(parm_map)
--- 109,113 ----
# Only offer SSL if it is available
try:
! from imaplib import IMAP4_SSL
except ImportError:
parm_list = list(parm_map)
From anadelonbrin at users.sourceforge.net Sun Oct 5 21:45:18 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Sun Oct 5 21:45:22 2003
Subject: [Spambayes-checkins] spambayes/spambayes Options.py,1.81,1.82
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv3133/spambayes
Modified Files:
Options.py
Log Message:
Update imap ssl option docstring. Thanks to Paul Wagland for pointing
out the problem & fix.
Index: Options.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/Options.py,v
retrieving revision 1.81
retrieving revision 1.82
diff -C2 -d -r1.81 -r1.82
*** Options.py 21 Sep 2003 07:01:07 -0000 1.81
--- Options.py 6 Oct 2003 01:45:16 -0000 1.82
***************
*** 879,883 ****
("use_ssl", "Connect via a secure socket layer", False,
! """NOT YET IMPLEMENTED""",
BOOLEAN, DO_NOT_RESTORE),
--- 879,887 ----
("use_ssl", "Connect via a secure socket layer", False,
! """Use SSL to connect to the server. This allows spambayes to connect
! without sending the password in plain text.
!
! Note that this does not check the server certificate at this point in
! time.""",
BOOLEAN, DO_NOT_RESTORE),
From anadelonbrin at users.sourceforge.net Sun Oct 5 21:45:46 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Sun Oct 5 21:45:50 2003
Subject: [Spambayes-checkins] spambayes/spambayes Options.py, 1.79.2.1,
1.79.2.2
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv3173/spambayes
Modified Files:
Tag: release_1_0
Options.py
Log Message:
Update imap ssl option docstring. Thanks to Paul Wagland for pointing
out the problem & fix.
Index: Options.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/Options.py,v
retrieving revision 1.79.2.1
retrieving revision 1.79.2.2
diff -C2 -d -r1.79.2.1 -r1.79.2.2
*** Options.py 21 Sep 2003 07:01:32 -0000 1.79.2.1
--- Options.py 6 Oct 2003 01:45:44 -0000 1.79.2.2
***************
*** 839,843 ****
("use_ssl", "Connect via a secure socket layer", False,
! """NOT YET IMPLEMENTED""",
BOOLEAN, DO_NOT_RESTORE),
--- 839,847 ----
("use_ssl", "Connect via a secure socket layer", False,
! """Use SSL to connect to the server. This allows spambayes to connect
! without sending the password in plain text.
!
! Note that this does not check the server certificate at this point in
! time.""",
BOOLEAN, DO_NOT_RESTORE),
From anadelonbrin at users.sourceforge.net Sun Oct 5 21:46:37 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Sun Oct 5 21:46:40 2003
Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py,1.12,1.13
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv3316/scripts
Modified Files:
sb_imapfilter.py
Log Message:
When we mark a message as deleted, mark it as read (seen) as well. This
apparently helps some mail clients, and makes sense anyway.
Index: sb_imapfilter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** sb_imapfilter.py 3 Oct 2003 06:02:47 -0000 1.12
--- sb_imapfilter.py 6 Oct 2003 01:46:35 -0000 1.13
***************
*** 423,427 ****
imap.SelectFolder(self.previous_folder.name)
self.previous_folder = None
! response = imap.uid("STORE", self.uid, "+FLAGS.SILENT", "(\\Deleted)")
self._check(response, 'store')
--- 423,427 ----
imap.SelectFolder(self.previous_folder.name)
self.previous_folder = None
! response = imap.uid("STORE", self.uid, "+FLAGS.SILENT", "(\\Deleted \\Seen)")
self._check(response, 'store')
From anadelonbrin at users.sourceforge.net Sun Oct 5 22:05:47 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Sun Oct 5 22:05:50 2003
Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py, 1.7.2.2,
1.7.2.3
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv5831/scripts
Modified Files:
Tag: release_1_0
sb_imapfilter.py
Log Message:
I missed a bit of Sjoerd's fix; here it is.
Index: sb_imapfilter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v
retrieving revision 1.7.2.2
retrieving revision 1.7.2.3
diff -C2 -d -r1.7.2.2 -r1.7.2.3
*** sb_imapfilter.py 3 Oct 2003 02:58:36 -0000 1.7.2.2
--- sb_imapfilter.py 6 Oct 2003 02:05:45 -0000 1.7.2.3
***************
*** 333,338 ****
except OverflowError:
pass
! else:
! return Time2Internaldate(time.time())
def get_substance(self):
--- 333,337 ----
except OverflowError:
pass
! return Time2Internaldate(time.time())
def get_substance(self):
From anadelonbrin at users.sourceforge.net Sun Oct 5 22:30:00 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Sun Oct 5 22:30:05 2003
Subject: [Spambayes-checkins] spambayes/spambayes Stats.py,1.1,1.2
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv9049/spambayes
Modified Files:
Stats.py
Log Message:
Add Tim's fix for the stats to the web interface stats as well. i.e. round the
percentages, don't truncate them.
Index: Stats.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/Stats.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Stats.py 30 Sep 2003 04:18:05 -0000 1.1
--- Stats.py 6 Oct 2003 02:29:58 -0000 1.2
***************
*** 92,97 ****
format_dict.update(self.__dict__)
push("SpamBayes has processed %(num_seen)d messages - " \
! "%(cls_ham)d (%(perc_ham)d%%) good, " \
! "%(cls_spam)d (%(perc_spam)d%%) spam " \
"and %(cls_unsure)d (%(perc_unsure)d%%) unsure." % format_dict)
push("%(trn_ham)d message(s) were manually " \
--- 92,97 ----
format_dict.update(self.__dict__)
push("SpamBayes has processed %(num_seen)d messages - " \
! "%(cls_ham)d (%(perc_ham).0f%%) good, " \
! "%(cls_spam)d (%(perc_spam).0f%%) spam " \
"and %(cls_unsure)d (%(perc_unsure)d%%) unsure." % format_dict)
push("%(trn_ham)d message(s) were manually " \
From anadelonbrin at users.sourceforge.net Sun Oct 5 22:38:24 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Sun Oct 5 22:38:26 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.20,1.21
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv10525
Modified Files:
CHANGELOG.txt
Log Message:
Bring up to date.
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** CHANGELOG.txt 26 Sep 2003 18:20:03 -0000 1.20
--- CHANGELOG.txt 6 Oct 2003 02:38:22 -0000 1.21
***************
*** 1,8 ****
[Note that all dates are in English, not American format - i.e. day/month/year]
! Alpha Release 7
! ===============
Skip Montanaro 26/09/2003 Correct sense of include_trained test in mbox_train.
Skip Montanaro 26/09/2003 Dump TRAINED_HDR global. Reference options[...] instead.
Alpha Release 6
--- 1,48 ----
[Note that all dates are in English, not American format - i.e. day/month/year]
! Release 1.1a1
! =============
! Tony Meyer 06/10/2003 Add Tim's fix for the stats to the web interface stats as well. i.e. round the percentages, don't truncate them.
! Tony Meyer 06/10/2003 imapfilter: When we mark a message as deleted, mark it as read (seen) as well.
! Richie Hindle 04/10/2003 Fix the help icon to look like the rest.
! Tony Meyer 03/10/2003 If sb_imapfilter.py is run without any switches, just serve the web interface (but don't launch a browser).
! Tim Peters 03/10/2003 Outlook: Stop spam and unsure messages being double-counted in the stats.
! Tony Meyer 02/10/2003 Fix a bug where messages wouldn't be trained via the web interface although no error would be reported (introduced after the previous release).
! Tony Meyer 02/10/2003 Provide a partially filled-in bug report message via the web interface.
! Tim Peters 01/10/2003 Round (not truncate) the stats information in the Outlook plugin.
! Tony Meyer 30/09/2003 Improve autoconfigure script to find the location of various config files.
! Tony Meyer 30/09/2003 Add basic statistics information to the web interface.
! Tony Meyer 29/09/2003 Add a basic help system to the web interface.
! Tony Meyer 29/09/2003 Add warning information to the web interface, for example if the user has imbalanced training, or not much training.
! Mark Hammond 29/09/2003 Don't start the pop3proxy service if a proxy is already running.
! Mark Hammond 29/09/2003 Outlook: Add slightly better stats, and a better framework to extend.
Skip Montanaro 26/09/2003 Correct sense of include_trained test in mbox_train.
Skip Montanaro 26/09/2003 Dump TRAINED_HDR global. Reference options[...] instead.
+ Mark Hammond 25/09/2003 Add patch [ 809008 ] safe start/stop and exlusive execution on windows
+ Tony Meyer 24/09/2003 sb_filter.py: If the -n switch was before the -d/-p switch, then the name wouldn't be used. This is rather unintuitive, so fix this so that the -d/-p name is used wherever the -n switch is.
+ Adam Walker 24/09/2003 pop3proxy_tray: Check if the web interface port can be bound as a simple test of if the proxy is running.
+ Tony Meyer 20/09/2003 smtpproxy is now only a module, not a script. Use sb_server instead.
+ Tony Meyer 20/09/2003 Consolidate some of the many message classes - in particular Corpus.Message is removed in favour of message.Message
+ Tony Meyer 20/09/2003 Improve the 'Find Message' query on the front page of the web UI.
+ Tony Meyer 20/09/2003 Add an advanced word query to the web UI.
+ Tony Meyer 20/09/2003 Make the review messages page on the web UI more customizable.
+
+ 1.0 Releases
+ ************
+
+ Alpha Release 7
+ ===============
+ Tony Meyer 06/10/2003 Trivial fix for imap over ssl being offered when it is available.
+ Tony Meyer 03/10/2003 Fix [ 810342 ] sb_smtpproxy does not work with smtplib.SMTP.sendmail()
+ Tony Meyer 03/10/2003 Fix [ spambayes-Bugs-816400 ] Crash because of bad date.
+ Sjoerd Mullender 02/10/2003 imapfilter: if problems occur parsing the date, just use the current date/time.
+ Tony Meyer 30/09/2003 Fix [ 814322 ] AttributeError: hdrtxt
+ Tony Meyer 29/09/2003 smtpproxy: If we successfully trained a message from the pop3proxy cache or imap server, we still said that we couldn't find it. Fix.
+ Tony Meyer 29/09/2003 smtpproxy: Fix a minor printing error that would cause a traceback.
+ Tony Meyer 29/09/2003 imapfilter: Fix trying to view imap folders before restarting and after entering in details.
+ Tony Meyer 28/09/2003 Don't use 'pragma: no_cache' to try and stop browsers caching the web interface pages.
+ Tony Meyer 26/09/2003 If the user is using Windows, also install pop3proxy_service.py and pop3proxy_tray.py.
+ Tony Meyer 24/09/2003 Fix sb_xmlrpcserver to work with the renamed options/scripts.
+ Tony Meyer 24/09/2003 Fix [ spambayes-Bugs-809769 ] TypeError when training 1.0a6
Alpha Release 6
From anadelonbrin at users.sourceforge.net Sun Oct 5 22:38:52 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Sun Oct 5 22:38:55 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.19,1.19.2.1
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv10672
Modified Files:
Tag: release_1_0
CHANGELOG.txt
Log Message:
Bring up to date.
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.19
retrieving revision 1.19.2.1
diff -C2 -d -r1.19 -r1.19.2.1
*** CHANGELOG.txt 18 Sep 2003 22:20:36 -0000 1.19
--- CHANGELOG.txt 6 Oct 2003 02:38:50 -0000 1.19.2.1
***************
*** 1,4 ****
--- 1,19 ----
[Note that all dates are in English, not American format - i.e. day/month/year]
+ Alpha Release 7
+ ===============
+ Tony Meyer 06/10/2003 Trivial fix for imap over ssl being offered when it is available.
+ Tony Meyer 03/10/2003 Fix [ 810342 ] sb_smtpproxy does not work with smtplib.SMTP.sendmail()
+ Tony Meyer 03/10/2003 Fix [ spambayes-Bugs-816400 ] Crash because of bad date.
+ Sjoerd Mullender 02/10/2003 imapfilter: if problems occur parsing the date, just use the current date/time.
+ Tony Meyer 30/09/2003 Fix [ 814322 ] AttributeError: hdrtxt
+ Tony Meyer 29/09/2003 smtpproxy: If we successfully trained a message from the pop3proxy cache or imap server, we still said that we couldn't find it. Fix.
+ Tony Meyer 29/09/2003 smtpproxy: Fix a minor printing error that would cause a traceback.
+ Tony Meyer 29/09/2003 imapfilter: Fix trying to view imap folders before restarting and after entering in details.
+ Tony Meyer 28/09/2003 Don't use 'pragma: no_cache' to try and stop browsers caching the web interface pages.
+ Tony Meyer 26/09/2003 If the user is using Windows, also install pop3proxy_service.py and pop3proxy_tray.py.
+ Tony Meyer 24/09/2003 Fix sb_xmlrpcserver to work with the renamed options/scripts.
+ Tony Meyer 24/09/2003 Fix [ spambayes-Bugs-809769 ] TypeError when training 1.0a6
+
Alpha Release 6
===============
From anadelonbrin at users.sourceforge.net Sun Oct 5 23:01:03 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Sun Oct 5 23:01:05 2003
Subject: [Spambayes-checkins] spambayes/windows autoconfigure.py,1.6,1.7
Message-ID:
Update of /cvsroot/spambayes/spambayes/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv13760/windows
Modified Files:
autoconfigure.py
Log Message:
Eudora 6 comes with a folder called "Junk", so default to using that.
Index: autoconfigure.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/windows/autoconfigure.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** autoconfigure.py 30 Sep 2003 05:23:53 -0000 1.6
--- autoconfigure.py 6 Oct 2003 03:01:01 -0000 1.7
***************
*** 165,169 ****
# another day, however.
filter_filename = "%s%sFilters.pce" % (config_location, os.sep)
! spam_folder_name = "Junk Mail"
unsure_folder_name = "Possible Junk"
header_name = options["Headers", "classification_header_name"]
--- 165,169 ----
# another day, however.
filter_filename = "%s%sFilters.pce" % (config_location, os.sep)
! spam_folder_name = "Junk"
unsure_folder_name = "Possible Junk"
header_name = options["Headers", "classification_header_name"]
From anadelonbrin at users.sourceforge.net Mon Oct 6 20:35:35 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 6 20:35:38 2003
Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py,1.13,1.14
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv19121/scripts
Modified Files:
sb_imapfilter.py
Log Message:
I think this will fix [ spambayes-Bugs-818552 ] Exchange 2000 IMAPserver & imaplib.error: APPEND command er
Index: sb_imapfilter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** sb_imapfilter.py 6 Oct 2003 01:46:35 -0000 1.13
--- sb_imapfilter.py 7 Oct 2003 00:35:32 -0000 1.14
***************
*** 404,408 ****
# The \Recent flag can be fetched, but cannot be stored
# We must remove it from the list if it is there.
! flags = re.sub(r"\\Recent ?|\\ ?Recent", "", flags)
else:
flags = None
--- 404,408 ----
# The \Recent flag can be fetched, but cannot be stored
# We must remove it from the list if it is there.
! flags = re.sub(r"\\Recent ?| ?\\Recent", "", flags)
else:
flags = None
From anadelonbrin at users.sourceforge.net Mon Oct 6 20:35:53 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 6 20:35:55 2003
Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py, 1.7.2.3,
1.7.2.4
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv19206/scripts
Modified Files:
Tag: release_1_0
sb_imapfilter.py
Log Message:
I think this will fix [ spambayes-Bugs-818552 ] Exchange 2000 IMAPserver & imaplib.error: APPEND command er
Index: sb_imapfilter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v
retrieving revision 1.7.2.3
retrieving revision 1.7.2.4
diff -C2 -d -r1.7.2.3 -r1.7.2.4
*** sb_imapfilter.py 6 Oct 2003 02:05:45 -0000 1.7.2.3
--- sb_imapfilter.py 7 Oct 2003 00:35:50 -0000 1.7.2.4
***************
*** 404,408 ****
# The \Recent flag can be fetched, but cannot be stored
# We must remove it from the list if it is there.
! flags = re.sub(r"\\Recent ?|\\ ?Recent", "", flags)
else:
flags = None
--- 404,408 ----
# The \Recent flag can be fetched, but cannot be stored
# We must remove it from the list if it is there.
! flags = re.sub(r"\\Recent ?| ?\\Recent", "", flags)
else:
flags = None
From anadelonbrin at users.sourceforge.net Mon Oct 6 20:36:32 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 6 20:36:34 2003
Subject: [Spambayes-checkins] spambayes/scripts sb_server.py,1.10,1.11
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv19329/scripts
Modified Files:
sb_server.py
Log Message:
Fix [ spambayes-Bugs-818871 ] sb_server.py calls undefined variable
Index: sb_server.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_server.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** sb_server.py 29 Sep 2003 04:43:09 -0000 1.10
--- sb_server.py 7 Oct 2003 00:36:30 -0000 1.11
***************
*** 713,720 ****
small = "ham"
if big is not None:
! self.warning = "%s\nWarning: you have much more %s than %s - " \
"SpamBayes works best with approximately even " \
! "numbers of ham and spam." % (db_status, big,
! small)
else:
self.warning = ""
--- 713,719 ----
small = "ham"
if big is not None:
! self.warning = "Warning: you have much more %s than %s - " \
"SpamBayes works best with approximately even " \
! "numbers of ham and spam." % (big, small)
else:
self.warning = ""
From anadelonbrin at users.sourceforge.net Tue Oct 7 23:12:49 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Tue Oct 7 23:12:52 2003
Subject: [Spambayes-checkins] website faq.txt,1.47,1.48
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv3587
Modified Files:
faq.txt
Log Message:
Add a FAQ about setting the Outlook plug-in to move spam to the
deleted items folder.
Index: faq.txt
===================================================================
RCS file: /cvsroot/spambayes/website/faq.txt,v
retrieving revision 1.47
retrieving revision 1.48
diff -C2 -d -r1.47 -r1.48
*** faq.txt 2 Oct 2003 00:02:18 -0000 1.47
--- faq.txt 8 Oct 2003 03:12:47 -0000 1.48
***************
*** 584,587 ****
--- 584,610 ----
register a hit on the spammer's server.
+
+ Why can't I set spam to be moved to the Deleted Items folder?
+ -------------------------------------------------------------
+
+ The problem with this is that you can also set SpamBayes to train all
+ messages moved to the designated spam folder. If you set the deleted
+ items folder as the spam folder (early versions of the plug-in allowed
+ this), then *all* messages that you delete would be trained as spam.
+
+ To get this restriction removed, you'll have to convince the developers
+ that there is a way to do this without confusing people - for example,
+ if we let you choose the deleted items folder as the spam folder, only
+ if the 'incremental training' option was off, people would get confused
+ about why it sometimes works and sometimes doesn't.
+
+ Note that Outlook 2003 has a "Junk Mail" folder that has many of the
+ deleted items folder's properties, and you *can* get SpamBayes to move
+ spam to this folder. You may also find some good advice in the answer
+ to `the question about getting SpamBayes to delete spam`_.
+
+ .. _`the question about getting SpamBayes to delete spam`: #how-can-i-configure-spambayes-to-delete-spam-rather-than-moving-it
+
+
Using SpamBayes
===============
From anadelonbrin at users.sourceforge.net Wed Oct 8 00:04:37 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 8 00:04:40 2003
Subject: [Spambayes-checkins] spambayes/spambayes message.py, 1.39,
1.40 storage.py, 1.35, 1.36
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv11152/spambayes
Modified Files:
message.py storage.py
Log Message:
Improvements to the messageinfo db:
* If the (stats) db uses a pickle, then use a pickle for the messageinfo as well.
* Close the db when we are no longer using it (the Python docs say that __del__
isn't guaranteed to be called here, but this is better than nothing. Something
needs to explicitly close it, really.
* I'm not convinced (someone hit me if I'm wrong) that we were ever sync()ing
the db, so make sure that we are.
* For safety, allow setId() to be called if an id is already set, as long as it's the
same id. (So setId("one"); setId("one") is ok).
* The pop3proxy didn't actually store the training status of messages (again
this is odd, so hit me if I'm wrong), so fix that, too.
It would be fantastic if these fixed some of the corruption problems :) Please
try at your convenience (if you had any problems) and let -dev know. Using
a pickle surely must get rid of the problems.
Index: message.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/message.py,v
retrieving revision 1.39
retrieving revision 1.40
diff -C2 -d -r1.39 -r1.40
*** message.py 2 Oct 2003 05:50:43 -0000 1.39
--- message.py 8 Oct 2003 04:04:35 -0000 1.40
***************
*** 94,98 ****
--- 94,100 ----
import sys
import types
+ import errno
import shelve
+ import pickle
import email
***************
*** 108,129 ****
CRLF_RE = re.compile(r'\r\n|\r|\n')
! class MessageInfoDB:
! def __init__(self, db_name, mode='c'):
! self.mode = mode
self.db_name = db_name
- try:
- self.dbm = dbmstorage.open(self.db_name, self.mode)
- self.db = shelve.Shelf(self.dbm)
- except dbmstorage.error:
- # This probably means that we don't have a dbm module
- # available. Print out a warning, and continue on
- # (not persisting any of this data).
- if options["globals", "verbose"]:
- print "Warning: no dbm modules available for MessageInfoDB"
- self.dbm = self.db = None
-
- def store(self):
- if self.db is not None:
- self.db.sync()
def _getState(self, msg):
--- 110,116 ----
CRLF_RE = re.compile(r'\r\n|\r|\n')
! class MessageInfoBase(object):
! def __init__(self, db_name):
self.db_name = db_name
def _getState(self, msg):
***************
*** 137,144 ****
--- 124,193 ----
if self.db is not None:
self.db[msg.getId()] = (msg.c, msg.t)
+ self.store()
def _delState(self, msg):
if self.db is not None:
del self.db[msg.getId()]
+ self.store()
+
+ class MessageInfoPickle(MessageInfoBase):
+ def __init__(self, db_name, pickle_type=1):
+ MessageInfoBase.__init__(self, db_name)
+ self.mode = pickle_type
+ self.load()
+
+ def load(self):
+ try:
+ fp = open(self.db_name, 'rb')
+ except IOError, e:
+ if e.errno == errno.ENOENT:
+ # New pickle
+ self.db = {}
+ else:
+ raise
+ else:
+ self.db = pickle.load(fp)
+ fp.close()
+
+ def close(self):
+ # we keep no resources open - nothing to do
+ pass
+
+ def store(self):
+ fp = open(self.db_name, 'wb')
+ pickle.dump(self.db, fp, self.mode)
+ fp.close()
+
+ class MessageInfoDB(MessageInfoBase):
+ def __init__(self, db_name, mode='c'):
+ MessageInfoBase.__init__(self, db_name)
+ self.mode = mode
+ self.load()
+
+ def load(self):
+ try:
+ self.dbm = dbmstorage.open(self.db_name, self.mode)
+ self.db = shelve.Shelf(self.dbm)
+ except dbmstorage.error:
+ # This probably means that we don't have a dbm module
+ # available. Print out a warning, and continue on
+ # (not persisting any of this data).
+ if options["globals", "verbose"]:
+ print "Warning: no dbm modules available for MessageInfoDB"
+ self.dbm = self.db = None
+
+ def __del__(self):
+ self.close()
+
+ def close(self):
+ # Close our underlying database. Better not assume all databases
+ # have close functions!
+ def noop(): pass
+ getattr(self.db, "close", noop)()
+ getattr(self.dbm, "close", noop)()
+
+ def store(self):
+ if self.db is not None:
+ self.db.sync()
# This should come from a Mark Hammond idea of a master db
***************
*** 148,152 ****
message_info_db_name = options["Storage", "messageinfo_storage_file"]
message_info_db_name = os.path.expanduser(message_info_db_name)
! msginfoDB = MessageInfoDB(message_info_db_name)
class Message(email.Message.Message):
--- 197,204 ----
message_info_db_name = options["Storage", "messageinfo_storage_file"]
message_info_db_name = os.path.expanduser(message_info_db_name)
! if options["Storage", "persistent_use_database"]:
! msginfoDB = MessageInfoDB(message_info_db_name)
! else:
! msginfoDB = MessageInfoPickle(message_info_db_name)
class Message(email.Message.Message):
***************
*** 182,186 ****
def setId(self, id):
! if self.id:
raise ValueError, "MsgId has already been set, cannot be changed"
--- 234,238 ----
def setId(self, id):
! if self.id and self.id != id:
raise ValueError, "MsgId has already been set, cannot be changed"
Index: storage.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/storage.py,v
retrieving revision 1.35
retrieving revision 1.36
diff -C2 -d -r1.35 -r1.36
*** storage.py 24 Sep 2003 05:28:53 -0000 1.35
--- storage.py 8 Oct 2003 04:04:35 -0000 1.36
***************
*** 577,581 ****
def onAddMessage(self, message):
'''A message is being added to an observed corpus.'''
-
self.train(message)
--- 577,580 ----
***************
*** 588,595 ****
self.bayes.learn(message.tokenize(), self.is_spam)
# self.updateprobs)
def onRemoveMessage(self, message):
'''A message is being removed from an observed corpus.'''
-
self.untrain(message)
--- 587,595 ----
self.bayes.learn(message.tokenize(), self.is_spam)
# self.updateprobs)
+ message.setId(message.key())
+ message.RememberTrained(self.is_spam)
def onRemoveMessage(self, message):
'''A message is being removed from an observed corpus.'''
self.untrain(message)
***************
*** 604,611 ****
# can raise ValueError if database is fouled. If this is the case,
# then retraining is the only recovery option.
def trainAll(self, corpus):
'''Train all the messages in the corpus'''
-
for msg in corpus:
self.train(msg)
--- 604,611 ----
# can raise ValueError if database is fouled. If this is the case,
# then retraining is the only recovery option.
+ message.RememberTrained(None)
def trainAll(self, corpus):
'''Train all the messages in the corpus'''
for msg in corpus:
self.train(msg)
***************
*** 613,617 ****
def untrainAll(self, corpus):
'''Untrain all the messages in the corpus'''
-
for msg in corpus:
self.untrain(msg)
--- 613,616 ----
***************
*** 620,627 ****
class SpamTrainer(Trainer):
'''Trainer for spam'''
-
def __init__(self, bayes, updateprobs=NO_UPDATEPROBS):
'''Constructor'''
-
Trainer.__init__(self, bayes, True, updateprobs)
--- 619,624 ----
***************
*** 629,636 ****
class HamTrainer(Trainer):
'''Trainer for ham'''
-
def __init__(self, bayes, updateprobs=NO_UPDATEPROBS):
'''Constructor'''
-
Trainer.__init__(self, bayes, False, updateprobs)
--- 626,631 ----
From anadelonbrin at users.sourceforge.net Wed Oct 8 00:12:49 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 8 00:12:51 2003
Subject: [Spambayes-checkins] spambayes/spambayes message.py,1.37,1.37.2.1
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv12237/spambayes
Modified Files:
Tag: release_1_0
message.py
Log Message:
Backport (some) improvements to the messageinfo db:
* If the (stats) db uses a pickle, then use a pickle for the messageinfo as well.
* Close the db when we are no longer using it (the Python docs say that __del__
isn't guaranteed to be called here, but this is better than nothing. Something
needs to explicitly close it, really.
* I'm not convinced (someone hit me if I'm wrong) that we were ever sync()ing
the db, so make sure that we are.
* For safety, allow setId() to be called if an id is already set, as long as it's the
same id. (So setId("one"); setId("one") is ok).
Index: message.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/message.py,v
retrieving revision 1.37
retrieving revision 1.37.2.1
diff -C2 -d -r1.37 -r1.37.2.1
*** message.py 18 Sep 2003 03:58:59 -0000 1.37
--- message.py 8 Oct 2003 04:12:47 -0000 1.37.2.1
***************
*** 92,95 ****
--- 92,97 ----
import types
import re
+ import errno
+ import pickle
import email # for message_from_string
***************
*** 107,114 ****
CRLF_RE = re.compile(r'\r\n|\r|\n')
! class MessageInfoDB:
def __init__(self, db_name, mode='c'):
self.mode = mode
! self.db_name = db_name
try:
self.dbm = dbmstorage.open(self.db_name, self.mode)
--- 109,166 ----
CRLF_RE = re.compile(r'\r\n|\r|\n')
! class MessageInfoBase(object):
! def __init__(self, db_name):
! self.db_name = db_name
!
! def _getState(self, msg):
! if self.db is not None:
! try:
! (msg.c, msg.t) = self.db[msg.getId()]
! except KeyError:
! pass
!
! def _setState(self, msg):
! if self.db is not None:
! self.db[msg.getId()] = (msg.c, msg.t)
!
! def _delState(self, msg):
! if self.db is not None:
! del self.db[msg.getId()]
!
! class MessageInfoPickle(MessageInfoBase):
! def __init__(self, db_name, pickle_type=1):
! MessageInfoBase.__init__(self, db_name)
! self.mode = pickle_type
! self.load()
!
! def load(self):
! try:
! fp = open(self.db_name, 'rb')
! except IOError, e:
! if e.errno == errno.ENOENT:
! # New pickle
! self.db = {}
! else:
! raise
! else:
! self.db = pickle.load(fp)
! fp.close()
!
! def close(self):
! # we keep no resources open - nothing to do
! pass
!
! def store(self):
! fp = open(self.db_name, 'wb')
! pickle.dump(self.db, fp, self.mode)
! fp.close()
!
! class MessageInfoDB(MessageInfoBase):
def __init__(self, db_name, mode='c'):
+ MessageInfoBase.__init__(self, db_name)
self.mode = mode
! self.load()
!
! def load(self):
try:
self.dbm = dbmstorage.open(self.db_name, self.mode)
***************
*** 122,143 ****
self.dbm = self.db = None
! def store(self):
! if self.db is not None:
! self.db.sync()
! def _getState(self, msg):
! if self.db is not None:
! try:
! (msg.c, msg.t) = self.db[msg.getId()]
! except KeyError:
! pass
! def _setState(self, msg):
if self.db is not None:
! self.db[msg.getId()] = (msg.c, msg.t)
- def _delState(self, msg):
- if self.db is not None:
- del self.db[msg.getId()]
# This should come from a Mark Hammond idea of a master db
--- 174,191 ----
self.dbm = self.db = None
! def __del__(self):
! self.close()
! def close(self):
! # Close our underlying database. Better not assume all databases
! # have close functions!
! def noop(): pass
! getattr(self.db, "close", noop)()
! getattr(self.dbm, "close", noop)()
! def store(self):
if self.db is not None:
! self.db.sync()
# This should come from a Mark Hammond idea of a master db
***************
*** 147,151 ****
message_info_db_name = options["Storage", "messageinfo_storage_file"]
message_info_db_name = os.path.expanduser(message_info_db_name)
! msginfoDB = MessageInfoDB(message_info_db_name)
class Message(email.Message.Message):
--- 195,202 ----
message_info_db_name = options["Storage", "messageinfo_storage_file"]
message_info_db_name = os.path.expanduser(message_info_db_name)
! if options["Storage", "persistent_use_database"]:
! msginfoDB = MessageInfoDB(message_info_db_name)
! else:
! msginfoDB = MessageInfoPickle(message_info_db_name)
class Message(email.Message.Message):
***************
*** 181,185 ****
def setId(self, id):
! if self.id:
raise ValueError, "MsgId has already been set, cannot be changed"
--- 232,236 ----
def setId(self, id):
! if self.id and self.id != id:
raise ValueError, "MsgId has already been set, cannot be changed"
From anadelonbrin at users.sourceforge.net Wed Oct 8 00:59:42 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 8 00:59:48 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.19.2.1,1.19.2.2
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv17356
Modified Files:
Tag: release_1_0
CHANGELOG.txt
Log Message:
Bring up to date.
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.19.2.1
retrieving revision 1.19.2.2
diff -C2 -d -r1.19.2.1 -r1.19.2.2
*** CHANGELOG.txt 6 Oct 2003 02:38:50 -0000 1.19.2.1
--- CHANGELOG.txt 8 Oct 2003 04:59:40 -0000 1.19.2.2
***************
*** 3,6 ****
--- 3,10 ----
Alpha Release 7
===============
+ Tony Meyer 08/10/2003 If the (stats) db uses a pickle, then use a pickle for the messageinfo db as well.
+ Tony Meyer 08/10/2003 Try and close the db when we are no longer using it.
+ Tony Meyer 08/10/2003 Ensure that we store the messageinfo database when changes are made.
+ Tony Meyer 07/10/2003 Fix [ 818552 ] Exchange 2000 IMAPserver & imaplib.error: APPEND command er
Tony Meyer 06/10/2003 Trivial fix for imap over ssl being offered when it is available.
Tony Meyer 03/10/2003 Fix [ 810342 ] sb_smtpproxy does not work with smtplib.SMTP.sendmail()
***************
*** 14,18 ****
Tony Meyer 26/09/2003 If the user is using Windows, also install pop3proxy_service.py and pop3proxy_tray.py.
Tony Meyer 24/09/2003 Fix sb_xmlrpcserver to work with the renamed options/scripts.
! Tony Meyer 24/09/2003 Fix [ spambayes-Bugs-809769 ] TypeError when training 1.0a6
Alpha Release 6
--- 18,22 ----
Tony Meyer 26/09/2003 If the user is using Windows, also install pop3proxy_service.py and pop3proxy_tray.py.
Tony Meyer 24/09/2003 Fix sb_xmlrpcserver to work with the renamed options/scripts.
! Tony Meyer 24/09/2003 Fix [ 809769 ] TypeError when training 1.0a6
Alpha Release 6
From anadelonbrin at users.sourceforge.net Wed Oct 8 01:00:34 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 8 01:00:37 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.21,1.22
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv17591
Modified Files:
CHANGELOG.txt
Log Message:
Bring up to date.
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -d -r1.21 -r1.22
*** CHANGELOG.txt 6 Oct 2003 02:38:22 -0000 1.21
--- CHANGELOG.txt 8 Oct 2003 05:00:30 -0000 1.22
***************
*** 3,6 ****
--- 3,8 ----
Release 1.1a1
=============
+ Tony Meyer 08/10/2003 When training via the web interface record the training in the messageinfo db.
+ Tony Meyer 07/10/2003 Fix [ 818871 ] sb_server.py calls undefined variable
Tony Meyer 06/10/2003 Add Tim's fix for the stats to the web interface stats as well. i.e. round the percentages, don't truncate them.
Tony Meyer 06/10/2003 imapfilter: When we mark a message as deleted, mark it as read (seen) as well.
***************
*** 33,36 ****
--- 35,42 ----
Alpha Release 7
===============
+ Tony Meyer 08/10/2003 If the (stats) db uses a pickle, then use a pickle for the messageinfo db as well.
+ Tony Meyer 08/10/2003 Try and close the db when we are no longer using it.
+ Tony Meyer 08/10/2003 Ensure that we store the messageinfo database when changes are made.
+ Tony Meyer 07/10/2003 Fix [ 818552 ] Exchange 2000 IMAPserver & imaplib.error: APPEND command er
Tony Meyer 06/10/2003 Trivial fix for imap over ssl being offered when it is available.
Tony Meyer 03/10/2003 Fix [ 810342 ] sb_smtpproxy does not work with smtplib.SMTP.sendmail()
***************
*** 44,48 ****
Tony Meyer 26/09/2003 If the user is using Windows, also install pop3proxy_service.py and pop3proxy_tray.py.
Tony Meyer 24/09/2003 Fix sb_xmlrpcserver to work with the renamed options/scripts.
! Tony Meyer 24/09/2003 Fix [ spambayes-Bugs-809769 ] TypeError when training 1.0a6
Alpha Release 6
--- 50,54 ----
Tony Meyer 26/09/2003 If the user is using Windows, also install pop3proxy_service.py and pop3proxy_tray.py.
Tony Meyer 24/09/2003 Fix sb_xmlrpcserver to work with the renamed options/scripts.
! Tony Meyer 24/09/2003 Fix [ 809769 ] TypeError when training 1.0a6
Alpha Release 6
From anadelonbrin at users.sourceforge.net Wed Oct 8 23:04:17 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 8 23:04:20 2003
Subject: [Spambayes-checkins] spambayes/spambayes hammiebulk.py, 1.10,
1.10.2.1
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv21864/spambayes
Modified Files:
Tag: release_1_0
hammiebulk.py
Log Message:
Fix bug reported on the list by John D.
Somehow an old-style options statement was left in hammiebulk.
Index: hammiebulk.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/hammiebulk.py,v
retrieving revision 1.10
retrieving revision 1.10.2.1
diff -C2 -d -r1.10 -r1.10.2.1
*** hammiebulk.py 18 Sep 2003 15:36:30 -0000 1.10
--- hammiebulk.py 9 Oct 2003 03:04:15 -0000 1.10.2.1
***************
*** 69,74 ****
# Probability at which a message is considered spam
! SPAM_THRESHOLD = options.spam_cutoff
! HAM_THRESHOLD = options.ham_cutoff
--- 69,74 ----
# Probability at which a message is considered spam
! SPAM_THRESHOLD = options["Categorization", "spam_cutoff"]
! HAM_THRESHOLD = options["Categorization", "ham_cutoff"]
From anadelonbrin at users.sourceforge.net Wed Oct 8 23:04:50 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 8 23:04:56 2003
Subject: [Spambayes-checkins] spambayes/spambayes hammiebulk.py,1.10,1.11
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv21895/spambayes
Modified Files:
hammiebulk.py
Log Message:
Fix bug reported on the list by John D.
Somehow an old-style options statement was left in hammiebulk.
Index: hammiebulk.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/hammiebulk.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** hammiebulk.py 18 Sep 2003 15:36:30 -0000 1.10
--- hammiebulk.py 9 Oct 2003 03:04:48 -0000 1.11
***************
*** 69,74 ****
# Probability at which a message is considered spam
! SPAM_THRESHOLD = options.spam_cutoff
! HAM_THRESHOLD = options.ham_cutoff
--- 69,74 ----
# Probability at which a message is considered spam
! SPAM_THRESHOLD = options["Categorization", "spam_cutoff"]
! HAM_THRESHOLD = options["Categorization", "ham_cutoff"]
From anadelonbrin at users.sourceforge.net Thu Oct 9 18:39:59 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Thu Oct 9 18:40:02 2003
Subject: [Spambayes-checkins] spambayes NEWTRICKS.txt,1.3,1.4
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv8748
Modified Files:
NEWTRICKS.txt
Log Message:
Add an idea from Thomas Bornhaupt.
Index: NEWTRICKS.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/NEWTRICKS.txt,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** NEWTRICKS.txt 15 Sep 2003 22:41:31 -0000 1.3
--- NEWTRICKS.txt 9 Oct 2003 22:39:57 -0000 1.4
***************
*** 20,21 ****
--- 20,24 ----
level. Also a token indicating the ratio of message length to the
number of tokens, and a token indicating the number of tokens.
+
+ - A token indicating the ratio of hapax legomena to previously seen
+ tokens in the message.
From mhammond at users.sourceforge.net Thu Oct 9 21:01:15 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Thu Oct 9 21:01:19 2003
Subject: [Spambayes-checkins] spambayes/Outlook2000 msgstore.py,1.76,1.77
Message-ID:
Update of /cvsroot/spambayes/spambayes/Outlook2000
In directory sc8-pr-cvs1:/tmp/cvs-serv29394
Modified Files:
msgstore.py
Log Message:
It is no longer necessary to pre-load our default message store, and
doing so caused us to fail if this default store was in offline mode.
Index: msgstore.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/msgstore.py,v
retrieving revision 1.76
retrieving revision 1.77
diff -C2 -d -r1.76 -r1.77
*** msgstore.py 15 Sep 2003 06:25:33 -0000 1.76
--- msgstore.py 10 Oct 2003 01:01:12 -0000 1.77
***************
*** 169,173 ****
self.mapi_msg_stores = {}
self.default_store_bin_eid = None
- self._GetMessageStore(None)
os.chdir(cwd)
--- 169,172 ----
From montanaro at users.sourceforge.net Fri Oct 10 22:37:45 2003
From: montanaro at users.sourceforge.net (Skip Montanaro)
Date: Fri Oct 10 22:37:49 2003
Subject: [Spambayes-checkins] spambayes NEWTRICKS.txt,1.4,1.5
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv32567
Modified Files:
NEWTRICKS.txt
Log Message:
add strip punctuation and map digits ideas
Index: NEWTRICKS.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/NEWTRICKS.txt,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** NEWTRICKS.txt 9 Oct 2003 22:39:57 -0000 1.4
--- NEWTRICKS.txt 11 Oct 2003 02:37:42 -0000 1.5
***************
*** 23,24 ****
--- 23,32 ----
- A token indicating the ratio of hapax legomena to previously seen
tokens in the message.
+
+ - Punctuation sometimes gets inserted in otherwise spammy words or phrases,
+ e.g.: "Ch-eck ou=t ou-r sel)ection _of grea)t R_X -emgffj". It might be
+ helpful to try stripping punctuation. (Idea from Paul Sorenson)
+
+ - Similarly, some letters get replaced by numbers, e.g.: "V1agra" instead of
+ "Viagra". Mapping numbers to suitable letters might help in some
+ situations.
From anadelonbrin at users.sourceforge.net Mon Oct 13 00:49:54 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 13 00:49:58 2003
Subject: [Spambayes-checkins] website unix.ht,1.7,1.8
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv27307
Modified Files:
unix.ht
Log Message:
Add the two contributed scripts to run sb_server as a daemon. Should a
combination of these be added to the contrib directory, perhaps?
Index: unix.ht
===================================================================
RCS file: /cvsroot/spambayes/website/unix.ht,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** unix.ht 25 Sep 2003 01:20:20 -0000 1.7
--- unix.ht 13 Oct 2003 04:49:52 -0000 1.8
***************
*** 54,58 ****
If your mail program fetches mail using POP3, then you should run pop3proxy.py.
IMAP
--- 54,193 ----
If your mail program fetches mail using POP3, then you should run sb_server.py.
!
! You might wish to set sb_server.py to run as a daemon - Fernando NIO and
! Dave Handley have provided these scripts (respectively) which will allow you
! to do this:
!
! #!/bin/bash
! #
! # spambayes: Starts the spam filter as a pop3 proxy
! #
! # Version: @(#) /etc/init.d/spambayes 1.0
! #
! # chkconfig: - 95 21
! # description: This shell script takes care of starting and stopping \
! # spambayes pop3 proxy
! # processname: sb_server.py
! #
! # Source function library.
! . /etc/init.d/functions
!
! SBPROXY=/opt/bin/sb_server.py
! SBLOG=/var/log/spam.log
! SBDIR=/opt/sb_data
!
! [ -x $SBPROXY ] || exit 0
!
! RETVAL=0
!
! start () {
! date >> $SBLOG
! echo -n "Starting SpamBayes POP3 proxy: "
! if [ ! -d $SBDIR ] ; then
! echo "Repertoire $SBDIR non present" >> $SBLOG
! RETVAL=1
! else
! cd $SBDIR
! ($SBPROXY 2>&1 >> $SBLOG) &
! RETVAL=$?
! fi
! action "" [ $RETVAL = 0 ]
! return $RETVAL
! }
!
! stop () {
! # stop daemon
! date >> $SBLOG
! echo -n "Stopping SpamBayes POP3 proxy: "
! killproc $SBPROXY 1
! RETVAL=$?
! echo
! [ $RETVAL = 0 ]
! return $RETVAL
! }
!
! restart () {
! stop
! start
! RETVAL=$?
! return $RETVAL
! }
!
! # See how we were called.
! case "$1" in
! start)
! start
! ;;
! stop)
! stop
! ;;
! status)
! status $SBPROXY
! RETVAL=$?
! ;;
! restart)
! restart
! ;;
! *)
! echo "Usage: $0 {start|stop|restart|status}"
! RETVAL=1
! esac
!
! exit $RETVAL
!
!
!
! #!/bin/sh
! #
! # spamd This shell script takes care of starting and stopping
! # the spambayes deamon.
! #
! # Author: Dave Handley
! # Date: 11 Oct 03
! #
!
! # Source function library.
! . /etc/rc.d/init.d/functions
!
! # Source networking configuration.
! . /etc/sysconfig/network
!
! RETVAL=0
!
! # See how we were called.
! case "$1" in
! start)
! # Start daemons.
! echo -n "Starting spamd: "
! cd /etc/spamd/
! daemon /usr/local/bin/sb_server.py &
! RETVAL=$?
! echo
! ;;
! stop)
! # Stop daemons.
! echo -n "Shutting down spamd: "
! killproc sb_server.py
! RETVAL=$?
! echo
! ;;
! restart|reload)
! $0 stop
! $0 start
! RETVAL=$?
! ;;
! status)
! status sb_server.py
! RETVAL=$?
! ;;
! *)
! echo "Usage: spamd {start|stop|restart|status}"
! exit 1
! esac
!
! exit $RETVAL
!
!
IMAP
From anadelonbrin at users.sourceforge.net Mon Oct 13 17:30:59 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 13 17:31:20 2003
Subject: [Spambayes-checkins] website faq.txt,1.48,1.49
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv12742
Modified Files:
faq.txt
Log Message:
Add three new FAQs - one for the DBRunRecovery error (based on the most
recent comments to the list from me and Richie), one for the 1.0a6 database
problem, and one for the fact that pop3proxy_service and pop3proxy_tray
are not installed by setup.py in releases up to and including 1.0a6.
Index: faq.txt
===================================================================
RCS file: /cvsroot/spambayes/website/faq.txt,v
retrieving revision 1.48
retrieving revision 1.49
diff -C2 -d -r1.48 -r1.49
*** faq.txt 8 Oct 2003 03:12:47 -0000 1.48
--- faq.txt 13 Oct 2003 21:30:56 -0000 1.49
***************
*** 1031,1037 ****
then you are probably not using dumbdbm. If you have three files (probably
called ``hammie.db.dir``, ``hammie.db.dat`` and ``hammie.db.bak``), then you
! most likely are using dumbdbm, and should stop.
! Support for dumbdbm will be dropped in a future release.
Note that none of this applies to the Outlook plug-in, which avoids it
--- 1031,1038 ----
then you are probably not using dumbdbm. If you have three files (probably
called ``hammie.db.dir``, ``hammie.db.dat`` and ``hammie.db.bak``), then you
! most likely are using dumbdbm, and should stop. Note that users of the
! pop3proxy_service can not currently use which_database.py.
! Support for dumbdbm has been dropped since release 1.0a6.
Note that none of this applies to the Outlook plug-in, which avoids it
***************
*** 1040,1043 ****
--- 1041,1105 ----
.. _which_database.py: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/spambayes/spambayes/utilities/which_database.py?rev=HEAD&content-type=text/plain
.. _pybsddb: http://pybsddb.sourceforge.net/
+
+
+ I get a "DBRunRecoveryError" message.
+ -------------------------------------
+
+ If you get a message that looks like:
+ DBRunRecoveryError: (-30982, 'DB_RUNRECOVERY: Fatal error, run database
+ recovery -- fatal region error detected; run recovery')
+ This, sadly, means that your training database is corrupted, and you have
+ no choice but to delete it and train again from scratch. We don't know what
+ causes this to happen, but we are trying to fix it. If you find it happens
+ reliably for you (ie. the problem always comes back after deleting the
+ database and retraining), please post a message saying as much to
+ spambayes@python.org - no-one has yet found a case where we can reliably
+ reproduce the problem, so tracking it down is proving very difficult.
+
+ If you don't want to risk it happening again, switch to using the pickle
+ storage (web interface: Configuration / Advanced Configuration /
+ Storage Options / Use database for storage: No) instead.
+
+ Note, however, that there are two issues with this:
+
+ * If you have an existing database and use the web interface to change
+ to a pickle, you'll get a '500' error as spambayes tries to open your
+ non-pickle as a pickle. You can simply stop SpamBayes, remove the old
+ database, and start SpamBayes up again to fix this.
+ * The "message info" database in the 1.0x releases *always* uses a dbm,
+ not a pickle. (This is fixed in cvs). Unless you are using
+ sb_imapfilter.py, you can just delete this file if it becomes corrupted,
+ though (assuming normal use of spambayes). Note that if you are using a
+ pickle and get a DBRunRecoveryError, it *has* to be this file that is
+ corrupted (a pickle will never give you one of those errors).
+
+ You may also wish to read the `my database is corrupted`_ FAQ.
+
+ .. _my database is corrupted: #my-database-keeps-getting-corrupted
+
+
+ The readme says that I can delete the files after doing "setup.py install", but then I can't find pop3proxy_service.py or pop3proxy_tray.py.
+ --------------------------------------------------------------------------------------------------------------------------------------------
+
+ This is a mistake in either the readme or setup.py in the 1.0a6 release.
+ It's fixed for the next release, so that pop3proxy_service.py and
+ pop3proxy_tray.py will also be installed to the Python scripts directory
+ (if you are running Windows).
+ For the moment, you just have to copy those files manually, or just not
+ delete them, and run them from the expanded archive location.
+
+
+ I can't train via the web interface in 1.0a6!
+ ---------------------------------------------
+
+ There is a known problem with the 1.0a6 release, which is fixed in CVS,
+ and so fixed for the next release. Basically you can't use the database
+ after making any changes via the web interface configuration pages.
+ To work around this, either restart SpamBayes after using the configuration
+ pages, or use 1.0a5 until the next release comes out.
+
+ The '500' error you receive will end with "Object does not support item
+ assignment". It may also show up on other pages than the review messages
+ one, such as looking up a word in the database.
From anadelonbrin at users.sourceforge.net Mon Oct 13 17:44:29 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 13 17:44:32 2003
Subject: [Spambayes-checkins] spambayes NEWTRICKS.txt,1.5,1.6
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv15987
Modified Files:
NEWTRICKS.txt
Log Message:
Add the suggestions from [ 817813 ] Consider bad spelling a sign of spam
Index: NEWTRICKS.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/NEWTRICKS.txt,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** NEWTRICKS.txt 11 Oct 2003 02:37:42 -0000 1.5
--- NEWTRICKS.txt 13 Oct 2003 21:44:27 -0000 1.6
***************
*** 20,24 ****
level. Also a token indicating the ratio of message length to the
number of tokens, and a token indicating the number of tokens.
!
- A token indicating the ratio of hapax legomena to previously seen
tokens in the message.
--- 20,26 ----
level. Also a token indicating the ratio of message length to the
number of tokens, and a token indicating the number of tokens.
! Also, [817813] add a "not in database" token (I'm not sure about this
! one, but I can't articulate why).
!
- A token indicating the ratio of hapax legomena to previously seen
tokens in the message.
***************
*** 31,32 ****
--- 33,38 ----
"Viagra". Mapping numbers to suitable letters might help in some
situations.
+
+ - [817813] Add a spelling checker and reasonable sized dictionary and generate
+ a "not in dictionary" token.
+
From anadelonbrin at users.sourceforge.net Mon Oct 13 18:02:12 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 13 18:02:15 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.22,1.23
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv20177
Modified Files:
CHANGELOG.txt
Log Message:
Copy Skip's mboxtrain fix into the 1_0 branch.
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -d -r1.22 -r1.23
*** CHANGELOG.txt 8 Oct 2003 05:00:30 -0000 1.22
--- CHANGELOG.txt 13 Oct 2003 22:02:09 -0000 1.23
***************
*** 19,23 ****
Mark Hammond 29/09/2003 Don't start the pop3proxy service if a proxy is already running.
Mark Hammond 29/09/2003 Outlook: Add slightly better stats, and a better framework to extend.
- Skip Montanaro 26/09/2003 Correct sense of include_trained test in mbox_train.
Skip Montanaro 26/09/2003 Dump TRAINED_HDR global. Reference options[...] instead.
Mark Hammond 25/09/2003 Add patch [ 809008 ] safe start/stop and exlusive execution on windows
--- 19,22 ----
***************
*** 48,51 ****
--- 47,51 ----
Tony Meyer 29/09/2003 imapfilter: Fix trying to view imap folders before restarting and after entering in details.
Tony Meyer 28/09/2003 Don't use 'pragma: no_cache' to try and stop browsers caching the web interface pages.
+ Skip Montanaro 26/09/2003 Correct sense of include_trained test in mbox_train.
Tony Meyer 26/09/2003 If the user is using Windows, also install pop3proxy_service.py and pop3proxy_tray.py.
Tony Meyer 24/09/2003 Fix sb_xmlrpcserver to work with the renamed options/scripts.
From anadelonbrin at users.sourceforge.net Mon Oct 13 18:03:14 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 13 18:03:16 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.19.2.2,1.19.2.3
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv20315
Modified Files:
Tag: release_1_0
CHANGELOG.txt
Log Message:
Copy Skip's mboxtrain fix into the 1_0 branch.
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.19.2.2
retrieving revision 1.19.2.3
diff -C2 -d -r1.19.2.2 -r1.19.2.3
*** CHANGELOG.txt 8 Oct 2003 04:59:40 -0000 1.19.2.2
--- CHANGELOG.txt 13 Oct 2003 22:03:11 -0000 1.19.2.3
***************
*** 16,19 ****
--- 16,20 ----
Tony Meyer 29/09/2003 imapfilter: Fix trying to view imap folders before restarting and after entering in details.
Tony Meyer 28/09/2003 Don't use 'pragma: no_cache' to try and stop browsers caching the web interface pages.
+ Skip Montanaro 26/09/2003 Correct sense of include_trained test in mbox_train.
Tony Meyer 26/09/2003 If the user is using Windows, also install pop3proxy_service.py and pop3proxy_tray.py.
Tony Meyer 24/09/2003 Fix sb_xmlrpcserver to work with the renamed options/scripts.
From anadelonbrin at users.sourceforge.net Mon Oct 13 18:03:14 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 13 18:03:19 2003
Subject: [Spambayes-checkins] spambayes/scripts sb_mboxtrain.py,1.3,1.3.2.1
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv20315/scripts
Modified Files:
Tag: release_1_0
sb_mboxtrain.py
Log Message:
Copy Skip's mboxtrain fix into the 1_0 branch.
Index: sb_mboxtrain.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_mboxtrain.py,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -C2 -d -r1.3 -r1.3.2.1
*** sb_mboxtrain.py 18 Sep 2003 15:36:30 -0000 1.3
--- sb_mboxtrain.py 13 Oct 2003 22:03:12 -0000 1.3.2.1
***************
*** 158,166 ****
if msg_train(h, msg, is_spam, force):
trained += 1
! if not options["Headers", "include_trained"]:
# Write it out with the Unix "From " line
outf.write(msg.as_string(True))
! if not options["Headers", "include_trained"]:
outf.seek(0)
try:
--- 158,166 ----
if msg_train(h, msg, is_spam, force):
trained += 1
! if options["Headers", "include_trained"]:
# Write it out with the Unix "From " line
outf.write(msg.as_string(True))
! if options["Headers", "include_trained"]:
outf.seek(0)
try:
From anadelonbrin at users.sourceforge.net Mon Oct 13 21:54:57 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 13 21:55:00 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt, 1.23,
1.24 README-DEVEL.txt, 1.5, 1.6
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv24856
Modified Files:
CHANGELOG.txt README-DEVEL.txt
Log Message:
Bring changelog up-to-date.
Add some hints (based on Tim's comments) about how to go about *using*
the test setup, including interpreting the results. This is from memory and
Tim's most recent post, so there's lots more hints from the archives that I'll
try and get around to adding at some point (unless someone beats me to it).
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** CHANGELOG.txt 13 Oct 2003 22:02:09 -0000 1.23
--- CHANGELOG.txt 14 Oct 2003 01:54:51 -0000 1.24
***************
*** 3,6 ****
--- 3,7 ----
Release 1.1a1
=============
+ Mark Hammond 10/10/2003 It is no longer necessary to pre-load our default message store, and doing so caused us to fail if this default store was in offline mode.
Tony Meyer 08/10/2003 When training via the web interface record the training in the messageinfo db.
Tony Meyer 07/10/2003 Fix [ 818871 ] sb_server.py calls undefined variable
***************
*** 34,37 ****
--- 35,39 ----
Alpha Release 7
===============
+ Tony Meyer 09/10/2003 An old-style option was left in hammiebulk; fix this.
Tony Meyer 08/10/2003 If the (stats) db uses a pickle, then use a pickle for the messageinfo db as well.
Tony Meyer 08/10/2003 Try and close the db when we are no longer using it.
Index: README-DEVEL.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/README-DEVEL.txt,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** README-DEVEL.txt 20 Sep 2003 05:01:07 -0000 1.5
--- README-DEVEL.txt 14 Oct 2003 01:54:52 -0000 1.6
***************
*** 320,323 ****
--- 320,452 ----
a single training set), but harder to spot using N-fold c-v.
+ Testing a change and posting the results
+ ========================================
+
+ (Adapted from clues Tim posted on the spambayes and spambayes-dev lists)
+
+ Firstly, setup your data as above; it's really not worth the hassle to
+ come up with a different scheme. If you use the Outlook plug-in, the
+ export.py script in the Outlook2000 directory will export all the spam
+ and ham in your 'training' folders for you into this format (or close
+ enough).
+
+ Basically the idea is that you should have 10 sets of data, each with
+ around 500 messages in them; this means about 5000 spam and 5000 ham.
+ Obviously if you're testing something to do with the size of a corpus,
+ you'll want to change that. You then want to run
+ timcv.py -n 10 > std.txt
+ (call std.txt whatever you like), and then
+ rates.py std.txt
+ You end up with two files, std.txt, which has the raw results, and stds.txt,
+ which has more of a summary of the results.
+
+ Now make the change to the code or options, and repeat the process,
+ giving the files different names (note that rates.py will automatically
+ choose the name for the output file, based on the input one).
+
+ You've now got the data you need, but you have to interpret it. The
+ simplest way of all is just to post it to spambayes-dev@python.org and let
+ someone else do it for you . The data you should post is the output of
+ cmp.py stds.txt alts.txt
+ along with the output of
+ table.py stds.txt alts.txt
+ (note that these just print to stdout).
+
+ Other information you can find in the 'raw' output (std.txt, above) are
+ histograms of the ham/spam spread, and a copy of the options settings.
+
+ Interpreting cmp.py output
+ --------------------------
+
+ (Using an example from Tim on spambayes-dev)
+
+ > cv_octs.txt -> cv_oct_subjs.txt
+ > -> tested 488 hams & 897 spams against 1824 hams & 3501 spams
+ > -> tested 462 hams & 863 spams against 1850 hams & 3535 spams
+ > -> tested 475 hams & 863 spams against 1837 hams & 3535 spams
+ > -> tested 430 hams & 887 spams against 1882 hams & 3511 spams
+ > -> tested 457 hams & 888 spams against 1855 hams & 3510 spams
+ > -> tested 488 hams & 897 spams against 1824 hams & 3501 spams
+ > -> tested 462 hams & 863 spams against 1850 hams & 3535 spams
+ > -> tested 475 hams & 863 spams against 1837 hams & 3535 spams
+ > -> tested 430 hams & 887 spams against 1882 hams & 3511 spams
+ > -> tested 457 hams & 888 spams against 1855 hams & 3510 spams
+ >
+ > false positive percentages
+ > 0.000 0.000 tied
+ > 0.000 0.000 tied
+ > 0.000 0.000 tied
+ > 0.000 0.000 tied
+ > 0.219 0.219 tied
+ >
+ > won 0 times
+ > tied 5 times
+ > lost 0 times
+
+ So all 5 runs tied on FP. That tells us much more than that the *net*
+ effect across 5 runs was nil on FP: it tells us that there are no hidden
+ glitches hiding behind that "net nothing" -- it was no change across the board.
+
+ > total unique fp went from 1 to 1 tied
+ > mean fp % went from 0.0437636761488 to 0.0437636761488 tied
+ >
+ > false negative percentages
+ > 2.007 2.007 tied
+ > 1.390 1.390 tied
+ > 1.622 1.622 tied
+ > 2.029 1.917 won -5.52%
+ > 2.703 2.477 won -8.36%
+ >
+ > won 2 times
+ > tied 3 times
+ > lost 0 times
+
+ When evaluating a small change, I'm heartened to see that in no run did it lose.
+ At worst it tied, and twice it helped a little. That's encouraging.
+
+ What the histograms would tell us that we can't tell from this is whether you
+ could have done just as well without the change by raising your ham cutoff a little.
+ That would also tie on FP, and *may* also get rid of the same number (or even
+ more) of FN.
+
+ > total unique fn went from 86 to 83 won -3.49%
+ > mean fn % went from 1.95029003772 to 1.88269707836 won -3.47%
+ >
+ > ham mean ham sdev
+ > 0.57 0.58 +1.75% 4.63 4.77 +3.02%
+ > 0.08 0.07 -12.50% 1.20 1.01 -15.83%
+ > 0.36 0.29 -19.44% 3.61 3.23 -10.53%
+ > 0.08 0.11 +37.50% 0.89 1.18 +32.58%
+ > 0.72 0.76 +5.56% 6.80 7.06 +3.82%
+ >
+ > ham mean and sdev for all runs
+ > 0.37 0.37 +0.00% 4.10 4.16 +1.46%
+
+ That's a good example of grand averages hiding the truth: the averaged change
+ in the mean ham score was 0 across all 5 runs, but *within* the 5 runs it slobbered
+ around wildly, from decreasing 20% to increasing 40%(!).
+
+ > spam mean spam sdev
+ > 96.43 96.44 +0.01% 15.89 15.89 +0.00%
+ > 97.01 97.07 +0.06% 13.79 13.70 -0.65%
+ > 97.14 97.16 +0.02% 14.05 14.02 -0.21%
+ > 96.52 96.56 +0.04% 15.65 15.52 -0.83%
+ > 95.53 95.63 +0.10% 17.47 17.31 -0.92%
+ >
+ > spam mean and sdev for all runs
+ > 96.52 96.57 +0.05% 15.46 15.37 -0.58%
+
+ That's good to see: it's a consistent win for spam scores across runs,
+ although an almost imperceptible one. It's good when the mean spam score rises,
+ and it's good when sdev (for ham or spam) decreases.
+
+ > ham/spam mean difference: 96.15 96.20 +0.05
+
+ This is a slight win for the chance, although seeing the details gives cause
+ to worry some about the effect on ham: the ham sdev increased overall, and
+ the effects on ham mean and ham sdev varied wildly across runs. OTOH, the
+ "before" numbers for ham mean and ham sdev varied wildly across runs already.
+ That gives cause to worry some about the data .
+
Making a source release
From anadelonbrin at users.sourceforge.net Mon Oct 13 22:05:46 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 13 22:05:48 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.19.2.3,1.19.2.4
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv26463
Modified Files:
Tag: release_1_0
CHANGELOG.txt
Log Message:
Bring changelog up-to-date.
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.19.2.3
retrieving revision 1.19.2.4
diff -C2 -d -r1.19.2.3 -r1.19.2.4
*** CHANGELOG.txt 13 Oct 2003 22:03:11 -0000 1.19.2.3
--- CHANGELOG.txt 14 Oct 2003 02:05:43 -0000 1.19.2.4
***************
*** 3,6 ****
--- 3,7 ----
Alpha Release 7
===============
+ Tony Meyer 09/10/2003 An old-style option was left in hammiebulk; fix this.
Tony Meyer 08/10/2003 If the (stats) db uses a pickle, then use a pickle for the messageinfo db as well.
Tony Meyer 08/10/2003 Try and close the db when we are no longer using it.
From montanaro at users.sourceforge.net Tue Oct 14 15:10:07 2003
From: montanaro at users.sourceforge.net (Skip Montanaro)
Date: Tue Oct 14 15:10:13 2003
Subject: [Spambayes-checkins] spambayes/utilities which_database.py,1.4,1.5
Message-ID:
Update of /cvsroot/spambayes/spambayes/utilities
In directory sc8-pr-cvs1:/tmp/cvs-serv4934
Modified Files:
which_database.py
Log Message:
need to call os.path.expanduser() since paths like ~/hammie.db are valid in
the options file
Index: which_database.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/utilities/which_database.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** which_database.py 26 Sep 2003 04:23:49 -0000 1.4
--- which_database.py 14 Oct 2003 19:10:04 -0000 1.5
***************
*** 73,77 ****
print
! hammie = options["Storage", "persistent_storage_file"]
use_dbm = options["Storage", "persistent_use_database"]
if not use_dbm:
--- 73,77 ----
print
! hammie = os.path.expanduser(options["Storage", "persistent_storage_file"])
use_dbm = options["Storage", "persistent_use_database"]
if not use_dbm:
From montanaro at users.sourceforge.net Tue Oct 14 15:24:08 2003
From: montanaro at users.sourceforge.net (Skip Montanaro)
Date: Tue Oct 14 15:24:11 2003
Subject: [Spambayes-checkins] spambayes/utilities which_database.py,1.5,1.6
Message-ID:
Update of /cvsroot/spambayes/spambayes/utilities
In directory sc8-pr-cvs1:/tmp/cvs-serv7406
Modified Files:
which_database.py
Log Message:
fix bug in dbhash/bsddb[3] distinction
avoid overriding builtin 'str'
Index: which_database.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/utilities/which_database.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** which_database.py 14 Oct 2003 19:10:04 -0000 1.5
--- which_database.py 14 Oct 2003 19:24:06 -0000 1.6
***************
*** 44,49 ****
db["1"] = "1"
db.close()
! str = whichdb.whichdb("dumbdb")
! if str:
print "Dumbdbm is available."
else:
--- 44,49 ----
db["1"] = "1"
db.close()
! dbstr = whichdb.whichdb("dumbdb")
! if dbstr:
print "Dumbdbm is available."
else:
***************
*** 53,58 ****
db["1"] = "1"
db.close()
! str = whichdb.whichdb("dbhash")
! if str == "dbhash":
print "Dbhash is available."
else:
--- 53,58 ----
db["1"] = "1"
db.close()
! dbstr = whichdb.whichdb("dbhash")
! if dbstr == "dbhash":
print "Dbhash is available."
else:
***************
*** 60,70 ****
if bsddb is None:
! str = ""
else:
db = bsddb.hashopen("bsddb3", "c")
db["1"] = "1"
db.close()
! str = whichdb.whichdb("bsddb3")
! if str == "dbhash":
print "Bsddb[3] is available."
else:
--- 60,70 ----
if bsddb is None:
! dbstr = ""
else:
db = bsddb.hashopen("bsddb3", "c")
db["1"] = "1"
db.close()
! dbstr = whichdb.whichdb("bsddb3")
! if dbstr == "dbhash":
print "Bsddb[3] is available."
else:
***************
*** 85,93 ****
if db_type == "dbhash":
# could be dbhash or bsddb3
! try:
! db = dbhash.open(hammie, "c")
! except:
! print "Your storage %s is a: bsddb3" % (hammie,)
! return
elif db_type is None:
print "Your storage %s is unreadable." % (hammie,)
--- 85,98 ----
if db_type == "dbhash":
# could be dbhash or bsddb3
! # only bsddb3 has a __version__ attribute - old bsddb module does not
! if hasattr(bsddb, '__version__'):
! try:
! db = bsddb.hashopen(hammie, "r")
! except bsddb.error:
! pass
! else:
! db.close()
! print "Your storage", hammie, "is a: bsddb[3]"
! return
elif db_type is None:
print "Your storage %s is unreadable." % (hammie,)
From anadelonbrin at users.sourceforge.net Tue Oct 14 18:27:12 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Tue Oct 14 18:27:19 2003
Subject: [Spambayes-checkins] spambayes README-DEVEL.txt,1.6,1.7
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv14029
Modified Files:
README-DEVEL.txt
Log Message:
Apparently 200 is a suitable lower bound on the number of messages in each
test set, so fix the bit that asks for 500.
Index: README-DEVEL.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/README-DEVEL.txt,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** README-DEVEL.txt 14 Oct 2003 01:54:52 -0000 1.6
--- README-DEVEL.txt 14 Oct 2003 22:27:09 -0000 1.7
***************
*** 332,336 ****
Basically the idea is that you should have 10 sets of data, each with
! around 500 messages in them; this means about 5000 spam and 5000 ham.
Obviously if you're testing something to do with the size of a corpus,
you'll want to change that. You then want to run
--- 332,336 ----
Basically the idea is that you should have 10 sets of data, each with
! 200 to 500 messages in them; this means about 2500 spam and 2500 ham.
Obviously if you're testing something to do with the size of a corpus,
you'll want to change that. You then want to run
From mhammond at users.sourceforge.net Wed Oct 15 00:11:14 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Wed Oct 15 00:11:19 2003
Subject: [Spambayes-checkins] spambayes/Outlook2000 config_wizard.py, 1.7,
1.8
Message-ID:
Update of /cvsroot/spambayes/spambayes/Outlook2000
In directory sc8-pr-cvs1:/tmp/cvs-serv2285
Modified Files:
config_wizard.py
Log Message:
The config wizard did not handle msgstore exceptions correctly.
Index: config_wizard.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/config_wizard.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** config_wizard.py 29 Aug 2003 00:08:43 -0000 1.7
--- config_wizard.py 15 Oct 2003 04:11:12 -0000 1.8
***************
*** 44,49 ****
for id in ids:
# Only get the folders that actually exist.
! if manager.message_store.GetFolder(id) is not None:
new_config.filter.watch_folder_ids.append(id)
if not new_config.filter.watch_folder_ids:
for folder in manager.message_store.YieldReceiveFolders():
--- 44,53 ----
for id in ids:
# Only get the folders that actually exist.
! try:
! manager.message_store.GetFolder(id)
! # if we get here, it exists!
new_config.filter.watch_folder_ids.append(id)
+ except manager.message_store.MsgStoreException:
+ pass
if not new_config.filter.watch_folder_ids:
for folder in manager.message_store.YieldReceiveFolders():
***************
*** 52,64 ****
fc = manager.config.filter
if fc.spam_folder_id:
! folder = manager.message_store.GetFolder(fc.spam_folder_id)
! if folder is not None:
new_config.filter.spam_folder_id = folder.GetID()
wc.spam_folder_name = ""
if fc.unsure_folder_id:
! folder = manager.message_store.GetFolder(fc.unsure_folder_id)
! if folder is not None:
new_config.filter.unsure_folder_id = folder.GetID()
wc.unsure_folder_name = ""
tc = manager.config.training
if tc.ham_folder_ids:
--- 56,72 ----
fc = manager.config.filter
if fc.spam_folder_id:
! try:
! folder = manager.message_store.GetFolder(fc.spam_folder_id)
new_config.filter.spam_folder_id = folder.GetID()
wc.spam_folder_name = ""
+ except manager.message_store.MsgStoreException:
+ pass
if fc.unsure_folder_id:
! try:
! folder = manager.message_store.GetFolder(fc.unsure_folder_id)
new_config.filter.unsure_folder_id = folder.GetID()
wc.unsure_folder_name = ""
+ except manager.message_store.MsgStoreException:
+ pass
tc = manager.config.training
if tc.ham_folder_ids:
From mhammond at users.sourceforge.net Wed Oct 15 00:12:27 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Wed Oct 15 00:12:30 2003
Subject: [Spambayes-checkins] spambayes/Outlook2000/dialogs
FolderSelector.py, 1.30, 1.31
Message-ID:
Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs
In directory sc8-pr-cvs1:/tmp/cvs-serv2408
Modified Files:
FolderSelector.py
Log Message:
Add comments reflecting the structure code has been cloned to the new win32gui_struct module.
Index: FolderSelector.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/FolderSelector.py,v
retrieving revision 1.30
retrieving revision 1.31
diff -C2 -d -r1.30 -r1.31
*** FolderSelector.py 9 Sep 2003 02:14:28 -0000 1.30
--- FolderSelector.py 15 Oct 2003 04:12:25 -0000 1.31
***************
*** 153,156 ****
--- 153,159 ----
return root
+ # XXX - Note - the following structure code has been copied into the new
+ # XXX - win32gui_struct module. One day we can rip this in preference
+ # XXX - for this new standard win32all module
# Helpers for the ugly win32 structure packing/unpacking
def _GetMaskAndVal(val, default, mask, flag):
***************
*** 253,256 ****
--- 256,260 ----
item = UnpackTVItem(buf_item)
return hwndFrom, id, code, item
+ # XXX - end of code copied to win32gui_struct.py
#########################################################################
From npickett at users.sourceforge.net Wed Oct 15 00:44:43 2003
From: npickett at users.sourceforge.net (Neale Pickett)
Date: Wed Oct 15 00:44:46 2003
Subject: [Spambayes-checkins] website server_side.ht, 1.2, 1.3 unix.ht, 1.8,
1.9
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv8402
Modified Files:
server_side.ht unix.ht
Log Message:
* Replace "hammiefilter" with "sb_filter" in a few places
Index: server_side.ht
===================================================================
RCS file: /cvsroot/spambayes/website/server_side.ht,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** server_side.ht 24 Sep 2003 06:16:51 -0000 1.2
--- server_side.ht 15 Oct 2003 04:44:41 -0000 1.3
***************
*** 37,41 ****
#!/bin/sh
! /usr/bin/hammiefilter.py -d /var/spambayes/hammie.db -f | /usr/sbin/sendmail -f $*
--- 37,41 ----
#!/bin/sh
! /usr/local/bin/sb_filter.py -d /var/spambayes/hammie.db -f | /usr/sbin/sendmail -f $*
Index: unix.ht
===================================================================
RCS file: /cvsroot/spambayes/website/unix.ht,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** unix.ht 13 Oct 2003 04:49:52 -0000 1.8
--- unix.ht 15 Oct 2003 04:44:41 -0000 1.9
***************
*** 19,23 ****
delivery agent and your email package picks up your primary mail from a
local spool file (e.g. /var/spool/mail ), you will probably find
! hammiefilter.py the easiest application to integrate into your mail
environment.
An example setup is as follows (thanks to Alister Forbes for contributing this):
--- 19,23 ----
delivery agent and your email package picks up your primary mail from a
local spool file (e.g. /var/spool/mail ), you will probably find
! sb_filter.py the easiest application to integrate into your mail
environment.
An example setup is as follows (thanks to Alister Forbes for contributing this):
***************
*** 25,35 ****
Install spambayes with the usual setup.py install
Create the database that spambayes will use to test your incoming mail:
! /usr/local/bin/hammiefilter.py -d $HOME/.hammie.db -n
Train it on your existing mail. This is optional, but a good idea. -g is the flag for the known good mail, and -s is for known spam
! /usr/local/bin/mboxtrain.py -d $HOME/.hammie.db -g $HOME/Mail/inbox -s $HOME/Mail/spam
Adding the following recipes to the top of your .procmailrc will get the spam and unsure stuff out of the way. Allowing everything else to be filtered as per your normal procmail recipes.
:0fw:hamlock
! | /usr/local/bin/hammiefilter.py -d $HOME/.hammie.db
:0
--- 25,35 ----
Install spambayes with the usual setup.py install
Create the database that spambayes will use to test your incoming mail:
! /usr/local/bin/sb_filter.py -d $HOME/.hammie.db -n
Train it on your existing mail. This is optional, but a good idea. -g is the flag for the known good mail, and -s is for known spam
! /usr/local/bin/sb_mboxtrain.py -d $HOME/.hammie.db -g $HOME/Mail/inbox -s $HOME/Mail/spam
Adding the following recipes to the top of your .procmailrc will get the spam and unsure stuff out of the way. Allowing everything else to be filtered as per your normal procmail recipes.
:0fw:hamlock
! | /usr/local/bin/sb_filter.py -d $HOME/.hammie.db
:0
***************
*** 43,47 ****
For ongoing training, there is a handy little cronjob that will run at 2:21 am every morning, training the database with good mail from Inbox and spam from caughtspam. Just add the following to your crontab
! 21 2 * * * /usr/local/bin/mboxtrain.py -d $HOME/.hammie.db -g $HOME/Mail/Inbox -s $HOME/Mail/spam
--- 43,47 ----
For ongoing training, there is a handy little cronjob that will run at 2:21 am every morning, training the database with good mail from Inbox and spam from caughtspam. Just add the following to your crontab
! 21 2 * * * /usr/local/bin/sb_mboxtrain.py -d $HOME/.hammie.db -g $HOME/Mail/Inbox -s $HOME/Mail/spam
***************
*** 225,229 ****
Ftoc_Iterate line {
set msgid [ Ftoc_MsgNumber $line ]
! eval {MhExec hammie.py -d -s $mhProfile(path)/$exmh(folder)/$msgid }
}
}
--- 225,229 ----
Ftoc_Iterate line {
set msgid [ Ftoc_MsgNumber $line ]
! eval {MhExec sb_filter.py -s $mhProfile(path)/$exmh(folder)/$msgid }
}
}
***************
*** 233,237 ****
Ftoc_Iterate line {
set msgid [ Ftoc_MsgNumber $line ]
! eval {MhExec hammie.py -d -g $mhProfile(path)/$exmh(folder)/$msgid }
}
}
--- 233,237 ----
Ftoc_Iterate line {
set msgid [ Ftoc_MsgNumber $line ]
! eval {MhExec sb_filter.py -g $mhProfile(path)/$exmh(folder)/$msgid }
}
}
From npickett at users.sourceforge.net Wed Oct 15 01:02:11 2003
From: npickett at users.sourceforge.net (Neale Pickett)
Date: Wed Oct 15 01:02:14 2003
Subject: [Spambayes-checkins] spambayes/scripts sb_filter.py,1.3,1.4
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv12145/scripts
Modified Files:
sb_filter.py
Log Message:
* Modified muttrc and spambayes.el that actually work with what's being
shipped :)
* Expanded documentation of sb_filter.py
Index: sb_filter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_filter.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** sb_filter.py 24 Sep 2003 06:53:36 -0000 1.3
--- sb_filter.py 15 Oct 2003 05:02:08 -0000 1.4
***************
*** 33,39 ****
[EXPERIMENTAL] filter and train based on the result (you must
make sure to untrain all mistakes later)
! * -g
[EXPERIMENTAL] (re)train as a good (ham) message
! * -s
[EXPERIMENTAL] (re)train as a bad (spam) message
* -G
--- 33,39 ----
[EXPERIMENTAL] filter and train based on the result (you must
make sure to untrain all mistakes later)
! *+ -g
[EXPERIMENTAL] (re)train as a good (ham) message
! *+ -s
[EXPERIMENTAL] (re)train as a bad (spam) message
* -G
***************
*** 79,86 ****
! mutt configuration. This binds the 'H' key to retrain the message as
ham, and prompt for a folder to move it to. The 'S' key retrains as
! spam, and moves to a 'spam' folder.
! XXX: add this
"""
--- 79,93 ----
! mutt configuration: This binds the 'H' key to retrain the message as
ham, and prompt for a folder to move it to. The 'S' key retrains as
! spam, and moves to a 'spam' folder. See contrib/muttrc in the spambayes
! distribution for other neat mutt tricks.
!
! macro index S "|sb_filter.py -s | procmail\n"
! macro pager S "|sb_filter.py -s | procmail\n"
! macro index H "|sb_filter.py -g | procmail\n"
! macro pager H "|sb_filter.py -g | procmail\n"
! color index red black "~h 'X-Spambayes-Disposition: spam' ~F"
!
"""
From npickett at users.sourceforge.net Wed Oct 15 01:02:10 2003
From: npickett at users.sourceforge.net (Neale Pickett)
Date: Wed Oct 15 01:02:15 2003
Subject: [Spambayes-checkins]
spambayes/contrib muttrc, 1.3, 1.4 spambayes.el, 1.4, 1.5
Message-ID:
Update of /cvsroot/spambayes/spambayes/contrib
In directory sc8-pr-cvs1:/tmp/cvs-serv12145/contrib
Modified Files:
muttrc spambayes.el
Log Message:
* Modified muttrc and spambayes.el that actually work with what's being
shipped :)
* Expanded documentation of sb_filter.py
Index: muttrc
===================================================================
RCS file: /cvsroot/spambayes/spambayes/contrib/muttrc,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** muttrc 5 Jun 2003 04:28:37 -0000 1.3
--- muttrc 15 Oct 2003 05:02:08 -0000 1.4
***************
*** 7,16 ****
##
## :0fw
! ## | hammiefilter.py -t
##
##
! ## This binds 'S' to refile as spam and move to a 'caughtspam' folder.
! ## 'H' will refile as ham and move to your inbox. You will want to use
! ## these on every misclassified message.
##
## As a special bonus, all tagged spam will be colored red on black.
--- 7,17 ----
##
## :0fw
! ## | sb_filter.py -t
##
##
! ## This binds 'S' to train on the current message as spam, and 'H' to
! ## train on the current message as ham. Both of these commands
! ## re-classify the message and send it through procmail, so you'll have
! ## two copies after running them.
##
## As a special bonus, all tagged spam will be colored red on black.
***************
*** 20,26 ****
## helping out with the muttisms.
##
! folder-hook . "macro index S '|hammiefilter.py -s\n =caughtspam\n'"
! folder-hook . "macro pager S '|hammiefilter.py -s\n =caughtspam\n'"
! folder-hook . "macro index H '|hammiefilter.py -g\r !\r'"
! folder-hook . "macro pager H '|hammiefilter.py -g\r !\r'"
color index red black "~h 'X-Spambayes-Disposition: spam' ~F"
--- 21,38 ----
## helping out with the muttisms.
##
! macro index S "|sb_filter.py -s | procmail\n"
! macro pager S "|sb_filter.py -s | procmail\n"
! macro index H "|sb_filter.py -g | procmail\n"
! macro pager H "|sb_filter.py -g | procmail\n"
color index red black "~h 'X-Spambayes-Disposition: spam' ~F"
+
+ ## If you're feeling bold and don't mind the possibility of losing mail,
+ ## you can uncomment these lines. These bindings automatically delete
+ ## the message in addition to retraining and sending through procmail.
+ ## If there's a problem with sb_filter, though, the message will be lost
+ ## forever.
+ ##
+ #macro index S "|sb_filter.py -s | procmail\n"
+ #macro pager S "|sb_filter.py -s | procmail\n"
+ #macro index H "|sb_filter.py -g | procmail\n"
+ #macro pager H "|sb_filter.py -g | procmail\n"
Index: spambayes.el
===================================================================
RCS file: /cvsroot/spambayes/spambayes/contrib/spambayes.el,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** spambayes.el 10 Jun 2003 14:03:26 -0000 1.4
--- spambayes.el 15 Oct 2003 05:02:08 -0000 1.5
***************
*** 1,5 ****
;; spambayes.el -- integrate spambayes into Gnus and VM
;; Copyright (C) 2003 Neale Pickett
! ;; Time-stamp: <2003-06-06 10:07:09 neale>
;; This is free software; you can redistribute it and/or modify it under
--- 1,5 ----
;; spambayes.el -- integrate spambayes into Gnus and VM
;; Copyright (C) 2003 Neale Pickett
! ;; Time-stamp: <2003-10-14 21:59:11 neale>
;; This is free software; you can redistribute it and/or modify it under
***************
*** 19,42 ****
;; Purpose:
;;
! ;; Functions to put spambayes into Gnus.
! ;;
! ;; This assumes you are already filtering with a procmail recipie
! ;; similar to:
! ;;
! ;; :0fw
! ;; | hammiefilter.py -t
! ;;
! ;; If you can't run procmail on all your incoming messages, you shold
! ;; have a look at spam.el, which is included with Oort Gnus.
! ;;
! ;; This binds "B s" to "refile as spam", and "B h" to "refile as ham".
! ;; After refiling, the message is rescored and respooled. I haven't yet
! ;; run across a case where refiling doesn't change a message's score
! ;; well into the ham or spam range. If this happens to you, please let
! ;; me know.
- ;; Installation:
- ;;
- ;;
;; GNUS
;; ----
--- 19,24 ----
;; Purpose:
;;
! ;; Functions to put spambayes into Gnus and VM.
;; GNUS
;; ----
***************
*** 44,55 ****
;; following lines in ~/.gnus:
;;
! ;; (load-library "spambayes")
! ;; (add-hook
! ;; 'gnus-sum-load-hook
! ;; (lambda nil
! ;; (define-key gnus-summary-mode-map [(B) (s)] 'spambayes-gnus-refile-as-spam)
! ;; (define-key gnus-summary-mode-map [(B) (h)] 'spambayes-gnus-refile-as-ham)))
;;
;;
;; VM (Courtesy of Prabhu Ramachandran )
;; ----
--- 26,55 ----
;; following lines in ~/.gnus:
;;
! ;; (setq gnus-sum-load-hook
! ;; (lambda ()
! ;; (require 'spambayes)
! ;; (define-key gnus-summary-mode-map [(B) (s)] 'spambayes-gnus-refile-as-spam)
! ;; (define-key gnus-summary-mode-map [(B) (h)] 'spambayes-gnus-refile-as-ham)))
! ;;
! ;; In summary mode, "B h" will refile a message as ham, and "B s",
! ;; appropriately enough, will refile a message as spam.
;;
;;
+ ;; You can also put the following in ~/.gnus to run messages through the
+ ;; filter as Gnus reads them in:
+ ;;
+ ;; (setq nnmail-prepare-incoming-message-hook 'spambayes-filter-buffer)
+ ;;
+ ;; You can then use Gnus message splitting (looking at the
+ ;; X-Spambayes-Classification header) to file messages based on the
+ ;; spambayes score.
+ ;;
+ ;; Some folks may prefer using procmail to score messages when they
+ ;; arrive. See README.txt in the distribution for more information on
+ ;; how to do this.
+
+
+
+
;; VM (Courtesy of Prabhu Ramachandran )
;; ----
***************
*** 70,74 ****
;; )
;; )
! ;;
;; Hitting the 'A' key will refile messages to the SPAM and UNSURE folders.
;;
--- 70,74 ----
;; )
;; )
! ;;
;; Hitting the 'A' key will refile messages to the SPAM and UNSURE folders.
;;
***************
*** 83,94 ****
! (defvar spambayes-spam-group "spam"
! "Group name for spam messages")
!
! (defvar spambayes-hammiefilter "~/src/spambayes/hammiefilter.py"
! "Path to the hammiefilter program")
;; Gnus
(defun spambayes-gnus-retrain (is-spam)
"Retrain on all processable articles, or the one under the cursor.
--- 83,108 ----
! (defvar spambayes-filter-program "/usr/local/bin/sb_filter.py"
! "Path to the sb_filter program.")
+
;; Gnus
+ (defun spambayes-filter-buffer (&optional buffer)
+ "Filter a buffer through Spambayes.
+
+ This pipes the a buffer through Spambayes, which adds its headers. The
+ output of Spambayes replaces the contents of the buffer. If no buffer
+ is specified, the current buffer is used.
+ "
+ (shell-command-on-region
+ (point-min)
+ (point-max)
+ (concat
+ spambayes-filter-program
+ " -f")
+ (or buffer (current-buffer))
+ t))
+
(defun spambayes-gnus-retrain (is-spam)
"Retrain on all processable articles, or the one under the cursor.
***************
*** 108,112 ****
(point-max)
(concat
! spambayes-hammiefilter
(if is-spam " -s" " -g")
" -f")
--- 122,126 ----
(point-max)
(concat
! spambayes-filter-program
(if is-spam " -s" " -g")
" -f")
***************
*** 128,132 ****
"Retrain and refilter all process-marked messages as spam, then respool them"
(interactive)
! (spambayes-retrain 't)
(gnus-summary-respool-article nil (gnus-group-method gnus-newsgroup-name)))
--- 142,146 ----
"Retrain and refilter all process-marked messages as spam, then respool them"
(interactive)
! (spambayes-gnus-retrain 't)
(gnus-summary-respool-article nil (gnus-group-method gnus-newsgroup-name)))
***************
*** 134,141 ****
"Retrain and refilter all process-marked messages as ham, then respool them"
(interactive)
! (spambayes-retrain nil)
(gnus-summary-respool-article nil (gnus-group-method gnus-newsgroup-name)))
;;; VM
--- 148,156 ----
"Retrain and refilter all process-marked messages as ham, then respool them"
(interactive)
! (spambayes-gnus-retrain nil)
(gnus-summary-respool-article nil (gnus-group-method gnus-newsgroup-name)))
+
;;; VM
***************
*** 148,154 ****
(interactive)
(message (concat "Retraining" (if is-spam " as SPAM" " as HAM") " ..."))
! (vm-pipe-message-to-command
! (concat spambayes-hammiefilter (if is-spam " -s" " -g") " -f") nil)
! (message (concat "Done retraining messages"
(if is-spam " as SPAM" " as HAM") ".") )
)
--- 163,169 ----
(interactive)
(message (concat "Retraining" (if is-spam " as SPAM" " as HAM") " ..."))
! (vm-pipe-message-to-command
! (concat spambayes-filter-program (if is-spam " -s" " -g") " -f") nil)
! (message (concat "Done retraining messages"
(if is-spam " as SPAM" " as HAM") ".") )
)
***************
*** 165,166 ****
--- 180,183 ----
(spambayes-vm-retrain nil)
)
+
+ (provide 'spambayes)
From richiehindle at users.sourceforge.net Wed Oct 15 02:57:21 2003
From: richiehindle at users.sourceforge.net (Richie Hindle)
Date: Wed Oct 15 03:16:16 2003
Subject: [Spambayes-checkins] spambayes/spambayes Dibbler.py,1.7,1.8
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv29003
Modified Files:
Dibbler.py
Log Message:
Increased the auth-digest login timeout from one minute to twenty.
One minute was making it time out before people even had time to
fill in the training page.
Index: Dibbler.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/Dibbler.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** Dibbler.py 2 Sep 2003 22:47:48 -0000 1.7
--- Dibbler.py 15 Oct 2003 06:57:19 -0000 1.8
***************
*** 583,589 ****
def _getCurrentNonce(self):
"""Returns the current nonce value. This value is a Base64 encoding
! of current time plus one minute. This means the nonce will expire a
! minute from now."""
! timeString = time.asctime(time.localtime(time.time() + 60))
return base64.encodestring(timeString).rstrip('\n=')
--- 583,589 ----
def _getCurrentNonce(self):
"""Returns the current nonce value. This value is a Base64 encoding
! of current time plus 20 minutes. This means the nonce will expire 20
! minutes from now."""
! timeString = time.asctime(time.localtime(time.time() + 20*60))
return base64.encodestring(timeString).rstrip('\n=')
From montanaro at users.sourceforge.net Wed Oct 15 09:06:43 2003
From: montanaro at users.sourceforge.net (Skip Montanaro)
Date: Wed Oct 15 09:06:48 2003
Subject: [Spambayes-checkins] spambayes README-DEVEL.txt,1.7,1.8
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv20194
Modified Files:
README-DEVEL.txt
Log Message:
Remove the 2500 spam and ham reference. It didn't follow from the 200-500
messages per bucket.
Index: README-DEVEL.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/README-DEVEL.txt,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** README-DEVEL.txt 14 Oct 2003 22:27:09 -0000 1.7
--- README-DEVEL.txt 15 Oct 2003 13:06:41 -0000 1.8
***************
*** 332,338 ****
Basically the idea is that you should have 10 sets of data, each with
! 200 to 500 messages in them; this means about 2500 spam and 2500 ham.
! Obviously if you're testing something to do with the size of a corpus,
! you'll want to change that. You then want to run
timcv.py -n 10 > std.txt
(call std.txt whatever you like), and then
--- 332,338 ----
Basically the idea is that you should have 10 sets of data, each with
! 200 to 500 messages in them. Obviously if you're testing something to
! do with the size of a corpus, you'll want to change that. You then want
! to run
timcv.py -n 10 > std.txt
(call std.txt whatever you like), and then
From anadelonbrin at users.sourceforge.net Wed Oct 15 18:58:45 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 15 18:58:48 2003
Subject: [Spambayes-checkins] website quotes.ht,1.7,1.8
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv9170
Modified Files:
quotes.ht
Log Message:
Add an off-the-cuff compliment about spambayes from a wired news article.
Index: quotes.ht
===================================================================
RCS file: /cvsroot/spambayes/website/quotes.ht,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** quotes.ht 2 Oct 2003 00:02:18 -0000 1.7
--- quotes.ht 15 Oct 2003 22:58:42 -0000 1.8
***************
*** 66,69 ****
--- 66,78 ----
+
+ Outlook 2003 accurately blocked roughly 85 percent of an average day's spam,
+ while 2002 topped out at about 65 percent, an increase of 20 percent more
+ junk e-mail filtered. That said, free open-source filters like SpamBayes
+ can block about 98 percent of spam.
+ Michelle Delio praising the improvements in Outlook's built-in spam filtering in
+ a Wired News article.
+
+
What we are saying about us
From anadelonbrin at users.sourceforge.net Thu Oct 16 17:21:02 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Thu Oct 16 17:21:07 2003
Subject: [Spambayes-checkins] website faq.txt,1.49,1.50
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv14719
Modified Files:
faq.txt
Log Message:
Make the FAQ more accurately reflect current reality.
Index: faq.txt
===================================================================
RCS file: /cvsroot/spambayes/website/faq.txt,v
retrieving revision 1.49
retrieving revision 1.50
diff -C2 -d -r1.49 -r1.50
*** faq.txt 13 Oct 2003 21:30:56 -0000 1.49
--- faq.txt 16 Oct 2003 21:21:00 -0000 1.50
***************
*** 87,91 ****
------------------------------------
! There are four mailing lists which support SpamBayes:
1. The `SpamBayes list`_ provides a place for users to get help with
--- 87,91 ----
------------------------------------
! There are five mailing lists which support SpamBayes:
1. The `SpamBayes list`_ provides a place for users to get help with
***************
*** 102,105 ****
--- 102,111 ----
developers.
+ 5. The `SpamBayes bugs list`_ receives copies of all the bug, patch,
+ support requests and feature request reports that are submitted via the
+ `sourceforge`_ system. This is generally only of interest to developers
+ (you can use the sourceforge system to monitor any individual bugs that
+ you are interested in).
+
All the mailing lists are managed by Mailman, which uses pipermail to
archive messages. There is no search capability, so your best bet is to use
***************
*** 117,120 ****
--- 123,128 ----
.. _SpamBayes announcements list: http://mail.python.org/mailman/listinfo/spambayes-announce
.. _SpamBayes checkins list: http://mail.python.org/mailman/listinfo/spambayes-checkins
+ .. _SpamBayes bugs list: http://mail.python.org/mailman/listinfo/spambayes-bugs
+ .. _sourceforge: http://www.sourceforge.net
***************
*** 243,251 ****
instance.
! 7. The Hammie script. This does three jobs: command-line training, procmail
! filtering, and XML-RPC. See below for details of how to use Hammie for
! training, and how to use it as procmail filter. Hammie can also run as
an XML-RPC server, so that a programmer can write code that uses a remote
! server to classify emails programmatically - see hammiesrv.py.
8. The IMAP filter. This is a cross between the POP3 proxy and the Outlook
--- 251,259 ----
instance.
! 7. The filter script. This does three jobs: command-line training, procmail
! filtering, and XML-RPC. See below for details of how to use sb_filter for
! training, and how to use it as procmail filter. SpamBayes can also run as
an XML-RPC server, so that a programmer can write code that uses a remote
! server to classify emails programmatically - see sb_xmlrpcsrv.py.
8. The IMAP filter. This is a cross between the POP3 proxy and the Outlook
***************
*** 262,273 ****
-------------------------------
! The Hammie script is called hammie.py. The POP3 proxy lives in pop3proxy.py,
! and the smtpproxy lives in smtpproxy.py. The IMAP filter lives in
! imapfilter.py. The Outlook plug-in lives in the Outlook2000 subdirectory
! - see the README.txt in that directory for more information on that.
As well as these components, there's also a whole pile of utility scripts,
! test harnesses and so on - see README.txt and TESTING.txt in the
! SpamBayes distribution for more information.
--- 270,283 ----
-------------------------------
! The filter script is called sb_filter.py. The POP3 proxy lives in sb_server.py;
! to upload to the server use sb_upload.py. The IMAP filter lives in
! sb_imapfilter.py. These all live in the scripts directory - Windows users
! can find non-command-line versions in the windows directory. The Outlook
! plug-in lives in the Outlook2000 subdirectory - see the README.txt in that
! directory for more information on that.
As well as these components, there's also a whole pile of utility scripts,
! test harnesses and so on - see README.txt, README-DEVEL.txt and TESTING.txt
! in the SpamBayes distribution for more information.
***************
*** 284,295 ****
difficult to create a plugin for it.
! You can use pop3proxy and/or imapfilter with Outlook Express, however you
! must have either the alpha 3 release, or a recent CVS snapshot in order to
! do so (alpha 2 does not include all the necessary features). Because
Outlook Express does not let you filter on arbitrary headers (like
! X-Spambayes-Classification), pop3proxy must add the classification to the
"To:" line, or the "Subject" line.
! Pop3proxy/imapfilter aren't quite as 'transparent' as the Outlook plugin,
but they're still quite easy to use/setup, and they use the same core, so
the results will be the same. We are working on an alternative that should
--- 294,303 ----
difficult to create a plugin for it.
! You can use sb_server and/or sb_imapfilter with Outlook Express. Because
Outlook Express does not let you filter on arbitrary headers (like
! X-Spambayes-Classification), sb_server must add the classification to the
"To:" line, or the "Subject" line.
! sb_server/sb_imapfilter aren't quite as 'transparent' as the Outlook plugin,
but they're still quite easy to use/setup, and they use the same core, so
the results will be the same. We are working on an alternative that should
***************
*** 305,309 ****
:0fw
! | /opt/spambayes/hammiefilter.py
Follow that with a recipe to check the results and take action::
--- 313,317 ----
:0fw
! | /opt/spambayes/sb_filter.py
Follow that with a recipe to check the results and take action::
***************
*** 324,328 ****
(vm-save-message (expand-file-name "~/tmp/newspam"))
(vm-add-message-labels "trained" 1))
! (vm-pipe-message-to-command "hammiefilter.py -s >/dev/null" nil))
(defun train-as-nonspam ()
--- 332,336 ----
(vm-save-message (expand-file-name "~/tmp/newspam"))
(vm-add-message-labels "trained" 1))
! (vm-pipe-message-to-command "sb_filter.py -s >/dev/null" nil))
(defun train-as-nonspam ()
***************
*** 331,335 ****
(vm-save-message (expand-file-name "~/tmp/newham"))
(vm-add-message-labels "trained" 1))
! (vm-pipe-message-to-command "hammiefilter.py -g >/dev/null" nil))
(define-key vm-mode-map "ls" 'train-as-spam)
--- 339,343 ----
(vm-save-message (expand-file-name "~/tmp/newham"))
(vm-add-message-labels "trained" 1))
! (vm-pipe-message-to-command "sb_filter.py -g >/dev/null" nil))
(define-key vm-mode-map "ls" 'train-as-spam)
***************
*** 347,351 ****
IMAP_ proxies which are part of the SpamBayes source.
! .. _POP3: http://spambayes.sf.net/applications.html#pop3
.. _IMAP: http://spambayes.sf.net/applications.html#imap
--- 355,359 ----
IMAP_ proxies which are part of the SpamBayes source.
! .. _POP3: http://spambayes.sf.net/applications.html#sb_server
.. _IMAP: http://spambayes.sf.net/applications.html#imap
***************
*** 374,380 ****
modify.
! 3. Configure pop3proxy for each of Eudora's personalities' POP3 servers,
specifying a separate port for each. For example 1110, 1120, 1130 and
! 1140 for four personalities. Do the same for smtpproxy - for example
1115, 1125, 1135 and 1145 corresponding to the four POP3 servers.
--- 382,388 ----
modify.
! 3. Configure sb_server for each of Eudora's personalities' POP3 servers,
specifying a separate port for each. For example 1110, 1120, 1130 and
! 1140 for four personalities. Do the same for sb_smtpproxy - for example
1115, 1125, 1135 and 1145 corresponding to the four POP3 servers.
***************
*** 429,433 ****
Previous versions of the binary had a number of problems with various
versions of Outlook/Windows. However, to our knowledge, the current version
! should work with any combination of Windows/Outlook versions. Please let us
know if this is not the case. The `troubleshooting guide`_ for the Outlook
plugin contains the most up-to-date help for working around known problems.
--- 437,441 ----
Previous versions of the binary had a number of problems with various
versions of Outlook/Windows. However, to our knowledge, the current version
! should work with any combination of Windows/Outlook versions. Please let us
know if this is not the case. The `troubleshooting guide`_ for the Outlook
plugin contains the most up-to-date help for working around known problems.
***************
*** 435,441 ****
If you fall into that category, note that you must have applied all the
technical refreshes released by Microsoft to use the plugin successfully.
! Better yet, upgrade to the final version when it's available.
! .. _troubleshooting guide: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/spambayes/spambayes/Outlook2000/docs/troubleshooting.html?rev=HEAD&content-type=text/plain
--- 443,449 ----
If you fall into that category, note that you must have applied all the
technical refreshes released by Microsoft to use the plugin successfully.
! Better yet, upgrade to the final version now that it's available.
! .. _troubleshooting guide: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/spambayes/spambayes/Outlook2000/docs/troubleshooting.html?rev=HEAD&content-type=text/html
***************
*** 455,483 ****
--------------------------------------------------------
! This is a 'hidden' feature in the post 003 releases of the binary (also post
! alpha3 source releases and CVS). Details about how to enable this feature
! can be found in the "configuration.html" file in the "docs" directory in
! the folder SpamBayes was installed to. You can also set up mail that is
! trained using the "Delete as spam" button to be marked as read, rather than
! all mail classified as spam. However, you should also see the
! `envelope icon question`_.
.. _`envelope icon question`: #how-can-I-get-rid-of-the-envelope-tray-icon-for-spam
- Outlook forgets all training/configuration when I quit and start again
- ----------------------------------------------------------------------
-
- This is a known problem with the 002 release of the plug-in (or earlier).
- What is probably happening is that Outlook is not shutting down properly
- or completely, or is being forced to shut down too quickly. This version
- of the plug-in only saves training/configuration data on shut-down, so
- this can result in training/configuration being lost. To get around this
- problem, exit Outlook (not by restarting/shutting down the machine), and
- make sure that it is completely shut down (use the Task Manager to check).
- This should save your training and configuration. The 003 release (and
- later) saves as required, so avoids this issue.
-
-
Can I back up the Outlook database? Should I do this?
------------------------------------------------------
--- 463,473 ----
--------------------------------------------------------
! Yes, in version 008 and above of the plugin. You can find this on the
! filtering tab of the SpamBayes manager dialog. However, you should also
! see the `envelope icon question`_.
.. _`envelope icon question`: #how-can-I-get-rid-of-the-envelope-tray-icon-for-spam
Can I back up the Outlook database? Should I do this?
------------------------------------------------------
***************
*** 534,537 ****
--- 524,529 ----
4. Changed the action to "copy" or "move", rather than "untouched"
+ 5. Ticked the "enable SpamBayes" checkbox on the first tab of the dialog.
+
How can I get rid of the envelope tray icon for spam?
***************
*** 548,552 ****
Until someone comes up with a clever solution for all of this, you'll have to
! put up with the little envelope, sorry.
--- 540,545 ----
Until someone comes up with a clever solution for all of this, you'll have to
! put up with the little envelope, sorry. Note that there is a feature request
! already open for this, which you may add to if you have comments to make.
***************
*** 562,570 ****
require you to perform a full re-train.
Will "Show Spam Clues" notify a spammer that I opened their message?
--------------------------------------------------------------------
We think not (but we don't have the source code to Outlook to check
! for sure). In general, there are 2 ways spammers can determine this;
the first is via an automatic 'Read Receipt' (but this is unusual, as
the "from" address is generally forged so the receipt goes nowhere
--- 555,564 ----
require you to perform a full re-train.
+
Will "Show Spam Clues" notify a spammer that I opened their message?
--------------------------------------------------------------------
We think not (but we don't have the source code to Outlook to check
! for sure). In general, there are two ways spammers can determine this;
the first is via an automatic 'Read Receipt' (but this is unusual, as
the "from" address is generally forged so the receipt goes nowhere
***************
*** 618,622 ****
that it doesn't work as well with Western European language. It might work
very well with them if these default values are changed in the user's ini
! file:
[Tokenizer]
--- 612,617 ----
that it doesn't work as well with Western European language. It might work
very well with them if these default values are changed in the user's ini
! file (note that for Outlook users, this means the default_bayes_customize.ini
! file, rather than the one called Outlook.ini, or named after your profile):
[Tokenizer]
***************
*** 654,661 ****
number of spams as hams.
! You can train it on lots of messages in one go by either using the Hammie
script as explained in the "Command-line training" section, or by giving
messages to the web interface via the "Train" form on the Home page. You
! can train on individual messages (which is tedious) or using mbox files.
--- 649,657 ----
number of spams as hams.
! You can train it on lots of messages in one go by either using the sb_filter
script as explained in the "Command-line training" section, or by giving
messages to the web interface via the "Train" form on the Home page. You
! can train on individual messages (which is tedious), using mbox files or
! using Outlook Express dbx files.
***************
*** 668,681 ****
spambayes_spam@localhost, and if the message should have been classified as
ham, forward it to spambayes_ham@localhost. You can still review the
! training through the web interface, if you wish to do so.
!
! Note that you must set (via the web interface) the "add mail id to" option
! in order to use this. You can also use this id to find a particular message
! via the web interface.
Note that some mail clients (particularly Outlook Express) do not forward
! all headers when you bounce, forward or redirect mail. For these clients,
! you will need to set (via the web interface) the "add mail id to" option to
! body, which will add a unique id to the body of each message you receive.
--- 664,674 ----
spambayes_spam@localhost, and if the message should have been classified as
ham, forward it to spambayes_ham@localhost. You can still review the
! training through the web interface, if you wish to do so. You should ensure
! that the "lookup message in cache" option is set to True/Yes before you use
! this.
Note that some mail clients (particularly Outlook Express) do not forward
! all headers when you bounce, forward or redirect mail. We do not recommend
! using the SMTP proxy with these clients.
***************
*** 687,691 ****
containing nothing but ham, you can train SpamBayes using a command like::
! hammie.py -g ~/tmp/newham -s ~/tmp/newspam
The above command is OS-centric (e.g., UNIX, or Windows command prompt).
--- 680,684 ----
containing nothing but ham, you can train SpamBayes using a command like::
! sb_mboxtrain.py -g ~/tmp/newham -s ~/tmp/newspam
The above command is OS-centric (e.g., UNIX, or Windows command prompt).
***************
*** 703,707 ****
The plugin does *not* train on all incoming mail. However, if you use the
"Delete as spam" and "Recover from spam" buttons, those messages will be
! (re)trained as necessary.
--- 696,702 ----
The plugin does *not* train on all incoming mail. However, if you use the
"Delete as spam" and "Recover from spam" buttons, those messages will be
! (re)trained as necessary. If you have set it to use incremental training
! then it will also train on messages which are moved into the spam folder
! and those folders that you are 'watching'.
***************
*** 730,734 ****
never seen this particular flavor of spam before), or maybe there aren't
enough clues in the message which the system is aware of as strong spam
! clues.
--- 725,733 ----
never seen this particular flavor of spam before), or maybe there aren't
enough clues in the message which the system is aware of as strong spam
! clues. You should look at the clues that SpamBayes generated, and that
! should give you an idea of the reason for the classification. Both the
! web interface and the Outlook plug-in let you view the clues that make
! up the message. If you still can't figure out the reason why, you can
! ask the mailing list for advice.
***************
*** 806,810 ****
`bayescustomize.ini` or `.spambayesrc`. In here you can configure the name
and type of your database, your ham and spam cutoffs, and so on. The
! default values for all the options, and the documentation for them, lives
in Options.py.
--- 805,809 ----
`bayescustomize.ini` or `.spambayesrc`. In here you can configure the name
and type of your database, your ham and spam cutoffs, and so on. The
! default values for all the options, and the documentation for them, live
in Options.py.
***************
*** 892,896 ****
Sadly, not much is done in the way of testing these days. Hopefully this
will change, though, and if you're interested it's definately an option.
! Check out the README for information about how to get started. This is the
way to go if you have a new idea, too - even if you convince someone else to
develop it, we'll expect you to put in time to test its effectiveness.
--- 891,895 ----
Sadly, not much is done in the way of testing these days. Hopefully this
will change, though, and if you're interested it's definately an option.
! Check out the README-DEVEL for information about how to get started. This is the
way to go if you have a new idea, too - even if you convince someone else to
develop it, we'll expect you to put in time to test its effectiveness.
***************
*** 956,960 ****
"persistent_storage_file" option (also in the "Storage" section).
! If you specify your database on the command line ("pop3proxy.py -d hammie.db",
for example), then you should use the "-D" switch instead. Note, however,
that it is likely that these switches will change in a future release, and
--- 955,959 ----
"persistent_storage_file" option (also in the "Storage" section).
! If you specify your database on the command line ("sb_server.py -d hammie.db",
for example), then you should use the "-D" switch instead. Note, however,
that it is likely that these switches will change in a future release, and
***************
*** 987,991 ****
also do this via the web configuration, without having to alter the
configuration file manually. The option you are after is called
! ``Allowed remote connections``.
--- 986,991 ----
also do this via the web configuration, without having to alter the
configuration file manually. The option you are after is called
! ``Allowed remote connections``. In versions after 1.0a5, you can also
! set the interface to use HTTP-AUTH, either Basic or Digest.
***************
*** 993,1001 ****
------------------------------------------------------------------------------
! If you use pop3proxy or imapfilter, haven't set anything up, and run it and
get an error that ends with ``socket.error: (10013, 'Permission denied')``,
then this probably means that port 8880, which SpamBayes is trying to use to
present the web interface, is already taken on your machine. Try using
! ``pop3proxy.py -u 8881 -b`` (or ``imapfilter.py -u 8881 -b``), or another
port that you know is free and available on your machine.
--- 993,1001 ----
------------------------------------------------------------------------------
! If you use sb_server or sb_imapfilter, haven't set anything up, and run it and
get an error that ends with ``socket.error: (10013, 'Permission denied')``,
then this probably means that port 8880, which SpamBayes is trying to use to
present the web interface, is already taken on your machine. Try using
! ``sb_server.py -u 8881 -b`` (or ``sb_imapfilter.py -u 8881 -b``), or another
port that you know is free and available on your machine.
From anadelonbrin at users.sourceforge.net Mon Oct 20 18:41:59 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 20 18:42:06 2003
Subject: [Spambayes-checkins] website docs.ht,1.17,1.18
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv20330
Modified Files:
docs.ht
Log Message:
Add info about and a link to the wiki.
Index: docs.ht
===================================================================
RCS file: /cvsroot/spambayes/website/docs.ht,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** docs.ht 25 Sep 2003 01:20:20 -0000 1.17
--- docs.ht 20 Oct 2003 22:41:56 -0000 1.18
***************
*** 6,9 ****
--- 6,14 ----
- A rudimentary set of Frequently Asked Questions (FAQ).
+ - The SpamBayes wiki exists to let the users
+ and developers of SpamBayes cooperate to develop documentation, share tips and recipes,
+ and generally help each other out. It would be great to see documentation improvements,
+ hints and tips, scripts and recipes, and anything else (related to SpamBayes) that takes
+ your fancy added here.
- Instructions on installing Spambayes and integrating it into your mail system.
- The Outlook plugin includes an "About" File, and a
From anadelonbrin at users.sourceforge.net Mon Oct 20 23:58:51 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 20 23:58:56 2003
Subject: [Spambayes-checkins] spambayes/spambayes ProxyUI.py,1.28,1.29
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv2613/spambayes
Modified Files:
ProxyUI.py
Log Message:
Implement [ 827138 ] Can't display clues/tokens/source for a trained message
Index: ProxyUI.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/ProxyUI.py,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** ProxyUI.py 30 Sep 2003 03:05:14 -0000 1.28
--- ProxyUI.py 21 Oct 2003 03:58:49 -0000 1.29
***************
*** 584,589 ****
"""View a message - linked from the Review page."""
self._writePreamble("View message", parent=('review', 'Review'))
! message = state.unknownCorpus.get(key)
! if message:
self.write("
%s " % cgi.escape(message.as_string()))
else:
--- 584,598 ----
"""View a message - linked from the Review page."""
self._writePreamble("View message", parent=('review', 'Review'))
! sourceCorpus = None
! message = None
! if state.unknownCorpus.get(key) is not None:
! sourceCorpus = state.unknownCorpus
! elif state.hamCorpus.get(key) is not None:
! sourceCorpus = state.hamCorpus
! elif state.spamCorpus.get(key) is not None:
! sourceCorpus = state.spamCorpus
! if sourceCorpus is not None:
! message = sourceCorpus.get(key)
! if message is not None:
self.write("%s " % cgi.escape(message.as_string()))
else:
***************
*** 595,601 ****
tokens = bool(int(tokens)) # needs the int, as bool('0') is True
self._writePreamble("Message clues", parent=('review', 'Review'))
! message = state.unknownCorpus.get(key).as_string()
! message = message.replace('\r\n', '\n').replace('\r', '\n') # For Macs
! if message:
results = self._buildCluesTable(message, subject, tokens)
del results.classifyAnother
--- 604,619 ----
tokens = bool(int(tokens)) # needs the int, as bool('0') is True
self._writePreamble("Message clues", parent=('review', 'Review'))
! sourceCorpus = None
! message = None
! if state.unknownCorpus.get(key) is not None:
! sourceCorpus = state.unknownCorpus
! elif state.hamCorpus.get(key) is not None:
! sourceCorpus = state.hamCorpus
! elif state.spamCorpus.get(key) is not None:
! sourceCorpus = state.spamCorpus
! if sourceCorpus is not None:
! message = sourceCorpus.get(key).as_string()
! if message is not None:
! message = message.replace('\r\n', '\n').replace('\r', '\n') # For Macs
results = self._buildCluesTable(message, subject, tokens)
del results.classifyAnother
From anadelonbrin at users.sourceforge.net Tue Oct 21 17:42:24 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Tue Oct 21 17:42:28 2003
Subject: [Spambayes-checkins] spambayes/spambayes Options.py,1.82,1.83
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv31665/spambayes
Modified Files:
Options.py
Log Message:
Fix doc error pointed out by David Abrahams
Index: Options.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/Options.py,v
retrieving revision 1.82
retrieving revision 1.83
diff -C2 -d -r1.82 -r1.83
*** Options.py 6 Oct 2003 01:45:16 -0000 1.82
--- Options.py 21 Oct 2003 21:42:22 -0000 1.83
***************
*** 460,464 ****
"""Spambayes builds a database of information about messages
that it has already seen and trained or classified. This
! database is used to ensure that these messages are retrained
or reclassified (unless specifically requested to). This option
specifies the name of the database file. If you don't give a
--- 460,464 ----
"""Spambayes builds a database of information about messages
that it has already seen and trained or classified. This
! database is used to ensure that these messages are not retrained
or reclassified (unless specifically requested to). This option
specifies the name of the database file. If you don't give a
From anadelonbrin at users.sourceforge.net Tue Oct 21 17:42:51 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Tue Oct 21 17:42:55 2003
Subject: [Spambayes-checkins] spambayes/spambayes Options.py, 1.79.2.2,
1.79.2.3
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv31746/spambayes
Modified Files:
Tag: release_1_0
Options.py
Log Message:
Fix doc error pointed out by David Abrahams
Index: Options.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/Options.py,v
retrieving revision 1.79.2.2
retrieving revision 1.79.2.3
diff -C2 -d -r1.79.2.2 -r1.79.2.3
*** Options.py 6 Oct 2003 01:45:44 -0000 1.79.2.2
--- Options.py 21 Oct 2003 21:42:49 -0000 1.79.2.3
***************
*** 460,464 ****
"""Spambayes builds a database of information about messages
that it has already seen and trained or classified. This
! database is used to ensure that these messages are retrained
or reclassified (unless specifically requested to). This option
specifies the name of the database file. If you don't give a
--- 460,464 ----
"""Spambayes builds a database of information about messages
that it has already seen and trained or classified. This
! database is used to ensure that these messages are not retrained
or reclassified (unless specifically requested to). This option
specifies the name of the database file. If you don't give a
From anadelonbrin at users.sourceforge.net Tue Oct 21 17:46:33 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Tue Oct 21 17:46:37 2003
Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py, 1.14,
1.15 sb_notesfilter.py, 1.2, 1.3 sb_unheader.py, 1.1, 1.2
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv32471/scripts
Modified Files:
sb_imapfilter.py sb_notesfilter.py sb_unheader.py
Log Message:
Fix doc errors pointed out by David Abrahams
Index: sb_imapfilter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** sb_imapfilter.py 7 Oct 2003 00:35:32 -0000 1.14
--- sb_imapfilter.py 21 Oct 2003 21:46:31 -0000 1.15
***************
*** 8,12 ****
Usage:
! imapfilter [options]
note: option values with spaces in them must be enclosed
--- 8,12 ----
Usage:
! sb_imapfilter [options]
note: option values with spaces in them must be enclosed
***************
*** 30,40 ****
Classify inbox, with dbm database
! imapfilter -c -D bayes.db
Train Spam and Ham, then classify inbox, with dbm database
! imapfilter -t -c -D bayes.db
Train Spam and Ham only, with pickled database
! imapfilter -t -d bayes.db
Warnings:
--- 30,40 ----
Classify inbox, with dbm database
! sb_imapfilter -c -D bayes.db
Train Spam and Ham, then classify inbox, with dbm database
! sb_imapfilter -t -c -D bayes.db
Train Spam and Ham only, with pickled database
! sb_imapfilter -t -d bayes.db
Warnings:
Index: sb_notesfilter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_notesfilter.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** sb_notesfilter.py 10 Sep 2003 04:33:17 -0000 1.2
--- sb_notesfilter.py 21 Oct 2003 21:46:31 -0000 1.3
***************
*** 78,82 ****
Usage:
! notesfilter [options]
note: option values with spaces in them must be enclosed
--- 78,82 ----
Usage:
! sb_notesfilter [options]
note: option values with spaces in them must be enclosed
***************
*** 107,117 ****
Replicate and classify inbox
! notesfilter -c -d notesbayes -r mynoteserv -l mail.nsf -f Spambayes
Train Spam and Ham, then classify inbox
! notesfilter -t -c -d notesbayes -l mail.nsf -f Spambayes
Replicate, then classify inbox
! notesfilter -c -d test7 -l mail.nsf -r nynoteserv -f Spambayes
To Do:
--- 107,117 ----
Replicate and classify inbox
! sb_notesfilter -c -d notesbayes -r mynoteserv -l mail.nsf -f Spambayes
Train Spam and Ham, then classify inbox
! sb_notesfilter -t -c -d notesbayes -l mail.nsf -f Spambayes
Replicate, then classify inbox
! sb_notesfilter -c -d test7 -l mail.nsf -r nynoteserv -f Spambayes
To Do:
Index: sb_unheader.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_unheader.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** sb_unheader.py 5 Sep 2003 01:16:45 -0000 1.1
--- sb_unheader.py 21 Oct 2003 21:46:31 -0000 1.2
***************
*** 1,5 ****
#!/usr/bin/env python
"""
! unheader.py: cleans headers from email messages. By default, this
removes SpamAssassin headers, specify a pattern with -p to supply
new headers to remove.
--- 1,5 ----
#!/usr/bin/env python
"""
! sb_unheader.py: cleans headers from email messages. By default, this
removes SpamAssassin headers, specify a pattern with -p to supply
new headers to remove.
From anadelonbrin at users.sourceforge.net Tue Oct 21 17:48:04 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Tue Oct 21 17:48:08 2003
Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py, 1.7.2.4,
1.7.2.5 sb_notesfilter.py, 1.2, 1.2.2.1 sb_unheader.py, 1.1, 1.1.2.1
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv322/scripts
Modified Files:
Tag: release_1_0
sb_imapfilter.py sb_notesfilter.py sb_unheader.py
Log Message:
Fix doc errors pointed out by David Abrahams
Index: sb_imapfilter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v
retrieving revision 1.7.2.4
retrieving revision 1.7.2.5
diff -C2 -d -r1.7.2.4 -r1.7.2.5
*** sb_imapfilter.py 7 Oct 2003 00:35:50 -0000 1.7.2.4
--- sb_imapfilter.py 21 Oct 2003 21:48:02 -0000 1.7.2.5
***************
*** 8,12 ****
Usage:
! imapfilter [options]
note: option values with spaces in them must be enclosed
--- 8,12 ----
Usage:
! sb_imapfilter [options]
note: option values with spaces in them must be enclosed
***************
*** 30,40 ****
Classify inbox, with dbm database
! imapfilter -c -D bayes.db
Train Spam and Ham, then classify inbox, with dbm database
! imapfilter -t -c -D bayes.db
Train Spam and Ham only, with pickled database
! imapfilter -t -d bayes.db
Warnings:
--- 30,40 ----
Classify inbox, with dbm database
! sb_imapfilter -c -D bayes.db
Train Spam and Ham, then classify inbox, with dbm database
! sb_imapfilter -t -c -D bayes.db
Train Spam and Ham only, with pickled database
! sb_imapfilter -t -d bayes.db
Warnings:
Index: sb_notesfilter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_notesfilter.py,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -C2 -d -r1.2 -r1.2.2.1
*** sb_notesfilter.py 10 Sep 2003 04:33:17 -0000 1.2
--- sb_notesfilter.py 21 Oct 2003 21:48:02 -0000 1.2.2.1
***************
*** 78,82 ****
Usage:
! notesfilter [options]
note: option values with spaces in them must be enclosed
--- 78,82 ----
Usage:
! sb_notesfilter [options]
note: option values with spaces in them must be enclosed
***************
*** 107,117 ****
Replicate and classify inbox
! notesfilter -c -d notesbayes -r mynoteserv -l mail.nsf -f Spambayes
Train Spam and Ham, then classify inbox
! notesfilter -t -c -d notesbayes -l mail.nsf -f Spambayes
Replicate, then classify inbox
! notesfilter -c -d test7 -l mail.nsf -r nynoteserv -f Spambayes
To Do:
--- 107,117 ----
Replicate and classify inbox
! sb_notesfilter -c -d notesbayes -r mynoteserv -l mail.nsf -f Spambayes
Train Spam and Ham, then classify inbox
! sb_notesfilter -t -c -d notesbayes -l mail.nsf -f Spambayes
Replicate, then classify inbox
! sb_notesfilter -c -d test7 -l mail.nsf -r nynoteserv -f Spambayes
To Do:
Index: sb_unheader.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/sb_unheader.py,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -C2 -d -r1.1 -r1.1.2.1
*** sb_unheader.py 5 Sep 2003 01:16:45 -0000 1.1
--- sb_unheader.py 21 Oct 2003 21:48:02 -0000 1.1.2.1
***************
*** 1,5 ****
#!/usr/bin/env python
"""
! unheader.py: cleans headers from email messages. By default, this
removes SpamAssassin headers, specify a pattern with -p to supply
new headers to remove.
--- 1,5 ----
#!/usr/bin/env python
"""
! sb_unheader.py: cleans headers from email messages. By default, this
removes SpamAssassin headers, specify a pattern with -p to supply
new headers to remove.
From mhammond at users.sourceforge.net Tue Oct 21 21:02:03 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Tue Oct 21 21:02:07 2003
Subject: [Spambayes-checkins] spambayes/windows/py2exe setup_all.py,1.8,1.9
Message-ID:
Update of /cvsroot/spambayes/spambayes/windows/py2exe
In directory sc8-pr-cvs1:/tmp/cvs-serv31028
Modified Files:
setup_all.py
Log Message:
Work with the new py2exe, and the new, pending directory structure.
Index: setup_all.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/windows/py2exe/setup_all.py,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** setup_all.py 22 Sep 2003 05:21:13 -0000 1.8
--- setup_all.py 22 Oct 2003 01:02:00 -0000 1.9
***************
*** 34,38 ****
includes = "dialogs.resources.dialogs", # Outlook dynamic dialogs
dll_excludes = "dapi.dll,mapi32.dll",
- lib_dir = "lib",
typelibs = [
('{00062FFF-0000-0000-C000-000000000046}', 0, 9, 0),
--- 34,37 ----
***************
*** 56,60 ****
outlook_addin = dict(
modules = ["addin"],
! dest_base = "outlook/spambayes_addin",
bitmap_resources = outlook_bmp_resources,
create_exe = False,
--- 55,59 ----
outlook_addin = dict(
modules = ["addin"],
! dest_base = "bin/outlook_addin",
bitmap_resources = outlook_bmp_resources,
create_exe = False,
***************
*** 66,86 ****
outlook_dump_props = dict(
script = os.path.join(sb_top_dir, r"Outlook2000\sandbox\dump_props.py"),
! dest_base = "outlook/outlook_dump_props",
)
service = dict(
! dest_base = "proxy/pop3proxy_service",
modules = ["pop3proxy_service"]
)
sb_server = dict(
! dest_base = "proxy/sb_server",
script = os.path.join(sb_top_dir, "scripts", "sb_server.py")
)
sb_upload = dict(
! dest_base = "proxy/sb_upload",
script = os.path.join(sb_top_dir, "scripts", "sb_upload.py")
)
pop3proxy_tray = dict(
! dest_base = "proxy/pop3proxy_tray",
script = os.path.join(sb_top_dir, "windows", "pop3proxy_tray.py"),
icon_resources = [(1000, os.path.join(sb_top_dir, r"windows\resources\sb-started.ico")),
--- 65,85 ----
outlook_dump_props = dict(
script = os.path.join(sb_top_dir, r"Outlook2000\sandbox\dump_props.py"),
! dest_base = "bin/outlook_dump_props",
)
service = dict(
! dest_base = "bin/sb_service",
modules = ["pop3proxy_service"]
)
sb_server = dict(
! dest_base = "bin/sb_server",
script = os.path.join(sb_top_dir, "scripts", "sb_server.py")
)
sb_upload = dict(
! dest_base = "bin/sb_upload",
script = os.path.join(sb_top_dir, "scripts", "sb_upload.py")
)
pop3proxy_tray = dict(
! dest_base = "bin/sb_tray",
script = os.path.join(sb_top_dir, "windows", "pop3proxy_tray.py"),
icon_resources = [(1000, os.path.join(sb_top_dir, r"windows\resources\sb-started.ico")),
***************
*** 89,99 ****
outlook_data_files = [
! ["outlook", [os.path.join(sb_top_dir, r"Outlook2000\about.html")]],
! ["outlook/docs", glob.glob(os.path.join(sb_top_dir, r"Outlook2000\docs\*.html"))],
! ["outlook/docs/images", glob.glob(os.path.join(sb_top_dir, r"Outlook2000\docs\images\*.jpg"))],
! ["outlook", [os.path.join(sb_top_dir, r"Outlook2000\default_bayes_customize.ini")]],
]
proxy_data_files = [
! ["proxy", [os.path.join(sb_top_dir, r"windows\readme_proxy.html")]],
]
--- 88,98 ----
outlook_data_files = [
! ["docs/outlook", [os.path.join(sb_top_dir, r"Outlook2000\about.html")]],
! ["docs/outlook/docs", glob.glob(os.path.join(sb_top_dir, r"Outlook2000\docs\*.html"))],
! ["docs/outlook/docs/images", glob.glob(os.path.join(sb_top_dir, r"Outlook2000\docs\images\*.jpg"))],
! ["docs/outlook", [os.path.join(sb_top_dir, r"Outlook2000\default_bayes_customize.ini")]],
]
proxy_data_files = [
! ["docs/sb_server", [os.path.join(sb_top_dir, r"windows\readme_proxy.html")]],
]
***************
*** 116,118 ****
--- 115,118 ----
data_files = outlook_data_files + proxy_data_files,
options = {"py2exe" : py2exe_options},
+ zipfile = "lib/spambayes.zip",
)
From mhammond at users.sourceforge.net Thu Oct 23 18:54:12 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Thu Oct 23 18:54:15 2003
Subject: [Spambayes-checkins] spambayes/windows spambayes.iss,1.1,1.2
Message-ID:
Update of /cvsroot/spambayes/spambayes/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv1813
Modified Files:
spambayes.iss
Log Message:
Patch from Kenny Pitt towards the new directory structure.
Index: spambayes.iss
===================================================================
RCS file: /cvsroot/spambayes/spambayes/windows/spambayes.iss,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** spambayes.iss 19 Sep 2003 05:42:03 -0000 1.1
--- spambayes.iss 23 Oct 2003 22:54:09 -0000 1.2
***************
*** 4,12 ****
[Setup]
! AppName=Spambayes
! AppVerName=Spambayes 1.0a6
! AppVersion=1.0a6
! DefaultDirName={pf}\Spambayes
! DefaultGroupName=Spambayes
OutputDir=.
OutputBaseFilename=SpamBayes-Setup
--- 4,12 ----
[Setup]
! AppName=SpamBayes
! AppVerName=SpamBayes 1.1a1
! AppVersion=1.1a1
! DefaultDirName={pf}\SpamBayes
! DefaultGroupName=SpamBayes
OutputDir=.
OutputBaseFilename=SpamBayes-Setup
***************
*** 18,28 ****
[Files]
Source: "py2exe\dist\lib\*.*"; DestDir: "{app}\lib"; Flags: ignoreversion
! Source: "py2exe\dist\outlook\spambayes_addin.dll"; DestDir: "{app}\outlook"; Check: InstallingOutlook; Flags: ignoreversion regserver
! Source: "py2exe\dist\outlook\docs\welcome.html"; DestDir: "{app}\outlook\docs"; Check: InstallingOutlook; Flags: isreadme
! Source: "py2exe\dist\outlook\*.*"; DestDir: "{app}\outlook"; Check: InstallingOutlook; Flags: ignoreversion recursesubdirs
! Source: "py2exe\dist\proxy\*.*"; DestDir: "{app}\proxy"; Check: InstallingProxy; Flags: ignoreversion recursesubdirs
! Source: "py2exe\dist\proxy\readme_proxy.html"; DestDir: "{app}\proxy"; Check: InstallingProxy; Flags: isreadme
[Tasks]
--- 18,33 ----
[Files]
Source: "py2exe\dist\lib\*.*"; DestDir: "{app}\lib"; Flags: ignoreversion
+ Source: "py2exe\dist\bin\python23.dll"; DestDir: "{app}\bin"; Flags: ignoreversion
+ Source: "py2exe\dist\bin\pythoncom23.dll"; DestDir: "{app}\bin"; Flags: ignoreversion
+ Source: "py2exe\dist\bin\PyWinTypes23.dll"; DestDir: "{app}\bin"; Flags: ignoreversion
! Source: "py2exe\dist\bin\outlook_addin.dll"; DestDir: "{app}\bin"; Check: InstallingOutlook; Flags: ignoreversion regserver
! Source: "py2exe\dist\bin\outlook_dump_props.exe"; DestDir: "{app}\bin"; Check: InstallingOutlook; Flags: ignoreversion
! Source: "py2exe\dist\docs\outlook\*.*"; DestDir: "{app}\docs\outlook"; Check: InstallingOutlook; Flags: ignoreversion recursesubdirs
! Source: "py2exe\dist\bin\sb_server.exe"; DestDir: "{app}\bin"; Check: InstallingProxy; Flags: ignoreversion
! Source: "py2exe\dist\bin\sb_tray.exe"; DestDir: "{app}\bin"; Check: InstallingProxy; Flags: ignoreversion
! Source: "py2exe\dist\bin\sb_upload.exe"; DestDir: "{app}\bin"; Check: InstallingProxy; Flags: ignoreversion
! Source: "py2exe\dist\docs\sb_server\readme_proxy.html"; DestDir: "{app}\docs\sb_server"; Check: InstallingProxy; Flags: isreadme
[Tasks]
***************
*** 31,44 ****
[Run]
! FileName:"{app}\proxy\pop3proxy_tray.exe"; Description: "Start the server now"; Flags: postinstall skipifdoesntexist nowait
[Icons]
! Name: "{group}\SpamBayes Tray Icon"; Filename: "{app}\proxy\pop3proxy_tray.exe"; Check: InstallingProxy
! Name: "{userdesktop}\SpamBayes Tray Icon"; Filename: "{app}\proxy\pop3proxy_tray.exe"; Check: InstallingProxy; Tasks: desktop
! Name: "{userstartup}\SpamBayes Tray Icon"; Filename: "{app}\proxy\pop3proxy_tray.exe"; Check: InstallingProxy; Tasks: startup
! Name: "{group}\About SpamBayes"; Filename: "{app}\proxy\readme_proxy.html"; Check: InstallingProxy;
! Name: "{group}\SpamBayes Outlook Addin\About SpamBayes"; Filename: "{app}\outlook\about.html"; Check: InstallingOutlook
! Name: "{group}\SpamBayes Outlook Addin\Troubleshooting Guide"; Filename: "{app}\outlook\docs\troubleshooting.html"; Check: InstallingOutlook
[UninstallDelete]
--- 36,49 ----
[Run]
! FileName:"{app}\bin\sb_tray.exe"; Description: "Start the server now"; Flags: postinstall skipifdoesntexist nowait
[Icons]
! Name: "{group}\SpamBayes Tray Icon"; Filename: "{app}\bin\sb_tray.exe"; Check: InstallingProxy
! Name: "{userdesktop}\SpamBayes Tray Icon"; Filename: "{app}\bin\sb_tray.exe"; Check: InstallingProxy; Tasks: desktop
! Name: "{userstartup}\SpamBayes Tray Icon"; Filename: "{app}\bin\sb_tray.exe"; Check: InstallingProxy; Tasks: startup
! Name: "{group}\About SpamBayes"; Filename: "{app}\docs\sb_server\readme_proxy.html"; Check: InstallingProxy;
! Name: "{group}\SpamBayes Outlook Addin\About SpamBayes"; Filename: "{app}\docs\outlook\about.html"; Check: InstallingOutlook
! Name: "{group}\SpamBayes Outlook Addin\Troubleshooting Guide"; Filename: "{app}\docs\outlook\docs\troubleshooting.html"; Check: InstallingOutlook
[UninstallDelete]
From mhammond at users.sourceforge.net Sun Oct 26 22:35:01 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Sun Oct 26 22:35:04 2003
Subject: [Spambayes-checkins] spambayes/Outlook2000 filter.py,1.35,1.36
Message-ID:
Update of /cvsroot/spambayes/spambayes/Outlook2000
In directory sc8-pr-cvs1:/tmp/cvs-serv2017
Modified Files:
filter.py
Log Message:
Add some log messages indicating what folder the filter is moving/copying
to (including if it is configured to "not touch" the message)
Index: filter.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/filter.py,v
retrieving revision 1.35
retrieving revision 1.36
diff -C2 -d -r1.35 -r1.36
*** filter.py 2 Oct 2003 17:47:39 -0000 1.35
--- filter.py 27 Oct 2003 03:34:59 -0000 1.36
***************
*** 59,63 ****
msg.SetReadState(True)
if action.startswith("un"): # untouched
! pass
elif action.startswith("co"): # copied
try:
--- 59,63 ----
msg.SetReadState(True)
if action.startswith("un"): # untouched
! mgr.LogDebug(1, "Not touching message '%s'" % msg.subject)
elif action.startswith("co"): # copied
try:
***************
*** 68,71 ****
--- 68,73 ----
else:
msg.CopyToReportingError(mgr, dest_folder)
+ mgr.LogDebug(1, "Copied message '%s' to folder '%s'" \
+ % (msg.subject, dest_folder.GetFQName()))
elif action.startswith("mo"): # Moved
try:
***************
*** 76,79 ****
--- 78,83 ----
else:
msg.MoveToReportingError(mgr, dest_folder)
+ mgr.LogDebug(1, "Moved message '%s' to folder '%s'" \
+ % (msg.subject, dest_folder.GetFQName()))
else:
raise RuntimeError, "Eeek - bad action '%r'" % (action,)
From mhammond at users.sourceforge.net Sun Oct 26 22:36:26 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Sun Oct 26 22:36:29 2003
Subject: [Spambayes-checkins] spambayes/Outlook2000 addin.py,1.113,1.114
Message-ID:
Update of /cvsroot/spambayes/spambayes/Outlook2000
In directory sc8-pr-cvs1:/tmp/cvs-serv2206
Modified Files:
addin.py
Log Message:
Print the 'fully qualified' folder names that we are watching. No longer
hide Python FutureWarnings, and a typo in a comment.
Index: addin.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/addin.py,v
retrieving revision 1.113
retrieving revision 1.114
diff -C2 -d -r1.113 -r1.114
*** addin.py 29 Sep 2003 02:14:25 -0000 1.113
--- addin.py 27 Oct 2003 03:36:24 -0000 1.114
***************
*** 21,25 ****
# * Our config files also want a consistent locale, so periods and commas
# are the same when they are read as when they are written.
! # So, at a few opportune times, we simple set it back.
# We do it here as early as possible, before any imports that may see this
#
--- 21,25 ----
# * Our config files also want a consistent locale, so periods and commas
# are the same when they are read as when they are written.
! # So, at a few opportune times, we simply set it back.
# We do it here as early as possible, before any imports that may see this
#
***************
*** 30,43 ****
locale.setlocale(locale.LC_NUMERIC, "C")
- if sys.version_info >= (2, 3):
- # sick off the new hex() warnings!
- # todo - remove this - win32all has removed all these warnings
- # (but we will wait some time for people to update)
- warnings.filterwarnings("ignore", category=FutureWarning, append=1)
- # Binary builds can avoid our pendingdeprecation too
- if hasattr(sys, "frozen"):
- warnings.filterwarnings("ignore", category=DeprecationWarning, append=1)
-
-
from win32com import universal
from win32com.server.exception import COMException
--- 30,33 ----
***************
*** 1308,1312 ****
if existing is None or existing.__class__ != HandlerClass:
folder = msgstore_folder.GetOutlookItem()
! name = msgstore_folder.name
try:
new_hook = DispatchWithEvents(folder.Items, HandlerClass)
--- 1298,1302 ----
if existing is None or existing.__class__ != HandlerClass:
folder = msgstore_folder.GetOutlookItem()
! name = msgstore_folder.GetFQName()
try:
new_hook = DispatchWithEvents(folder.Items, HandlerClass)
***************
*** 1329,1333 ****
tb = None # dont want it, and nuke circular ref
traceback.print_exception(etype, value, tb)
! print "SpamBayes: Watching for new messages in folder ", name
else:
new_hooks[msgstore_folder.id] = existing
--- 1319,1323 ----
tb = None # dont want it, and nuke circular ref
traceback.print_exception(etype, value, tb)
! print "SpamBayes: Watching for new messages in folder", name
else:
new_hooks[msgstore_folder.id] = existing
From mhammond at users.sourceforge.net Mon Oct 27 01:39:44 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 01:39:49 2003
Subject: [Spambayes-checkins] website/apps - New directory
Message-ID:
Update of /cvsroot/spambayes/website/apps
In directory sc8-pr-cvs1:/tmp/cvs-serv26447/apps
Log Message:
Directory /cvsroot/spambayes/website/apps added to the repository
From mhammond at users.sourceforge.net Mon Oct 27 01:39:53 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 01:39:56 2003
Subject: [Spambayes-checkins] website/apps/outlook - New directory
Message-ID:
Update of /cvsroot/spambayes/website/apps/outlook
In directory sc8-pr-cvs1:/tmp/cvs-serv26466/apps/outlook
Log Message:
Directory /cvsroot/spambayes/website/apps/outlook added to the repository
From mhammond at users.sourceforge.net Mon Oct 27 01:42:19 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 01:42:22 2003
Subject: [Spambayes-checkins] website Makefile,1.12,1.13
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv26732
Modified Files:
Makefile
Log Message:
Add a new FAQ style 'Commonly Reported Outlook Bugs', in its own
directory, all ready for more app specific docs!
Index: Makefile
===================================================================
RCS file: /cvsroot/spambayes/website/Makefile,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** Makefile 13 Aug 2003 04:29:12 -0000 1.12
--- Makefile 27 Oct 2003 06:42:16 -0000 1.13
***************
*** 10,14 ****
# this def'n must occur before the include!
! EXTRA_TARGETS = reply.txt faq.html default.css
include scripts/make.rules
--- 10,14 ----
# this def'n must occur before the include!
! EXTRA_TARGETS = reply.txt faq.html apps/outlook/bugs.html default.css
include scripts/make.rules
***************
*** 24,29 ****
$(TARGETS): links.h
! # hackery to whack the faq into ht2html...
!
DUHTML = html.py
faq.ht : faq.txt
--- 24,28 ----
$(TARGETS): links.h
! # hackery to whack the 'faq format' text files into ht2html...
DUHTML = html.py
faq.ht : faq.txt
***************
*** 38,41 ****
--- 37,52 ----
faq.html : faq.ht
./scripts/ht2html/ht2html.py -f -s SpamBayesFAQGenerator -r . ./faq.ht
+
+ apps/outlook/bugs.ht : apps/outlook/bugs.txt
+ $(DUHTML) apps/outlook/bugs.txt > apps/outlook/bugs.body.tmp
+ echo "Title: Commonly Reported Outlook Bugs" > apps/outlook/bugs.ht
+ echo "Author-Email: SpamBayes@python.org" >> apps/outlook/bugs.ht
+ echo "Author: SpamBayes" >> apps/outlook/bugs.ht
+ echo "" >> apps/outlook/bugs.ht
+ cat apps/outlook/bugs.body.tmp | sed -e '1,//d' -e '/<\/body>/,$$d' >> apps/outlook/bugs.ht
+ rm apps/outlook/bugs.body.tmp
+
+ apps/outlook/bugs.html : apps/outlook/bugs.ht
+ ./scripts/ht2html/ht2html.py -f -s SpamBayesFAQGenerator -r . ./apps/outlook/bugs.ht
version: download/Version.cfg
From mhammond at users.sourceforge.net Mon Oct 27 01:42:19 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 01:42:23 2003
Subject: [Spambayes-checkins] website/apps/outlook .cvsignore, NONE,
1.1 bugs.txt, NONE, 1.1
Message-ID:
Update of /cvsroot/spambayes/website/apps/outlook
In directory sc8-pr-cvs1:/tmp/cvs-serv26732/apps/outlook
Added Files:
.cvsignore bugs.txt
Log Message:
Add a new FAQ style 'Commonly Reported Outlook Bugs', in its own
directory, all ready for more app specific docs!
--- NEW FILE: .cvsignore ---
*.html
bugs.ht
--- NEW FILE: bugs.txt ---
================================================
SpamBayes Outlook Addin Frequently Reported Bugs
================================================
:Date: $Date: 2003/10/27 06:42:17 $
:Version: $Revision: 1.1 $
:Web site: http://spambayes.sourceforge.net/
.. Please note that until there's a Q&A-specific construct available in
Docutils, this FAQ will use section titles for questions. Therefore
questions must fit on one line. The title may be a summary of the
question, with the full question in the section body.
.. contents::
.. sectnum::
This page has general information on the most reported bugs for the Outlook
Addin. All bugs are managed at `SourceForge`_, but in an attempt to save
both your time and ours, the most commonly reported bugs are here.
If you don't see your bug listed here, please try the following:
* See the `Frequently Asked Questions`_.
* See the `Troubleshooting Guide`_ (also installed with SpamBayes)
* Browse the `SourceForge bug database`_. If you find a similar bug,
please add any comments you can. You may also find the 'Monitor' feature
useful, so you receive emails as the bug is changed.
If all else fails, you can create a new bug. **Please ensure you
attach a log from your session** - the `Troubleshooting Guide`_
has all the details.
.. _SourceForge: http://sourceforge.net/tracker/?atid=498103&group_id=61702&func=browse
.. _SourceForge bug database: http://sourceforge.net/tracker/?atid=498103&group_id=61702&func=browse
.. _Frequently Asked Questions: http://spambayes.sourceforge.net/faq.html
.. _Troubleshooting Guide: http://cvs.sourceforge.net/viewcvs.py/spambayes/spambayes/Outlook2000/docs/troubleshooting.html?rev=HEAD
Frequently Reported Bugs
========================
Installation fails with "DLL Registration" error
------------------------------------------------
A number of users report errors at install time registering the DLL. Most
of these helpfully say "Error 0". Some users have reported that changing
the install path to a 'simpler' version solves it for them (but this seems
strange to the developers!). We are tracking this in `Bug 807618`_.
.. _Bug 807618: https://sourceforge.net/tracker/index.php?func=detail&aid=807618&group_id=61702&atid=498103
Outlook Toolbars Fail
---------------------
This is a common problem, and 99% of users find that the
`Troubleshooting Guide`_ solves this issue for them. However,
at least one user has reported this does not work for him.
We are tracking this issue in bug `[ 828669 ] Toolbars refuse to work after reset`_.
.. _Troubleshooting Guide: http://cvs.sourceforge.net/viewcvs.py/spambayes/spambayes/Outlook2000/docs/troubleshooting.html?rev=HEAD
.. _[ 828669 ] Toolbars refuse to work after reset: https://sourceforge.net/tracker/index.php?func=detail&aid=828669&group_id=61702&atid=498103
Various issues with Outlook builtin rules
-----------------------------------------
There are a number of reports regarding SpamBayes 'missing' messages that
have also been processed by the builtin Outlook rules. Outlook does not
expose a way of avoiding this. To work around the problem, SpamBayes has a
'Background Processing' option you can set in the Advanced tab of the
SpamBayes manager. Any bugs on this issue will be closed as 'Wont Fix'
('Can't Fix' would be better, but that doesn't exist )
New Mail Icon not cleared when Spam is marked as Read
-----------------------------------------------------
This is a known problem, but Outlook does not provide a reasonable technique
for preventing it. Please see our `FAQ entry on this issue`_.
.. _FAQ entry on this issue: http://spambayes.sourceforge.net/faq.html#how-can-i-get-rid-of-the-envelope-tray-icon-for-spam
Customize Outlook Today stops working
-------------------------------------
This is likely to be a Microsoft Issue - see a
`Microsoft Knowledge Base article`_ on the issue, or
`our (closed) bug #810902`_.
.. _Microsoft Knowledge Base article: http://support.microsoft.com/default.aspx?scid=kb;EN-US;q820575
.. _our (closed) bug #810902: https://sourceforge.net/tracker/index.php?func=detail&aid=810902&group_id=61702&atid=498103
PGP addin causes crashes
------------------------
The PGP freeware plugin for Outlook is known to cause a number of problems,
both with and without SpamBayes installed. SpamBayes seems to have no
impact on how often PGP will cause Outlook to crash. If you use the PGP
plugin, please disable it while you are not using it - your crashes are
almost certain to stop.
From mhammond at users.sourceforge.net Mon Oct 27 04:40:40 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 04:40:45 2003
Subject: [Spambayes-checkins] website/apps/outlook bugs.txt,1.1,1.2
Message-ID:
Update of /cvsroot/spambayes/website/apps/outlook
In directory sc8-pr-cvs1:/tmp/cvs-serv19479/apps/outlook
Modified Files:
bugs.txt
Log Message:
Move the intro text to under the first heading.
Index: bugs.txt
===================================================================
RCS file: /cvsroot/spambayes/website/apps/outlook/bugs.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** bugs.txt 27 Oct 2003 06:42:17 -0000 1.1
--- bugs.txt 27 Oct 2003 09:40:38 -0000 1.2
***************
*** 5,9 ****
:Date: $Date$
:Version: $Revision$
- :Web site: http://spambayes.sourceforge.net/
.. Please note that until there's a Q&A-specific construct available in
--- 5,8 ----
***************
*** 15,18 ****
--- 14,20 ----
.. sectnum::
+ Frequently Reported Bugs
+ ========================
+
This page has general information on the most reported bugs for the Outlook
Addin. All bugs are managed at `SourceForge`_, but in an attempt to save
***************
*** 37,43 ****
.. _Frequently Asked Questions: http://spambayes.sourceforge.net/faq.html
.. _Troubleshooting Guide: http://cvs.sourceforge.net/viewcvs.py/spambayes/spambayes/Outlook2000/docs/troubleshooting.html?rev=HEAD
-
- Frequently Reported Bugs
- ========================
Installation fails with "DLL Registration" error
--- 39,42 ----
From mhammond at users.sourceforge.net Mon Oct 27 19:36:49 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 19:36:53 2003
Subject: [Spambayes-checkins] website/apps .cvsignore, NONE, 1.1 Makefile,
NONE, 1.1
Message-ID:
Update of /cvsroot/spambayes/website/apps
In directory sc8-pr-cvs1:/tmp/cvs-serv28539/apps
Added Files:
.cvsignore Makefile
Log Message:
Attempting to get the make process to synch the new 'apps' directory.
--- NEW FILE: .cvsignore ---
*.html
--- NEW FILE: Makefile ---
include ../scripts/make.rules
ROOT_DIR = ..
ROOT_OFFSET = apps
local_install:
cd outlook ; $(MAKE) install
From mhammond at users.sourceforge.net Mon Oct 27 19:36:49 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 19:36:55 2003
Subject: [Spambayes-checkins] website/apps/outlook Makefile,NONE,1.1
Message-ID:
Update of /cvsroot/spambayes/website/apps/outlook
In directory sc8-pr-cvs1:/tmp/cvs-serv28539/apps/outlook
Added Files:
Makefile
Log Message:
Attempting to get the make process to synch the new 'apps' directory.
--- NEW FILE: Makefile ---
include ../../scripts/make.rules
ROOT_DIR = ../..
ROOT_OFFSET = apps/outlook
From mhammond at users.sourceforge.net Mon Oct 27 19:36:49 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 19:36:56 2003
Subject: [Spambayes-checkins] website Makefile,1.13,1.14
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv28539
Modified Files:
Makefile
Log Message:
Attempting to get the make process to synch the new 'apps' directory.
Index: Makefile
===================================================================
RCS file: /cvsroot/spambayes/website/Makefile,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** Makefile 27 Oct 2003 06:42:16 -0000 1.13
--- Makefile 28 Oct 2003 00:36:47 -0000 1.14
***************
*** 59,61 ****
--- 59,62 ----
local_install:
cd download ; $(MAKE) install
+ cd apps; $(MAKE) install
From anadelonbrin at users.sourceforge.net Mon Oct 27 19:41:06 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 27 19:41:10 2003
Subject: [Spambayes-checkins] spambayes/scripts README.txt,1.1,1.2
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv29200/scripts
Modified Files:
README.txt
Log Message:
Integrate [ 831428 ] Spelling misstake
Index: README.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/README.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** README.txt 27 Jul 2003 07:41:09 -0000 1.1
--- README.txt 28 Oct 2003 00:41:04 -0000 1.2
***************
*** 5,7 ****
To avoid polluting the end user's python/scripts directory when spambayes is installed,
! each script should be prefixed with 'sb-'.
\ No newline at end of file
--- 5,7 ----
To avoid polluting the end user's python/scripts directory when spambayes is installed,
! each script should be prefixed with 'sb_'.
\ No newline at end of file
From anadelonbrin at users.sourceforge.net Mon Oct 27 19:41:25 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 27 19:41:29 2003
Subject: [Spambayes-checkins] spambayes/scripts README.txt,1.1,1.1.2.1
Message-ID:
Update of /cvsroot/spambayes/spambayes/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv29264/scripts
Modified Files:
Tag: release_1_0
README.txt
Log Message:
Integrate [ 831428 ] Spelling misstake
Index: README.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/scripts/README.txt,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -C2 -d -r1.1 -r1.1.2.1
*** README.txt 27 Jul 2003 07:41:09 -0000 1.1
--- README.txt 28 Oct 2003 00:41:23 -0000 1.1.2.1
***************
*** 5,7 ****
To avoid polluting the end user's python/scripts directory when spambayes is installed,
! each script should be prefixed with 'sb-'.
\ No newline at end of file
--- 5,7 ----
To avoid polluting the end user's python/scripts directory when spambayes is installed,
! each script should be prefixed with 'sb_'.
\ No newline at end of file
From anadelonbrin at users.sourceforge.net Mon Oct 27 23:21:13 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 27 23:21:17 2003
Subject: [Spambayes-checkins] spambayes/spambayes ImapUI.py, 1.18.2.3,
1.18.2.4
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv30218/spambayes
Modified Files:
Tag: release_1_0
ImapUI.py
Log Message:
I could have sworn I had checked these in already. Improvements to the
handling of displaying the available folders for IMAP (if we don't have the
server/login details, then we can't).
Index: ImapUI.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/ImapUI.py,v
retrieving revision 1.18.2.3
retrieving revision 1.18.2.4
diff -C2 -d -r1.18.2.3 -r1.18.2.4
*** ImapUI.py 6 Oct 2003 01:24:37 -0000 1.18.2.3
--- ImapUI.py 28 Oct 2003 04:21:11 -0000 1.18.2.4
***************
*** 162,185 ****
self._writePreamble("Select Filter Folders")
self._login_to_imap()
! available_folders = self.imap.folder_list()
! content = self.html.configForm.clone()
! content.configFormContent = ""
! content.introduction = """This page allows you to change which
! folders are filtered, and where filtered mail ends up."""
! content.config_submit.value = "Save Filter Folders"
! content.optionsPathname = optionsPathname
! for opt in ("unsure_folder", "spam_folder",
! "filter_folders"):
! folderBox = self._buildFolderBox("imap", opt, available_folders)
! content.configFormContent += folderBox
! self.write(content)
! self._writePostamble()
def _login_to_imap(self):
if self.imap_logged_in:
return
! if self.imap is None:
server = options["imap", "server"][0]
if server.find(':') > -1:
--- 162,186 ----
self._writePreamble("Select Filter Folders")
self._login_to_imap()
! if self.imap_logged_in:
! available_folders = self.imap.folder_list()
! content = self.html.configForm.clone()
! content.configFormContent = ""
! content.introduction = """This page allows you to change which
! folders are filtered, and where filtered mail ends up."""
! content.config_submit.value = "Save Filter Folders"
! content.optionsPathname = optionsPathname
! for opt in ("unsure_folder", "spam_folder",
! "filter_folders"):
! folderBox = self._buildFolderBox("imap", opt, available_folders)
! content.configFormContent += folderBox
! self.write(content)
! self._writePostamble()
def _login_to_imap(self):
if self.imap_logged_in:
return
! if self.imap is None and len(options["imap", "server"]) > 0:
server = options["imap", "server"][0]
if server.find(':') > -1:
***************
*** 211,229 ****
self._writePreamble("Select Training Folders")
self._login_to_imap()
! available_folders = self.imap.folder_list()
! content = self.html.configForm.clone()
! content.configFormContent = ""
! content.introduction = """This page allows you to change which
! folders contain mail to train Spambayes."""
! content.config_submit.value = "Save Training Folders"
! content.optionsPathname = optionsPathname
! for opt in ("ham_train_folders",
! "spam_train_folders"):
! folderBox = self._buildFolderBox("imap", opt, available_folders)
! content.configFormContent += folderBox
! self.write(content)
! self._writePostamble()
def onChangeopts(self, **parms):
--- 212,231 ----
self._writePreamble("Select Training Folders")
self._login_to_imap()
! if self.imap_logged_in:
! available_folders = self.imap.folder_list()
! content = self.html.configForm.clone()
! content.configFormContent = ""
! content.introduction = """This page allows you to change which
! folders contain mail to train Spambayes."""
! content.config_submit.value = "Save Training Folders"
! content.optionsPathname = optionsPathname
! for opt in ("ham_train_folders",
! "spam_train_folders"):
! folderBox = self._buildFolderBox("imap", opt, available_folders)
! content.configFormContent += folderBox
! self.write(content)
! self._writePostamble()
def onChangeopts(self, **parms):
From anadelonbrin at users.sourceforge.net Mon Oct 27 23:22:52 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Mon Oct 27 23:22:55 2003
Subject: [Spambayes-checkins]
spambayes/spambayes/resources ui_html.py, 1.20, 1.20.2.1
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes/resources
In directory sc8-pr-cvs1:/tmp/cvs-serv30325/spambayes/resources
Modified Files:
Tag: release_1_0
ui_html.py
Log Message:
I believe the autogenerated file didn't get checked in last time I changed
ui.html. Here it is.
Index: ui_html.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/resources/ui_html.py,v
retrieving revision 1.20
retrieving revision 1.20.2.1
diff -C2 -d -r1.20 -r1.20.2.1
*** ui_html.py 30 Aug 2003 21:37:10 -0000 1.20
--- ui_html.py 28 Oct 2003 04:22:50 -0000 1.20.2.1
***************
*** 6,87 ****
import zlib
! data = zlib.decompress("x;sƱg&\005\035\033T\"!v\023Ԗ8ٱ*1d2\031\0018\000\034\017I{wÇ$\
! :if!=ο:x✽[~x.~|S\034L;>Nϖg;d˂ge\\\
! 2tz|S\011}\013\036w\025W`qpr\006|+Jc)\012}VbC1\000MU\
! \007\037u|p.\012NB\011jd F8l::Tu<>\013QZ3z&g?yf\
! }a\007\000,\020<#^A\003t,\014fe%\032\0042ڲOl\005\020f\033\031E̓}V\
! e6\"\025U\034\023b\035g3}E\003\016pJ\026)\000\013>K\006Cb_H|v\
! \033Áލ\023m^{/\012&\024k\016D\000L\"\032q\033;Zy0$\0036i5Z\000\000w(JlC=\
! qՃ[{\00451`sq-3u\035\020u\016194п&'dOO\
! G\"\"j[|p\015\011?[\026&,\027 =e\016\032\016gn\0008]\010\027j@a˃2\
! (\021\005e~\002x\000\0164:\005PwQ\035V?c\022&\002\"\0205+Le*H\034)\012\026w\
! \007)\037_\016d-\023V\023S]Ի/@0EQ\034Hy*qv\016\035-ފK{1g8\
! \001r\023l\025'硌`Ao,\0228\003\"T\033\022)o\016x\026\035H\024\010\032flhdZ[\022^\002\
! %4߂u\0001`3Ȇ\"\011\0003!\012\036\" 8OSC@\024uV)h,ɢ-\020\024,\
! Il:MA\020jë.^jBU:g\0070J \037t@\"J\030TP̀%lNQbA$\
! {\020JMD\026+\017*VD\003#A\021t\014\016\007v\017\023PsR~\003\024z,\030D8\007\
! [\020feBD%&\020|z\033T\031#pD@\006qQv6D4v\000WS}26CAp\
! j<\023d#\024w!k\017\032QQ\\\005\036,BQ\000\013PM\032&L]Z\006q\025C;a6\027\001\
! 8qI-n^[83բ՞\031C.V\026Z\026c[\0275\037p+A,\002K[\015\0122,x\005,Vhn}EC\033z$TM\0028\011P\
! hU\006j\035\007,D:\010\010Q\012\003GvJm\020kPٺƍV$Q\004Vt@\
! ZZYR4 %Ц2m_y\025\011hK\034Ă\021\022@Չ\003bT\012\012\024\024Q=>\
! '(zrtcIڭ\"I`fQꬪ\032pf\027\007^GCҌ\
! \024\025\024\001\001D7\006F8u]\010r\013!r{\001uU\004\002=\015T\007^\001*xU\023_z.1|\
! 8xZzӰ˚An\031\032If\021\036,q4\024pO\013\007z I(\012'+\001\
! iXWV0P\031lWD\025o%\0231L\0122\007\010\037+zk\017i݁s\011uV&\
! \\u.\001\025jy7:w\031l}W\"\031Dq\031qQ'O\031j\022<{S/v\
! W<\035O\003>^\030KLv/[4\020\025?\000M,[\033`[\005I@Pt'/\
! &]\011Ja8Oz\013\014!+m]ُ-SɊ'҉GN@\024\027ū\030֎fuQCoA\006O\
! \015gmcVօM%҃\01130b\030>vzk ]9S6\031Rs?\
! Žٛcq{&\025\000\014f!;\035\025U\005.\015c\000o\015\0338\011b\020\023\014\032h\
! \036v\001YnJᵣc\026S\014jE?@\036\032\034&k\031F\023?iU\"k\011~gq!BN\
! \016@=+S`*\020CQj\015Mi`#?\022$\0273Z\033Y ̆f-\024bIx\021\021M\
! ;zJzHq_I\015 6\004S-`PUNC\013+[Sś\015Bk0ا\033\021x\016Ą(\002cӠ*\
! \012\034k)\000\002\0250\0254w]\004`X
p&~_\015VAc8L\020\
! P2EĦ7\021D&`&\0110CI#j'r>8\003FuYˮL\002NC3=\000S\003\
! \031:E@a\010\035\013T@\006t\012\\\027\000Ȁ|4:]#aއ\036\
! t0( +ZZ%\"cn] d\015\034\0078K\017@\034Z\031ԎۣT.XȁoR\017\
! !w\0170s7{C\026\"\010870~w~UO~>={|\016\
! LI̔\016z3~\006ARTʧ\026x^D2Sp'Gɞ?gݖI\"5D\035S?uHRM\
! 0\"\011ٜ\005\0164<\022b\006J\003\020s\004OzB\035/ܙ7R63͎\026\
! \013vm:\000_lDA85uRgPwRN\024`v^\015gz\034 );О~Q=dG5\
! K\033\036\021\015/>^-]\037\033&ZW]UAv,U\035\030\033\011~Q?\030Co9dX֟/9\010\
! qַLGpzs1\000ЯT@Ȼ\021\020ȸb:kM`R\003Fu|\
! LNA#\003M7@\002#Lp7@A#N`[R,\031\031nbKyAL\035?,St'C\
! nMu\011]{sp\017%R,\024\013\034*=\012\031|\007{bx\"\007s\031Xwq\026Daⶠ?\
! \004,x[cG\000eqY\02149D\026\007&ĬM\016P\003ץQ,\005Ւ\020\
! O\006\024Q\0247l\0339=@1pZ{N]\0240\004]\012x\"@a\000w\003!hoГJf\
! ̪Fhw\012kv!\030qQ\016\022ݠ$TCH\024e\000i\007\011\003w=I\035\031iӺao\
! suH\036\015\003\033s\032N\024F3\001n\"/*yQ\021V\007\021Q1U4\024hM\032TY\\X\
! n\031~c&\012ҭ\025S=kr\002%XPiHP@wI\023u\001QqE=\012BgvV\030\
! }e^w`!U`b\025\016GW*Ŋ\00381\006Ty)_m\010o=\012\
! ЧA-8ÑM\002\005c\023]c2\005@b)\0111\002W\026\031W2\007V\036*\004D[C`H-\
! h\007V/(tM&wHBs\014eH+rUM=%96_u\\\
! jHnW4hx|\000g7ǾyfyE(W\012\0004vq\001\020IÄ\011K4N$qh8d\0025\037\0078.\
! D0k3sZ3cp\005\"VBpl˜TL6i\036\037賾{Ze@\0063x\
! \036Щm}~N9<LJ\030{/؎PٌL{V\006\001s\007Cƣ\035!E\
! 2\004@\015\002#TTD@w\005W\020ب9]sˤ<\035>b1*8wߒň\036\025O\"\
! r\017dPni\014|ֳ\037ZVo$q\026m)\023U\014ƼfjGU\000H]Q\005\007\007\022PxQ\
! B#]\001\022$\\-\004Ѡ\012\"kV9/A\012-ЭoӨoP*I\000\007\0204\001?\030\012\
! \000ZCH'\\\034\025+!\003Vb\034\010Ҏ}]\033b\015J8]VqЊ$\020SШ\016\016IK++X\
! \032\033\00446\033&x*w\"\001mC\031ֆX0B\002\036:q`\017j^\001]8\012\030EP\
! Z8Yv\0147)W_UP$\011\0141q\033U\024P\003\016z|3\030|(Z/#\"\
! Ӄ\010g\022An!\004Rn\007>:@\000gJ4\\o\026%/Bz+\0053/=\033\
! \020OUo\032vqZxY3-C#,\024|E9s\025Ɠ\002i\027\034P\017$\011EvŚ9 \026\
! \021\006*\016\002\004S\027UY\002\0217f|QA\000\003yEY{A>:;p:\026*D9\
! ;:>9Bm\0265&P6\015\012-xܜC$\035'\021W\037N\030u&\001\032M\0033\012lwqC\
! d\0135eJYdUZ\023k<\020E\"Fiƨ .V\
! N1-\\tU\034\031\0301\014:;A'5\0206UwST ?\033ji\
! vz^N\005\000\003-Sd\0100m\007EU\001rb\030[8?X!\004\006$0zț C]@\
! \026\024kQ0\013)\006[ \017\015S\016hմ*5\007\020!NCy+\007\036\
! ڿ)G0v%(4҆4Y\037y\001\031,\032\020jfML\0121z<҈Uۦ\035=%Q\
! $ڰ\006\020UkC\0260*\025)Xsuz5\030쳕\010hk<\003bB\024iP%b\001\
! \024\000\001?\012a;G.Db\0020\\,DBuzG\023FMEK\006Z 1\034&\\\010hQIq\
! \021;;\016TIL\
! \016ÙT? y.u*SO`{\0145#ģ`/_v(\021\022GƎT$)u|io\
! \030ۋawb6iz\001h\037?R\000\004g\0342\036QǞ;q\0077zlNpu\
! \007H5h\037f\023NjJ^>\014~\001\003\011\030ÿM֫~_/4\
! \0211ˎku\025տ]\025\024h'T\027\034E1\013U\011\031g}\
! `\025\016ܮz\\63z\021\000z\034h\025\0145\002\002\031FL'0\011\000L2\030\
! :hd\011\026>\006H`\011\016|\006(h\011\014>kZ%\0030\003Xr-\037<)SÇe\012nd(ޭ.\
! ko\016v]bCY.û\030pS\033N`p\025\013v\031\021H\024&nsj3(JpR\
! U:v\020\012]f|\037\027%\001)Lӟ3̎d\002F7!fmr.9bi,̈́/~\0326\
! jd]^\033\004sz!R\027\001\012-\004\035Dk6G}T2cV5BS\
! 7X\013\001>HOr\016%o%z~C(c\007H;H@'QIHSTe۽I^VY\
! \"y\017l\"ϩ:Q\033-\003\004uq:xɍ⼈@3nƠv&7\
! \026lQo(Z\021\015=ճ&'P:9\004\005t\017+Q'x)\034\025WMާ tbgW\010\
! Jr\000\026D\025\015f.XpH{uR8V\020S<@\002\033[V\011Ih>\017L\
! m\031\023\020{\007O1͠\031A\036F߿2N9qL\
! {\025,˅لO\031@\015\0217(\012עl\0306\010.LC\015z82\
! \030\013m9\0130\036%\005h[xۏ\037s誆\031Qx\016*<6j\015غ訋\
! 438\010h3\002%\005u呗\032\011^Wӷ\002\005\030B\024C\011qTנ8]9qW\
! \\vv.͎3\022gv!_Xc\003U=\013l\003\010Q+3?מC\016C\
! &<\020/smSb~^\011]xR8ء_\033;\025㻾\005{hw\027CY$\
! \016a{w+'藚;,M3v\011\030n\0215,\015\013׃u\026|Ym'\016Δ`@M\
! \016qHOT\012WϹW}\007vca_)\005lo0?s\027q\020u\016\
! s\011r25\003ƫkG\016\020MF)\004\023\026~1ߎVmז~'ܭ\024\013\014xe`B&\
! ;>N#\027S\032-b\012ڻ\"F\022t=[zfJ\024L=%\022GgbL\004;\
! |Xb[\025J{M\021qYpM\033~/ǯ\006tז\013w\005'\0071=
Update of /cvsroot/spambayes/website/scripts/ht2html
In directory sc8-pr-cvs1:/tmp/cvs-serv31524
Modified Files:
HTParser.py
Log Message:
Allow a 'Contact-URL' header to override the hardcoded URL.
Index: HTParser.py
===================================================================
RCS file: /cvsroot/spambayes/website/scripts/ht2html/HTParser.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** HTParser.py 13 Aug 2003 08:28:37 -0000 1.2
--- HTParser.py 28 Oct 2003 04:35:12 -0000 1.3
***************
*** 87,91 ****
# the 'author' email
self.sidebar.append('Contact Us')
! self.sidebar.append(('contact.html', 'Contact details'))
#author = self.get('author') # guaranteed
#email = self.get('author-email', author)
--- 87,92 ----
# the 'author' email
self.sidebar.append('Contact Us')
! contact_url = self.get('Contact-URL', 'contact.html')
! self.sidebar.append((contact_url, 'Contact details'))
#author = self.get('author') # guaranteed
#email = self.get('author-email', author)
From mhammond at users.sourceforge.net Mon Oct 27 23:37:10 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 23:37:13 2003
Subject: [Spambayes-checkins] website/scripts/ht2html LinkFixer.py, 1.1.1.1,
1.2
Message-ID:
Update of /cvsroot/spambayes/website/scripts/ht2html
In directory sc8-pr-cvs1:/tmp/cvs-serv31686
Modified Files:
LinkFixer.py
Log Message:
The code that 'normalize the path, kind of the way os.path.normpath() does'
didn't do it quite like normpath did, so I replaced it with normpath
Its not clear what the problem was, but this works fine for all our
generation.
Index: LinkFixer.py
===================================================================
RCS file: /cvsroot/spambayes/website/scripts/ht2html/LinkFixer.py,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** LinkFixer.py 19 Sep 2002 08:40:55 -0000 1.1.1.1
--- LinkFixer.py 28 Oct 2003 04:37:08 -0000 1.2
***************
*** 41,52 ****
# normalize the path, kind of the way os.path.normpath() does.
# urlparse ought to have something like this...
! parts = []
! for p in absurl.split('/'):
! if p == '.':
! continue
! if p == '..' and len(parts) > 0:
! del parts[-1]
! parts.append(p)
! absurl = SLASH.join(parts)
self.msg('absurl= %s', absurl)
return absurl
--- 41,48 ----
# normalize the path, kind of the way os.path.normpath() does.
# urlparse ought to have something like this...
! # hrm - MarkH thinks this is broken, so it has been replaced
! # with normpath - what is the problem with normpath?
! import posixpath # use posix semantics for urls
! absurl = posixpath.normpath(absurl)
self.msg('absurl= %s', absurl)
return absurl
***************
*** 85,89 ****
links[i] = (url, '' + text + '', extra)
else:
! links[i] = (url, text, extra)
def above(self, absurl, myurl):
--- 81,85 ----
links[i] = (url, '' + text + '', extra)
else:
! links[i] = (absurl, text, extra)
def above(self, absurl, myurl):
From mhammond at users.sourceforge.net Mon Oct 27 23:37:58 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 23:38:01 2003
Subject: [Spambayes-checkins] website/scripts/ht2html ht2html.py, 1.1.1.1,
1.2
Message-ID:
Update of /cvsroot/spambayes/website/scripts/ht2html
In directory sc8-pr-cvs1:/tmp/cvs-serv31964
Modified Files:
ht2html.py
Log Message:
Make sure paths for URLs use '/' on Windows
Index: ht2html.py
===================================================================
RCS file: /cvsroot/spambayes/website/scripts/ht2html/ht2html.py,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** ht2html.py 19 Sep 2002 08:40:56 -0000 1.1.1.1
--- ht2html.py 28 Oct 2003 04:37:56 -0000 1.2
***************
*** 128,131 ****
--- 128,136 ----
if not relthis:
relthis = '.'
+ # On Windows, we want forward URL style slashes.
+ if os.sep=="\\":
+ relthis = relthis.replace("\\", "/")
+ #prefix = prefix.replace("\\", "/")
+ #absroot = absroot.replace("\\", "/")
# get the generator class
From mhammond at users.sourceforge.net Mon Oct 27 23:43:51 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 23:43:54 2003
Subject: [Spambayes-checkins] website/scripts make.rules,1.4,1.5
Message-ID:
Update of /cvsroot/spambayes/website/scripts
In directory sc8-pr-cvs1:/tmp/cvs-serv32622
Modified Files:
make.rules
Log Message:
* Make rsync use "./*" - this makes it work on Windows (I'll check it
doesn't break linux next
* Add a rule for FAQ style .txt -> .html
Index: make.rules
===================================================================
RCS file: /cvsroot/spambayes/website/scripts/make.rules,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** make.rules 23 Jul 2003 15:32:55 -0000 1.4
--- make.rules 28 Oct 2003 04:43:49 -0000 1.5
***************
*** 49,58 ****
HTRELDIR = .
GENERATED_HTML= $(SOURCES:.ht=.html)
! .SUFFIXES: .ht .html
.ht.html:
$(HT2HTML) $(HTFLAGS) $(HTRELDIR)/$<
all: $(TARGETS)
--- 49,74 ----
HTRELDIR = .
+ # docutils 'html.py' script.
+ DUHTML = html.py
+
GENERATED_HTML= $(SOURCES:.ht=.html)
! .SUFFIXES: .txt .ht .html
.ht.html:
$(HT2HTML) $(HTFLAGS) $(HTRELDIR)/$<
+ # Use a single rule to go from .txt -> .html (otherwise we would
+ # need a custom rule for our special .ht -> .html command
+ .txt.html:
+ $(DUHTML) $< > faq.body.tmp
+ echo "Title: $(FAQ_TITLE)" > $*.ht
+ echo "Contact-URL: $(ROOT_DIR)/contact.html" >> $*.ht
+ echo "Author-Email: SpamBayes@python.org" >> $*.ht
+ echo "Author: SpamBayes" >> $*.ht
+ echo "" >> $*.ht
+ cat faq.body.tmp | sed -e '1,//d' -e '/<\/body>/,$$d' >> $*.ht
+ rm faq.body.tmp
+ $(HT2HTML) -f -s SpamBayesFAQGenerator -r $(ROOT_DIR) $(HTRELDIR)/$*.ht
+
all: $(TARGETS)
***************
*** 71,75 ****
fi
@echo Push to $(LIVE_DEST) ...
! rsync --rsh=$(RSYNC_RSH) -v -r -l -t --update $(LOCAL_INCLUDE) $(GLOBAL_EXCLUDES) $(EXCLUDE_FROM) ./ $(LIVE_DEST)
validate: $(TARGETS)
--- 87,91 ----
fi
@echo Push to $(LIVE_DEST) ...
! rsync --rsh=$(RSYNC_RSH) -v -r -l -t --update $(LOCAL_INCLUDE) $(GLOBAL_EXCLUDES) $(EXCLUDE_FROM) ./* $(LIVE_DEST)
validate: $(TARGETS)
From mhammond at users.sourceforge.net Mon Oct 27 23:45:33 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 23:45:36 2003
Subject: [Spambayes-checkins] website/apps/outlook Makefile,1.1,1.2
Message-ID:
Update of /cvsroot/spambayes/website/apps/outlook
In directory sc8-pr-cvs1:/tmp/cvs-serv427/apps/outlook
Modified Files:
Makefile
Log Message:
* Create builtin rules to create the HTML from FAQ style text files.
* Make each subdir responsible for building its own FAQ html
* Try and convince a simple 'make' to do a simple recuse without
a full install.
Index: Makefile
===================================================================
RCS file: /cvsroot/spambayes/website/apps/outlook/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Makefile 28 Oct 2003 00:36:47 -0000 1.1
--- Makefile 28 Oct 2003 04:45:30 -0000 1.2
***************
*** 1,3 ****
--- 1,5 ----
+ EXTRA_TARGETS = bugs.html
include ../../scripts/make.rules
ROOT_DIR = ../..
ROOT_OFFSET = apps/outlook
+ FAQ_TITLE=SpamBayes Outlook Frequently Reported Bugs
From mhammond at users.sourceforge.net Mon Oct 27 23:45:32 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 23:45:37 2003
Subject: [Spambayes-checkins] website Makefile,1.14,1.15
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv427
Modified Files:
Makefile
Log Message:
* Create builtin rules to create the HTML from FAQ style text files.
* Make each subdir responsible for building its own FAQ html
* Try and convince a simple 'make' to do a simple recuse without
a full install.
Index: Makefile
===================================================================
RCS file: /cvsroot/spambayes/website/Makefile,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** Makefile 28 Oct 2003 00:36:47 -0000 1.14
--- Makefile 28 Oct 2003 04:45:30 -0000 1.15
***************
*** 10,14 ****
# this def'n must occur before the include!
! EXTRA_TARGETS = reply.txt faq.html apps/outlook/bugs.html default.css
include scripts/make.rules
--- 10,14 ----
# this def'n must occur before the include!
! EXTRA_TARGETS = reply.txt faq.html default.css subdirs
include scripts/make.rules
***************
*** 24,52 ****
$(TARGETS): links.h
! # hackery to whack the 'faq format' text files into ht2html...
! DUHTML = html.py
! faq.ht : faq.txt
! $(DUHTML) faq.txt > faq.body.tmp
! echo "Title: SpamBayes FAQ" > faq.ht
! echo "Author-Email: SpamBayes@python.org" >> faq.ht
! echo "Author: SpamBayes" >> faq.ht
! echo "" >> faq.ht
! cat faq.body.tmp | sed -e '1,//d' -e '/<\/body>/,$$d' >> faq.ht
! rm faq.body.tmp
!
! faq.html : faq.ht
! ./scripts/ht2html/ht2html.py -f -s SpamBayesFAQGenerator -r . ./faq.ht
!
! apps/outlook/bugs.ht : apps/outlook/bugs.txt
! $(DUHTML) apps/outlook/bugs.txt > apps/outlook/bugs.body.tmp
! echo "Title: Commonly Reported Outlook Bugs" > apps/outlook/bugs.ht
! echo "Author-Email: SpamBayes@python.org" >> apps/outlook/bugs.ht
! echo "Author: SpamBayes" >> apps/outlook/bugs.ht
! echo "" >> apps/outlook/bugs.ht
! cat apps/outlook/bugs.body.tmp | sed -e '1,//d' -e '/<\/body>/,$$d' >> apps/outlook/bugs.ht
! rm apps/outlook/bugs.body.tmp
!
! apps/outlook/bugs.html : apps/outlook/bugs.ht
! ./scripts/ht2html/ht2html.py -f -s SpamBayesFAQGenerator -r . ./apps/outlook/bugs.ht
version: download/Version.cfg
--- 24,28 ----
$(TARGETS): links.h
! FAQ_TITLE=SpamBayes FAQ
version: download/Version.cfg
***************
*** 57,62 ****
mv -f download/Version.cfg.tmp download/Version.cfg
! local_install:
! cd download ; $(MAKE) install
! cd apps; $(MAKE) install
--- 33,46 ----
mv -f download/Version.cfg.tmp download/Version.cfg
! # Not sure what the correct magic for subdirs is
! # want 'make' to recurse without 'install' and
! # 'make install' to recurse *with* 'install'
! local_install:
! cd apps; $(MAKE) $(MAKEFLAGS) install
! cd download ; $(MAKE) $(MAKEFLAGS) install
!
! subdirs:
! cd apps; $(MAKE) $(MAKEFLAGS)
! cd download ; $(MAKE) $(MAKEFLAGS)
!
From mhammond at users.sourceforge.net Mon Oct 27 23:45:32 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 23:45:39 2003
Subject: [Spambayes-checkins] website/apps Makefile,1.1,1.2
Message-ID:
Update of /cvsroot/spambayes/website/apps
In directory sc8-pr-cvs1:/tmp/cvs-serv427/apps
Modified Files:
Makefile
Log Message:
* Create builtin rules to create the HTML from FAQ style text files.
* Make each subdir responsible for building its own FAQ html
* Try and convince a simple 'make' to do a simple recuse without
a full install.
Index: Makefile
===================================================================
RCS file: /cvsroot/spambayes/website/apps/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Makefile 28 Oct 2003 00:36:47 -0000 1.1
--- Makefile 28 Oct 2003 04:45:30 -0000 1.2
***************
*** 1,8 ****
include ../scripts/make.rules
ROOT_DIR = ..
ROOT_OFFSET = apps
! local_install:
! cd outlook ; $(MAKE) install
!
--- 1,13 ----
+ EXTRA_TARGETS=subdirs
include ../scripts/make.rules
ROOT_DIR = ..
ROOT_OFFSET = apps
+ # Not sure what the correct magic for subdirs is
+ # want 'make' to recurse without 'install' and
+ # 'make install' to recurse *with* 'install'
+ local_install:
+ cd outlook; $(MAKE) $(MAKEFLAGS) install
! subdirs:
! cd outlook; $(MAKE) $(MAKEFLAGS)
From mhammond at users.sourceforge.net Mon Oct 27 23:54:06 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 23:54:09 2003
Subject: [Spambayes-checkins] website Makefile,1.15,1.16
Message-ID:
Update of /cvsroot/spambayes/website
In directory sc8-pr-cvs1:/tmp/cvs-serv1415
Modified Files:
Makefile
Log Message:
Remove reference to MAKEFLAGS - Linux doesnt seem to like it, and it works
Index: Makefile
===================================================================
RCS file: /cvsroot/spambayes/website/Makefile,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** Makefile 28 Oct 2003 04:45:30 -0000 1.15
--- Makefile 28 Oct 2003 04:54:04 -0000 1.16
***************
*** 37,46 ****
# 'make install' to recurse *with* 'install'
local_install:
! cd apps; $(MAKE) $(MAKEFLAGS) install
! cd download ; $(MAKE) $(MAKEFLAGS) install
subdirs:
! cd apps; $(MAKE) $(MAKEFLAGS)
! cd download ; $(MAKE) $(MAKEFLAGS)
--- 37,46 ----
# 'make install' to recurse *with* 'install'
local_install:
! cd apps; $(MAKE) install
! cd download ; $(MAKE) install
subdirs:
! cd apps; $(MAKE)
! cd download ; $(MAKE)
From mhammond at users.sourceforge.net Mon Oct 27 23:54:06 2003
From: mhammond at users.sourceforge.net (Mark Hammond)
Date: Mon Oct 27 23:54:11 2003
Subject: [Spambayes-checkins] website/apps Makefile,1.2,1.3
Message-ID:
Update of /cvsroot/spambayes/website/apps
In directory sc8-pr-cvs1:/tmp/cvs-serv1415/apps
Modified Files:
Makefile
Log Message:
Remove reference to MAKEFLAGS - Linux doesnt seem to like it, and it works
Index: Makefile
===================================================================
RCS file: /cvsroot/spambayes/website/apps/Makefile,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** Makefile 28 Oct 2003 04:45:30 -0000 1.2
--- Makefile 28 Oct 2003 04:54:04 -0000 1.3
***************
*** 8,13 ****
# 'make install' to recurse *with* 'install'
local_install:
! cd outlook; $(MAKE) $(MAKEFLAGS) install
subdirs:
! cd outlook; $(MAKE) $(MAKEFLAGS)
--- 8,13 ----
# 'make install' to recurse *with* 'install'
local_install:
! cd outlook; $(MAKE) install
subdirs:
! cd outlook; $(MAKE)
From montanaro at users.sourceforge.net Tue Oct 28 11:19:11 2003
From: montanaro at users.sourceforge.net (Skip Montanaro)
Date: Tue Oct 28 11:19:15 2003
Subject: [Spambayes-checkins] spambayes/spambayes dbmstorage.py,1.8,1.9
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv11478
Modified Files:
dbmstorage.py
Log Message:
if the db file already exists use whichdb to figure out how to load it
instead of relying on the dbm_type options setting.
Index: dbmstorage.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/dbmstorage.py,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** dbmstorage.py 5 Sep 2003 01:15:28 -0000 1.8
--- dbmstorage.py 28 Oct 2003 16:19:08 -0000 1.9
***************
*** 3,6 ****
--- 3,8 ----
from spambayes.Options import options
import sys
+ import whichdb
+ import os
class error(Exception):
***************
*** 46,53 ****
}
! def open(*args):
! dbm_type = options["globals", "dbm_type"].lower()
f = open_funcs.get(dbm_type)
! if not f:
! raise error("Unknown dbm type in options file")
! return f(*args)
--- 48,60 ----
}
! def open(db_name, mode):
! if os.path.exists(db_name):
! # let the file tell us what db to use
! dbm_type = whichdb.whichdb(db_name)
! else:
! # fresh file - open with what the user specified
! dbm_type = options["globals", "dbm_type"].lower()
f = open_funcs.get(dbm_type)
! if f is None:
! raise error("Unknown dbm type: %s" % dbm_type)
! return f(db_name, mode)
From montanaro at users.sourceforge.net Tue Oct 28 11:21:55 2003
From: montanaro at users.sourceforge.net (Skip Montanaro)
Date: Tue Oct 28 11:22:00 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.24,1.25
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv11996
Modified Files:
CHANGELOG.txt
Log Message:
note change to dbmstorage.open
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -d -r1.24 -r1.25
*** CHANGELOG.txt 14 Oct 2003 01:54:51 -0000 1.24
--- CHANGELOG.txt 28 Oct 2003 16:21:52 -0000 1.25
***************
*** 3,6 ****
--- 3,7 ----
Release 1.1a1
=============
+ Skip Montanaro 28/10/2003 Determine dbm format from the file if it already exists
Mark Hammond 10/10/2003 It is no longer necessary to pre-load our default message store, and doing so caused us to fail if this default store was in offline mode.
Tony Meyer 08/10/2003 When training via the web interface record the training in the messageinfo db.
From anadelonbrin at users.sourceforge.net Wed Oct 29 19:07:06 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 29 19:07:08 2003
Subject: [Spambayes-checkins] spambayes README-DEVEL.txt,1.8,1.9
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv32378
Modified Files:
README-DEVEL.txt
Log Message:
Add a note about release candidates to the devel readme.
Index: README-DEVEL.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/README-DEVEL.txt,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** README-DEVEL.txt 15 Oct 2003 13:06:41 -0000 1.8
--- README-DEVEL.txt 30 Oct 2003 00:07:04 -0000 1.9
***************
*** 479,482 ****
--- 479,485 ----
for this, but that's probably overkill 8-) and test the latter on Unix
(a Debian VMWare box in my case).
+ o If you can, rename these with "rc" at the end, and make them available
+ to the spambayes-dev crowd as release candidates. If all is ok, then
+ fix the names (or redo this) and keep going.
o Dance the SourceForge release dance:
http://sourceforge.net/docman/display_doc.php?docid=6445&group_id=1#filereleasesteps
From anadelonbrin at users.sourceforge.net Wed Oct 29 19:07:30 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 29 19:07:32 2003
Subject: [Spambayes-checkins] spambayes README-DEVEL.txt,1.4,1.4.2.1
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv32447
Modified Files:
Tag: release_1_0
README-DEVEL.txt
Log Message:
Add a note about release candidates to the devel readme.
Index: README-DEVEL.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/README-DEVEL.txt,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -C2 -d -r1.4 -r1.4.2.1
*** README-DEVEL.txt 5 Sep 2003 08:04:51 -0000 1.4
--- README-DEVEL.txt 30 Oct 2003 00:07:28 -0000 1.4.2.1
***************
*** 350,353 ****
--- 350,356 ----
for this, but that's probably overkill 8-) and test the latter on Unix
(a Debian VMWare box in my case).
+ o If you can, rename these with "rc" at the end, and make them available
+ to the spambayes-dev crowd as release candidates. If all is ok, then
+ fix the names (or redo this) and keep going.
o Dance the SourceForge release dance:
http://sourceforge.net/docman/display_doc.php?docid=6445&group_id=1#filereleasesteps
From anadelonbrin at users.sourceforge.net Wed Oct 29 19:07:57 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 29 19:08:01 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.25,1.26
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv32479
Modified Files:
CHANGELOG.txt
Log Message:
Update changelog.
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -d -r1.25 -r1.26
*** CHANGELOG.txt 28 Oct 2003 16:21:52 -0000 1.25
--- CHANGELOG.txt 30 Oct 2003 00:07:55 -0000 1.26
***************
*** 3,7 ****
Release 1.1a1
=============
! Skip Montanaro 28/10/2003 Determine dbm format from the file if it already exists
Mark Hammond 10/10/2003 It is no longer necessary to pre-load our default message store, and doing so caused us to fail if this default store was in offline mode.
Tony Meyer 08/10/2003 When training via the web interface record the training in the messageinfo db.
--- 3,12 ----
Release 1.1a1
=============
! Tony Meyer 30/10/2003 Implement [ 827138 ] Can't display clues/tokens/source for a trained message
! Richie Hindle 15/10/2003 Increased the auth-digest login timeout from one minute to twenty.
! Neale Pickett 15/10/2003 Modified muttrc and spambayes.el that actually work with what's being shipped :)
! Neale Pickett 15/10/2003 Expanded documentation of sb_filter.py
! Skip Montanaro 15/10/2003 which_database: fix bug in dbhash/bsddb[3] distinction and avoid overriding str
! Skip Montanaro 15/10/2003 which_database: need to call os.path.expanduser() since paths like ~/hammie.db are valid in the options file
Mark Hammond 10/10/2003 It is no longer necessary to pre-load our default message store, and doing so caused us to fail if this default store was in offline mode.
Tony Meyer 08/10/2003 When training via the web interface record the training in the messageinfo db.
***************
*** 36,39 ****
--- 41,45 ----
Alpha Release 7
===============
+ Skip Montanaro 28/10/2003 Determine dbm format from the file if it already exists
Tony Meyer 09/10/2003 An old-style option was left in hammiebulk; fix this.
Tony Meyer 08/10/2003 If the (stats) db uses a pickle, then use a pickle for the messageinfo db as well.
From anadelonbrin at users.sourceforge.net Wed Oct 29 19:08:13 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 29 19:08:16 2003
Subject: [Spambayes-checkins] spambayes CHANGELOG.txt,1.19.2.4,1.19.2.5
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv32549
Modified Files:
Tag: release_1_0
CHANGELOG.txt
Log Message:
Update changelog.
Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/CHANGELOG.txt,v
retrieving revision 1.19.2.4
retrieving revision 1.19.2.5
diff -C2 -d -r1.19.2.4 -r1.19.2.5
*** CHANGELOG.txt 14 Oct 2003 02:05:43 -0000 1.19.2.4
--- CHANGELOG.txt 30 Oct 2003 00:08:11 -0000 1.19.2.5
***************
*** 3,6 ****
--- 3,7 ----
Alpha Release 7
===============
+ Skip Montanaro 28/10/2003 Determine dbm format from the file if it already exists
Tony Meyer 09/10/2003 An old-style option was left in hammiebulk; fix this.
Tony Meyer 08/10/2003 If the (stats) db uses a pickle, then use a pickle for the messageinfo db as well.
From anadelonbrin at users.sourceforge.net Wed Oct 29 19:08:49 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 29 19:08:52 2003
Subject: [Spambayes-checkins] spambayes/spambayes dbmstorage.py,1.8,1.8.2.1
Message-ID:
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv32663/spambayes
Modified Files:
Tag: release_1_0
dbmstorage.py
Log Message:
Copy Skip's fix for the wrong type of dbm problem over to the 1.0 branch.
Index: dbmstorage.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/dbmstorage.py,v
retrieving revision 1.8
retrieving revision 1.8.2.1
diff -C2 -d -r1.8 -r1.8.2.1
*** dbmstorage.py 5 Sep 2003 01:15:28 -0000 1.8
--- dbmstorage.py 30 Oct 2003 00:08:46 -0000 1.8.2.1
***************
*** 3,6 ****
--- 3,8 ----
from spambayes.Options import options
import sys
+ import whichdb
+ import os
class error(Exception):
***************
*** 46,53 ****
}
! def open(*args):
! dbm_type = options["globals", "dbm_type"].lower()
f = open_funcs.get(dbm_type)
! if not f:
! raise error("Unknown dbm type in options file")
! return f(*args)
--- 48,60 ----
}
! def open(db_name, mode):
! if os.path.exists(db_name):
! # let the file tell us what db to use
! dbm_type = whichdb.whichdb(db_name)
! else:
! # fresh file - open with what the user specified
! dbm_type = options["globals", "dbm_type"].lower()
f = open_funcs.get(dbm_type)
! if f is None:
! raise error("Unknown dbm type: %s" % dbm_type)
! return f(db_name, mode)
From anadelonbrin at users.sourceforge.net Wed Oct 29 23:25:39 2003
From: anadelonbrin at users.sourceforge.net (Tony Meyer)
Date: Wed Oct 29 23:25:45 2003
Subject: [Spambayes-checkins] spambayes WHAT_IS_NEW.txt,1.19,1.19.2.1
Message-ID:
Update of /cvsroot/spambayes/spambayes
In directory sc8-pr-cvs1:/tmp/cvs-serv5147
Modified Files:
Tag: release_1_0
WHAT_IS_NEW.txt
Log Message:
Update for the new release.
Index: WHAT_IS_NEW.txt
===================================================================
RCS file: /cvsroot/spambayes/spambayes/WHAT_IS_NEW.txt,v
retrieving revision 1.19
retrieving revision 1.19.2.1
diff -C2 -d -r1.19 -r1.19.2.1
*** WHAT_IS_NEW.txt 19 Sep 2003 03:45:10 -0000 1.19
--- WHAT_IS_NEW.txt 30 Oct 2003 04:25:36 -0000 1.19.2.1
***************
*** 10,14 ****
noted in the "Transition" section.
! New in Alpha Release 6
======================
--- 10,14 ----
noted in the "Transition" section.
! New in Alpha Release 7
======================
***************
*** 17,137 ****
--------------------------
! There are two major changes in this release, which *will* effect you if you
! are upgrading from an older version:
!
! o The scripts have all moved (in the archive), and their names have been
! changed. If you run "setup.py install", it will offer to remove the old
! ones for you, which we recommend. In the archive, the scripts are all
! in a 'scripts' directory, and all the scripts start with the "sb_"
! prefix, to avoid clashing with similiarly named scripts from other
! packages. Some name changes go further - "pop3proxy" is now named
! "sb_server", "hammiefilter" is now named "sb_filter", "hammiecli" is now
! named "sb_client", "hammiesrv" is now named "sb_xmlrpcserver", "proxytee"
! is now named "sb_upload", and the experimental "overkill" script is now
! named "sb_pop3dnd".
!
! If you were previously using the "hammie.py" script, you will notice that
! it is no longer available. We recommend that you use either "sb_filter"
! (probably with "sb_mboxtrain"), or use "sb_server" and "sb_upload". If you
! wish to continue as you were, you can use the "hammie.py" module, which
! will be installed in the "spambayes" package directory, in the same way you
! used the old "hammie.py" script.
!
! o All the backwards compatibility code for options which changed names has
! been removed, which means that you *must* use the correct (new) names.
! A script (sb_chkopts) is provided which, if you run it, will inform you
! if you have any invalid names (if will not output anything if there are
! no problems).
!
! In addition, the values taken by some options have changed, so if you're
! upgrading from a previous version, you may need to update your configuration
! file (.spambayesrc or bayescustomize.ini)
!
! o The options to put the classification in the subject or recipient list
! (notate_to and notate_subject) have moved from the "pop3proxy" section
! to the "Headers" section.
! o All the "pop3proxy" storage options (where the cache is stored, the
! number of days before messages expire, and so on) have moved to the
! "Storage" section.
! o The "hammie" debug header options have been removed, and you should use
! the "Headers" evidence header options instead.
! Note that pop3proxy (sb_server) and imapfilter users can simply use the web
! interface to check their options and correct any that are wrong. All
! incorrectlly named options in the configuration file will be removed.
- Outlook Plugin
- --------------
- o Change the default for the ham/spam imbalance adjustment option to
- False - this should make misclassifications for those with large
- imbalances easier to understand. Note that we recommend roughly equal
- numbers of ham and spam are trained.
- o Add a warning for those with highly imbalanced ham and spam.
- o Improved the 'Show Clues' results page.
- o When we fail to add the 'Spam' field to a read-only store (eg, hotmail),
- complain less loudly.
POP3 Proxy / SMTP Proxy
-----------------------
! o If running Windows, and have the win32 extensions installed, and a
! configuration file cannot be found, then default to placing it in the
! "Application Data" directory (as defined by Windows). Also default to
! storing the caches and databases in this directory.
! o Correctly save and close the database when changing options. This
! fixes a bug for those using gdbm databases.
Web Interface
-------------
! o Place a threshold on the number of items displayed per section in the
! review page.
! o Correctly display the proxy data when it is specified on the command
! line.
POP3 Proxy Service / POP3 Proxy Tray Application
------------------------------------------------
! o The POP3 proxy tray application (for Windows users), which quietly
! appeared in the 1.0a5 release, should be ready for use. If you have
! the service installed, it will attempt to use that; if you do not,
! it will start up sb_server for you.
! ** Note that the tray application currently only works with Windows
! NT, Windows 2000 and Windows XP, not Windows 95, 98, or ME. This
! will be remedied in a future version, and in the binary release of
! the tray application. **
! o As the service starts, it reports the username and configuration file
! that it is using.
! o Added a version check option to the tray application.
! o Improved logged for both the service and the tray application.
IMAP Filter
-----------
! o Correctly handle IMAP servers that (wrongly) fail to put folder names
! in quotation marks
! o Count all messages being classified instead of just the ones from the
! last folder.
! o Handle a folder name as a literal when presenting a list to choose from.
! o Handle imap servers that do not pass a blank result line for an empty
! search.
! o Fix IMAP over SSL.
General
-------
! o Add a new file: NEWTRICKS.TXT to record ideas that have and haven't
! been tried. If you would like to add to this, please submit a patch
! via the Sourceforge system.
! o Change the default to tokenizer the "To", "CC", "Reply-To", "Sender",
! and "From" address headers, rather than just "From".
! o Fix the database opening code so that hammie* again works with both
! dbm and pickles.
! o Minor performance boosts to hammiebulk and mboxtrain.
!
! Developer
! ---------
! o Add a close method to the various storage classes.
! o Removed the gary_combining option and code.
Transition
==========
! If you are transitioning from a version older than 1.0a5, please also
read the notes in the previous release notes (accessible from
).
--- 17,80 ----
--------------------------
! o If you are using a pickle for storage, your 'message info' database
! would previously still have been a dbm (where available). This is
! no longer the case - if you are using a pickle for the statistics
! database, you have a pickle for everything. Your old 'message info'
! database is not converted (and there is no utility provided to do so),
! but you should not suffer any ill effects from this, *unless* you are
! using sb_imapfilter.py. In that case, you will find that the filter
! trains and classifies all messages in the folders it examines, even
! if it has seen them before - this will only occur once, however.
! There should be no other incompatible changes (from 1.0a6) in this release.
POP3 Proxy / SMTP Proxy
-----------------------
! o An error where a failure message would be printed by
! the SMTP proxy, even on success, was fixed.
Web Interface
-------------
! o The bug which caused the "TypeError" when trying to access
! the database after setting a configuration option via the
! interface has been fixed.
POP3 Proxy Service / POP3 Proxy Tray Application
------------------------------------------------
! o Both the pop3proxy_service.py and pop3proxy_tray.py
! scripts are now installed (with "setup.py install") if
! the user is using Windows.
IMAP Filter
-----------
! o Better handle displaying the available folders when server and login
! information is not available.
! o Better handle problems parsing the date.
! o If IMAP over SSL is available, offer it via the web interface.
General
-------
! o Various improvements have been made to the management of the
! 'message info' database. As outlined above, it will now be
! stored as a pickle, if your statistics database uses a pickle.
! In addition, we attempt to close the database when we should,
! and make sure that we explicitly update it. This should hopefully
! go some way to solving the "DB_RUN_RECOVERY" errors that have
! been regularly reported - we would be interested to hear from
! you if upgrading to 1.0a7 does appear to solve this problem
! for you (email spambayes@python.org).
! o We now try to determine the type of dbm storage used from the
! file, if one already exists. This should make the transistion
! between formats a little easier.
! o Fix sb_xmlrpcserver to work with the renamed (since 1.0a5)
! scripts.
! o Fix the sense of include_trained in sb_mboxtrain.
!
Transition
==========
! If you are transitioning from a version older than 1.0a6, please also
read the notes in the previous release notes (accessible from
).
***************
*** 144,149 ****
===================
The following bugs tracked via the Sourceforge system were fixed:
! 803501, 802545, 802347, 801952, 798362, 800555, 806632, 795145, 806238,
! 805351
A url containing the details of these bugs can be made by appending the
--- 87,91 ----
===================
The following bugs tracked via the Sourceforge system were fixed:
! 809769, 814322, 816400, 810342, 818552
A url containing the details of these bugs can be made by appending the
|