Age | Commit message (Collapse) | Author |
|
session, and cleanup the DS_* flags.
ok gilles@ chl@
|
|
runner/queue. Instead, replace IMSG_QUEUE_MESSAGE_UPDATE with three
messages:
- IMSG_QUEUE_DELIVERY_OK
- IMSG_QUEUE_DELIVERY_TEMPFAIL
- IMSG_QUEUE_DELIVERY_PERMFAIL
1) it's less confusing as status is also used by smtp
2) it's easier to see what happens just looking at imsg traces
3) it makes the code path generally easier to follow
4) it's safer because it enforces clear semantics and intent, whereas
the status field is loosely defined and could carry bogus values.
ok gilles@ chl@
|
|
ok gilles@
|
|
and confusing.
ok gilles@
|
|
to envelope.c
ok gilles@
|
|
we'll do it, but it isn't used and causes potential bugs
idea by Nathanael Rensel, diff by me, ok eric@
|
|
simplify queue_fsqueue
|
|
periodically clear the purge/ directory. At init time, the fsqueue
backend simply moves the existing incoming/ dir in purge/ to discard
aborted sessions.
ok gilles@ chl@
|
|
from Nathanael Rensen
ok gilles@
|
|
ok gilles@
|
|
ok eric@
|
|
where it belongs.
ok gilles@
|
|
ok chl@ gilles@
|
|
to smtpctl.c
ok gilles@
|
|
ok gilles@
|
|
bits from relayd, ok chl@, ok eric@
|
|
backend scheme. Also rename USER_GETPWNAM to USER_PWD.
ok chl@ gilles@
|
|
- move each delivery method to it's own delivery backend
- simplify smtpd.c accordingly
- rename A_EXT -> A_MDA since that's what we really do
ok eric@
|
|
session and allow those state changes to be traced (add traces flags
for upcoming changes while there).
ok chl@ gilles@
|
|
"obvious ok" gilles@
|
|
ok gilles@
|
|
- fetch the ssl cert earlier on if needed
- skip mta_pickup() when handling the incoming fd
ok gilles@
|
|
ok chl@ & gilles@
|
|
ok eric@ gilles@
|
|
ok gilles@ chl@
|
|
ok gilles@ chl@
|
|
While there, simplify the offline_enqueue() function by doing all the
sanity checks in the forked process, and remove all fatal(): on error,
the offline message is left untouched in the directory. Also, get rid
of the path_starts_with() check since all paths to offline messages are
now constructed internally.
ok gilles@ chl@
|
|
queue_backend into account and assumed a filesystem with a specific layout.
This commit does plenty of things:
- make qwalk an abstraction in the queue_backend API, and impose queue
drivers to implement qwalk_open(), qwalk() and qwalk_close();
- move previous qwalk_open(), qwalk() and qwalk_close() to the fsqueue
driver since they were fsqueue specific ...
- make qwalk API work with msgid/evpid instead of pathnames since we're
going to use the queue_backend API to load envelopes by evpid anyway;
- makes smtpd use *solely* the queue_backend API when manipulating the
queue. pathnames were removed from smtpd.h and moved into the fsqueue
which means we can now store a queue anywhere ... as long as we write
the ten functions or so required for a queue driver ;-)
ok eric@, ok chl@
|
|
with help and ideas from eric@
ok eric@ gilles@
|
|
must be created early by smtpd, rather than in fsqueue.
ok gilles@ chl@
|
|
startup, rather than playing tricks with the runner. This will allow
further simplifications and improvements in the runner/queue.
ok gilles@
|
|
- rename IMSG and smtpctl pause/resume parameters
- update man page
tested by me, ok chl@, eric@
|
|
- use correct endianness when dumping/loading port
- use the right flag set when dumping/loading flags
- keep and use the authmap name when needed, rather than an id that
might change when smtpd is restarted
- dump/load the authmap name with the envelope
- remove the rule struct from rq_batch as only the relay info is useful
ok gilles@
|
|
ok gilles@
|
|
schedule queue to corrupt queue upon envelope loading failure.
tested by me, ok eric@
|
|
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@
|
|
verbose mode, and an associated -T command line option. Use it for
the imsg traces.
Requested by gilles@ who doesn't like verbose to be too verbose.
ok gilles@ chl@
|
|
ok gilles@ chl@
|
|
exactly 1024.
Better fix comming soon.
Committing on behalf of gilles@
|
|
delivered to many ramqueue hosts, therefore storing the rq_host pointer in
the rq_msg envelope is wrong and causes baaaaad behavior.
this commit fixes reliability issues in runner process, experienced and
reported by many
|
|
- do not forward lines to mfa when FILTER_DATALINE is not set in filtermask
prevents smtpd from handling mails slowly while I'm hacking on filters
support
|
|
simpler and hopefully saner way.
ok gilles@ chl@
|
|
decisions *while* the message is being received by the client.
|
|
|
|
currently only HELO/EHLO, MAIL, RCPT are supported, however ... I have
voluntarily disabled filters at smtpd.conf level so people don't play with
it until the API has stabilized a bit
discussed with several people in private, no one opposed the feature
|
|
this allows us to save one pointer from each envelope stored in ram while
still allowing O(1) host lookups by ramqueue_envelope.
|
|
- bonus #1: O(log n) removal of envelopes
- bonus #2: removing all envelopes that have the same msgid works again
|
|
the new ramqueue structure
- introduce ramqueue_reschedule() and ramqueue_reschedule_envelope() which
to reschedule a message or a specific envelope.
O(n) -> O(log n) \o/
|
|
improve scheduling and general ramqueue operations. unused yet
|
|
- bring back 'smtpctl schedule' and 'smtpctl remove' to life
Things you should know:
The ramqueue data structure is not finished yet and lacks an envelope tree
for evpid lookups. I wanted to wait until I'm done but too many people are
affected by not being able to reschedule envelopes, this is a quick fix.
So right now there's an O(rrible) complexity as both commands will perform
a (possibly aborted) queue scan leading to O(n). I will make that O(log n)
soon.
Also, smtpctl remove no longer supports removing an entire message, I will
fix that very soon too.
|