SSD Nodes Learn 🎉 VPS from $5.50/mo
How to do am Matt ConnorBy Matt Connor

Wetin VPS Abuse Complaint Mean and Wetin to Do

VPS abuse complaint dey follow fixed pipeline: reporter sends am to IP block abuse contact, host forwards am, then you get time to investigate and reply.

Wetin VPS abuse complaint really be

VPS abuse complaint na report about network traffic wey comot from your IP address, dem send am to the abuse contact wey dem publish for that IP block, then your host pass am to you with time window to reply. The published contact belong to the company wey hold the address space, so the first person wey go read report about your server almost never be you. Your host match the IP and timestamp with your account, then forward am.

The notice no be proof say you do anything on purpose. IP address na the only identifier wey reporter get. Compromised application wey dey send spam for 03:00 go produce the same report like person wey dey send spam for 03:00. Na why reply be the important part. Dem dey ask you wetin be the source and wetin you change.

Who dey send the report, and how e dey reach your host

Every public IP block dey registered with one regional internet registry (RIR): RIPE NCC, ARIN, APNIC, LACNIC or AFRINIC. Each registration dey publish one abuse contact, and na there reports dey go. You fit read the same record wey the reporter dey read:

whois 203.0.113.10 | grep -iE 'netname|descr|abuse'

RIPE records get one abuse-c: role object wey hold one abuse-mailbox: line. ARIN records get OrgAbuseEmail:. Any address wey dem publish there go receive the complaint. Na why report about your server dey reach your host instead of your inbox.

The person or organization wey file am na usually machine. Four types cover almost everything wey you go meet:

  • Automated scanners and honeypots. One machine record connection attempt from your IP and file report with the log excerpt attached.
  • Feedback loops (FBL) wey mailbox providers dey run. Recipient click the junk button, and copy of the message come back as ARF (abuse reporting format), one structured mail format wey machines fit parse.
  • Copyright agents. Dem dey monitor torrent swarms or crawl public URLs, then send DMCA (digital millennium copyright act) notice wey name file, your IP, and timestamp for UTC.
  • Blocklist operators and network engineers, wey send short mail with the offending lines from their own logs.

Because most first reports na generated automatically, argument for reply no go achieve anything. Fact go achieve everything: wetin dey run, and when e stop.

Why notice dey come with deadline

Your host na tenant too. Its address space dey behind upstream carriers and inside reputation databases wey other people dey run. Reports wey nobody answer fit raise score against the whole block, instead of only your address, so the deadline wey you receive na pressure wey dem dey pass down. Read the time window wey notice talk and treat am as real.

When something happen to case wey nobody answer, e usually be null route, meaning upstream go drop traffic to that one IP, or dem go suspend the instance. Normally, na silence dey trigger am, no be the original event. Wetin any particular host go do, and when e go do am, dey written for its own policy and inside the notice itself. Na only those two documents worth quoting, so no act based on wetin forum claim say provider dey permit.

Outbound spam: why my VPS dey send mail wey I no send

The report fit talk say your IP deliver mail go spam trap, or say recipients mark your mail as junk. Four sources dey cause most cases: web application wey get mail form but no rate limit, leaked SMTP credential wey another person dey use now, mail server wey dey relay for hosts wey e suppose no relay for, and stolen login for newsletter application. Start with the queue, because compromised sender normally dey show there:

sudo postqueue -p | tail -n 20
sudo postqueue -p | grep -c '^[0-9A-F]'

Queue wey dey hold thousands of messages to addresses wey you no recognise mean say the box dey send mail. Next, find out who authenticate:

sudo grep -o 'sasl_username=[^ ]*' /var/log/mail.log | sort | uniq -c | sort -rn | head

One account wey get count far above the others na the leaked credential. If /var/log/mail.log no exist, the system no get rsyslog installed and the same lines dey for journal instead: sudo journalctl -t postfix --since '2 days ago'.

If nobody authenticate, na local process dey send the mail. Check the relay rules and the open connections:

sudo postconf -n | grep -E 'mynetworks|inet_interfaces|relay'
sudo ss -tnp state established '( dport = :25 )'

Stock Debian or Ubuntu Postfix no dey relay for strangers. E become open relay when mynetworks person widen by hand to cover whole hosting subnet, because every other tenant for that subnet go then get trust to send through you. Any connection to port 25 wey process own, but the process no be your mail server, mean say script dey send mail by itself. Na this compromised PHP application usually dey do.

