I'm sory I'm not much more help. My thought process is saying mysql is your issue with php-cgi using a lot of cpu power waiting on mysql to return data.
After you've made the changes I suggested including key_buffer = 128M and max_connections= 500, what has your mydns log show?
Are you still having mysql connect issue in mydns and mail error?
for your mysqllogs, create the files yourself and give permissions it should then be writing to the logs correctly.
and lastly, after restarting mysql, I would wait for the next spike and then analyze your access logs to see if it's a traffic spike or resource issue...or something.
Is it a single 500G HD running the whole system. I would think that it would be a constant hit if it were a disk write issue vs spikes though.