Mirror docs/ from 937f735

github-actions[bot] committed 2026-09-14 20:24:21 +00:00
1 parent 8207191409
commit 3f3d2d6c46
8 files changed
+102 -37

No files matched your search

+48 -15
@@ -1,11 +1,11 @@
<!-- translated-from: features/integrations.md sha1:158012bf5e22fd3e49ef5e197f9397ea418b1a4d -->
<!-- translated-from: features/integrations.md sha1:7f9932fddb5e543555f7c6a0aa6f89ba179cc80d -->
# Dateien und Integrationen
plMail kann eine Datei aus einem Dienst holen, den du ohnehin benutzt, und sie an eine
Nachricht hängen — und einen Anhang in die andere Richtung in diesen Dienst schieben.
Unterstützt werden sechs Dienste: **Nextcloud**, **Immich**, **Google Drive**, **Google
Photos**, **OneDrive** und **Dropbox**.
Unterstützt werden sieben Dienste: **Nextcloud**, **Immich**, **Paperless-ngx**, **Google
Drive**, **Google Photos**, **OneDrive** und **Dropbox**.
Verbindungen gehören einer Person und lassen sich einzeln widerrufen. Welche Dienste überhaupt
angeboten werden, entscheidet die Administration — siehe [Administration](De-Features-Admin).
@@ -24,6 +24,7 @@ Wie du dich verbindest, hängt vom Dienst ab:
|---|---|---|
| Nextcloud | App-Passwort | Serveradresse, Benutzername, App-Passwort |
| Immich | API-Schlüssel | Serveradresse, API-Schlüssel |
| Paperless-ngx | API-Token | Serveradresse, API-Token |
| Google Drive | Anmeldung | Nichts — die Zustimmungsseite |
| Google Photos | Anmeldung | Nichts — die Zustimmungsseite |
| OneDrive | Anmeldung | Nichts — die Zustimmungsseite |
@@ -38,11 +39,12 @@ Hat deine Administration für einen selbst gehosteten Dienst eine Serveradresse
fehlt das Adressfeld ganz, statt deaktiviert zu sein, und ein trotzdem abgeschickter Wert wird
ignoriert.
Lege bei Nextcloud und Immich Zugangsdaten auf dem Dienst an, statt dein Anmeldepasswort zu
verwenden. Nextcloud führt App-Passwörter unter **Einstellungen → Sicherheit → Geräte &
Sitzungen**; Immich führt API-Schlüssel unter **Account Settings → API Keys**. Ein App-Passwort
lässt sich einzeln widerrufen und funktioniert neben der Zwei-Faktor-Authentifizierung; ein
Anmeldepasswort kann beides nicht.
Lege bei den selbst gehosteten Diensten Zugangsdaten auf dem Dienst an, statt dein
Anmeldepasswort zu verwenden. Nextcloud führt App-Passwörter unter **Einstellungen → Sicherheit
→ Geräte & Sitzungen**; Immich führt API-Schlüssel unter **Account Settings → API Keys**;
Paperless-ngx zeigt ein API-Token unter **My Profile → API Auth Token**. Ein App-Passwort oder
Token lässt sich einzeln widerrufen und funktioniert neben der Zwei-Faktor-Authentifizierung;
ein Anmeldepasswort kann beides nicht.
Beim Speichern wird die Verbindung immer sofort geprüft. Eine Verbindung, die sauber abgelegt
wird und keinen Ordner auflisten kann, ist schlimmer als ein sichtbarer Fehler, denn du fändest
@@ -77,6 +79,7 @@ also an genau einer Stelle.
| Google Drive | ja | ja | ja | ja | ja | ja | — |
| OneDrive | ja | ja | ja | ja | ja | ja | — |
| Dropbox | ja | ja | ja | ja | ja | ja | — |
| Paperless-ngx | ja | ja | ja | — | ja | ja | — |
| Immich | ja | ja | ja | — | ja | ja | ja |
| Google Photos | ja | ja | ja | — | ja | — | — |
@@ -88,6 +91,27 @@ einzige, der seine Bibliothek als Daten zusammenfassen kann, und genau das ist s
Google Photos hat keine Textsuche, weil seine Library-API keine anbietet — nur Album- und
Datumsfilter.
Paperless-ngx hat aus einem anderen Grund keinen Freigabelink: Es kann ein Dokument teilen, aber
nur über eine eigene, rechtegesteuerte Funktion mit eigenem Ablaufdatum, und ein abgelegtes
Dokument zu veröffentlichen ist ein viel größerer Schritt, als es an eine Nachricht zu hängen.
## Paperless-ngx, das keine Ordner hat
Paperless hat Ordner bewusst durch Schlagwörter ersetzt, also benutzt plMail seine
**Schlagwörter** als Ordnerebene. Die Dateiauswahl öffnet mit allen Schlagwörtern als Ordnern und
den neuesten Dokumenten darunter; ein Schlagwort zu öffnen listet dessen Dokumente. **Speichern
in** legt einen Anhang unter einem Schlagwort ab, und ein leeres Ziel legt ihn unter keinem ab —
im Posteingang von Paperless selbst, wo ein unsortiertes Dokument hingehört.
Die Suche läuft über den Volltextindex von Paperless, der auch die OCR-Ebene liest, nicht nur
Titel und Metadaten. Eine gescannte Quittung ist damit über eine Zeile auffindbar, die nie jemand
getippt hat, und genau darum geht es: Es gibt keinen Grund, erst Paperless zu öffnen, ein
Dokument zu suchen und herunterzuladen, bevor du es anhängst. Eine Suche aus einem Schlagwort
heraus bleibt in diesem Schlagwort.
Angehängt wird die **archivierte** Fassung — das durchsuchbare PDF, das Paperless beim Ablegen
erzeugt hat — und ersatzweise das Original, wo keine erzeugt werden konnte.
## Aus einem Dienst anhängen
Im Schreibfenster öffnet **Aus einem Dienst anhängen** die Dateiauswahl in einem Dialog. Sie
@@ -142,19 +166,28 @@ Erlaubnisliste steht.** Selbst gehostete Dienste liegen auf Adressen, auf die ei
Person plMails ausgehenden HTTP-Client sonst richten könnte — darunter `localhost:5432` und der
Cloud-Metadaten-Endpunkt unter `169.254.169.254`. Loopback, Link-Local, RFC1918 und die Bereiche
für Carrier-Grade NAT sind alle gesperrt, solange der Host nicht in
`INTEGRATIONS_ALLOWED_HOSTS` steht. In einem Heimnetz ist das die Einstellung, die Nextcloud und
Immich überhaupt erreichbar macht.
`INTEGRATIONS_ALLOWED_HOSTS` steht. In einem Heimnetz ist das die Einstellung, die Nextcloud,
Immich und Paperless-ngx überhaupt erreichbar macht.
**`http://` wird abgelehnt, solange `INTEGRATIONS_ALLOW_HTTP` nicht an ist.** Selbst hosten im
LAN ohne TLS ist eine ganz gewöhnliche Lage, diese Option wird also oft gesetzt sein — der Punkt
ist, dass Zugangsdaten im Klartext zu verschicken eine bewusste Entscheidung wird und keine
stille Voreinstellung.
**Ein Foto über der Anhangsgrenze lässt sich aus Immich oder Google Photos überhaupt nicht
anhängen.** Keiner von beiden kann für ein einzelnes Objekt eine öffentliche URL erzeugen, ohne
ein geteiltes Album anzulegen, und das ist eine schwerere Nebenwirkung, als das Anhängen einer
Datei haben sollte. Es gibt deshalb keinen Rückfall auf einen Link: über 25 MB lautet die
Antwort nein.
**Eine Datei über der Anhangsgrenze lässt sich aus Immich, Google Photos oder Paperless-ngx
überhaupt nicht anhängen.** Die Fotobibliotheken können für ein einzelnes Objekt keine
öffentliche URL erzeugen, ohne ein geteiltes Album anzulegen; Paperless kann ein Dokument teilen,
aber nur über eine rechtegesteuerte Funktion mit eigenem Ablaufdatum, und ein abgelegtes Dokument
zu veröffentlichen ist eine schwerere Nebenwirkung, als das Anhängen einer Datei haben sollte. Es
gibt deshalb bei keinem der drei einen Rückfall auf einen Link: über 25 MB lautet die Antwort
nein.
**Das Speichern nach Paperless-ngx meldet die Übergabe, nicht das abgelegte Dokument.** Der
Upload-Endpunkt arbeitet asynchron: Er übergibt die Datei an den Paperless-Consumer und antwortet
mit einer Task-ID, und das Dokument erscheint Sekunden später, sobald der Consumer es eingelesen
hat — oder gar nicht, wenn Paperless es als Dublette ablehnt. plMail meldet Erfolg, sobald
Paperless die Datei angenommen hat, und das ist der letzte Moment, von dem plMail etwas weiß.
Schau in Paperless nach, wenn ein Dokument nicht auftaucht.
**Eine frisch registrierte Google-Photos-Anwendung kann eine bestehende Bibliothek meist nicht
durchsehen.** Google hat die Photos-Lesescopes im März 2025 eingeschränkt; eine neue App bekommt
+2 -2
@@ -1,4 +1,4 @@
<!-- translated-from: install/configuration.md sha1:df52ec964c2f6432f46bad36f04deb0d737cc193 -->
<!-- translated-from: install/configuration.md sha1:cd6d3d48d0f2c85f1710ebe100ccfb75c1f95fc8 -->
# Konfigurationsreferenz
Jede Umgebungsvariable, die plMail liest, was sie bewirkt, welchen Vorgabewert sie hat und was
@@ -163,7 +163,7 @@ eine Hälfte nicht lesen, was die andere schreibt.
Zwei Variablen lockern eine Prüfung, und es lohnt sich, genau zu sagen, wofür diese Prüfung da ist.
Selbst gehostete Integrationen — Nextcloud, Immich — lassen eine angemeldete Person ihre eigene
Selbst gehostete Integrationen — Nextcloud, Immich, Paperless-ngx — lassen eine angemeldete Person ihre eigene
Serveradresse eintippen. Das richtet plMails ausgehenden HTTP-Client dorthin, wohin diese Person
will, und zwar aus einem Containernetz heraus, in dem auch Postgres und der Mercure-Hub liegen.
`App\Service\Integration\IntegrationUrlValidator` weist jede Adresse ab, die nach `127.0.0.0/8`,
+3 -2
@@ -1,4 +1,4 @@
<!-- translated-from: internals/security-model.md sha1:710f051dcc6bfd70a58136e385acb2612495ccf7 -->
<!-- translated-from: internals/security-model.md sha1:8299578c3e86a7bbd01a223ca63a965c3faed350 -->
# Sicherheitsmodell
Verschlüsselung ruhender Daten und die Prüfung, die den Start ohne brauchbaren Schlüssel
@@ -342,7 +342,8 @@ den Workern.
festgenagelt ist, sodass auch eine alte Zeile von vor dem Festnageln nicht weiter anderswohin
greifen kann.
2. **`http://` wird abgelehnt, sofern `INTEGRATIONS_ALLOW_HTTP` nicht an ist.** Selbsthosting im
LAN ist bei Nextcloud und Immich der Normalfall, dieser Schalter wird also oft gesetzt sein —
LAN ist bei Nextcloud, Immich und Paperless-ngx der Normalfall, dieser Schalter wird also oft
gesetzt sein —
der Punkt ist, dass Klartext-Anmeldedaten auf der Leitung damit zu einer bewussten
Admin-Entscheidung werden statt zu einer stillen Voreinstellung.
3. **Loopback-, Link-Local- und private Bereiche werden abgelehnt**, sofern der Host nicht in
+2 -2
@@ -1,4 +1,4 @@
<!-- translated-from: README.md sha1:4b74a1a04ac86bed54de961461b843a44958943b -->
<!-- translated-from: README.md sha1:f8ba550e5982b1eb2b7fcec825eb1f332534ce7a -->
# plMail-Dokumentation
@@ -36,7 +36,7 @@ wo der Mechanismus dahinter steht.
| [Erinnerungen](De-Features-Calendar-Alerts) | Erinnerungen setzen, wie sie zugestellt werden, was eine frische Installation braucht, damit sie ankommen |
| [Verbundene Kalender](De-Features-Calendar-Sync) | Google-, Microsoft- und CalDAV-Kalender abonnieren, Abgleich in beide Richtungen, ICS-Import, -Export und Feed-Abonnements, doppelte Termine |
| [Teilen und Buchen](De-Features-Calendar-Sharing) | Freigabelinks und was jeder preisgibt, Buchungsseiten, wie eine Buchung ankommt |
| [Dateien und Integrationen](De-Features-Integrations) | Anhängen aus und Speichern in Drive, Photos, OneDrive, Dropbox, Nextcloud und Immich |
| [Dateien und Integrationen](De-Features-Integrations) | Anhängen aus und Speichern in Drive, Photos, OneDrive, Dropbox, Nextcloud, Immich und Paperless-ngx |
| [Sicherheit](De-Features-Security) | Dein Passwort ändern, Zwei-Faktor-Authentifizierung, Wiederherstellungscodes, gemerkte Geräte, App-Passwörter, Sitzungen |
| [Andere Clients](De-Features-Clients) | Einen JMAP-Client verbinden, Passwörter pro App, die PWA und Browser-Benachrichtigungen |
| [Darstellung](De-Features-Appearance) | Themes, eigene Farben und Hintergrund, die Live-Vorschau, was eine Listenzeile zeigt, Schriftart und Textgröße, Dichte je Bereich, Import und Export, Sprache |
+41 -11
@@ -1,8 +1,8 @@
# Files and integrations
plMail can pull a file out of a service you already use and attach it to a message, and push an
attachment the other way into that service. Six services are supported: **Nextcloud**, **Immich**,
**Google Drive**, **Google Photos**, **OneDrive** and **Dropbox**.
attachment the other way into that service. Seven services are supported: **Nextcloud**, **Immich**,
**Paperless-ngx**, **Google Drive**, **Google Photos**, **OneDrive** and **Dropbox**.
Connections belong to one user and are revocable one at a time. Which services are offered at all
is an administrator's decision — see [Administration](Features-Admin).
@@ -20,6 +20,7 @@ How you connect depends on the service:
|---|---|---|
| Nextcloud | App password | Server address, username, app password |
| Immich | API key | Server address, API key |
| Paperless-ngx | API token | Server address, API token |
| Google Drive | Sign-in | Nothing — the consent screen |
| Google Photos | Sign-in | Nothing — the consent screen |
| OneDrive | Sign-in | Nothing — the consent screen |
@@ -32,10 +33,11 @@ home and work, and the button stays available after the first connection for exa
If your administrator has pinned a server address for a self-hosted service, the address field is
absent rather than disabled, and a submitted value is ignored regardless.
For Nextcloud and Immich, create a credential on the service rather than using your login password.
Nextcloud puts app passwords under **Settings → Security → Devices & sessions**; Immich puts API
keys under **Account Settings → API Keys**. An app password is individually revocable and works
alongside two-factor authentication; a login password is neither.
For the self-hosted services, create a credential on the service rather than using your login
password. Nextcloud puts app passwords under **Settings → Security → Devices & sessions**; Immich
puts API keys under **Account Settings → API Keys**; Paperless-ngx shows an API token under **My
Profile → API Auth Token**. An app password or token is individually revocable and works alongside
two-factor authentication; a login password is neither.
Saving always probes the connection there and then. A connection that stores cleanly but cannot
list a folder is worse than a visible failure, because you would only find out halfway through
@@ -64,6 +66,7 @@ service name — so a service that gains or loses an ability changes in exactly
| Google Drive | yes | yes | yes | yes | yes | yes | — |
| OneDrive | yes | yes | yes | yes | yes | yes | — |
| Dropbox | yes | yes | yes | yes | yes | yes | — |
| Paperless-ngx | yes | yes | yes | — | yes | yes | — |
| Immich | yes | yes | yes | — | yes | yes | yes |
| Google Photos | yes | yes | yes | — | yes | — | — |
@@ -74,6 +77,26 @@ summarise its library as dates, which is what its scrubber is.
Google Photos has no text search because its Library API offers none — only album and date filters.
Paperless-ngx has no share link for a different reason: it can share a document, but only through a
separate permissioned feature with its own expiry, and publishing a filed document is a much bigger
act than attaching one to a message.
## Paperless-ngx, which has no folders
Paperless replaced folders with tags on purpose, so plMail browses its **tags** as the folder layer.
The picker opens on every tag, as folders, with the newest documents listed under them; opening a tag
lists that tag's documents. **Save to** files an attachment under a tag, and leaving the destination
empty files it under none — Paperless's own inbox, which is where an unsorted document is meant to
land.
Search goes through Paperless's full-text index, which reads the OCR layer as well as the title and
metadata. A scanned receipt is findable by a line item nobody ever typed, which is the point: there
is no reason to open Paperless, find a document and download it before attaching it. Searching from
inside a tag stays inside that tag.
Attaching a document fetches the **archived** copy — the searchable PDF Paperless made when it filed
the document — falling back to the original where it could not make one.
## Attaching from a service
In the compose window, **Attach from a service** opens the picker in a modal. It offers every
@@ -123,16 +146,23 @@ A filter can do the same thing automatically with the **Save attachments to** ac
addresses an authenticated user could otherwise aim plMail's outbound HTTP client at — including
`localhost:5432` and the cloud metadata endpoint at `169.254.169.254`. Loopback, link-local, RFC1918
and carrier-grade NAT ranges are all blocked unless the host appears in `INTEGRATIONS_ALLOWED_HOSTS`.
On a home LAN this is the setting that makes Nextcloud and Immich reachable at all.
On a home LAN this is the setting that makes Nextcloud, Immich and Paperless-ngx reachable at all.
**`http://` is refused unless `INTEGRATIONS_ALLOW_HTTP` is on.** Self-hosting on a LAN without TLS is
an ordinary situation, so this flag will often be set — the point is that sending credentials in
plaintext becomes a deliberate decision rather than a silent default.
**A photo above the attachment ceiling cannot be attached from Immich or Google Photos at all.**
Neither can mint a public URL for a single item without creating a shared album, which is a heavier
side effect than attaching a file should have. So there is no link fallback: over 25 MB, the answer
is no.
**A file above the attachment ceiling cannot be attached from Immich, Google Photos or Paperless-ngx
at all.** The photo libraries cannot mint a public URL for a single item without creating a shared
album; Paperless can share a document, but only through a permissioned feature with its own expiry,
and publishing a filed document is a heavier side effect than attaching a file should have. So there
is no link fallback on any of the three: over 25 MB, the answer is no.
**Saving to Paperless-ngx reports the handover, not the filed document.** The upload endpoint is
asynchronous: it hands the file to the Paperless consumer and answers with a task id, and the
document appears seconds later once the consumer has ingested it — or never, if Paperless rejects it
as a duplicate. plMail says the save succeeded when Paperless accepted the file, which is the last
moment it knows anything. Check Paperless itself if a document does not turn up.
**A newly registered Google Photos application usually cannot browse an existing library.** Google
restricted the Photos read scopes in March 2025; a new app is generally granted only
+1 -1
@@ -34,7 +34,7 @@ mechanism behind it.
| [Reminders](Features-Calendar-Alerts) | Setting alerts, how they are delivered, what a fresh install needs before they arrive |
| [Connected calendars](Features-Calendar-Sync) | Subscribing to Google, Microsoft and CalDAV calendars, two-way sync, ICS import, export and feed subscriptions, duplicate meetings |
| [Sharing and booking](Features-Calendar-Sharing) | Share links and what each reveals, appointment pages, how a booking arrives |
| [Files and integrations](Features-Integrations) | Attaching from and saving to Drive, Photos, OneDrive, Dropbox, Nextcloud and Immich |
| [Files and integrations](Features-Integrations) | Attaching from and saving to Drive, Photos, OneDrive, Dropbox, Nextcloud, Immich and Paperless-ngx |
| [Security](Features-Security) | Changing your password, two-factor authentication, recovery codes, remembered devices, app passwords, sessions |
| [Other clients](Features-Clients) | Connecting a JMAP client, per-app passwords, the PWA and browser notifications |
| [Appearance](Features-Appearance) | Themes, custom colours and background, the live preview, what a list row shows, typeface and text size, per-pane density, import and export, language |
+2 -1
@@ -156,7 +156,8 @@ writes.
Two variables relax one check, and it is worth being exact about what the check is for.
Self-hosted integrations — Nextcloud, Immich — let a signed-in user type their own server address.
Self-hosted integrations — Nextcloud, Immich, Paperless-ngx — let a signed-in user type their own
server address.
That aims plMail's outbound HTTP client wherever the user likes, from inside a container network
that also holds Postgres and the Mercure hub. `App\Service\Integration\IntegrationUrlValidator`
refuses any address resolving into `127.0.0.0/8`, `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`,
+3 -3
@@ -311,9 +311,9 @@ runs in a container network alongside Postgres, Mercure and the workers.
`resolve()` ignores the user's value when one is pinned, so a stale row from before the pin
cannot keep reaching elsewhere.
2. **`http://` is refused unless `INTEGRATIONS_ALLOW_HTTP` is on.** Self-hosting on a LAN is
the normal case for Nextcloud and Immich, so this flag will often be set — the point is that
plaintext credentials over the wire become a deliberate admin decision rather than a silent
default.
the normal case for Nextcloud, Immich and Paperless-ngx, so this flag will often be set — the
point is that plaintext credentials over the wire become a deliberate admin decision rather
than a silent default.
3. **Loopback, link-local and private ranges are refused** unless the host appears in
`INTEGRATIONS_ALLOWED_HOSTS`. `BLOCKED_RANGES` covers `127.0.0.0/8`, the three RFC1918
ranges, `169.254.0.0/16` (link-local, including the cloud metadata endpoint at