Age | Commit message (Collapse) | Author |
|
higher than specified in rfc. Too many mailers don't conform to it,
and it is harmless as far as I can see.
From Tim van der Molen <tbvdm@xs4all.nl>
OK gilles@
|
|
If this happens the imsg may no longer be usable as there may be queued
messages, but this is a) already the case with the code now, and b)
would be the case if recvmsg() fails anyway, so we can document that -1
from imsg_read() invalidates the struct imsgbuf.
discussed with and ok eric
|
|
to become writable, and make code more idiomatic.
tested by nicm@
ok gilles@
|
|
to become writable, and make code more idiomatic.
tested by nicm@
ok gilles@
|
|
not fatal on read/write errors otherwise a broken pipe in an external mda
will bring smtpd down.
mda_store() assumed write would succeed and fatal otherwise, change code
so that EINTR/EAGAIN trigger a new write while other errors gracefully
return causing the message to be rescheduled later.
these two prevent a fatal() from being hit when execution of a filter or
external mda fails (bug experienced and fix verified by nicm@)
while at it, fix a small bug where logs would not display the recipient
when mail went through a ~/.forward / aliases expansion.
|
|
spotted by Seth Wright <seth@crosse.org>
|
|
this commit fixes pr user/6328
bug reported and fix verified by Martin Hedenfalk <martinh@bzero.se>
|
|
was reported by nicm@ which spent a couple hours with me trying to
understand what was causing the bug, and helping me write and test fix.
|
|
|
|
|
|
Also combine the two schedule commands with uid/id into one. help and
ok jmc@ and gilles@
|
|
will be NULL 99% of the times... fixes segv in path that's not enabled
yet
|
|
|
|
stdio(3) backends, though for now we only enable db(3). this is the first
commit of a serie to improve maps and everything related.
idea discussed with and diff okay jacekm@
|
|
fatalx() on a lowercase() call in some cases. make sure lka uses a buffer
capable of holding a localpart, and do not attempt getpwnam() if we know
it's going to fail anyway...
issue reported by Ben Lindstrom <mouring@eviladmin.org>
|
|
|
|
and assuming message is not in processing/scheduled state
- teach smtpctl how to request message removal from runner
discussed with todd@, idea ok jacekm@
|
|
a gethostname() call or from a hostname directive in smtpd.conf
discussed with jacekm@, i initially intended to only warn but errx seems to
be a better solution for now
|
|
logging on runtime.
Based on claudio@'s work on ripd, ospfd, ospf6d, dvmrpd, ldpd, bgpd.
With help/ideas/testing from gilles@ jacekm@ todd@
ok jacekm@
|
|
bitmap called "flags".
|
|
client_get_reply(), downsizing it from 170+ to just over 30 lines.
The gotos are now gone, too.
|
|
used for keeping track of the current polling mode. Introduce new function
client_poll() that determines what mode of polling is required at the time of
call.
|
|
to use ':' as a separator then fallbacks to ' ' so that it can detect the
command names that contain more than one words (MAIL FROM and RCPT TO) or
the one word ones (HELO, DATA, ...).
this is incorrect and the parser can get confused if the parameter to any
command contains a ':', for example "HELO [ipv6:...]" cause the parser to
lookup for command "HELO [ipv6".
fix this by using ':' as a delimiter for 'mail from' and 'rcpt to', while
using ' ' as a delimiter for all other commands.
fixes bug 6285/system reported by Lionel Le Folgoc <lionel@lefolgoc.net>
|
|
they're still unused months later and there's many ways to achieve having a
set of priorities on envelopes without needing additionnal queues.
|
|
This restructures the client_* API internals significantly. The code becomes
pipelining in nature. All SMTP commands are put on the output queue and
dequeued as quickly as possible. Once dequeued, they're moved to the receive
queue so that replies can be matched with previous commands.
Dequeuing commands from the output queue halts when the count of commands
currently in-pipeline (``cmdi'') is equal to the command send window (``cmdw'').
There are three cmdw values useful in practice:
0 clear pipeline, ie. inhibit all future sends
1 disable pipelining, ie. use old ``one-request-one-reply`` mode
SIZE_T_MAX enable pipelining, ie. dequeue as many commands as possible
At the beginning of session cmdw is 1. When it is found that peer supports
PIPELINING, it grows to SIZE_T_MAX. After dequeing DATA it is again 1. After
sending QUIT it is 0.
Each command dequeued from the output queue becomes a buf in a msgbuf. The act
of combining multiple commands into a single send operation did not need to be
implemented: buf_write() already combines bufs using iovec and sends them at
once using sendmsg(2).
Tested by todd@ and oga@
"looks good" to gilles@
|
|
Problem spotted by todd@
|
|
|
|
|
|
|
|
|
|
to get upset by custom soft/hard ulimit settings.
Suggested by todd@
|
|
in absence of all other real listening sockets.
Spotted by todd@
|
|
are now controlled.
|
|
bounce mails visible in mailq output.
|
|
|
|
|
|
possibility for fd-starvation fatal when under heavy load.
|
|
|
|
as the remote accepts more data instead of doing one big read into
the memory in the beginning of session.
|
|
fatals instead of passing the error up (kills ~300 lines).
Implement sending of the QUIT command which replaces crude close(2).
tested by gilles@, todd@
|
|
|
|
Reported by jsing@
|
|
Nudge by deraadt@
|
|
ok gilles@
|
|
|
|
while there factor some common code (from jacekm input)
ok jacekm@
|
|
`OK' claudio
|
|
ok gilles
|
|
remove the smtpd.sock file, without which /usr/sbin/sendmail will fail
causing mails to be queued in offline.
Initially reported by ian@, may explain oga@'s e-mail burst after smtpd
restart.
|
|
|