<commit_before>MOPHER
======


Table of contents
-----------------

  * Preamble
  * Installation
  * Bug reports
  * License


Preamble
--------

I wrote mopher between 2009 and 2010 as a replacement for milter-greylist. It
ran quite stable over a year without any code changes. Because I never found
the time to write usable documentation I didn't release it publicly. Most of
the documentation is still missing. Feel free to contribute.


Design goals:

  * Lightweight and modular design
  * Firewall like configuration
  * Fully support libmilter features (early 2010)
  * Flexible greylisting (time, retry count)
  * Filter spam efficiently


Features:

  * Greylisting
  * Tarpitting
  * Spamassassin
  * RBL
  * BerkelyDB
  * MySQL


Compiles on:

  * Linux
  * NetBSD
  * FreeBSD
  * Maybe more


FAQ
---

What does mopher mean?

```
  milter + gopher = mopher
```

> Other cool mail filter names have already been taken. At least it's unique.


Why should I use it?

> To get rid of spam in a very flexible, firewally and lightweight way.


I opperate this huge mail infrastucture. Is mopher scalable?

> Highly. It has a built-in memory database similar to milter-greylists and
> supports BerkeleyDB and MySQL tables (I'll write a PostgreSQL driver soon).


Why should I join mopher development?

> Because it's really easy to create new custom modules for mopher. Don't let
> the missing documentation scare you! Maybe have a look at
> src/modules/string.c


Installation
------------

  ./configure
  make
  make install


Configuration
-------------

Configuration examples can be found in the config folder.
For the gory details on access control see src/acl_yacc.y


Bug reports
-----------

Please send bug reports to: <EMAIL>


License
-------

See LICENSE<commit_msg>More README.md cosmetics<commit_after>MOPHER
======


Table of contents
-----------------

  * Preamble
  * Installation
  * Bug reports
  * License


Preamble
--------

I wrote mopher between 2009 and 2010 as a replacement for milter-greylist. It
ran quite stable over a year without any code changes. Because I never found
the time to write usable documentation I didn't release it publicly. Most of
the documentation is still missing. Feel free to contribute.


Design goals:

  * Lightweight and modular design
  * Firewall like configuration
  * Fully support libmilter features (early 2010)
  * Flexible greylisting (time, retry count)
  * Filter spam efficiently


Features:

  * Greylisting
  * Tarpitting
  * Spamassassin
  * RBL
  * BerkelyDB
  * MySQL


Compiles on:

  * Linux
  * NetBSD
  * FreeBSD
  * Maybe more


FAQ
---

What does mopher mean?

```
  milter + gopher = mopher
```

> Other cool mail filter names have already been taken. At least it's unique.


Why should I use it?

> To get rid of spam in a very flexible, firewally and lightweight way.


I opperate this huge mail infrastucture. Is mopher scalable?

> Highly. It has a built-in memory database similar to milter-greylists and
> supports BerkeleyDB and MySQL tables (I'll write a PostgreSQL driver soon).


Why should I join mopher development?

> Because it's really easy to create new custom modules for mopher. Don't let
> the missing documentation scare you! Maybe have a look at
> src/modules/string.c


Installation
------------

```
# ./configure
# make
# make install
```


Configuration
-------------

Configuration examples can be found in the config folder.
For the gory details on access control see src/acl_yacc.y


Bug reports
-----------

Please send bug reports to: <EMAIL>


License
-------

See LICENSE
{'fraction_non_alphanumeric': 0.09245335561125034, 'fraction_numerical': 0.006683375104427736, 'mean_word_length': 2.9866814650388456, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2157636', 'n_tokens_mistral': 1118, 'n_tokens_neox': 1009, 'n_words': 463}