Rikdekker 74733b36b7 Initial commit: bulk-link mail accounts via occ
Wrapper script around `occ mail:account:create` to bulk-link IMAP/SMTP
accounts for multiple Nextcloud users from a CSV file. Includes README
with usage, limitations (no connection test, no initial sync), and
.gitignore that blocks real credential CSVs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:55:56 +02:00

Nextcloud-ConnectMail

Bulk-link IMAP/SMTP mailaccounts voor Nextcloud-gebruikers via occ mail:account:create.

Bedoeld voor admins die in één keer mail-accounts willen koppelen voor meerdere users — bijvoorbeeld bij onboarding, migratie, of provisioning op basis van een externe lijst.

Wanneer dit script gebruiken

De Nextcloud Mail-app biedt geen REST-endpoint om als admin een account voor een andere user te koppelen. Wel bestaat occ mail:account:create <userId> ..., maar dat is positioneel en omslachtig voor bulk-werk. Dit script wrapt die call en leest een CSV.

Alternatieven:

  • Provisioning-templates (admin-UI in Mail): één template per domein, géén per-user credentials. Werkt alleen als alle users hetzelfde mail-cluster delen.
  • Eigen REST-controller: vereist een patch op de Mail-app.

Vereisten

  • Shell-toegang tot de Nextcloud-server (rechtstreeks of via SSH/docker exec)
  • occ uitvoerbaar als web-user (meestal www-data)
  • De Nextcloud Mail-app geïnstalleerd en geactiveerd
  • python3 op de host waar het script draait (voor RFC-4180 CSV-parsing)

Gebruik

OCC_CMD="docker exec -u www-data nc-dev php occ" \
  ./mail-bulk-link.sh accounts.csv

Voor classic installs:

OCC_CMD="sudo -u www-data php /var/www/nextcloud/occ" \
  ./mail-bulk-link.sh accounts.csv

Remote via SSH:

OCC_CMD="ssh hetzner-ax42 docker exec -u www-data nc-dev php occ" \
  ./mail-bulk-link.sh accounts.csv

CSV-formaat

Header verplicht, kolomvolgorde vrij. Verplichte kolommen:

userId,name,email,imapHost,imapPort,imapSsl,imapUser,imapPass,smtpHost,smtpPort,smtpSsl,smtpUser,smtpPass

Optionele kolom: authMethod (password of xoauth2, default password).

  • imapSsl / smtpSsl: ssl, tls, of none
  • Regels die beginnen met # worden overgeslagen
  • Quote velden met komma's volgens RFC 4180 ("foo,bar")

Zie accounts.example.csv voor een voorbeeld.

Beperkingen

  • Geen connectie-test. De occ-command slaat blind op — foute credentials worden geaccepteerd. De user merkt het pas bij de eerste sync. De REST-route (POST /api/accounts) doet wel een live IMAP/SMTP-test, maar werkt alleen voor de ingelogde user zelf.
  • Geen initial mailbox-sync. Wordt door de REST-route wel getriggerd, door occ niet. Eerste sync gebeurt bij de eerstvolgende background-job of bij eerste login van de user.
  • Wachtwoorden in CSV. Plaintext op disk tijdens uitvoer. Na de run: shred -u accounts.csv. Nooit committen.

Security

  • Voeg accounts.csv (en varianten) toe aan .gitignore van je deploy-repo
  • Draai dit alleen vanuit een omgeving waar je sowieso admin-rechten hebt
  • Voor productie: overweeg de credentials uit een secrets-store te halen en de CSV on-the-fly te genereren in tmpfs

Licentie

AGPL-3.0-or-later (consistent met Nextcloud Mail).

Description
No description provided
Readme 29 KiB
Languages
Shell 100%