smtpfirewall

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 13, 2024 License: MIT Imports: 5 Imported by: 0

README

SMTP Firewall

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

Getting started

Using a Docker Compose file

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.

Prepare an email blacklist

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:

Select an email service proviers
SMTP

Environment variables:

Variable Value(example)
SENDER_TYPE smtp
SENDER_SMTP_ADDR smtp:25
AWS SES

Environment variables:

Variable Value(example)
SENDER_TYPE awsses
SENDER_AWSSES_TIMEOUT 5
Mailjet

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

Configuration

Environment variables
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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Backend

type Backend struct {
	Filters   *[]filter.Filter
	MailQueue mailqueue.MailQueue
}

func (*Backend) NewSession

func (bkd *Backend) NewSession(c *smtp.Conn) (smtp.Session, error)

func (*Backend) Shutdown

func (bkd *Backend) Shutdown()

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL