OpenSMTPD filter for flatfile mail queue archiving
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
Björn Kalkbrenner f1d138293c fix: moved filter 'data' to report 'tx-data' před 3 měsíci
LICENSE chore: added LICENSE file před 3 měsíci
Makefile feat: added completely classical Makefile před 3 měsíci
README.md feat: added README.md před 3 měsíci
archive.go feat: added first sourcecode files před 3 měsíci
filter-archive.go fix: moved filter 'data' to report 'tx-data' před 3 měsíci

README.md

filter-archive

Description

This filter implements “mail archiving” into flat files, additionally with some meta data.

The code (and even this readme) is heavily based on filter-rspamd by Gilles Chehade gilles@poolp.org, available at https://github.com/poolpOrg/filter-rspamd/.

Currently, the code is only tested on FreeBSD 12.1 with OpenSMTPD 6.6.0p1 but should work on other systems as well.

Features

The filter currently supports:

  • writing mails (single files) into a storage folder
    • flat into or
    • with subdirectories /YYYY-MM/DD)
  • meta-file with additional infos from smtpd session
  • if write/open file errors occur, the filter will not exit (and thus should not crash opensmtpd)!
  • line by line buffered writing - (not completely cached in memory)

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

There are no available installation packages for distributions.

  • install go

Clone the repository, build and install the filter:

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

Alternatively, use the Makefile, check the PREFIX and type “make install”.

How to configure

The filter itself requires commandline parameters when called by OpenSMTPD (storage folder). Also, the storage folder needs to be writeable by the OpenSMTPD process and should be created manually!

It must be declared in smtpd.conf and attached to a listener for sessions to write to the archive:

filter "archive" proc-exec "filter-archive /var/db/mail-archive"

listen on all filter "archive"

If the mails should be stored directly into the storage folder without subfolders, “-f” can be specified

filter "archive" proc-exec "filter-archive -f /var/db/mail-archive"

listen on all filter "archive"