Age | Commit message (Collapse) | Author |
|
to also share the statistics structure, still being worked on
|
|
struct session where it really belongs.
|
|
ok jacekm@ gilles@
|
|
ok gilles@
|
|
ok jacekm@
|
|
|
|
and inserts the session into the session tree. session_init() is called
only when we receive the resolution answer.
this fixes a race condition that would sometimes cause the hostname to
appear as "<unknown>" in headers just because dns was lagging, and it
unbreaks ssmtp support which suffered from th very same race condition.
|
|
the message id and uid immediately. only do it if session has been flagged
with F_QUIT, otherwise session_pickup() will do it when in state S_DONE.
this fixes a bug reported by pea@ where the message id was not displayed
in the "message accepted for delivery" line.
|
|
relayd at n2k9, and adapted to smtpd; ok gilles@
|
|
count, but also the total sessions count, ssmtp sessions (both current and
total) and starttls sessions (both current and total)
# ./smtpctl/smtpctl show stats|grep smtp.sessions
smtp.sessions = 0
smtp.sessions.active = 0
smtp.sessions.ssmtp = 0
smtp.sessions.ssmtp.active = 0
smtp.sessions.starttls = 0
smtp.sessions.starttls.active = 0
#
|
|
being called again with F_EVLOCK set. this fixes a bug where disconnect
after smtpd sends greeting and before entering any command failed to go
into session_destroy().
while at it, rename the "smtp.clients" statistic to "smtp.sessions" and
add counters to struct s_smtp so that I can add ssmtp and starttls with
my next commit ;)
|
|
three quarters of that limit (a session typically has 3 descriptors). when
we hit that limit, we stop accepting connections, and when client closes a
session, we start accepting connections again. this prevents us from going
into a session that is likely to fail because of scarce resources.
idea discussed with jacekm@, code mostly ripped from relayd
|
|
hit under certain conditions; while tracking the bug I ran into other bugs
which were kind of related and could cause us to hit a fatal() too.
fix by me, but with lots of testing and investigation with jacekm@,
ok jacekm@
|
|
|
|
clients would still be able to connect. instead, at pause time we
close and remove the listeners, and at resume time we request the
parent to reconfigure all listeners.
discussed with pyr@
|
|
- smtpctl recognizes "pause incoming" and "resume incoming"
- setup imsg communication between control process and smtp process
|
|
cause delivery to happen before expansion is over, causing some of
the recipients to never receive the mail. change how the mfa, lka,
queue and smtp processes communicate to ensure smtp never receives
an acknowledgment before ALL expanded envelopes are on disk. While
at it, lka was doing work which belongs in mfa, fix that also.
this is based on an idea from a talk with jacekm@, change not over
but already better than what we had.
|
|
|
|
Hardcode it instead: 5 is a popular choice across the tree; ok gilles@
|
|
|
|
- unlike starttls, ssmtp sets the F_SECURE flag on session before helo/ehlo
handlers are called. this means that if we clear all flags in helo/
helo handlers, we prevent smtpd from advertising AUTH as it will do
so only for F_SECURE sessions. This commits unbreaks SMTP AUTH with
smtp sessions. Problem spotted by James Turner <james@bsdgroup.org>
|
|
following line, this commit brings support for the latter which was
not supported yet.
- AUTH LOGIN is now supported, allowing smtp auth support on clients that
do not support AUTH PLAIN (ie: my mobile phone for instance ;)
|
|
ok gilles@
|
|
queue process did not answer fast enough to an imsg. spotted by
Jacek Masiulaniec <jacekm@dobremiasto.net>
- queue layout was mostly to bootstrap the project, it does not behave good
under load, it does complex things to stay in a recoverable state
and it probably didnt do it too well. New queue code is simpler,
smaller and allows for atomic submissions (a mail can never be in a
state where it needs to be recovered). It still needs some work but
works better than previous code, no regression.
|
|
smtp_setup_events() and mta_connect(), our fcntl() use clears
flags. use session_socket_blockmode() instead, it makes more
sense anyway. From Jacek Masiulaniec <jacekm@dobremiasto.net>
|
|
ok gilles@
|
|
listen directive has no matching certificate. it sounds like a
critical failure when it just means "no tls support".
- minor log_debug() addition in smtp.c
|
|
|
|
F_MESSAGE_COMPLETE
- submit recipients to the queue as we read them from RCPT instead of
submiting them all at once when DATA is over. this prevents us
from having to keep a potentially large number of recipients in
memory during the whole session.
- remove all code that dealt with the recipients queue of a message as
it is no longer used.
- several small changes to make sure the server is always in a recoverable
state in case of an unexpected shutdown.
|
|
will probably miss this change when working on more important matters,
so it is probably better to sort them now. there is a risk of losing
the tags if a change needs to be reverted too.
written with excellent advice from jmc@
ok gilles@
|
|
which still lacks many features. bringing it in tree will help working on it
more easily.
"at this stage it should go in" henning@, "move ahead" deraadt@
|