I had a spam attack this morning. I cleaned up the account responsible, but now I am stuck with over 80 thousand messages in my citadel SMTP queue. This queue is so large that I can't use WebCit to clear the queue, because it just crashes trying to load all the messages to get them all selected and deleted. Surely there must be some command line way to clear this queue that doesn't require 6 different JavaScript libraries? The instructions given in the citadel documentation only mention WebCit, and I can't get that to work at all due to the size of the queue.
Update: This morning, [email protected] responded to my support request there, and modified the documentation to have a shell script to clear the SMTP queue. http://citadel.org/doku.php/faq:spam:recover I haven't tried it, but I assume this is now the correct way to do this.
This worked for me, but I'm not sure it's the correct way, or even a good way, of doing this. First, set the expiration policy of the __CitadelSMTPspoolout__ room so that all of the bad messages stuck in your queue will expire: after clicking on view outgoing smtp queue, quickly click advanced before the JavaScript crashes your browser, and then edit or delete this room. Then click Message expire policy, and set "Message expire policy for this room" in a way that will cause all of the crap clogging your queue to expire. Next, connect to your server via SSH and as root run: "/usr/local/citadel/sendcommand TDAP". Then wait for your processor use to fall back to normal, signalling that the purge has finished. Then restart your citadel server a few times. For me, the first restart command I issued via WebCit hung everything hard and I had to go and kill all of the citadel processes, run the db repair scripts included with citadel, and start citadel again via init.d. Then I had to do the purge all over again, and restart twice more before everything finally took and cleared correctly. This is bad and horrible and awful and terrible, and citadel really should have a command line way to just purge the SMTP queue. But if it does, I've never found it. After this experience, I will no longer be using citadel, as it seems there is no timely support either here or at uncensored.citadel.org, and citadel doesn't care enough about administrators to give us the critical tools we need to resolve problems in anything like a reasonable fashion. Thus, citadel is not, and should not advertise itself as, a professional groupware solution. Unless all problems can be cleared from the console, without resorting to random hacks that risk breaking more than they fix, it just can't be used in any environment where stable access to the groupware server is a requirement. All of the other groupware solutions I've used would have had this problem solved in under an hour. It took me from 5 AM this morning until now, 5:08 PM in the evening, without stopping for food or anything else, to get mail back up and running. Unacceptable.
Using webcit, if you use enter the following URL: http:///dotgoto?room=CitadelSMTPspoolout&view=1, you can select and delete large number of outbound SMTP messages at a time. If there are large numbers of messages, webcit will be painfully slow re-loading each page.
[Edit: The editor is doing funny things my my URL there, ther are supposed to be underscores before and after CitadelSMTPspoolout]
This sucks big time. I've had the same problem. And NONE of this explanation is really helpful. The advertised script isn't working. And the explanation of how to get it run is only good for linux experts. Then there's the problem that linux folk NEVER talk in straight terms. And the fact that Citadel speaks its own language with rooms instead of folders doesn't make it any easier....
Anyway for people whom want some straight answers using common terminology.
1) the "room" CitadelSMTPspoolout contains 2 underscore-characters in its name like:
__CitadelSMTPspoolout__
2) The proper syntax to view the page on your server (webcit) is thus:
http://your.server.ip/dotskip?room=__CitadelSMTPspoolout__&view=1#
--> Be patient. it takes time before the list appears on screen
3) Unfortunately you can only select a small row (about 200 messages I guess) of messages at a time. Following this procedure will albeit slowly delete this spam:
--> select from top to bottom (left-click top, shift left-click bottom)
--> delete (at the menu line),
--> refresh list (next to delete),
--> wait and repeat the procedure.
4) Also don't forget to go to the "trash room" and completely delete them there too. Yes, also with the same procedure of selecting a row of messages, delete (top menu), then refresh the list, select a bunch again, delete etc....
It's a very long-winded and tedious process. But eventually you'll be back in business. It would be helpfull if there's a "delete all" function too (particularly on the trash. I suspect that by using the expire function this can be toned down a bit.
To enable expire function on room
__CitadelSMTPspoolout__
First http://your.server.ip/dotgoto?room=__CitadelSMTPspoolout__
Then goto to advanced (at the right button bar), click in advanced room commands "Edit or delete this room". There you have "Message expire policy" for that particular room.
Needless to say that you have to be an admin user to do all the stuff explained here.
Good luck with this.