Mailist is a ChurchTools extension that enables you to create email distribution lists without operating an own mailserver and synchronize recipients with ChurchTools.
Mailist was previously named Korga for the german term Kirchen Organisation (church organization). It started as a standalone CMS and soon became an extension platform for ChurchTools when ChurchTools' extensions were not available.
Mailist makes it possible to send emails to ChurchTools groups via email. For example, anyone can send an email to youth@example.org and Mailist will forward it to all members of your ChurchTools group Youth with role Leader.
There is no Web UI available yet to manage distribution lists so you must stick to the CLI inside the Docker container:
./Mailist dist create youth
./Mailist dist add-recipient youth -g 137
This command creates a distribution list youth@example.org which forwards emails to every member of group #137.
The only officially supported distribution are Docker containers. An official image is available at daniellerch/mailist.
If you are using Docker Compose, take a look our example compose file in the docs folder.
See Mailist server configuration for a full list of configuration options.
First you must create a service account which Mailist can use for API access to ChurchTools:
- Create a person with email address in your ChurchTools instance
You might want to define a special status for API users - Invite that person to ChurchTools
- Click on the invitation link and set a password
- Open https://example.church.tools/api/whoami to look up the ID of the newly created user
- Open https://example.church.tools/api/person/${ID}/logintoken to look up the long-term access token which will be used like an API key
Steps 4. and 5. can also be performed in the ChurchTools web interface: Official Documentation
Warning
For security reasons it is not recommended to let Mailist use your ChurchTools admin account.
Grant the following permissions to Mailist's user:
- Administration > Berechtigungen anpassen
churchcore:administer persons - Personen & Gruppen > "Personen & Gruppen" sehen
churchdb:view - Personen & Gruppen > Sicherheitslevel Personendaten (Stufe 1-3)
churchdb:security level person(1,2,3) - Personen & Gruppen > Alle Personen des jeweiligen Bereiches sichtbar machen (Alle)
churchdb:view alldata(-1) - Personen & Gruppen > Einzelne Gruppen inkl. der enthaltenen Personen sehen (gilt auch für versteckte Gruppen) (Alle)
churchdb:view group(-1) - Personen & Gruppen > Gruppenmitgliedschaften aller sichtbaren Personen bearbeiten
churchdb:edit group memberships
After creating and configuring a ChurchTools user for Mailist you can finally configure it via environment variables in compose.yaml.
Do not forget to recreate your container to take these changes into effect.
Email delivery requires an SMTP server and credentials.
This is given for almost any email inbox.
Depending on your email hosting provider you might need an app password.
Email delivery can be configured via environment variables in compose.yaml.
Mailist's email relay requires a catchall IMAP inbox.
Such an inbox receives all emails sent to a domain where no matching inbox was found, i.e. *@example.org.
It can be configured via environment variables in compose.yaml.
Contributions are highly welcome. Please open an issue before implementing a feature to discuss your plans.
Mailist's source code is split into the backend (located in server) and the frontend (located in webapp).
The following instructions are written for Windows but generally also apply to Linux development setups.
Backend
- ASP.NET Core
- Entity Framework Core
- MySQL / MariaDB
- Docker
Frontend
- Vue 3
- TypeScript
- PrimeVue
- Tailwind CSS
Backend
- Visual Studio 2026
- .NET SDK 10.0
- EF Core CLI Tools (e.g.
dotnet tool install -g dotnet-ef) - MySQL or MariaDB (e.g. from PSModules)
Frontend
- Visual Studio Code
- Vue Language Features (Volar) Extension
- NodeJS 24 LTS
During development the frontend running on the Vue CLI development server will use http://localhost:10501 as API endpoint. That means the backend can be running in Visual Studio with Debugger attached.