Have you looked at some of the spam while it's still in the outgoing queue D-HQ? The thing I'd want to know is what UID is sending the mail. This should tell you if it's a real person or a php script. A php script would show up as UID 48, which is the Apache user.
That's the first step. Figuring out if one of your real users has had their PC's SMTP hacked, if it's a CGI/Perl script (which would show up in your /var/log/httpd/suexec_log file) or if it's a typical PHP mail() exploit. The php exploits are the most common these days. That's why I asked specifically about UID 48.
Assuming it'll end up being a php mail() exploit, there are a few different ways to find out who's doing it and and what script they're using. If you don't have many domains on the server you can figure out pretty quickly what domain it's coming from by making a small vhost.conf tweak on each domain. Basically this adds a header parameter to any outgoing mail initiated by php to help you track it down.
So you would log in as root and set up a vhost.conf for each domain on the server. The new vhost.conf would look something like:
[code]
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -fXXXX"
(Change the Directory path if need be to suit your server's path.)
The -fXXXX is going to be your internal code for each domain. So you'll want to change the X's out with something that'll help you tie it to the domain.
After this is done anytime php mail() is executed from one or the domains on the server the vhost.conf will add your special code to the mail headers. Of course you need to remember to reconfigure all of your vhosts after changing the vhost.conf files. That command would be
/usr/local/psa/admin/sbin/websrvmng -a -v
The above also assumes that the server is secure and that no one has been allowed to upload the spamming script outside of the normal web accessible locations. If you suspect something like this you'll want to install and run both CHKRootKit and RKHunter. The above would also help to let you know if this is the case though. Because if you see the spam still rolling through but your new header line isn't in the mail you know it's coming from somewhere other than a domain location.
Again, if you find that it's a php script doing the sending you can always set up a little script to log additional information for you to research. The first post
in this thread on the Plesk forums has one you can use. As does the 2nd post
in this Plesk forum thread.