| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
- cleanup the internal queue backend API and get rid of the QOP_* thing.
- implement a queue_proc backend
- rename queue_fsqueue.c to queue_fs
- enable support for queue encryption
- add an envelope cache
- better logging and error reporting
|
| | |
|
| |
|
|
|
|
|
| |
now happens in queue_init(), and backends take the queue passwd as
parameter in their init function.
Remove useless SMTPD_FILTER_USER while there.
|
| |
|
|
| |
ok gilles@
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
has less than 10% of disk space or inodes left. a warning is logged and the
clients will get a temporarily failure asking them to retry later.
prompted by deraadt@
|
| |
|
|
|
|
| |
some log message updates.
ok gilles@
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* first bricks of ldap and sqlite support (not finished but both working)
* new table API to replace map API, all lookups are done through tables
* improved handling of temporary errors throughout the daemon
* improved scheduler and mta logic: connection reuse, optimizes batches
* improved queue: more tolerant to admin errors, new layout, less disk-IO
* improved memory usage under high load
* SSL certs/keys isolated to lookup process to avoid facing network
* VIRTUAL support improved, fully virtual setups possible now
* runtime tracing of processes through smtpctl trace
* ssl_privsep.c sync-ed with relayd
* ssl.c no longer contains smtpd specific interfaces
* smtpd-specific ssl bits moved to ssl_smtpd.c
* update mail address in copyright
FLUSH YOUR QUEUE. FLUSH YOUR QUEUE. FLUSH YOUR QUEUE. FLUSH YOUR QUEUE.
smtpd.conf(5) simplified, it will require adaptations
ok eric@
|
| |
|
|
|
|
|
| |
a simple QOP_WALK queue operation. Some knf and formating fixes while
there.
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@
|
| |
|
|
|
|
| |
also fix a potential fd leak.
ok gilles@ eric@
|
| |
|
|
|
|
|
| |
more recent than the startup time, since they are already known
to the scheduler.
ok gilles@
|
| |
|
|
|
|
| |
in there. fixes issues reported by many.
ok gilles@
|
| |
|
|
|
|
| |
an envelope ascii buffer.
ok eric@ gilles@
|
| |
|
|
|
|
|
| |
queued to decide the path for the envelope. Remove the need to
check the envelope type.
ok gilles@ chl@
|
| |
|
|
| |
ok eric@
|
| |
|
|
|
|
| |
with input from eric@
ok eric@
|
| |
|
|
| |
ok gilles@ chl@
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- remove the /envelopes subdirectory, envelopes are at the same level than
the message file
- kill PATH_ENVELOPES define
but keep the:
- reduce the number of buckets from 0xfff to 0xff, this avoid performances
of the queue to decrease when we start having tons of buckets
ok eric@ gilles@
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- remove the /envelopes subdirectory, envelopes are at the same level than
the message file
- kill PATH_ENVELOPES define
- reduce the number of buckets from 0xfff to 0xff, this avoid performances
of the queue to decrease when we start having tons of buckets
this diff introduces a change to the queue layout, you will want to empty
your queue before updating. more cleanup to come
ok eric@, ok chl@
|
| |
|
|
|
|
|
|
|
|
| |
incoming messages are now always stored in /incoming, whatever the queue_backend is.
remove QOP_FD_RW and fsqueue_message_fd_rw().
while there check return value of generated paths before calling rmtree()
with advice from gilles@ and eric@
ok gilles@ eric@
|
| |
|
|
| |
ok gilles@
|
| |
|
|
|
|
|
|
|
| |
internally in fsqueue backend for now, and let the fsqueue_message()
and fsqueue_envelope() dispatchers do the right thing.
Based on a diff by chl@
ok chl@ gilles@
|
| |
|
|
|
|
| |
the wrapper function rather than in individual backends.
ok gilles@
|
| |
|
|
| |
ok gilles@
|
| |
|
|
|
|
|
|
|
| |
- prevent queue_fsqueue from fatal() when it hits an ENOENT, it can happen
- change a bit the scheduler API to simplify it, fix runner accordingly
- we can't remove msg/batch from ramqueue while envelope is offloaded or
it will cause a double, instead we add refcnt to both msg/batch and
only free them when it hits 0
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
we keep track of available fd's to prevent scheduling of messages if we
know that we are going to fail. however, since the envelope is not
removed from the scheduler, it will be rescheduled right away leading to
a busy loop in the scheduler. we know flag the mda/mta processes as BUSY
and do not schedule envelopes that target a BUSY process.
also, fix a potential bug that could lead to a use after free when doing
a batch/message/host traversal of schedulable envelopes.
while at it fix misuse of env->sc_opts as env->sc_flags, was not really
causing any issue as the misuse was constant ...
|
| |
|
|
|
|
| |
Prevent hitting dir entry limits when dealing with lots of mails.
ok gilles@
|
| |
|
|
|
|
| |
envelope file at the same time.
ok gilles@
|
| |
|
|
|
|
|
|
| |
call is issued by smtpd or smtpctl. In the latter case, only perform
sanity checks and do not touch directories. A running server no
longer lose its "incoming/" directory each time smtpctl is called...
ok gilles@
|
| |
|
|
|
|
| |
if there is already an entry with the same name.
ok gilles@ chl@
|
| |
|
|
|
|
|
|
| |
fatal(). Make sure at init time that all paths can contain envelopes,
then these calls will never fail (provided that buffers are always
correctly sized, which is true internally).
ok gilles@ chl@
|
| |
|
|
|
|
| |
already exist in queue/ to prevent possible collision on commit.
ok gilles@
|
| |
|
|
|
|
| |
and use it where appropriate.
ok gilles@ chl@
|
| |
|
|
| |
ok gilles@
|
| |
|
|
|
|
|
|
| |
thing. Remove queue_message_purge() in favor of queue_message_delete
and simplify fsqueue_message_delete() implementation to move the
message dir to purge/
ok gilles@
|
| |
|
|
|
|
|
|
|
|
|
|
| |
to incoming/envelope.tmp before moving it to its final destination.
This allows to make sure that envelopes created directly in the queue
(such as bounces) can't let the queue in an inconsistent state if
the program stops in the middle of an envelope dump.
This also allow to simplify qwalk, since we don't put any temporary
contents anywhere in "walkable" queue dirs.
ok gilles@
|
| |
|
|
| |
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@
|
| |
|
|
| |
ok gilles@
|
| |
|
|
|
|
| |
current confusing hack.
ok gilles@
|
| |
|
|
| |
ok chl@ gilles@
|
| |
|
|
| |
ok gilles@
|
| |
|
|
| |
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@
|
| |
|
|
|
|
| |
must be created early by smtpd, rather than in fsqueue.
ok gilles@ chl@
|
| |
|
|
|
|
| |
as a structure anymore.
ok chl@ gilles@
|
| |
|
|
|
|
|
|
| |
While there, cast some time_t to int64_t
These will fix build warnings for portable smptd
ok gilles@ eric@
|