Code Monkey home page Code Monkey logo

filter-greylist's Introduction

filter-greylist

Description

This filter implements greylisting, allowing OpenSMTPD to temporarily reject sessions of clients it has not seen before. Unlike many implementations, this one is SPF-aware so it will properly handle greylisting for domains doing relaying through multiple MX, as long as they publish a valid SPF record.

This initial version is a proof of concept, it does not persist state outside of memory, and might suffer from bugs.

Do not use in production (yet).

Features

The filter currently supports:

  • IPv4 and IPv6 address greylisting
  • SPF greylisting
  • startup whitelisting of IP and domains
  • automatically renewed whitelisting

Dependencies

The filter is written in Golang and doesn't have any dependencies beyond standard library.

It requires OpenSMTPD 6.6.0 or higher.

How to install

Clone the repository, build and install the filter:

$ cd filter-greylist/
$ go build
$ doas install -m 0555 filter-greylist /usr/local/libexec/smtpd/filter-greylist

How to configure

The filter itself requires no configuration.

It must be declared in smtpd.conf and attached to a listener for sessions to go through greylisting:

filter "greylist" proc-exec "filter-greylist"

listen on all filter "greylist"

It is possible to tweak the greylisting parameters, here listed with default values in seconds:

  • -passtime 300 accept greylisting retries only after 5 minutes from initial attempt
  • -greyexp 14400 expire greylisting attempts after 4 hours without a retry
  • -whiteexp 2592000 expire whitelisting after 30 days without any attempt at delivery

It is also possible to inject IP and domains in the whitelists at startup to avoid greylisting:

  • -wl-ip <filename> inject IP addresses listed, one per line, in the parameter file to the whitelist
  • -wl-domain <filename> inject domains listed, one per line, in the parameter file to the whitelist

filter-greylist's People

Contributors

poolporg avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.