SMTP Firewall serves as a sidecar container alongside your primary application. It filters emails before they reach your email service provider.
Key features:
- Rate Limit with a mail queue
- Dropping emails if the app sends too frequently to a single recipient
- Bad Domain Filter
- Support SMTP and multiple email service providers
Instead of running SMTP Firewall as a sidecar in a Kubernetes Pod, you may make use of Docker Compose to try running it.
version: '3'
services:
smtp:
image: rnwood/smtp4dev
ports:
- 3000:80
smtp_firewall:
image: relatedbits/smtp-firewall
environment:
FILTER_BAD_DOMAIN_ENABLED: true
app:
image: YOUR_APPLICATION_IMAGE # Replace with your app image
environment:
SMTP_HOST: smtp_firewall # Set SMTP Host
SMTP_PORT: 1025 # Set SMTP Port
Launch the containers using:
docker compose up -d
Open your application and send an email.
You may then open http://localhost:3000 to see if the email is being dropped.
SMTP Firewall reads from bad_domains.txt
for the email blacklist.
Each line in the file represents a domain name.
You may start from downloading email blacklist online:
Environment variables:
Variable | Value(example) |
---|---|
SENDER_TYPE | smtp |
SENDER_SMTP_ADDR | smtp:25 |
Environment variables:
Variable | Value(example) |
---|---|
SENDER_TYPE | awsses |
SENDER_AWSSES_TIMEOUT | 5 |
Environment variables:
Variable | Value(example) |
---|---|
SENDER_TYPE | mailjet |
SENDER_MAILJET_BASEURL | (Leave it blank to apply the default base URL defined by official library) |
SENDER_MAILJET_APIKEY_PUBLIC | APIKEY_PUBLIC |
SENDER_MAILJET_APIKEY_PRIVATE | APIKEY_PRIVATE |
Variable | Default Value |
---|---|
SMTP_SERVER_ADDR | 0.0.0.0:1025 |
SMTP_SERVER_ALLOW_INSECURE_AUTH | true |
FILTER_BAD_DOMAIN_ENABLED | false |
RATELIMIT | 10 |
QUEUE_CAPACITY | 100 |
TIMEDMAP_COOLDOWN_SECONDS_FOR_SINGLE_RECIPIENT | 30 |
TIMEDMAP_CLEANUP_PER_N_SECOND | 60 |