Checky verschickt Anmeldecodes, Einladungen, Check-in-Erinnerungen und Zusammenfassungen. Jede Erinnerung hat One-Tap-Antwortbuttons (signierte Links, ohne Anmeldung) und lässt sich per Antwort mit „ja“, „nein“, einer Zahl oder Text beantworten — auf Deutsch, Englisch, Französisch oder Spanisch.
Versand per SMTP (Docker)
Jeder SMTP-Anbieter funktioniert: Postmark, Mailgun, Amazon SES, Brevo, Scaleway TEM (EU) oder dein Relay von Microsoft 365 / Google Workspace.
EMAIL_FROM=Checky <[email protected]>
SMTP_URL=smtps://user:[email protected]:465
Port 465 mit smtps:// oder Port 587 mit smtp://… (STARTTLS). Sonderzeichen im Passwort URL-kodieren. Richte
SPF, DKIM und DMARC für die Domain aus EMAIL_FROM so ein, wie es dein Anbieter beschreibt — sonst landen die
Erinnerungen im Spam.
Ohne SMTP_URL ist der Transport console: E-Mails stehen nur im Log (docker compose logs checky), und der
Server warnt im Produktivbetrieb beim Start davor.
Auf Cloudflare läuft der Versand über Cloudflare Email — siehe Deploy to Cloudflare.
Antworten per Reply
Erinnerungen haben eine Reply-To-Adresse reply+<token>@EMAIL_REPLY_DOMAIN. Der Token ist mit APP_SECRET
signiert und gehört zu genau einem Check-in — niemand kann für jemand anderen antworten. Zitierter Verlauf,
Signaturen und Grußformeln („Viele Grüße“, „Von meinem iPhone gesendet“) werden vor dem Auswerten entfernt.
Antworten werden bis sieben Tage nach der Deadline angenommen.
Mit Docker brauchst du einen Inbound-Anbieter, der Mails für die Antwortdomain empfängt und an Checky schickt:
- Wähl eine Domain für Antworten, z. B.
reply.example.com, und setzEMAIL_REPLY_DOMAIN=reply.example.com. - Setz
INBOUND_WEBHOOK_SECRETauf einen Zufallswert (≥ 16 Zeichen). - Leg den MX-Eintrag der Domain auf deinen Inbound-Anbieter und leite jede Nachricht weiter an
https://checky.example.com/api/v1/inbound/email?secret=<INBOUND_WEBHOOK_SECRET>(oder schick das Secret im HeaderX-Checky-Inbound-Secret):- Mailgun — Receiving → Routes → „Forward“ an die URL.
- Postmark — Inbound-Stream → Webhook-URL.
- SendGrid — Inbound Parse (Raw-MIME oder geparst, beides geht).
Checky versteht Mailgun-, Postmark- und SendGrid-Payloads, generisches JSON (from, to, subject, text,
html) und Raw-MIME. Für jede verstandene Nachricht antwortet es mit 200 und einem result, das sagt, was
passiert ist (beantwortet, schon beantwortet, unbekannter Token …).
Testen, ob alles klappt
- Leg einen Check an, der in ein paar Minuten fällig ist, und weise ihn dir selbst zu.
- Warte auf die Erinnerung.
- Antworte „ja“. Der Check-in steht dann auf beantwortet, mit „E-Mail“ als Kanal.
Kommt nichts an, schau unter Fehlerbehebung.