[WIP] Chatmail for OpenBSD
Go to file
2023-12-06 11:00:07 +01:00
.github/workflows
chatmaild works 2023-12-05 14:22:42 +01:00
deploy-chatmail revert unneccessary reformatting and unused file 2023-12-05 14:22:42 +01:00
scripts generate-dns-zone.sh doesn't need to support CHATMAIL_SERVER env var for now, let's assume A/AAAA point to the chatmail server, too 2023-11-25 00:39:27 +01:00
tests add missing simple test file for generating a qr code 2023-12-06 11:00:07 +01:00
www mention QRcode in readme and modify nine.testrun.org index page to include it 2023-12-05 14:22:42 +01:00
.gitignore
plan.txt
README.md mention QRcode in readme and modify nine.testrun.org index page to include it 2023-12-05 14:22:42 +01:00

Chatmail instances optimized for Delta Chat apps

This repository helps to setup a ready-to-use chatmail instance comprised of a minimal setup of the battle-tested postfix smtp and dovecot imap services.

The setup is designed and optimized for providing chatmail accounts for use by Delta Chat apps.

Chatmail accounts are automatically created by a first login, after which the initially specified password is required for using them.

Getting Started deploying your own chatmail instance

  1. Prepare your local (presumably Linux) system:

    scripts/init.sh

  2. Setup a domain with A and AAAA records for your chatmail server.

  3. Set environment variable to the chatmail domain you want to setup:

    export CHATMAIL_DOMAIN=c1.testrun.org # replace with your host

  4. Deploy the chat mail instance to your chatmail server:

    scripts/deploy.sh

    This script uses pyinfra and ssh to setup packages and configure the chatmail instance on your remote server.

  5. Run scripts/generate-dns-zone.sh and transfer the generated DNS records at your DNS provider

Home page and getting started for users

  • The deploy.sh script deploys a default index.html along with a QR code that users can click to create accounts on the chatmail provider.

  • Start a Delta Chat app and create a new account by typing an e-mail address with an arbitrary username and @<your-chatmail-domain> appended. Use an at least 10-character random password.

Ports

Postfix listens on ports 25 (smtp) and 587 (submission) and 465 (submissions). Dovecot listens on ports 143(imap) and 993 (imaps).

Delta Chat will, however, discover all ports and configurations automatically by reading the autoconfig.xml file from the chatmail instance.

Emergency Commands to disable automatic account creation

If you need to stop account creation, e.g. because some script is wildly creating accounts, run:

touch /etc/chatmail-nocreate

While this file is present, account creation will be blocked.

Running tests and benchmarks (offline and online)

  1. Set CHATMAIL_SSH so that ssh root@$CHATMAIL_SSH allows to login to the chatmail instance server.

  2. To run local and online tests:

    scripts/test.sh

  3. To run benchmarks against your chatmail instance:

    scripts/bench.sh

Development Background for chatmail instances

This repository drives the development of "chatmail instances", comprised of minimal setups of

as well as two custom services that are integrated with these two:

  • chatmaild/src/chatmaild/doveauth.py implements create-on-login account creation semantics and is used by Dovecot during login authentication and by Postfix which in turn uses Dovecot SASL to authenticate users to send mails for them.

  • chatmaild/src/chatmaild/filtermail.py prevents unencrypted e-mail from leaving the chatmail instance and is integrated into postfix's outbound mail pipelines.