Stop the flow before you investigate, and keep the evidence:

sudo systemctl stop postfix
sudo tar czf /root/mailqueue.tgz -C /var/spool postfix

sudo postsuper -d ALL dey empty the queue, and e also destroy the record of wetin dem send, so take the copy first. Then rotate every credential wey the application dey hold, update the application, and check wetin intruder leave behind. Spam incident and compromise na usually the same event, so work through recovery steps for hacked VPS instead of only clearing the queue.

Port scan and brute force: wetin compromised container dey look like

This report carry lines from another operator logs, and dem look like this:

sshd[2841]: Invalid user admin from 203.0.113.10 port 51992

The cause almost always na service wey you think say firewall dey protect. Docker na the common one. When you publish port with -p 6379:6379, e dey write rules inside DOCKER-USER and nat chains. System dey check those chains before ufw rules, so ufw deny 6379 no block am, and database go answer the whole internet.

sudo ss -ltnp
sudo iptables -S DOCKER-USER
docker ps

Anything for ss -ltnp wey bind to 0.0.0.0 or [::] dey listen on public address. Publish am to loopback address instead, -p 127.0.0.1:6379:6379, when na only the host need reach am. Where database suppose live from the beginning na separate decision, and running the database for Docker or for the host explain that trade-off.

To check whether your own box dey scan now:

sudo ss -tnp state syn-sent

Plenty half-open connections to many different destinations mean say outbound scan dey happen. Kernel log wey dey fill with nf_conntrack: table full, dropping packet talk the same thing from another angle: something dey open far more connections than this server get any reason to open.

Rebuild compromised container instead of trying to clean am. You no fit prove wetin else change inside am, so rebuild from image wey you trust, restore only data wey you trust, and rotate the keys wey that container hold.

DMCA notice dey name URL or torrent info hash, your IP, and timestamp for UTC. Two causes cover almost all of dem: directory wey web server list publicly and wey get media files inside, or torrent client wey still dey seed after download don finish.

Match the timestamp with access log. nginx combined log format dey put status for field 9 and request path for field 7:

sudo grep '14/Aug/2026:03' /var/log/nginx/access.log | awk '{print $9, $7}' | sort | uniq -c | sort -rn | head

Before you conclude say nothing serve, check the clock. Notice dey use UTC, while your logs dey use server timezone. So offset of some hours fit make you search wrong time window and report false negative:

timedatectl
sudo timedatectl set-timezone UTC

Then fix the cause. Remove or restrict the file. Turn off directory listing with autoindex off; for nginx location block. Bind torrent client to interface wey no be the public one. Reply and name the file, the change, and the time you make am. If you believe say the claim itself wrong, na legal matter between you and the sender, and the notice go state how to dispute am. Your host no be the party wey go decide am, so ticket wey dey argue the merits no go achieve anything.

Blocklist listing: why my outbound mail stop working

This one fit happen without any mail coming to you. Outbound mail just stop getting accepted, and the bounce message go carry the reason:

554 5.7.1 Service unavailable; Client host [203.0.113.10] blocked using zen.spamhaus.org

To check listing, reverse the four IP octets and query the list zone:

dig +short 10.113.0.203.zen.spamhaus.org

Empty answer mean say you no dey listed there. 127.0.0.x answer mean say you dey listed, and the final octet show which sublist match. Answer for 127.255.255.x range mean say dem refuse the query instead of answering am. E usually happen because query pass through one big public resolver wey the free service no dey serve. Run am again from the server own resolver to get real result.

Delisting dey happen for the list operator website, no be through your host. E go only remain valid if you fix the source first, because the trap wey list you go list you again for the next message. Two other things decide whether mail go flow afterwards. Your PTR record, wey be the reverse DNS name for the IP, dey under your host control. Ask dem to set one wey resolve back to the same address, then use that name as your HELO. Address wey dem recycle from previous tenant fit get history wey you no create. E good make you ask about am before you spend one week rewriting DNS. How to set SPF (sender policy framework) and DKIM (domainkeys identified mail) records correctly, together with the DMARC policy wey join dem, dey covered from start to finish for guide to running your own mail server with Mailcow.

Relay infrastructure, wey abuse mail dey part of the work

