At the moment I'm actually using Postfix as SMTP frontend together with Rspamd, and then forwarding internally to Citadel via SMTP on port 2025.
So the current architecture is roughly:
Internet -> Postfix -> Rspamd -> Citadel SMTP
I intentionally kept the setup modular and relatively classic Unix-oriented instead of tightly coupling everything together.
LMTP is something I'm currently evaluating, but the existing SMTP-based integration has been extremely stable and easy to maintain so far.
That's really neat. The current implementation of Citadel was specifically designed so that it can run as a self-sufficient standalone service or be part of a larger software ecosystem. I'm thrilled to see that you're doing the latter.
I'm curious how you've coupled Postfix and Citadel. Are you using the LMTP socket?
Some system specs... Maybe this isn’t the right thread for it, but if you’re interested, let’s talk about it ;)
That's really neat. The current implementation of Citadel was specifically designed so that it can run as a self-sufficient standalone service or be part of a larger software ecosystem. I'm thrilled to see that you're doing the latter.
I'm curious how you've coupled Postfix and Citadel. Are you using the LMTP socket?
Migrated my Citadel setup from internal SMTP delivery to native LMTP
Hi everyone,
after running Citadel in production together with Postfix and Rspamd for quite some time, I recently migrated the internal mail delivery path from SMTP (localhost:2025) to native LMTP using Citadel's Unix domain sockets.
The setup is running stable in production now and works very well.
Current architecture:
Internet | Postfix | Rspamd | LMTP Unix Socket | Citadel
The migration uses:
-
Postfix as SMTP edge gateway
-
Rspamd for filtering and signing
-
Citadel as backend groupware and mail store
-
LMTP over Unix sockets for local delivery
I documented the migration process, configuration changes and testing steps here:
Postfix LMTP Migration Documentation
The repository itself is here:
Maybe this helps someone building a modern Citadel-based mail platform with Postfix and Rspamd.
And thanks to the Citadel developers for still keeping classic Unix-style groupware alive 🙂
That's really neat. The current implementation of Citadel was specifically designed so that it can run as a self-sufficient standalone service or be part of a larger software ecosystem. I'm thrilled to see that you're doing the latter.
I'm curious how you've coupled Postfix and Citadel. Are you using the LMTP socket?
I have a personal Citadel email server with 2 users. I again state, a user must have Admin rights to configure the "Message expire policy". Can I give Admin rights to a user and configure the "Message expire policy" and then revoke those rights and the settings will remain?
Or could that be changed in future releases?
With a Citadel Network user appears.
with his own folders / rooms he can.
depends on rights of the folders. but your own folders like inbox, archive and so on, you can.
or on an individual room
A user without Administrator level can not do this. Am I right? Why so?
Are there some way to shrink the size of the main citadel data file without compromizing the citadel stability?
Do you have the auto-purger configured to delete "old" messages?
You can do this at the site-wide level, or on an individual room (such as your trash folder).
If new data is arriving at approximately the same rate old data is expiring, then yes, eventually you will reach an equilibrium where the database files stabilize in size.
Do look in the Aide room for messages confirming this. The helpful Citadel Aide will tell you how many objects are being deleted during the nightly purger run.
I cant say if it would or would not, but that would be super easy to try in about 5 minutes.... just create a 3rd dummy user, give it admin, change it, remove admin.. add admin back and go back in and see if its still there.
I have a personal Citadel email server with 2 users. I again state, a user must have Admin rights to configure the "Message expire policy". Can I give Admin rights to a user and configure the "Message expire policy" and then revoke those rights and the settings will remain?
Or could that be changed in future releases?
Subject: Fails to start after upgrade from 1023 to 17792232
My Citadel instance is currently 1023 installed using the install script. After using the easy install script to upgrade, the systemd citadel.service fails to start. The logs just showed that it exited with and "exit-code".
From the command line when I try running, "/usr/local/citadel/citserver" it returns the following:
----------------------------------------------------------------------
*** Citadel server engine ***
Version 17792232 (build 26142) ***
Copyright (c) 1987-2026 by the citadel.org team
This program is open source software. Use, duplication, or disclosure
is subject to the GNU General Public License version 3.
libcitadel(unnumbered)
main: running in data directory /usr/local/citadel
ctdl_lockfile: creating lockfile
crypto: keys/citadel.key exists and is readable
crypto: keys/citadel.cer exists and is readable
crypto: requesting cipher list: DEFAULT
crypto: using certificate chain keys/citadel.cer
crypto: using private key keys/citadel.key
extensions: registered server command STLS (Start TLS session)
extensions: registered server command GTLS (Get TLS session status)
extensions: registered a new session function (type 0 Priority 30010)
citserver: master_startup() started
citserver: checking directory access
citserver: ctdl_message_dir is messages
citserver: ctdl_file_dir is files
citserver: ctdl_key_dir is keys
citserver: ctdl_run_dir is .
citserver: opening databases
db: found existing Citadel database in Berkeley DB format
db: initialized Berkeley DB backend
bdb_open_databases: starting
bdb_open_databases: Linked zlib: 1.2.13
bdb_open_databases: Compiled libdb: Berkeley DB 18.1.40: (May 29, 2020)
bdb_open_databases: Linked libdb: Berkeley DB 18.1.40: (May 29, 2020)
bdb_open_databases: Setting up DB environment
bdb: bdb_env->open(bdb_env, data, 10019, 0)
citserver: initializing configuration system
You are running libcitadel version 1023
Subject: Re: Fails to start after upgrade from 1023 to 17792232
Also this may be related:
root@mail:/usr/local/ctdlsupport/lib# ls -ltr
total 6760
-rwxr-xr-x 1 root root 477512 Mar 9 2024 libcitadel.so.4.0.998
-rwxr-xr-x 1 root root 479432 Jul 3 2024 libcitadel.so.4.0.1001
-rwxr-xr-x 1 root root 479904 Feb 10 2025 libcitadel.so.4.0.1009
-rwxr-xr-x 1 root root 479216 Sep 18 2025 libcitadel.so.4.0.1020
drwxr-xr-x 2 root root 4096 Feb 24 10:56 pkgconfig
-rwxr-xr-x 1 root root 479872 Feb 24 10:56 libcitadel.so.4.0.1023
lrwxrwxrwx 1 root root 22 Feb 24 10:56 libcitadel.so.4 -> libcitadel.so.4.0.1023
lrwxrwxrwx 1 root root 22 Feb 24 10:56 libcitadel.so -> libcitadel.so.4.0.1023
-rwxr-xr-x 1 root root 835 Feb 24 10:56 libcitadel.la
-rw-r--r-- 1 root root 2152122 May 22 10:26 libdb-18.1.a
-rw-r--r-- 1 root root 2152122 May 22 10:26 libdb.a
-rw-r--r-- 1 root root 195004 May 22 10:26 libcitadel.a
Subject: Re: Fails to start after upgrade from 1023 to 17792232
Had the same rough issue last night doing an upgrade.
Deleted ctdlsupport contents and that got things working in my case, as my debugging (while very tired) lead to some mismatch that was resolved by freshly recompiling those files. deletion forced that recompile so yeah.
Subject: Re: Fails to start after upgrade from 1023 to 17792232
Yes, that’s it. Had the same problem, and after deleting the ctdlsupport folder, everything works fine ;)
Fr Mai 22 2026 12:31:47 EDT von Kurisu Betreff: Re: Fails to start after upgrade from 1023 to 17792232Had the same rough issue last night doing an upgrade.
Deleted ctdlsupport contents and that got things working in my case, as my debugging (while very tired) lead to some mismatch that was resolved by freshly recompiling those files. deletion forced that recompile so yeah.
I integrated WKD (PGP) into the mail flow using Citadel + Webcit.
With Protonmail, it works fine—Protonmail detects the WKD policy and retrieves the key for the mailbox.
modern-citadel-mail-platform/docs/wkd-integration.md at main · A2Micha/modern-citadel-mail-platform
Greetings
Mike
Ok, thanks everyone. Removing the cdtlsupport folder did the trick - now after the upgrade, I found that Webcit is still versioin 1020 (have to figure out why that did not get upgraded. Maybe I just need to restart that service. Will try that to see if that does the trick.
after running Citadel in production together with Postfix and
Rspamd for quite some time, I recently migrated the internal
mail delivery path from SMTP (localhost:2025) to native LMTP
using Citadel's Unix domain sockets.
Hehe. You didn't have to, it was just a suggestion. But I'm happy to hear it. :)T
LMTP does give you some advantages though, because it suppresses certain behaviors that are handled by your external-facing MTA when running with that mode -- some types of forgery checking, RBL lookups, relaying behavior, etc.
It sure beats the bad old days when Citadel and your system mailer piped mail back and forth through the shell!
Subject: Re: Fails to start after upgrade from 1023 to 17792232
Thanks for reporting the troubleshooting, everyone. libcitadel is a static library now so apparently we need to modify the install script to do a better job of clearing that directory out. I'll work on that during the long weekend.
The purge is not working for me. In "Aide" appears one message saying that say "105 messages were delete" but really they are not.
I monitored the server and appear many temporary files in data directory until no disk space (of 16GBytes). Stay some time like that and return to 16Gbytes free space. But the emails that must been deleted remained. Two days like that.
This works really good for me. I have different purge rules for different folders. The purge will done with
Will done on Auto-Purge Job.
My Citadel Version is 1022 now for a long time.
If you want know more about my settings, let me know.
Greeintngs
Mike
I think you are providing a semi-featured Citadel. The purge is not working. It supposed to purge the messages from 1st of February and it is not doing.
You can define a purge rule for every folder. Also a rule to move it to archive.
I want to shrink by purging the older emails previous deleted manually. I has the Auto-Purge setting.
I suppose that I can not do it configuring "Default message expire policy for private mailboxes". Or can I? I suppose that is to delete and purge active messages.
Seldom times appear notifications of purged messages at Aide and if so only one purged message or EEDI (??)
Are there some way to shrink the size of the main citadel data file without compromizing the citadel stability?
Do you have the auto-purger configured to delete "old" messages?
You can do this at the site-wide level, or on an individual room (such as your trash folder).
If new data is arriving at approximately the same rate old data is expiring, then yes, eventually you will reach an equilibrium where the database files stabilize in size.
Do look in the Aide room for messages confirming this. The helpful Citadel Aide will tell you how many objects are being deleted during the nightly purger run.