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>
2.8 KiB
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)
occuitvoerbaar als web-user (meestalwww-data)- De Nextcloud Mail-app geïnstalleerd en geactiveerd
python3op 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, ofnone- 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
occniet. 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.gitignorevan 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).