Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Odevzdávací Systém MO
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Model registry
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Martin Mareš
Odevzdávací Systém MO
Merge requests
!138
Zpracování nedoručenek
Code
Review changes
Check out branch
Download
Patches
Plain diff
Expand sidebar
Merged
Zpracování nedoručenek
dsn
into
devel
Overview
0
Commits
35
Changes
44
Merged
Martin Mareš
requested to merge
dsn
into
devel
5 months ago
Overview
0
Commits
35
Changes
3
Implementace zbytku Issue
#116 (closed)
.
0
0
Merge request reports
Compare
version 5
version 6
836f63c5
5 months ago
version 5
2fe6ec66
5 months ago
version 4
6e74bd8e
5 months ago
version 3
1f5cfd6b
5 months ago
version 2
ded02d2d
5 months ago
version 1
6e26635a
5 months ago
devel (base)
and
latest version
latest version
8dc000d4
35 commits,
5 months ago
version 6
836f63c5
48 commits,
5 months ago
version 5
2fe6ec66
46 commits,
5 months ago
version 4
6e74bd8e
43 commits,
5 months ago
version 3
1f5cfd6b
35 commits,
5 months ago
version 2
ded02d2d
34 commits,
5 months ago
version 1
6e26635a
33 commits,
5 months ago
Show latest version
3 files
+
54
−
4
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
3
doc/dsn.md
0 → 100644
+
51
−
0
View file @ 8dc000d4
Edit in single-file editor
Open in Web IDE
# Zpracování mailových nedoručenek (DSN)
## Princip
Kdykoliv OSMO odesílá mail, umí do obálkového FROM přidat token
(oddělený od jména uživatele pluskem), do kterého je zakódováno,
kterého uživatele nebo pokusu o registraci se mail týká.
Pokud přijde nedoručenka, OSMO ji zpracuje a z tokenu v adrese
jejího adresáta určí, ke komu patří. K uživatelům a probíhajícím
registracím si pak poznamená informaci o nefunkčnosti e-mailové
adresy a umí ji uživateli zobrazit.
## Implementace
Nedoručenky se posílají na osmo-auto+token@mo.mff.cuni.cz, což se
přepíše na mo-web+dsn@gimli.ms.mff.cuni.cz.
Účet mo-web má nakonfigurovaný následující filtr pro Sieve:
require ["envelope", "subaddress", "include", "mailbox", "vnd.dovecot.execute"];
# Základní systémová pravidla
include :global "default";
if envelope :detail :matches "To" ["dsn", "dsn+*"] {
if execute :pipe "osmo-send-dsn" ["https://osmo.matematickaolympiada.cz/"] {
redirect "spravce+osmo-dsn-ok@example.org";
} else {
redirect "spravce+osmo-dsn-error@example.org";
}
} else {
redirect "spravce+osmo-unknown@example.org";
}
To spustí program bin/send-dsn, nainstalovaný jako
/usr/local/lib/dovecot/sieve-execute/osmo-send-dsn,
a ten předá nedoručenku webové části OSMO. Pokud zrovna webová část
neběží nebo neumí nedoručenku zpracovat, osmo-send-dsn selže, takže
Sieve nedoručenku přepošle správci.
Webová část si vyparsuje token z hlavičkového To, takže interní
přeposílání během doručování ji nezmate.
Skript bin/send-dsn je minimalistický, stačí mu Python se standardní
knihovnou Pythonu a balíčkem requests. Skript může běžet pod jiným
uživatelem, nebo dokonce na jiném stroji než zbytek OSMO.
Komunikace mezi bin/send-dsn a zbytkem OSMO je autorizována tajným
klíčem. Web OSMO si ho přečte z DSN_API_KEY z configu, send-dsn
ho hledá jako jediný řádek souboru ~/.config/osmo/dsn-api-key.
Loading