Skip to content

Security: stefanpejcic/EmailFilter

Security

SECURITY.md

Security Policy

Supported Versions

Version Supported
latest (main)
older releases

Only the latest release on the main branch receives security fixes. Please update before reporting.

Scope

EmailFilter is a self-hosted, containerized API service. The following are considered in-scope for security reports:

  • Remote code execution or command injection via API endpoints
  • SSRF (Server-Side Request Forgery) through email/domain input
  • DNS rebinding or MX lookup abuse leading to internal network access
  • Container escape or privilege escalation
  • Information disclosure of internal network topology via error messages
  • Blacklist/whitelist bypass via input manipulation
  • Denial of service via crafted input (e.g. infinite DNS loops, slowloris)

Out of scope:

  • Issues requiring physical access to the host
  • Security of third-party dependencies unrelated to EmailFilter's functionality
  • Rate limiting (caller's responsibility to implement)
  • Issues on unofficial forks or modified deployments

Reporting a Vulnerability

Do not open a public GitHub issue for security vulnerabilities.

Please report security issues by emailing:

stefan@pejcic.rs

Include in your report:

  • Description of the vulnerability
  • Steps to reproduce (curl commands, payloads, config)
  • Impact assessment
  • Your suggested fix (optional but appreciated)

You can expect an acknowledgment within 48 hours and a status update within 7 days.

Deployment Hardening

If you run EmailFilter in production, consider the following:

Network exposure

EmailFilter binds to localhost:8000 by default. Do not expose it publicly without authentication in front of it (nginx auth_basic, firewall rules, or VPN).

# Example: restrict to internal IPs only
location /filter-email {
    allow 10.0.0.0/8;
    allow 192.168.0.0/16;
    deny all;
    proxy_pass http://localhost:8000;
}

Docker network isolation

Run EmailFilter in an isolated Docker network and only allow access from trusted services:

networks:
  internal:
    internal: true

Input validation

EmailFilter performs DNS and SMTP outbound lookups based on user-supplied input. Restrict who can call the API to trusted internal services only.

Rate limiting

Add rate limiting at the reverse proxy level to prevent abuse:

limit_req_zone $binary_remote_addr zone=emailfilter:10m rate=10r/s;
limit_req zone=emailfilter burst=20 nodelay;

Container user

Ensure the container does not run as root. Verify with:

docker exec emailfilter whoami

Disclosure Policy

  • Security issues will be fixed in a patch release as soon as possible.
  • A GitHub Security Advisory will be published after the fix is released.
  • Credit will be given to the reporter unless they prefer to remain anonymous.

There aren't any published security advisories