Re: [9fans] acme mail on unix

2006-01-19 Thread John Barham
> Maildir uses the structure folder/{tmp,cur,new}/unique.file.name.
> The files are required to be uniquely named, and there is a convention for
> the intermediate directories.  djb has a brief but detailed specification
> under cr.yp.to somewhere, if you want to google for it.

http://cr.yp.to/proto/maildir.html


Re: [9fans] acme mail on unix

2006-01-19 Thread Scott Schwartz
| MH uses monotonically-increasing small positive integers to number
| messages within a folder.  Maildir, as I recall, uses large
| pseudo-random numbers, or what appear to be pseudo-random numbers.

Maildir uses the structure folder/{tmp,cur,new}/unique.file.name.
The files are required to be uniquely named, and there is a convention for
the intermediate directories.  djb has a brief but detailed specification
under cr.yp.to somewhere, if you want to google for it.


Re: [9fans] acme mail on unix

2006-01-19 Thread geoff
MH uses monotonically-increasing small positive integers to number
messages within a folder.  Maildir, as I recall, uses large
pseudo-random numbers, or what appear to be pseudo-random numbers.
--- Begin Message ---
> On Thu, Jan 19, 2006 at 11:24:36AM -0500, Russ Cox wrote:
> > Eventually I might replace the mh programs with code from
> > Plan 9 (still leaving the mh disk layout) but I don't expect to
> > do that any time soon.
> 
> Personally, I'd rather that wasn't the case.  I'd rather see a version of
> the MH utilities (or a subset of the useful ones) that know how to deal with
> Maildir or IMAP (given the discrete nature of the MH commands, the latter
> might be hard and/or slow).

What is the difference between mh's layout and maildir?
I thought they were the same.

Russ--- End Message ---


[9fans] Re: patch/list killbig-nits

2006-01-19 Thread Russ Cox
> > I'm not happy with the proliferation of magic process names.
> > Instead, why not check if(p->procmode&0222).  The startup script
> > can then chmod -w /proc/importantguys/ctl.
> Good idea, but that would allow a (malicious) user to protect it's own hogs,
> maybe we should also check that it's not owned by eve?  ugly too, but I can't
> think of anything better.

There are so many other things a malicious user could do instead.

Russ


[9fans] Re: patch/list killbig-nits

2006-01-19 Thread uriel
> d-rwxrwxr-x M 815285 uriel sys 0 Jan 19 00:58 killbig-nits
> from [EMAIL PROTECTED]
>   /sys/src/9/port/proc.c
>   /sys/src/9/port/swap.c
>   Don't kill fossil or venti even if they are hogs!
>   
>   Move a comment about "no swap configured" to swap.c because it's 
>   not always correct(killbig() is called by ^T^Tk).
>   
> 
> Thu Jan 19 11:35:35 EST 2006 rsc
> The extra print in swap.c is unnecessary, since it will print
> "no physical memory" right after calling killbig.
I edited things in a way that avoided removing any existing info while fixing 
the incorrect
cases, I'm happy with any messages and wording you like as long as they are 
correct :)

 
> I'm not happy with the proliferation of magic process names.
> Instead, why not check if(p->procmode&0222).  The startup script
> can then chmod -w /proc/importantguys/ctl.
Good idea, but that would allow a (malicious) user to protect it's own hogs,
maybe we should also check that it's not owned by eve? ugly too, but I can't
think of anything better.

uriel



Re: [9fans] Ok last one..

