My advice if you're using VMware is to run a large caching name server on the host and set up all the guests to use that, rather than do their own DNS queries. This will save you a lot of memory if you have multiple DNS-active guests (only one copy of the data vs one per guest), but more importantly, it will save a lot of cycles. Even with the vmxnet interface, it is a lot more efficient for the native level to issue the umpteen queries necessary to resolve spammy domains. If volume warrants it, you could set up guests that require it with their own caching DNS, but forward all queries not in the cache to the host DNS. The other issue is going to be I/O. VMware is not VM, there is still a big penalty for doing I/O second level. This is less visible on Linux guests because the file system usually caches writes, but if you have a lot of outgoing mail it could make sense to have a pair of 1U servers dedicated to sending out mail natively. Another fundamental problem is that the guest operating system tries to allocate data blocks intelligently on its virtual device, but the host puts them all over the place so all this effort is wasted. If you run Windows, it pays to defragment the virtual disk (which you should do with XCOPY while the guest is powered off - about 10-20 times faster than defragmenting while the guest is off and 100 times if the guest is running). If you run Linux, I have no idea how you could defragment the virtual disk. One last potential issue is the current 2-CPU limit in VMware Server. With a large workload, this may not be enough, but it should be fine if you have your mail delivery on a separate native server. Ah yes, and I recompile all my Linux guests to set HZ to something sensible, like 100. A typical 2-way Linux guest request 3,000 timer interrupts per second to try and keep the time accurate, and these are expensive virtual interrupts. If you have 5 Linux guests, that's 15,000 timer interrupts per second and you can start ordering a processor upgrade just to count microseconds on an industrial scale. This ought to be a kernel startup option so that you can change it without recompiling. Eric