If you run Tor exit node, public VPN, or proxy for other people, complaints about traffic wey you no generate na normal cost of running am. The work na to make e clear say you be relay, no be compromised box. Set reverse DNS to descriptive name. Serve short notice page for port 80 wey explain wetin the address be. Answer abuse mail quickly with the same explanation. Use any policy wey the software provide to drop ports wey dey generate the most reports. Run am for im own IP address, and if possible, im own instance too. This way, null route for that address no go bring your web application down. Ask your host before you start, because wetin dem allow dey vary by company and sometimes by IP block. Na your host suppose answer that question, no be forum thread. How to run Tor exit node on a VPS go explain the exit policy and notice page well.

How you fit answer make the ticket close

  • Publish contact wey person dey read. RFC 2142 make abuse@ and postmaster@ for your domain the addresses wey reporters go try first. Host that mailbox for somewhere different from the server wey e dey protect, because suspended instance no fit deliver the notice wey tell you say dem suspend am.
  • Keep logs long enough to answer anything. Report about traffic wey happen twelve days ago no fit get answer if log rotate after seven days. Check journalctl --disk-usage, set MaxRetentionSec=90d inside /etc/systemd/journald.conf, then run sudo systemctl restart systemd-journald. Web and mail logs rotate according to their own schedule under /etc/logrotate.d/.
  • Keep the server on UTC, so timestamp for report go match timestamp for your logs without any calculation.
  • Separate wetin dey attract complaints from wetin you no fit lose. Put mail for one address, web application for another, and relay services for their own instance. Any action against one IP affect everything wey dey behind am.
  • Answer inside the time window even if investigation never finish. Holding reply wey get a time inside am count as complete answer for round one.

First reply wey close most tickets suppose short and specific:

Received, thank you. Confirmed at 09:14 UTC.
Source: a contact form in our web app that allowed unauthenticated sending.
Action: form disabled, Postfix stopped, all SMTP credentials rotated 09:31 UTC.
Evidence: mail queue and logs preserved for 90 days if you need them.
Next: patched app redeployed by 18:00 UTC today. I will confirm here.

Talk wetin you know, and talk wetin you never work out yet. Silence go look like server wey nobody dey maintain, and escalation path dey for servers wey nobody dey maintain. Whether na you suppose do any of this work depend on the product wey you buy. Na this be the practical difference between managed and unmanaged VPS hosting. For unmanaged plan, the tenant na the security team.

Wetin this look like when everything go well

Abuse complaint first na routing problem before e become anything else. Report about an address go to the person wey responsible for that address, then dem pass am to the person wey fit fix the problem. The parts wey you control na your contact address, how long you keep logs, how you split your services across IPs, and how fast you reply. If you set all these things well, most notices go end after one exchange. The same habits help settle the bigger question of whether VPS hosting safe, because server wey nobody dey monitor na the one wey go later show for another person logs.

FAQ

Abuse complaint mean say dem hack my VPS?

No be by itself, but na the first thing wey you suppose rule out. The report only prove say traffic comot from your IP. Outbound spam and port scanning dey come from compromised application or container far more often than from the account owner, so check the mail queue with sudo postqueue -p and the listening sockets with sudo ss -ltnp before anything else. Copyright and blocklist notices get different pattern: most times, dem point to something wey you dey run on purpose.

How long I get to reply to abuse notice?

The notice wey you receive go state the time window, and e dey vary by host and category. Copyright and spam-trap reports usually get the shortest deadlines. Treat the stated time as real and send short holding reply before e expire, even if you still dey trace the cause. The important thing for the person handling the ticket na say human being dey work on am and the traffic don stop.

My IP dey blocklist. My host fit remove am?

No. Na the operator of that list dey do delisting, for the list own website, and your host no get control over their database. Your host get control over the PTR record, the reverse DNS name for your IP, and na separate request wey worth making at the same time. Fix the sending problem before you request delisting, because the spam trap wey list you go list you again when the next message enter.

I must tell my host wetin really happen?

You must tell dem enough to close the ticket: wetin be the source, and when e stop. You no need provide forensic report or your users' data. Vague reply worse than small reply, because handler wey no fit see wetin change get no reason to treat the case as resolved.

I fit ignore automated report from scanner?

No. Dem dey count automated reports, and repeated reports about one IP dey raise the score against your host's whole address block. Na this one dey turn small case into escalation. Your reply fit be one paragraph. The automated reporter usually no dey read am, but the person wey dey handle the ticket for your host go read am, and na that person dey decide wetin go happen to your instance.