2006-01-19 Thread Charles Forsyth
even if permission checking is disabled, it will not work, because
vgactl does not exist in /dev, because '#v' has not been bound there,
so your >/dev/vgactl is attempting to create it,
which fails (because `mounted directory forbids creation', which means
it was mounted or bound without -c or MCREATE),
which probably means you need
bind -a '#v' /dev
first, or you can use >'#v/vgactl'
--- Begin Message ---


On stand alone cpu-auth server, is there a way to
around the following error message?

/dev/vgactl: rc: can't open: mounted directory forbids creation

as a result of command

echo hwaccel off > /dev/vgactl

when permission checking is disabled.

-ishwar--- End Message ---


Re: [9fans] Maybe it is april fool's after all ...

2006-01-19 Thread Bruce Ellis
i like it when chip companies ask "why would you want to do that"
and the obvious answer is "because the data sheet says i can
and i want to".  i've been thru this with a few vendors.

brucee

On 1/20/06, Charles Forsyth <[EMAIL PROTECTED]> wrote:
> >>when is a .so not a .so? when it's a ld script of course!
> >>yup, /lib/libc.so on my fc4 box is a . script.
>
> curiously, i was just installing fc4 on a machine today.
> following an i/o error on a few blocks of a hard drive containing an ext3,
> that had emptied /usr/etc to the confusion of all, subsequent use of
> redhat-something's fsck destroyed the whole file system rather instantly,
> so i thought it might be time for an upgrade.
> fc4's installation said there was an i/o error on installation,
> that was ``a serious problem'', it could not continue, OK?
> as usual my ``that's not OK, actually'' met with a blank face,
> and OK rebooted the system.  i think it's all a hint to replace the drive.
> clearly, from ron's message, i'm in for a good time!
> we'll know computing has cracked it when that sort of thing
> is a question on ``who wants to be a millionaire?''.
> all helps to keep those synapses active.
>
>


Re: [9fans] GNU binutils: you can't make this stuff up

2006-01-19 Thread erik quanstrom
what does unicode have to do with compiler design? 

does "microkernel" mean anything specific? i'm not convinced that it does.

- erik

Brantley Coile <[EMAIL PROTECTED]> writes

| 
| Microkernels are to OS design what Unicode was to compiler design.


[9fans] Ok last one..

2006-01-19 Thread ISHWAR RATTAN


On stand alone cpu-auth server, is there a way to
around the following error message?

/dev/vgactl: rc: can't open: mounted directory forbids creation

as a result of command

echo hwaccel off > /dev/vgactl

when permission checking is disabled.

-ishwar



Re: [9fans] acme mail on unix

2006-01-19 Thread Russ Cox
> On Thu, Jan 19, 2006 at 11:24:36AM -0500, Russ Cox wrote:
> > Eventually I might replace the mh programs with code from
> > Plan 9 (still leaving the mh disk layout) but I don't expect to
> > do that any time soon.
> 
> Personally, I'd rather that wasn't the case.  I'd rather see a version of
> the MH utilities (or a subset of the useful ones) that know how to deal with
> Maildir or IMAP (given the discrete nature of the MH commands, the latter
> might be hard and/or slow).

What is the difference between mh's layout and maildir?
I thought they were the same.

Russ


Re: [9fans] acme mail on unix

2006-01-19 Thread Dan Cross
On Thu, Jan 19, 2006 at 11:24:36AM -0500, Russ Cox wrote:
> Eventually I might replace the mh programs with code from
> Plan 9 (still leaving the mh disk layout) but I don't expect to
> do that any time soon.

Personally, I'd rather that wasn't the case.  I'd rather see a version of
the MH utilities (or a subset of the useful ones) that know how to deal with
Maildir or IMAP (given the discrete nature of the MH commands, the latter
might be hard and/or slow).

- Dan C.



Re: [9fans] Maybe it is april fool's after all ...

2006-01-19 Thread Charles Forsyth
>>when is a .so not a .so? when it's a ld script of course!
>>yup, /lib/libc.so on my fc4 box is a . script.

curiously, i was just installing fc4 on a machine today.
following an i/o error on a few blocks of a hard drive containing an ext3,
that had emptied /usr/etc to the confusion of all, subsequent use of
redhat-something's fsck destroyed the whole file system rather instantly,
so i thought it might be time for an upgrade.
fc4's installation said there was an i/o error on installation,
that was ``a serious problem'', it could not continue, OK?
as usual my ``that's not OK, actually'' met with a blank face,
and OK rebooted the system.  i think it's all a hint to replace the drive.
clearly, from ron's message, i'm in for a good time!
we'll know computing has cracked it when that sort of thing
is a question on ``who wants to be a millionaire?''.
all helps to keep those synapses active.



[9fans] disk error info

2006-01-19 Thread Steve Simon
Ok,

After recovering from my seccond disk failure in a month -
both part of the same batch so I suspose it makes sense.

I began to wonder, anyone any ideas about how to probe a scsi
disk for the number entries in its spare table?

I would like to get a bit or warning of impending failure
(if I can) next time.

-Steve


[9fans] plan9.ini question

2006-01-19 Thread ISHWAR RATTAN


Is there way to specify in plan9.ini to switch off
the video hwaccel that is achieved produced by

 % echo hwaccel off > /dev/vgactl

-ishwar



[9fans] textonly install question

2006-01-19 Thread ISHWAR RATTAN

I installed Plan 9 under vmware-5.5 using
 inst/textonly

The system stays stuck at
  int: starting /bin/rc

on first boot/reboot

How do I get the prompt?

-ishwar



[9fans] Maybe it is april fool's after all ...

2006-01-19 Thread Ronald G Minnich

when is a .so not a .so? when it's a ld script of course!

yup, /lib/libc.so on my fc4 box is a . script.

which is why l4 would not build ... /bin/ld from olden times does
not understand the GROUP command below.


[EMAIL PROTECTED] ~]$ file /usr/lib/libc.so
/usr/lib/libc.so: ASCII C program text
[EMAIL PROTECTED] ~]$ cat !$
cat /usr/lib/libc.so
/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf32-i386)
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a  AS_NEEDED ( 
/lib/ld-linux.so.2 ) )

[EMAIL PROTECTED] ~]$



ron


Re: [9fans] GNU binutils: you can't make this stuff up

2006-01-19 Thread Bruce Ellis
c'mon microcode is fun.  guido is full of it - all concurrent.  the easiest
example is string equality (rather popular really).  doodling in the sand
on the beach helps with microcode design.

brucee

On 1/20/06, Brantley Coile <[EMAIL PROTECTED]> wrote:
> Microkernels are to OS design what Unicode was to compiler design.


Re: [9fans] 5a and optimization

2006-01-19 Thread Bruce Ellis
the mips compilers (at least 0c and ec etc.) support psuedo instrs
(NOSCHED, SCHED i think) which really stops your low level
code being screwed with.

brucee

On 1/20/06, Noah Evans <[EMAIL PROTECTED]> wrote:
> Yeah, I put it in l.s(probably should put it in rom.s but who knows).
> The linker eats the text if I leave the branch in. So I put the
> branch in a WORD and(thanks to Charles' advice) use -E to go to the
> initial TEXT _rom section.
>
> Very true about the rom weirdness.
>
> Thank you very much for the advice. I really appreciate the support.
>
> Noah
>
> On Jan 20, 2006, at 12:49 AM, [EMAIL PROTECTED] wrote:
>
> > One way is to make it TEXT, e.g. the multiboot header and GDT stuff
> > in /sys/src/9/pc/l.s.
> >
> > Agreed, the loaders don't make such things easy to do, but writing
> > assembler and making odd format binaries is the exception, not the
> > rule.
> >
> > --jim
> >
> > On Thu Jan 19 06:31:30 EST 2006, [EMAIL PROTECTED] wrote:
> >> How do you keep the linker from optimizing away your rom headers and
> >> other data? I had to put a noop in front of my first text section to
> >> keep the linker from putting the main loop in front of it. I also had
> >> to code the branch past the rom header in hex to keep the linker from
> >> eating the header(it's unreachable).
> >>
> >> Best,
> >>
> >> Noah
>
>


Re: [9fans] acme mail on unix

2006-01-19 Thread Russ Cox
> Hey Russ,
> I'd love to try out your script - problem is nmh doesn't seem to like
> modern-ish utilities (gcc 4 et al).  Would you know of any other
> utility which would have the same functionality?

I would suggest trying to find an earlier gcc or prebuilt binaries.

Eventually I might replace the mh programs with code from
Plan 9 (still leaving the mh disk layout) but I don't expect to
do that any time soon.

Russ


Re: [9fans] GNU binutils: you can't make this stuff up

2006-01-19 Thread Brantley Coile
Microkernels are to OS design what Unicode was to compiler design.



Re: [9fans] acme mail on unix

2006-01-19 Thread Aaron Griffin
Hey Russ,
I'd love to try out your script - problem is nmh doesn't seem to like
modern-ish utilities (gcc 4 et al).  Would you know of any other
utility which would have the same functionality?


Re: [9fans] GNU binutils: you can't make this shit up

2006-01-19 Thread David Leimbach
On 1/19/06, Eirik Johnson <[EMAIL PROTECTED]> wrote:
There is something to be said for microkernelsthey allow for a lot less headaches with kerneldevelopment, and it could drastically improve plan 9'sportability, a key feature.Disagree, to some extent.  Microkernels tie you down to a particular set of abstractions for writing OS code.  I think a lot of time is spent trying to figure out how to morph the primitives that are exposed by the microkernel API into what you're trying to express in your kernel.
EROS, for example, multiplexed a single system call to create all the OS primitives for the system.L4 really only has 7 system calls, but also has several APIs available that combine things in different, and hopefully not pessimistic ways to make things easier.  It's a layer of abstractions on another layer of abstractions.
 Also, the multi-server approach taken by the GNU/Hurdis innovative and well suited to SMP and distributed
environments.  However, the FSF has a role and the GNUproject is (and should be) a side project for them.The real problem with it, though, is that C (like plan9) was designed with portability as a major feature,
and the GNU extensions in GCC aren't helpingportability.  It's kinda like microsoft's C#, they maybe wonderful features, but you missed the whole point.True, and this may have caused very serious problems with development.  For a long time, possibly even still today you were limited to 2GB partitions.  Also there was no pppd driver.  I have a hunch that their multi-server design stuck them into a place where these things became hard to do correctly.  I have seen 2 different patches floating around for Hurd to add >2GB partitions as well as pppd [borrowed from FreeBSD in fact] but neither seemed to make it into into the main source tree because, it just wasn't quite correct.
At some point, HURD developers became so frustrated with Mach, they switched to L4.  I followed a lot of this development as a lurker... and I'd have to say that it doesn't look good again for progress and people inside FSF are questioning the design *again*.
 Now those examples aside, I know for a fact you can write useful OSes with a microkernel.  I've seen and used a few of them.  Someone even took the Io programming language and ported it to L4 to make what appears to be something on the lines of a ROM BASIC for an OS :).  This might be really good in certain embedded applications, who knows.  
Also the HoP/House project, which takes the GHC Haskell runtime and turns it into an OS via a special Monad for hardware abstractions, looks like it may also get ported to L4.There's no magic wand for OS development.  
--- alexandr babic <[EMAIL PROTECTED]> wrote:
> i think 9fans should write plan9 native programs not> trying other waste> to import.>> alexandr.>>> Bruce Ellis pí¹e v Èt 19. 01. 2006 v 00:45 +1100:> > anyone who is serious trying anything starting
> with "g" with> > kenc (apart from "grep") is barking up the wrong> > mountain ave.> >> > brucee> __
Do You Yahoo!?Tired of spam?  Yahoo! Mail has the best spam protection aroundhttp://mail.yahoo.com


Re: [9fans] 5a and optimization

2006-01-19 Thread Noah Evans
Yeah, I put it in l.s(probably should put it in rom.s but who knows).  
The linker eats the text if I leave the branch in. So I put the  
branch in a WORD and(thanks to Charles' advice) use -E to go to the  
initial TEXT _rom section.


Very true about the rom weirdness.

Thank you very much for the advice. I really appreciate the support.

Noah

On Jan 20, 2006, at 12:49 AM, [EMAIL PROTECTED] wrote:


One way is to make it TEXT, e.g. the multiboot header and GDT stuff
in /sys/src/9/pc/l.s.

Agreed, the loaders don't make such things easy to do, but writing
assembler and making odd format binaries is the exception, not the
rule.

--jim

On Thu Jan 19 06:31:30 EST 2006, [EMAIL PROTECTED] wrote:

How do you keep the linker from optimizing away your rom headers and
other data? I had to put a noop in front of my first text section to
keep the linker from putting the main loop in front of it. I also had
to code the branch past the rom header in hex to keep the linker from
eating the header(it's unreachable).

Best,

Noah




Re: [9fans] 5a and optimization

2006-01-19 Thread jmk
One way is to make it TEXT, e.g. the multiboot header and GDT stuff
in /sys/src/9/pc/l.s.

Agreed, the loaders don't make such things easy to do, but writing
assembler and making odd format binaries is the exception, not the
rule.

--jim

On Thu Jan 19 06:31:30 EST 2006, [EMAIL PROTECTED] wrote:
> How do you keep the linker from optimizing away your rom headers and  
> other data? I had to put a noop in front of my first text section to  
> keep the linker from putting the main loop in front of it. I also had  
> to code the branch past the rom header in hex to keep the linker from  
> eating the header(it's unreachable).
> 
> Best,
> 
> Noah


Re: [9fans] GNU binutils: you can't make this shit up

2006-01-19 Thread Ronald G Minnich

Eirik Johnson wrote:

There is something to be said for microkernels
they allow for a lot less headaches with kernel
development, and it could drastically improve plan 9's
portability, a key feature.


it's not april fool's

ron


[9fans] 5a and optimization

2006-01-19 Thread Noah Evans
How do you keep the linker from optimizing away your rom headers and  
other data? I had to put a noop in front of my first text section to  
keep the linker from putting the main loop in front of it. I also had  
to code the branch past the rom header in hex to keep the linker from  
eating the header(it's unreachable).


Best,

Noah


Re: [9fans] GNU binutils: you can't make this shit up

2006-01-19 Thread Bruce Ellis
there is nothing innovative about hurd, not even the fact
that it doesn't work and has taken years to get so unstable.

brucee

On 1/19/06, erik quanstrom <[EMAIL PROTECTED]> wrote:
>
> Eirik Johnson <[EMAIL PROTECTED]> writes
>
> |
> | There is something to be said for microkernels
> | they allow for a lot less headaches with kernel
> | development, and it could drastically improve plan 9's
> | portability, a key feature.
>
> "microkernels" cover a broad range. mach is
> bigger than the plan 9 kernel. bigger than the linux kernel, even.
> and linux is 90% device drivers.
>
> i hold out some hope for l4.
>
> | Also, the multi-server approach taken by the GNU/Hurd
> | is innovative and well suited to SMP and distributed
> | environments.
>
> what's innovative about the hurd? unless i'm missing something
> plan9 fileservers are isomorphic with hurd daemons, conceptually.
> the major difference being, in the hurd a server exports a random
> interface, in plan9 a server exports a filesystem.
> hurd isn't even an os. it needs a microkernel.
>
>  However, the FSF has a role and the GNU
> | project is (and should be) a side project for them.
> | The real problem with it, though, is that C (like plan
> | 9) was designed with portability as a major feature,
> | and the GNU extensions in GCC aren't helping
> | portability.  It's kinda like microsoft's C#, they may
> | be wonderful features, but you missed the whole point.
>


Re: [9fans] GNU binutils: you can't make this shit up

2006-01-19 Thread erik quanstrom

Eirik Johnson <[EMAIL PROTECTED]> writes

| 
| There is something to be said for microkernels
| they allow for a lot less headaches with kernel
| development, and it could drastically improve plan 9's
| portability, a key feature.

"microkernels" cover a broad range. mach is
bigger than the plan 9 kernel. bigger than the linux kernel, even.
and linux is 90% device drivers.

i hold out some hope for l4. 

| Also, the multi-server approach taken by the GNU/Hurd
| is innovative and well suited to SMP and distributed
| environments. 

what's innovative about the hurd? unless i'm missing something
plan9 fileservers are isomorphic with hurd daemons, conceptually.
the major difference being, in the hurd a server exports a random
interface, in plan9 a server exports a filesystem.
hurd isn't even an os. it needs a microkernel.

 However, the FSF has a role and the GNU
| project is (and should be) a side project for them. 
| The real problem with it, though, is that C (like plan
| 9) was designed with portability as a major feature,
| and the GNU extensions in GCC aren't helping
| portability.  It's kinda like microsoft's C#, they may
| be wonderful features, but you missed the whole point.


Re: [9fans] GNU binutils: you can't make this shit up

2006-01-19 Thread Bruce Ellis
can i put this in m book?

--- forsyth
the way to get good portability is to have clear, well-designed interfaces
that abstract away from hardware peculiarities, and map those to the
hardware (rather than, say, reflecting in the interfaces the union of every
peculiarity of all hardware known to you at the time).

some of the hard bits about kernel development are:
- getting accurate documentation for the processor, devices, existing
bootstrap, etc.
- getting anything loaded into the wretched machine at all
- deciding how your kernel should look, what it should do, how it should change
- working out a good infrastructure for networks, devices coming and
going, power, etc.
- finding time and/or money to do any of it


Re: [9fans] GNU binutils: you can't make this shit up

2006-01-19 Thread Charles Forsyth
> There is something to be said for microkernels
> they allow for a lot less headaches with kernel
> development, and it could drastically improve plan 9's
> portability, a key feature.

term% pwd
/usr/forsyth/src/xen3/xen-unstable/xen/arch/x86
term% wc -l mm.c shadow32.c shadow_guest32.c 
   3519 mm.c
   3397 shadow32.c
 18 shadow_guest32.c
   6934 total
# and that could be the tip of an iceberg, since that's x86-only

# now let's look at several non-micro/hyper kernels
term% cd /sys/src/9/pc
term% wc -l mmu.c
   1043 mmu.c

term% cd /usr/inferno/os/pc
term% wc -l mmu.c
321 mmu.c

now if you're using the first implementation above,
you still also need something like the second or third as well (but a little 
different).

that's a hypervisor (but one that is claimed in a paper to be `microkernels 
done right').
its code is much bigger because it actually does much more than 9's or 
Inferno's.
i'm sure last time i looked (which to be fair was years ago)
mach had quite a bit of complex mmu code too.

which is likely to give you more headaches, and how strong?
perhaps we should have an ibuprofen rating for kernels?

portability? i have done kernels (including small micro-ish ones) myself,
and i have worked with other systems extensively over the years.
in my experience, some of the interfaces the micro/hypers present
is HARDER to drive than the underlying hardware, possibly more
frustrating, not as well documented, and changes.  and of course
there's more code in the end.  somtimes much more.
it wouldn't be so bad if people hadn't forgotten an important lesson
from THE: the idea is for each layer to provide increasingly higher levels
of abstraction, the better to reason about.  of course, in several cases, the
newer systems are the way they are to make porting Linux easier (well,
that's my impression), presumably on the grounds that its interfaces are
all over the place, x86-oriented, and hard to change.

then there are the interfaces for device drivers...

not that i'm bitter.

the way to get good portability is to have clear, well-designed interfaces
that abstract away from hardware peculiarities, and map those to the
hardware (rather than, say, reflecting in the interfaces the union of every
peculiarity of all hardware known to you at the time).

some of the hard bits about kernel development are:
- getting accurate documentation for the processor, devices, existing 
bootstrap, etc.
- getting anything loaded into the wretched machine at all
- deciding how your kernel should look, what it should do, how it should change
- working out a good infrastructure for networks, devices coming and going, 
power, etc.
- finding time and/or money to do any of it

now, while it can be really tedious when you get yourself into the state where
the hardware resets without notice (and worse, takes quite some time to get to 
that state,
or requires ... something ... but what is it???), it often isn't something that 
would
be fixed by a micro-kernel, but rather by better hardware, documentation, more 
careful
coding, fewer interruptions, more time to think, more energy, and of course 
more intelligence.
lacking any or all of these, it's still usually easier to debug a component of 
a smaller system with a
straightforward model overall.  that might be true of some micro-kernels, but 
not all, and
it isn't limited to them; a more `conventional' kernel can be quite acceptably 
modular.



Re: [9fans] GNU binutils: you can't make this shit up

2006-01-19 Thread Eirik Johnson
There is something to be said for microkernels
they allow for a lot less headaches with kernel
development, and it could drastically improve plan 9's
portability, a key feature.
Also, the multi-server approach taken by the GNU/Hurd
is innovative and well suited to SMP and distributed
environments.  However, the FSF has a role and the GNU
project is (and should be) a side project for them. 
The real problem with it, though, is that C (like plan
9) was designed with portability as a major feature,
and the GNU extensions in GCC aren't helping
portability.  It's kinda like microsoft's C#, they may
be wonderful features, but you missed the whole point.


--- alexandr babic <[EMAIL PROTECTED]> wrote:

> i think 9fans should write plan9 native programs not
> trying other waste
> to import.
> 
> alexandr.
> 
> 
> Bruce Ellis pí¹e v Èt 19. 01. 2006 v 00:45 +1100:
> > anyone who is serious trying anything starting
> with "g" with
> > kenc (apart from "grep") is barking up the wrong
> > mountain ave.
> > 
> > brucee
> > 
> 
> 
> 


__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com