Get your server issues fixed by our experts for a price starting at just 25 USD/Hour. Click here to register and open a ticket with us now!

Author Topic: Catching spam on Plesk server  (Read 2107 times)

0 Members and 1 Guest are viewing this topic.

nirmal

  • Jr. Member
  • **
  • Posts: 56
  • Karma: +0/-0
Catching spam on Plesk server
« on: November 24, 2013, 10:16:56 pm »
Hi Guys,

I was running in a hard time to check spamming in Plesk server and to I got an opportunity to share some info on this behalf. Hope it will help you.

Let me start here.

Firstly, check how many messages are in the queue with Qmail:

    # /var/qmail/bin/qmail-qstatmessages in queue: 27645messages in queue but not yet preprocessed: 82


If the queue has too many messages, try to discover the source of SPAM.

If mail is being sent by an authorized user but not from the PHP script, you can run the command below to find the user that has sent the most messages (available since Plesk 8.x). Note that you must have the 'SMTP authorization' activated on the server to see these records:

    # cat /usr/local/psa/var/log/maillog |grep -I smtp_auth |grep -I user |awk '{print $11}' |sort |uniq -c |sort -n


The path to 'maillog' may differ depending on the OS you are using.

The next step is to use "qmail-qread," which can be used to read the message headers:

    # /var/qmail/bin/qmail-qread18 Jul 2013 15:03:07 GMT #2996948 9073 <user@domain.com> bouncingdone remote user1@domain1.comdone remote user2@domain2.comdone remote user3@domain3.com....


This shows the senders and recipients of messages. If the message contains too many recipients, probably this is spam. Now try to find this message in the queue by its ID ( # 2996948 in our example):

    # find /var/qmail/queue/mess/ -name 2996948


Examine the message and find the line "Received" to find out from where it was sent for the first time. For example, if you find:

    Received: (qmail 19514 invoked by uid 10003); 13 Sep 2013 17:48:22 +0700


it means that this message was sent via a CGI by user with UID 10003. Using this UID, it is possible to find the domain:

    # grep 10003 /etc/passwd


If the 'Received' line contains a UID of a user 'apache' (for example invoked by uid 48), it means that spam was sent through a PHP script. In this case, you can try to find the spammer using information from spam email (address from/to or any other information). It is usually very difficult to discover the source of spam. If you are absolutely sure that this time there is a script which sends spam (tail grows rapidly for no apparent reason), you can use the following script to determine what PHP scripts are running at this time:

    # lsof +r 1 -p `ps axww | grep httpd | grep -v grep | awk ' { if(!str) { str=$1 } else { str=str","$1}}END{print str}'` | grep vhosts | grep php


You can also apply the KB article which describes the procedure of discovering which domains are sending mail through PHP scripts.

Lines in Received section like

    Received: (qmail 19622 invoked from network); 13 Sep 2013 17:52:36 +0700Received: from external_domain.com (192.168.0.1)


mean that the message has been accepted and delivered via SMTP, and that the sender is an authorized mail user.

Thank you reading this.
Get your server issues fixed by our experts for a price starting at just 25 USD/Hour. Click here to register and open a ticket with us now!