A mailing list server in ruby.
Easy to setup.
bin | ||
db/migrations | ||
deploy | ||
doc | ||
lib | ||
test | ||
.gitignore | ||
.ruby-version | ||
empty.env | ||
Gemfile | ||
Gemfile.lock | ||
Rakefile | ||
README.md |
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
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
- Fork it (https://git.sceptique.eu/Sceptique/mailinglist.rb)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - 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
- Clone it (https://git.sceptique.eu/Sceptique/mailinglist.rb)
- Commit your changes (
git commit -am 'Add some feature'
) - Register the mailinglist by sending a "subscribe" to it
- Send your patch to the mailing list