mirror of
https://github.com/chatmail/relay.git
synced 2026-05-11 16:34:39 +00:00
Compare commits
8 Commits
link2xt/no
...
hpk/less-r
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d547435d6a | ||
|
|
6c12849599 | ||
|
|
d82d57b2b2 | ||
|
|
6c3ec903c2 | ||
|
|
7d9b81863f | ||
|
|
af90d0a7de | ||
|
|
322bc9a3aa | ||
|
|
e4009854dc |
@@ -81,10 +81,11 @@ comprised of minimal setups of
|
||||
|
||||
as well as two custom services that are integrated with these two:
|
||||
|
||||
- `chatmaild/src/chatmaild/dictproxy.py` implements
|
||||
- `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
|
||||
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
|
||||
|
||||
@@ -10,7 +10,7 @@ dependencies = [
|
||||
]
|
||||
|
||||
[project.scripts]
|
||||
doveauth-dictproxy = "chatmaild.dictproxy:main"
|
||||
doveauth = "chatmaild.doveauth:main"
|
||||
filtermail = "chatmaild.filtermail:main"
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Description=Dict authentication proxy for dovecot
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/doveauth-dictproxy /run/dovecot/doveauth.socket vmail /home/vmail/passdb.sqlite
|
||||
ExecStart=/usr/local/bin/doveauth /run/dovecot/doveauth.socket vmail /home/vmail/passdb.sqlite
|
||||
Restart=always
|
||||
RestartSec=30
|
||||
|
||||
@@ -7,6 +7,7 @@ from pathlib import Path
|
||||
from pyinfra import host
|
||||
from pyinfra.operations import apt, files, server, systemd
|
||||
from pyinfra.facts.files import File
|
||||
from pyinfra.facts.systemd import SystemdEnabled
|
||||
from .acmetool import deploy_acmetool
|
||||
|
||||
|
||||
@@ -34,8 +35,17 @@ def _install_chatmaild() -> None:
|
||||
commands=[f"pip install --break-system-packages {remote_path}"],
|
||||
)
|
||||
|
||||
# disable legacy doveauth-dictproxy.service
|
||||
if host.get_fact(SystemdEnabled).get("doveauth-dictproxy.service"):
|
||||
systemd.service(
|
||||
name="Disable legacy doveauth-dictproxy.service",
|
||||
service="doveauth-dictproxy.service",
|
||||
running=False,
|
||||
enabled=False,
|
||||
)
|
||||
|
||||
for fn in (
|
||||
"doveauth-dictproxy",
|
||||
"doveauth",
|
||||
"filtermail",
|
||||
):
|
||||
files.put(
|
||||
|
||||
@@ -15,6 +15,6 @@ _submission._tcp.$CHATMAIL_DOMAIN. SRV 0 1 587 $CHATMAIL_DOMAIN.
|
||||
_submissions._tcp.$CHATMAIL_DOMAIN. SRV 0 1 465 $CHATMAIL_DOMAIN.
|
||||
_imap._tcp.$CHATMAIL_DOMAIN. SRV 0 1 143 $CHATMAIL_DOMAIN.
|
||||
_imaps._tcp.$CHATMAIL_DOMAIN. SRV 0 1 993 $CHATMAIL_DOMAIN.
|
||||
$CHATMAIL_DOMAIN. IN CAA 0 issue "letsencrypt.org; accounturi=$ACME_ACCOUNT_URL"
|
||||
$CHATMAIL_DOMAIN. IN CAA 128 issue "letsencrypt.org; accounturi=$ACME_ACCOUNT_URL"
|
||||
EOF
|
||||
$SSH opendkim-genzone -F | sed 's/^;.*$//;/^$/d'
|
||||
|
||||
@@ -5,8 +5,8 @@ import threading
|
||||
import queue
|
||||
import traceback
|
||||
|
||||
import chatmaild.dictproxy
|
||||
from chatmaild.dictproxy import get_user_data, lookup_passdb, handle_dovecot_request
|
||||
import chatmaild.doveauth
|
||||
from chatmaild.doveauth import get_user_data, lookup_passdb, handle_dovecot_request
|
||||
from chatmaild.database import Database, DBError
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ def test_dont_overwrite_password_on_wrong_login(db):
|
||||
def test_nocreate_file(db, monkeypatch, tmpdir):
|
||||
p = tmpdir.join("nocreate")
|
||||
p.write("")
|
||||
monkeypatch.setattr(chatmaild.dictproxy, "NOCREATE_FILE", str(p))
|
||||
monkeypatch.setattr(chatmaild.doveauth, "NOCREATE_FILE", str(p))
|
||||
lookup_passdb(db, "newuser1@something.org", "zequ0Aimuchoodaechik")
|
||||
assert not get_user_data(db, "newuser1@something.org")
|
||||
|
||||
@@ -20,15 +20,14 @@
|
||||
box-sizing: border-box;
|
||||
padding: 9px;
|
||||
font-size: 18px;
|
||||
font-family: "Courier New", monospace;
|
||||
color: white;
|
||||
background-position: left top;
|
||||
background-image: url(collage-bg.png);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
font-family: "Swansea", "Helvetica", sans-serif;
|
||||
color: black;
|
||||
}
|
||||
a {
|
||||
color: black;
|
||||
}
|
||||
h1, h2, h3 {
|
||||
font-size: 16px;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
@@ -37,24 +36,39 @@
|
||||
<div class="wrapper">
|
||||
<img class="section" src="collage-top.png" />
|
||||
<div class="section text">
|
||||
<h1>welcome to nine.testrun.org</h1>
|
||||
<h1>Dear Delta Chat users and newcomers,</h1>
|
||||
<p>
|
||||
to get an account,
|
||||
invent a word with <i>exactly</i> nine characters
|
||||
and append @nine.testrun.org to it.
|
||||
eg. <b>hellofits@nine.testrun.org</b>
|
||||
welcome to the first public "chat-mail instance",
|
||||
a small and lean e-mail provider for smooth chatting.
|
||||
Install Delta Chat or add an account:
|
||||
<ul>
|
||||
<li>Tap "LOG INTO YOUR E-MAIL ACCOUNT".</li>
|
||||
<li>Address: invent a word with <i>exactly</i> nine characters
|
||||
and append @nine.testrun.org to it.</li>
|
||||
<li>Password: invent at least 10 characters. The first login sets your password.</li>
|
||||
</ul>
|
||||
If the e-mail address is not yet taken, you'll get that account.
|
||||
</p>
|
||||
<p>
|
||||
if the email address is not yet taken, you'll get that account.
|
||||
the first login sets your password.
|
||||
that's it.
|
||||
</p>
|
||||
</div>
|
||||
<img class="section" src="collage-down.png" />
|
||||
<div class="section text">
|
||||
<h1>faq</h1>
|
||||
<p><i>why are other email providers 1000 times more complicated?</i></p>
|
||||
<p>because they want to for $reasons</p>
|
||||
<img class="section" src="collage-down.png" />
|
||||
|
||||
<h2>What's behind it, how does it operate?</h2>
|
||||
<p>nine.testrun.org is run
|
||||
by a small group of devs and sysadmins, reachable via root@.
|
||||
They want to keep this instance running at least until end 2024.
|
||||
Current limits:
|
||||
<ul>
|
||||
<li>Un-encrypted mails can not leave the chat-mail instance.</li>
|
||||
<li>Use <a href="https://delta.chat/en/help#howtoe2ee">
|
||||
guaranteed end-to-end encryption via QR code scans</a>
|
||||
to setup contact with users outside of the chat-mail instance.
|
||||
</li>
|
||||
<li>You may send up to 60 messages per minute.</li>
|
||||
<li>Messages are unconditionally removed 40 days after arrival.</li>
|
||||
<li>Max storage per user is 100MB.</li>
|
||||
</ul>
|
||||
<h2>Why are other email providers 1000 times more complicated?</h2>
|
||||
<p>¯\_(ツ)_/¯</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user