summaryrefslogtreecommitdiffstats
path: root/usr.sbin/smtpd/queue_backend.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* fsqueue no longer stores envelopes by dumping the structure, instead use agilles2011-10-231-4/+35
| | | | | | | | | | | | | | couple of load/dump functions to convert to and from a human readable fmt. while at it kill struct delivery and merge back its fields to the envelope. this basically means we shouldn't require users to flush their queues every time we make a change to struct envelope. work is not done, but we're at a better state than the binary fsqueue so we'll improve it in-tree. has been running on my own box for the last 12 hours or so ok eric@, chl@
* murder struct path and make sure smtpd uses simpler structures that do notgilles2011-05-161-10/+10
| | | | | | | | | | | | | bring a shitload of unnecessary information everywhere. this required many parts of smtpd to be refactored and more specifically envelope expansion. in the process lots of code got simplified, and the envelope expansion code has been isolated to lka_session.c with some longstanding bugs fixed. Diff has been tested by many with no major regression reported. armani@ spotted a bug in a setup where a domain is listed a both primary and virtual, I will fix that in-tree as it's becoming painful to maintain this diff out.
* the smtpd env is meant to be global, so do not pass it all around.eric2011-05-011-30/+24
| | | | discussed with and ok gilles@
* a structure describing an envelope should be called struct envelope, notgilles2011-04-171-11/+11
| | | | struct message ...
* kill message_id and message_uidgilles2011-04-151-17/+15
| | | | | | | | | | | smtpd now has an evpid associated to each delivery message, the evpid is an u_int64_t where the upper 32 bits are the msgid, and the 32 bits are the envelope unique identifier for that message. this results in lots of space saved in both disk-based and ram-based queues, but also simplifies a lot of code. change has been stressed on my desktop, and has ran on my MX for the entire afternoon without a regression.
* - implement missing operations for fsqueue:gilles2011-04-141-1/+7
| | | | | | | | | fsqueue_envelope_create(), fsqueue_message_purge() - kill deprecated functions in queue_shared.c At this point fsqueue backend is almost complete, all that is left to do is to move the qwalk() API inside the queue_backend API, then make sure smtpd is no longer calling anything queue related directly.
* fsqueue queue backend will implement a filesystem queue:gilles2011-04-141-5/+9
| | | | | | | | | | | | - fsqueue->setup() performs the queue initialization; - fsqueue->message() controls messages; - fsqueue->envelope() controls envelopes; This commit brings the following to fsbackend: fsqueue_setup(), fsqueue_message_delete(), fsqueue_envelope_load(), fsqueue_envelope_update(), fsqueue_envelope_delete(). It also makes smtpd use the queue_backend API for these operations.
* smtpd makes too many assumptions about the structure and layout of itsgilles2011-04-141-0/+123
| | | | | | | | disk-based queue, it makes it near impossible to make changes to it without editing twenty files... how am i going to implement mongodb support ? :-) bring a new queue_backend API which hides the details of the disk-based queue to smtpd. it is not "plugged in" yet and I'm filling the holes.
* no longer compiled, i will reintroduce them later, lots of stuff needs togilles2010-10-091-330/+0
| | | | be done before we can write queue backends anyway ...
* new queue, again; gcc2 compile tested by deraadtjacekm2010-06-011-0/+330
|
* New queue doesn't compile on gcc2, back out. Spotted by deraadt@jacekm2010-06-011-330/+0
|
* Rewrite entire queue code.jacekm2010-05-311-0/+330
Major goals: 1) Fix bad performance caused by the runner process doing full queue read in 1s intervals. My Soekris can now happily accept >50 msg/s while having multi-thousand queue; before, one hundred queue would bring the system to its knees. 2) Introduce Qmail-like scheduler that doesn't write as much to the disk so that it needs less code for servicing error conditions, which in some places can be tricky to get right. 3) Introduce separation between the scheduler and the backend; these two queue aspects shouldn't be too tied too each other. This means that eg. storing queue in SQL requires rewrite of just queue_backend.c. 4) Make on-disk queue format architecture independent, and more easily extensible, to reduce number of flag days in the future. Minor goals: ENOSPC no longer prevents delivery attempts, fixed session limiting for relayed mail, improved batching of "relay via" mails, human-readable mailq output, "show queue raw" command, clearer logging, sending of single bounce about multiple recipients, exact delay= computation, zero delay between deliveries while within session limit (currently 1s delay between re-scheduling is enforced), mta no longer requests content fd, corrected session limit for bounce submissions, tiny <100B queue files instead of multi-KB, detect loops before accepting mail, reduce traffic on imsg channels by killing enormous struct submit_status.