A mailing list server in ruby. Easy to setup.
Go to file
Arthur POULET (via Mailinglistrb) 55b06e00bf
Update readme with more next steps
2023-06-22 14:00:54 +02:00
bin Improve DB migrations 2022-11-26 10:47:15 +01:00
db/migrations Improve DB migrations 2022-11-26 10:47:15 +01:00
deploy Add some infos for deploying service 2022-11-23 21:11:21 +01:00
doc Improve IMAP and SENDER management 2023-06-21 14:32:39 +02:00
lib Fix distribution cache 2023-06-21 19:40:18 +02:00
test Improve logging and coding style 2022-11-24 20:44:59 +01:00
.gitignore Improve IMAP and SENDER management 2023-06-21 14:32:39 +02:00
.ruby-version Add ruby version 2022-11-26 00:25:34 +01:00
empty.env Implemen list-users and more 2023-06-21 18:53:06 +02:00
Gemfile They say dependencies must be alpha sort 2022-11-26 10:49:56 +01:00
Gemfile.lock Remove now useless dependencies semver, colorize 2022-11-26 10:49:19 +01:00
Rakefile Improve IMAP and SENDER management 2023-06-21 14:32:39 +02:00
README.md Update readme with more next steps 2023-06-22 14:00:54 +02:00

mailinglist.rb

Features

  • Receive new message and send it
  • Have a database of mailinglists with name and users
  • Web interface to access archives
  • ACL to restrict interactions with the system
  • Install documentation
  • Systemd service
  • AUR package
  • Configuration for everything
  • Robust codebase for extensibility
  • Robust network (handle network loss etc.)
  • Inbox cleanup
  • Moderation toolbox and email validation before distribution

Deploy from sources

  • Note there is a sample of systemd service you may use for your server in /deploy/

Download

git clone https://git.sceptique.eu/Sceptique/mailinglist.rb --depth 1
cd mailinglist.rb

Install dependencies

System dependencies: ruby 3.1.2, sqlite3

bundle install

Configure

Copy and fill all the env variables in .env

cp empty.env .env
edit .env

Here is the list of all the configuration available (sampled in empty.env):

SMTP_HOST      information to connect on the smtp
SMTP_PORT
SMTP_TLS       true or false
SMTP_USER
SMTP_PASSWORD
IMAP_HOST      only imap available
IMAP_PORT
IMAP_TLS
IMAP_USER
IMAP_PASSWORD
SENDER_HOST    the domain of the sender field, and the mailinglist addresses
SENDER         "true" to retrive the true sender, "list" to use the mailing list email
               else it is a static email address that will alway be used.
FROM           same as SENDER
DB_URL         sqlite://db/database.sqlite for instance
PORT           for WWW accees, not used yet
DEBUG          true/false
CPU_SLEEP      slow down the distributor
LOG_FILE       log stuff in the specified file

Setup the database

bin/db_migrate

Start

You may test it with

bin/distributor

Dev & play localy

After deploying it, there are some tools:

  • bin/db_seed to generate some data

Additional resources

How to manage mailinglists

Contributing

Next step

  • Handle multi-modo (currently admin operations send the mail to the first modo only)
  • Add web interface (for archives)
  • Auto cut citations and mailinglist signatures
  • Fetch history via email
  • Global admin system via email
  • Harder email security (check output server to verify authenticity)
  • Disable signature by mailinglist

via Gitea

  1. Fork it (https://git.sceptique.eu/Sceptique/mailinglist.rb)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

via emails

Checkout git-send-mail tutorial https://git-send-email.io/. The mailing list is mailto:list+mailinglistrb@sceptique.eu

  1. Clone it (https://git.sceptique.eu/Sceptique/mailinglist.rb)
  2. Commit your changes (git commit -am 'Add some feature')
  3. Register the mailinglist by sending a "subscribe" to it
  4. Send your patch to the mailing list