Thanks to visit codestin.com
Credit goes to github.com

Skip to content

dominicgisler/imap-spam-cleaner

Repository files navigation

IMAP spam cleaner

logo

Latest release License Issues Contributors

Docker Hub Buy me a coffee

A tool to clean up spam in your imap inbox.

How does it work

This application loads mails from configured imap inboxes and checks their contents using the defined provider. Depending on a spam score, the message can be moved to the spam folder, keeping your inbox clean.

How to use

Using image from docker hub (recommended)

  • Create config.yml matching your inboxes (example below)
  • Create docker-compose.yml if using docker compose (example below)
  • Start the container with: docker compose up -d
  • Or with: docker run -d --name imap-spam-cleaner -v ./config.yml:/app/config.yml dominicgisler/imap-spam-cleaner

From source with local Go installation

  • Clone this repository
  • Install Go version 1.25+
  • Load dependencies (go get ./...)
  • Create config.yml matching your inboxes (example below)
  • Run the application (go run .)

From source with docker

  • Clone this repository
  • Install docker
  • Build the docker image: docker build -f Dockerfile -t dominicgisler/imap-spam-cleaner .
  • Create config.yml matching your inboxes (example below)
  • Create docker-compose.yml if using docker compose (example below)
  • Start the container with: docker compose up -d
  • Or with: docker run -d --name imap-spam-cleaner -v ./config.yml:/app/config.yml dominicgisler/imap-spam-cleaner

Sample docker-compose.yml

services:
  imap-spam-cleaner:
    image: dominicgisler/imap-spam-cleaner:latest
    container_name: imap-spam-cleaner
    hostname: imap-spam-cleaner
    restart: always
    volumes:
      - ./config.yml:/app/config.yml:ro

Configuration

Use this configuration as an example for your own setup. Save the file as config.yml on your disk (where the application will run) or mount the correct path into the docker container.

logging:
  level: debug                    # logging level (panic, fatal, error, warn, info, debug, trace)

providers:                        # providers to be used for inboxes
  prov1:                          # provider name
    type: openai                  # provider type
    config:                       # provider specific configuration
      apikey: some-api-key        # openai apikey
      model: gpt-4o-mini          # openai model to use
      maxsize: 100000             # message size limit for prompt (bytes)
  prov2:                          # provider name
    type: ollama                  # provider type
    config:                       # provider specific configuration
      url: http://127.0.0.1:11434 # ollama url
      model: gpt-oss:20b          # ollama model to use
      maxsize: 100000             # message size limit for prompt (bytes)
  prov3:                          # provider name
    type: spamassassin            # provider type
    config:                       # provider specific configuration
      host: 127.0.0.1             # spamassassin host
      port: 783                   # spamassassin port
      maxsize: 300000             # message size limit

whitelists:                       # trusted senders as regexp, not to be analyzed
  whitelist1:                     # example with exact addresses
    - ^.* <[email protected]>$     # matches <[email protected]>
    - ^.* <[email protected]>$   # matches <[email protected]>
  whitelist2:                     # example with only domain match
    - ^.* <.*@example.com>$       # matches for all @example.com addresses
    - ^.* <.*@domain.com>$        # matches for all @domain.com addresses

inboxes:                          # inboxes to be checked
  - schedule: "* * * * *"         # schedule in cron format (when to execute spam analysis)
    host: mail.domain.tld         # imap host
    port: 143                     # imap port
    tls: false                    # imap tls
    username: [email protected]     # imap user
    password: mypass              # imap password
    provider: prov1               # provider used for spam analysis
    inbox: INBOX                  # inbox folder
    spam: INBOX.Spam              # spam folder
    minscore: 75                  # min score to detect spam (0-100)
    minage: 0h                    # min age of message
    maxage: 24h                   # max age of message
    whitelist: whitelist1         # whitelist to use, empty/missing = no whitelist

Contributors

dominicgisler
Dominic Gisler
nistei
Niklas Steiner

About

A tool which can cleanup spam from your imap inbox

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 3

  •  
  •  
  •