Toolman 100% local

Port 587 — SMTP submission

TCP well-known

What runs on port 587

The port applications and mail clients use to send outbound mail, with authentication and STARTTLS.

The correct port for an application to send mail. Unlike 25 it expects authentication, is rarely blocked by ISPs or cloud providers, and is intended for a mail client or application handing a message to its own server rather than server-to-server relay. If outbound mail from an application fails and you are using port 25, moving to 587 with credentials fixes it more often than any other single change.

Security considerations

This port is the correct one for application email. Port 25 is for server-to-server relay and is widely blocked.

Checking whether something is listening

# Linux / macOS — what is bound to the port
sudo lsof -i :587
sudo ss -lntp | grep :587

# Windows
netstat -ano | findstr :587
Get-NetTCPConnection -LocalPort 587

# is it reachable from outside?
nc -zv example.com 587
curl -v telnet://example.com:587

Freeing the port

# find the process, then stop it
sudo lsof -ti :587 | xargs kill        # Linux / macOS
netstat -ano | findstr :587            # note the PID, then:
taskkill /PID <pid> /F                    # Windows

Should this port be open to the internet?

Only on a mail server. If this port is open on something that is not intentionally handling mail, you may be running an open relay — which will get the IP blacklisted quickly.

Opening or blocking port 587

Finding the port is usually the first half of the job. Start narrow — the second rule is there for services that genuinely serve the public, and most do not:

# ufw — Debian, Ubuntu
sudo ufw allow from 10.0.0.0/8 to any port 587 proto tcp
sudo ufw allow 587/tcp                   # only if it genuinely serves the public

# firewalld — RHEL, Fedora, CentOS
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/8 port port=587 protocol=tcp accept'
sudo firewall-cmd --reload

# iptables, if you are still there
sudo iptables -A INPUT -p tcp --dport 587 -s 10.0.0.0/8 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 587 -j DROP

# Windows
New-NetFirewallRule -DisplayName "SMTP submission 587" -Direction Inbound -Protocol TCP -LocalPort 587 -RemoteAddress 10.0.0.0/8 -Action Allow

10.0.0.0/8 stands in for a private range — substitute your own. Note that a firewall rule does not undo a service bound to 0.0.0.0; it only stops packets reaching it, and a misconfigured or disabled firewall then exposes it immediately.

Quick reference

Port587
ProtocolTCP
ServiceSMTP submission
RangeWell-known (0–1023) — binding requires root on Unix

Frequently asked questions

What is port 587 used for?

The port applications and mail clients use to send outbound mail, with authentication and STARTTLS.

Is it safe to open port 587?

This port is the correct one for application email. Port 25 is for server-to-server relay and is widely blocked.

How do I check if port 587 is open?

Locally, sudo lsof -i :587 on macOS or Linux, or netstat -ano | findstr :587 on Windows. From outside, nc -zv host 587 tells you whether anything answers.

Why do I get "address already in use" on port 587?

Another process is bound to it — often a previous run of your own program that did not exit cleanly. Find it with lsof -ti :587 and stop it, or configure your application to use a different port.

Can I change the port this service uses?

Almost always yes, in the service's configuration. Moving off a default port reduces automated scan noise, but it is obfuscation rather than security — a real attacker scans all 65,535.

Other common ports

All port numbers