[WIP] Chatmail for OpenBSD
Go to file
2023-10-13 21:13:53 +02:00
chatmail-pyinfra add comment about installing doveauth system-wide 2023-10-13 21:12:56 +02:00
doveauth Remove hardcoded domain from doveauth.py 2023-10-13 21:12:56 +02:00
scripts script to run all tests from repository root 2023-10-13 21:12:56 +02:00
.gitignore install doveauth system-wide via pip 2023-10-13 21:12:56 +02:00
deploy.py don't run deploy on import 2023-10-13 18:36:15 +02:00
plan.txt part of plan was resolved 2023-10-13 21:13:53 +02:00
README.md add plan as discussed with alex and nami 2023-10-13 15:44:06 +00:00

Chat Mail server configuration

This package deploys Postfix and Dovecot servers, including OpenDKIM for DKIM signing.

Postfix uses Dovecot for authentication as described in https://www.postfix.org/SASL_README.html#server_dovecot

Getting started

prepare:

pip install -e chatmail-infra

then run with pyinfra command line tool:

CHATMAIL_DOMAIN=c1.testrun.org pyinfra --ssh-user root c1.testrun.org deploy.py

Structure (wip)


# package doveauth tool and deploy chatmail server to a envvar-specified ssh-reachable host 
deploy.py 

# chatmail pyinfra deploy package 
chatmail-pyinfra 
    pyproject.toml
    chatmail/__init__ ...

    # tests against the deployed system 
    tests/test_online_test.py

# doveauth tool used by dovecot's auth mechanism on the host system 
doveauth
    README.md
    pyproject.toml
    doveauth.py
    doveauth.lua
    test_doveauth.py

# lmtp server to block (outgoing) unencrypted messages 
filtermail 
    README.md
    pyproject.toml
    .... 


# scripts for setup/development/deployment 

scripts/
    init.sh  # create venv/other perequires
    deploy.sh  # run pyinfra based deploy of everything

Dovecot/Postfix configuration

Ports

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

DNS

For DKIM you must add a DNS entry as in /etc/opendkim/selector.txt (where selector is the opendkim_selector configured in the chatmail inventory).