Compare commits

..

1 Commits

Author SHA1 Message Date
holger krekel
00fee6dbeb refine warnings for experimental service,
only show for non-nine domains.
2023-12-13 18:37:46 +01:00
2 changed files with 94 additions and 91 deletions

142
README.md
View File

@@ -18,7 +18,14 @@ after which the initially specified password is required for using them.
We subsequently use `CHATMAIL_DOMAIN` as a placeholder for your fully qualified We subsequently use `CHATMAIL_DOMAIN` as a placeholder for your fully qualified
DNS domain name (FQDN), for example `chat.example.org`. DNS domain name (FQDN), for example `chat.example.org`.
1. Install the `cmdeploy` command in a virtualenv 1. Setup DNS `A` and `AAAA` records for your `CHATMAIL_DOMAIN`.
Verify that DNS is set and SSH root login works:
```
ssh root@CHATMAIL_DOMAIN
```
2. Install the `cmdeploy` command in a virtualenv
``` ```
git clone https://github.com/deltachat/chatmail git clone https://github.com/deltachat/chatmail
@@ -26,20 +33,12 @@ DNS domain name (FQDN), for example `chat.example.org`.
scripts/initenv.sh scripts/initenv.sh
``` ```
2. Create chatmail configuration file `chatmail.ini`: 3. Create chatmail configuration file `chatmail.ini`:
``` ```
scripts/cmdeploy init CHATMAIL_DOMAIN scripts/cmdeploy init CHATMAIL_DOMAIN
``` ```
3. Setup first DNS records for your `CHATMAIL_DOMAIN`,
according to the hints provided by `cmdeploy init`.
Verify that SSH root login works:
```
ssh root@CHATMAIL_DOMAIN
```
4. Deploy to the remote chatmail server: 4. Deploy to the remote chatmail server:
``` ```
@@ -53,70 +52,24 @@ DNS domain name (FQDN), for example `chat.example.org`.
scripts/cmdeploy dns scripts/cmdeploy dns
``` ```
### Other helpful commands: 6. To check status of your remotely running chatmail service:
To check the status of your remotely running chatmail service:
``` ```
scripts/cmdeploy status scripts/cmdeploy status
``` ```
To test whether your chatmail service is working correctly: 7. To test your chatmail service:
``` ```
scripts/cmdeploy test scripts/cmdeploy test
``` ```
To measure the performance of your chatmail service: 8. To benchmark your chatmail service:
``` ```
scripts/cmdeploy bench scripts/cmdeploy bench
``` ```
## Overview of this repository
This repository drives the development of "chatmail instances",
comprised of minimal setups of
- [postfix smtp server](https://www.postfix.org)
- [dovecot imap server](https://www.dovecot.org)
as well as 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](https://doc.dovecot.org/configuration_manual/authentication/dict/#complete-example-for-authenticating-via-a-unix-socket)
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.
There is also the `cmdeploy/src/cmdeploy/cmdeploy.py` command line tool
which helps with setting up and managing the chatmail service.
`cmdeploy run` uses [pyinfra-based scripting](https://pyinfra.com/)
in `cmdeploy/src/cmdeploy/__init__.py`
to automatically install all chatmail components on a server.
### Home page and getting started for users
`cmdeploy run` also creates default static Web pages and deploys them
to an nginx web server under `https://CHATMAIL_DOMAIN`.
- a default `index.html` along with a QR code that users can click to
create accounts on your chatmail provider,
- a default `info.html` that is linked from the home page,
- a default `policy.html` that is linked from the home page.
All `.html` files are generated
by the according markdown `.md` file in the `www/src` directory.
### Refining the web pages ### Refining the web pages
@@ -135,24 +88,75 @@ This starts a local live development cycle for chatmail Web pages:
- Starts a browser window automatically where you can "refresh" as needed. - Starts a browser window automatically where you can "refresh" as needed.
## Emergency Commands to disable automatic account creation ### Home page and getting started for users
If you need to stop account creation, `cmdeploy run` sets up mail services,
e.g. because some script is wildly creating accounts, and also creates default static Web pages and deploys them:
login to the server with ssh and run:
``` - a default `index.html` along with a QR code that users can click to
touch /etc/chatmail-nocreate create accounts on your chatmail provider,
```
- a default `info.html` that is linked from the home page,
- a default `policy.html` that is linked from the home page.
All `.html` files are generated
by the according markdown `.md` file in the `www/src` directory.
While this file is present, account creation will be blocked.
### Ports ### Ports
Postfix listens on ports 25 (smtp) and 587 (submission) and 465 (submissions). Postfix listens on ports 25 (smtp) and 587 (submission) and 465 (submissions).
Dovecot listens on ports 143(imap) and 993 (imaps). Dovecot listens on ports 143(imap) and 993 (imaps).
Delta Chat apps will, however, discover all ports and configurations Delta Chat will, however, discover all ports and configurations
automatically by reading the `autoconfig.xml` file from the chatmail service. 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
- [postfix smtp server](https://www.postfix.org)
- [dovecot imap server](https://www.dovecot.org)
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](https://doc.dovecot.org/configuration_manual/authentication/dict/#complete-example-for-authenticating-via-a-unix-socket)
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.

View File

@@ -14,7 +14,6 @@ Welcome to instant, interoperable and [privacy-preserving](privacy.html) messagi
💬 **Start** chatting with any Delta Chat contacts using [QR invite codes](https://delta.chat/en/help#howtoe2ee) 💬 **Start** chatting with any Delta Chat contacts using [QR invite codes](https://delta.chat/en/help#howtoe2ee)
<div class="experimental">Note: this is an experimental service</div> {% if config.mail_domain != "nine.testrun.org" %}
<div class="experimental">Note: this is only a temporary development chatmail service</div>
{% endif %}