foxcpp / foxcpp/maddy

Several new plugins/modules implemented

Open
#534 4 comments 5 reactions 1 assignee Claimed by @foxcpp View on GitHub
new feature
Dominant language
Go
Stars
6.1k
Forks
327
PR merge metrics
No merged PRs in 30d

Description

I've made some additions to Maddy that were essential for my own deployment; I'm not sure if any of these would be useful to anyone else, or appropriate for the Maddy core, but I thought I'd offer them up for review just in case. I wouldn't consider them heavily battle-tested, but they've been in production for about 6 months on my own low-volume mail server.

Complete change list is [here](https://github.com/foxcpp/maddy/compare/master...sblinch:maddy:master).

Some highlights:

- [pattern check plugin](https://github.com/foxcpp/maddy/commit/28f5b6f544d78eeb7dc01dff5adb02b16ebc7f7b), to whitelist/blacklist senders, recipients, hosts, and headers by pattern, regexp, or CIDR
- [spamassassin check plugin](https://github.com/foxcpp/maddy/commit/67651264ce43ffa32f72e8c6df32381d0ef1d80d), adding SA support
- [geobl check plugin](https://github.com/foxcpp/maddy/commit/be705f687a10e87ebd4a956db91b292e253bedb3), to ban countries by connecting IP
- [domainbl check plugin](https://github.com/foxcpp/maddy/commit/033cbe00b9a9bb01b83761829a48580ee82ea95d), to support SURBL/URIBL/etc
- [safelist support](https://github.com/foxcpp/maddy/commit/365a658fe538a3d5790782469d95e841f0bb9cdd) to add "safelist" in addition to "reject", "ignore", etc., which overrides all other check plugins and ensures a message is delivered
- [crypto storage module](https://github.com/foxcpp/maddy/commit/13f0b5736a96f61a0f7d748079b5f9045d8e40b7), a wrapper that transparently adds encryption support to any other storage blob module
- [delivery attempt logging](https://github.com/foxcpp/maddy/commit/b67e6ab6630430bb9365b127e31347385915c60d), to more easily grep for specific delivery incidents in production logs
- dnsbl improvements to [log which dnsbl providers returned hits, and why](https://github.com/foxcpp/maddy/commit/b9b9338be75863ed8e8286f790c476e40e46e653) and [be more resiliant to dnsbl outages](https://github.com/foxcpp/maddy/commit/cd9bd1ba7b3a5fc2d4ce6b7cc1d1a74fe31f5c13)
- [table storage blob module](https://github.com/foxcpp/maddy/commit/c7c8102cbc6fc2e414ebc84136b31be1c079faca), to use any table module (such as sqlite) as blob storage
- [require_matching_rdns_lax check plugin](https://github.com/foxcpp/maddy/commit/63ae3ff4185421384736ff39ecd805d6afcf9cce), handles a commonly-encountered corner case for require_matching_rdns (not sure if this is even relevant any more; I see there were some changes involving this code since I originally implemented it)

For documentation, for now, I've included a doc.go for each plugin/module that's formatted similarly to docs/reference/checks/*.md.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.