Age | Commit message (Collapse) | Author |
|
ok gilles@
|
|
|
|
|
|
|
|
ok gilles@
|
|
ok gilles@
|
|
a simple QOP_WALK queue operation. Some knf and formating fixes while
there.
ok gilles@
|
|
- uppercase "ID"
|
|
is running. The scheduler sends the runtime state of each envelope to
the queue process which loads the envelope, fills the runtime bits and
sends the envelope back to the client. Iteration over the envelope set
happens in small chunks to make the request interruptible and to allow
the server to keep doing its job in the meantime.
Adpat "smtpctl schedule-all" to schedule the messages one by one using
the same iteration mechanism.
Document "smtpctl monitor" and "smtpctl show queue".
ok gilles@
|
|
|
|
ok gilles
|
|
ok gilles@
|
|
the server is running, and flush()/next_message() helpers to make
imsg request/response loops easier.
ok gilles@
|
|
* Log more events (especially client session) and use a better scheme
for that: each messages is prefixed with a token to easily identify
its class:
- info/warn/debug: general server messages
- smtp-in: smtp client connections
- relay: status update for relayed messages
- delivery: status update for local deliveries
* Implement "smtpctl monitor" to display updates of selected internal
counters.
* When reloading the on-disk queue at startup do not commit a message
if no envelope was submitted for that message.
* Remove unused stuff in the config parser.
ok gilles@
|
|
set to write as soon as a response is read.
ok gilles@
|
|
clients that don't do their best to do something useful, and just hog
the session. When that kick counter reaches the limit, the client is
disconnected. The counter is reset after the first HELO/EHLO command,
after tls is established, after a succesful authentication, and after
a message is accepted. It is decremented when a RCPT is accepted.
ok gilles@
|
|
- Introduce a mda_getlastline function(); improve the code to avoid
useless allocations and string formatting; make it return the last
line with content (skip trailing empty lines if found).
- Add a mechanism by which the mda can request the parent to abort a
local delivery by killing the process.
- Use ioev/iobuf for draining data to the delivery process.
- Make sure to catch all transient errors and make them result in a
tempfail rather than calling fatal().
- Make sure that the envelope status is properly set for all failures.
- Stop using SMTP response codes; it makes no sense in this context.
ok gilles@
|
|
- Change the scheduler backend API a bit: commit() and rollback()
API calls return the number of envelopes added or canceled; put
the number of envelopes in the structure returned by batch().
- Properly report the number of incoming, registered, removed and
expired envelopes, as well as the outcome of deliveries.
ok gilles@
|
|
connection, and the number of recipients in each of them.
ok gilles@ chl@
|
|
in a human readable fashion:
uptime=123456
uptime.human=1d10h17m36s
ok gilles@
|
|
happen, but it seems that kqueue triggers the event sometimes, even if
the socket is not immediatly writeable. Temporary workaround it while
the real issue is being investigated.
ok gilles@ chl@
|
|
does not matter.
spotted by chl@
ok gilles@ chl@
|
|
pushing the fd with the envelope. This allows the mda to deal itself with
session limits. Envelopes are sent at full rate to the mda, which buffers
them on per-user queues, or sends them back for rescheduling if it already
has too many pending envelopes. Delivery sessions are created (within per-
user and global limits) to drain the queues.
This makes the server handle envelope bursts more efficiently.
ok gilles@
|
|
fsqueue_envelope_load(),
also fix a potential fd leak.
ok gilles@ eric@
|
|
ok gilles@
|
|
subject to changes and internal.
feedback from jmc@
ok gilles@
|
|
ok gilles@
|
|
|
|
discussed with gilles@
|
|
to a server crash, and let the smtp session fail if that happens.
spotted by todd@, discussed with eric@ and chl@
commited for gilles@
|
|
|
|
ok gilles@
|
|
ok gilles@ chl@
|
|
of the delivery method. Bump the limit a bit.
requested by and ok gilles@
|
|
running at the same time. It prevents a user from consuming all mda "slots"
with a long-running filter in his .forward file. Other delivery types are
not affected.
ok gilles@ chl@
|
|
exhaustion situation that kills the server. For now, put a safe limit on
the number of envelopes sent by the queue process to the mda.
ok gilles@ chl@
|
|
with gilles and eric, tested by me and gilles
ok gilles@
|
|
ok gilles@ eric@
|
|
spotted by jmc@
|
|
|
|
ok eric@ and chl@
|
|
The idea is to have a file-backed map but to have smtpd(8) cache the maps
so that it cannot be partially read if edited while mail is received. The
file is read and converted to a static map (map_static.c), changes aren't
visible to smtpd until an explicit: smtpctl update map which reads file,
builds a new static map and invalidates the former.
partial-read issue discussed with beck@ and halex@
idea to convert internally to a static map by eric@
diff ok eric@ and chl@
|
|
|
|
|
|
we check that user is a system user first before sending the imsg
|
|
filename and imply it otherwise so that the following works:
makemap hash /etc/mail/aliases < aliases
|
|
between "no match" and "internal error" (e.g. missing or broken db file).
Adapt alias expansion and ruleset matching code to check for such errors,
in which case the current processing is aborted, and a temporary failure
is reported to the smtp session.
ok gilles@
|
|
makes the maximum retry delay a bit to small on 8 bits.
ok gilles@ chl@
|
|
|
|
going to use it
|