]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Stephan Bosch [Sat, 9 Feb 2019 12:55:22 +0000 (13:55 +0100)]
lib-smtp: smtp-client - Perform the LF -> CRLF conversion for the message data in the transaction.
Before, it was performed in the DATA/BDAT command code, which makes it very
difficult to extract post-conversion size statistics.
Stephan Bosch [Sat, 9 Feb 2019 12:41:40 +0000 (13:41 +0100)]
lib-smtp: smtp-client-command.h - Reformat the comments for the standard commands.
Stephan Bosch [Wed, 6 Feb 2019 22:06:38 +0000 (23:06 +0100)]
lib-smtp: smtp-client-transaction - Emit named recipient events.
Stephan Bosch [Sun, 16 Dec 2018 18:16:37 +0000 (19:16 +0100)]
lib-smtp: smtp-client-transaction - Emit named events.
Stephan Bosch [Sun, 3 Feb 2019 23:48:58 +0000 (00:48 +0100)]
lib-smtp: smtp-client-transaction - Pass last reply to smtp_client_transaction_finish().
Stephan Bosch [Sat, 9 Feb 2019 13:39:24 +0000 (14:39 +0100)]
lib-smtp: smtp-client-transaction - Record the first failure reply of the DATA command.
This is needed when the DATA command yields more than a single reply (LMTP).
Stephan Bosch [Sat, 9 Feb 2019 12:22:38 +0000 (13:22 +0100)]
lib-smtp: smtp-client-transaction - Record recipient statistics in the transaction.
Stephan Bosch [Sat, 9 Feb 2019 12:01:01 +0000 (13:01 +0100)]
lib-smtp: smtp-client-transaction - Drop smtp_client_transaction_rcpt_drop_pending() as a separate function.
It is now merged into smtp_client_transaction_rcpt_approved() to make the code
less confusing.
Stephan Bosch [Sat, 9 Feb 2019 11:50:12 +0000 (12:50 +0100)]
lib-smtp: smtp-client-transaction - Drop the rcpt->failed flag.
It is no longer needed.
Stephan Bosch [Sat, 9 Feb 2019 11:44:04 +0000 (12:44 +0100)]
lib-smtp: smtp-client-transaction - Explicitly keep track of whether a recipient is already finished.
Stephan Bosch [Sat, 9 Feb 2019 11:32:44 +0000 (12:32 +0100)]
lib-smtp: smtp-client-transaction - Free the rcpt object in smtp_client_transaction_rcpt_fail_reply().
Stephan Bosch [Sat, 9 Feb 2019 11:22:40 +0000 (12:22 +0100)]
lib-smtp: smtp-client-transaction - Handle recipient failure callback in a separate _rcpt function.
Stephan Bosch [Sat, 9 Feb 2019 11:17:40 +0000 (12:17 +0100)]
lib-smtp: smtp-client-transaction - Handle recipient DATA callback in a separate _rcpt function.
Stephan Bosch [Sat, 9 Feb 2019 11:14:21 +0000 (12:14 +0100)]
lib-smtp: smtp-client-transaction - Handle RCPT reply in a separate _rcpt function.
Stephan Bosch [Sat, 9 Feb 2019 13:30:53 +0000 (14:30 +0100)]
lib-smtp: smtp-client-transaction - Free the mail object in smtp_client_transaction_mail_fail_reply().
Stephan Bosch [Sat, 9 Feb 2019 13:26:48 +0000 (14:26 +0100)]
lib-smtp: smtp-client-transaction - Handle MAIL failure callback in a separate _mail function.
Stephan Bosch [Sat, 9 Feb 2019 13:18:02 +0000 (14:18 +0100)]
lib-smtp: smtp-client-transaction - Handle MAIL reply in a separate _mail function.
Stephan Bosch [Wed, 6 Feb 2019 22:47:31 +0000 (23:47 +0100)]
lib-smtp: smtp-params - Add support for adding RCPT parameters to an event.
Stephan Bosch [Wed, 6 Feb 2019 22:31:25 +0000 (23:31 +0100)]
lib-smtp: smtp-params - Add support for adding MAIL parameters to an event.
Stephan Bosch [Mon, 4 Feb 2019 00:26:44 +0000 (01:26 +0100)]
lib-smtp: smtp-client-command - Emit named events.
Stephan Bosch [Mon, 4 Feb 2019 00:31:40 +0000 (01:31 +0100)]
lib-smtp: smtp-client-command - Create local variable for "was_sent" command status.
The condition is amended with (state < SMTP_CLIENT_COMMAND_STATE_FINISHED),
because that part is now checked after the intiialization of this variable
(causing the function to exit). It is important that the content of this
variable makes sense immediately (for future changes), rather than only after
the if statement that checks the added condition.
Stephan Bosch [Mon, 4 Feb 2019 00:29:08 +0000 (01:29 +0100)]
lib-smtp: smtp-client-command - Rename "waslocked" to "was_locked" in smtp_client_command_abort().
Stephan Bosch [Mon, 4 Feb 2019 00:25:59 +0000 (01:25 +0100)]
lib-smtp: smtp-reply - Add smtp_reply_add_to_event().
This sets standard reply fields in the provided pass-through event.
Stephan Bosch [Fri, 30 Nov 2018 01:05:13 +0000 (02:05 +0100)]
lib-smtp: smtp-client-connection - Add peer fields to the connection events.
Stephan Bosch [Thu, 29 Nov 2018 22:44:23 +0000 (23:44 +0100)]
lib-smtp: smtp-client - Replace smtp_*_debug() with e_debug().
Stephan Bosch [Mon, 24 Dec 2018 00:23:57 +0000 (01:23 +0100)]
lib-smtp: smtp-client - Replace smtp_*_warning() with e_warning().
Stephan Bosch [Mon, 24 Dec 2018 00:06:11 +0000 (01:06 +0100)]
lib-smtp: smtp-client - Replace smtp_*_error() with e_error().
Stephan Bosch [Sun, 23 Dec 2018 23:52:54 +0000 (00:52 +0100)]
lib-smtp: smtp-client - Replace i_error() with e_error().
Stephan Bosch [Thu, 29 Nov 2018 22:08:48 +0000 (23:08 +0100)]
lib-smtp: smtp-client - Remove redundant debug logging checks.
Stephan Bosch [Thu, 29 Nov 2018 21:55:08 +0000 (22:55 +0100)]
lib-smtp: smtp-client - Add support for event API.
Stephan Bosch [Fri, 30 Nov 2018 01:25:36 +0000 (02:25 +0100)]
lib-smtp: smtp-client-command - Split command name extraction from label construction.
Stephan Bosch [Sun, 3 Feb 2019 23:53:36 +0000 (00:53 +0100)]
lib-smtp: smtp-reply - Add smtp_reply_get_message().
Returns only the message of the reply without statuses as a single line.
Aki Tuomi [Wed, 22 May 2019 06:12:08 +0000 (09:12 +0300)]
lib: test-event-flatten - Fix initializators for value
Older gcc complains about using anonymous members directly,
so instead use nested braces. This fixes the issue.
Continues fix in
ae3c9db544c40367cded872a5f46dbd6abc8cd78
Martti Rannanjärvi [Tue, 21 May 2019 10:16:52 +0000 (13:16 +0300)]
lib: Add initializers to test-event-flatten
This is to fix a compiler warning.
Timo Sirainen [Mon, 13 May 2019 13:03:27 +0000 (16:03 +0300)]
lib: i_zero*() - Update comment, especially about arrays
Timo Sirainen [Mon, 13 May 2019 12:57:26 +0000 (15:57 +0300)]
lib: i_zero*() - Remove extra "+"
It was ignored by compilers though.
Stephan Bosch [Fri, 4 Jan 2019 12:57:36 +0000 (13:57 +0100)]
imap: client: Add init() client vfunc.
This is called when client creation is finished completely, including namespace
initialization. The normal create hook is executed before namespace
initialization, which is a problem when a plugin needs to access the mail
storage immediately.
Stephan Bosch [Sat, 5 Jan 2019 18:43:49 +0000 (19:43 +0100)]
imap: client: Rearrange and document the client vfuncs.
Stephan Bosch [Fri, 28 Dec 2018 18:16:26 +0000 (19:16 +0100)]
submssion: DATA command: Seek data stream to the beginning before executing backends.
Stephan Bosch [Fri, 28 Dec 2018 18:13:03 +0000 (19:13 +0100)]
submission: DATA command: Provide a default name for the data stream.
Josef 'Jeff' Sipek [Thu, 4 Apr 2019 11:25:45 +0000 (14:25 +0300)]
stats: event export - Add tabescaped plain text format support
This commit adds support for format=tab-text.
Since we don't care to select a native timestamp data type, one must specify
exactly one time-* format_args token.
Josef 'Jeff' Sipek [Thu, 4 Apr 2019 11:24:50 +0000 (14:24 +0300)]
stats: event export - Add http-post transport support
This commit adds support for transport=http-post.
The value of transport_args is used as the HTTP POST URL.
Josef 'Jeff' Sipek [Thu, 4 Apr 2019 11:24:24 +0000 (14:24 +0300)]
stats: event export - Add log transport support
This commit adds support for transport=log.
The log transport ignores transport_args.
Josef 'Jeff' Sipek [Thu, 4 Apr 2019 11:23:41 +0000 (14:23 +0300)]
stats: event export - Add json format support
This commit adds support for format=json.
Since JSON doesn't have a native timestamp data type, one must specify
exactly one time-* format_args token.
Josef 'Jeff' Sipek [Fri, 19 Apr 2019 13:48:26 +0000 (09:48 -0400)]
stats: event export - Implement core functionality
The core event exporter feature. It extends the metric { } config blocks
and adds new event_exporter { } blocks.
event_exporter EXNAME {
format = FMT # required, see below
format_args = FMTARGS # optional, see below
transport = TRANSPORT # required, see below
transport_args = TRANSPORTARGS # optional, see below
}
metric METNAME {
... normal metric fields ...
exporter = EXNAME # required to make export happen
exporter_include = INCS # optional, see below
}
FMT is a string identifying which format to serialize the event into. As of
this commit, the only valid value is "none" (always the empty string).
FMTARGS is a set of tokens that tweak how certain data types are encoded. If
not specified, the format's default is used ("none" always emits empty strings
so it doesn't care what this is set to, future formats will make use of this
setting). Currently the only possible tokens are: "time-rfc3339" and
"time-unix" - as their names imply, they format all timestamps as either
RFC3339 or Unix-style seconds since 1970-01-01 00:00:00 UTC.
TRANSPORT is a string identifying how to transport the serialized event. As
of this commit, the only valid value is "drop" which simply drops the event.
TRANSPORTARGS is a string used by the transport to tweak its behavior. The
drop transport ignores the args.
INCS is a string made up of tokens ("name", "hostname", "timestamps",
"categories", and "fields") which control what parts of an event are
exported. It can be set to any set of those (including empty set) and the
order doesn't matter. It defaults to all 5 tokens.
Josef 'Jeff' Sipek [Mon, 1 Apr 2019 12:52:04 +0000 (15:52 +0300)]
lib-master: Use event_minimize() to simplify the event before sending to stats
Josef 'Jeff' Sipek [Mon, 1 Apr 2019 10:23:41 +0000 (13:23 +0300)]
lib: Add event_minimize()
At times, we want to simplify the structure of events before sending them to
the stats process thereby minimizing the amount of data transfered and the
amount of work the stats process has to do. This simplification before
sending allows us to incur the CPU penalty in the (many) sending processes
instead of in the (sole & single-threaded) stats process.
Unlike the code in lib-master, this implementation flattens part of the
parent chain backwards so that parents' fields are properly overridden by
their children. It exists in lib because it shares code with the recently
added event_flatten().
Josef 'Jeff' Sipek [Thu, 11 Apr 2019 21:31:34 +0000 (17:31 -0400)]
lib-master: Fix event stats test compare function arg order
The arguments were backwards.
Josef 'Jeff' Sipek [Tue, 16 Apr 2019 22:45:21 +0000 (18:45 -0400)]
lib: Move event filter test's event categories from stack to .data
Event categories must not be allocated on the stack. Categories must be
accessible for the duration of the program runtime.
Josef 'Jeff' Sipek [Thu, 7 Mar 2019 17:58:35 +0000 (12:58 -0500)]
stats: Rename stats filter to indicate what it is for
This makes the next commit a little cleaner.
Josef 'Jeff' Sipek [Fri, 19 Apr 2019 13:50:53 +0000 (09:50 -0400)]
lib-master: Add a comment clarifying when events must be sent to stats
Josef 'Jeff' Sipek [Fri, 15 Mar 2019 01:19:59 +0000 (21:19 -0400)]
lib-master: minor refactor of stats_client_send_event()
This makes later event exporting commits cleaner.
Josef 'Jeff' Sipek [Fri, 15 Mar 2019 00:30:29 +0000 (20:30 -0400)]
lib: Add event_flatten() to return a flattened event
Josef 'Jeff' Sipek [Fri, 15 Mar 2019 00:21:15 +0000 (20:21 -0400)]
lib: replace event_copy_categories_fields() into two
It is more flexible to allow to copy only categories or only fields.
Josef 'Jeff' Sipek [Fri, 3 May 2019 14:30:39 +0000 (10:30 -0400)]
lib: fixup str_append_tabescaped()'s { placement
This makes it consistent with the rest of the file.
Timo Sirainen [Thu, 9 May 2019 16:52:51 +0000 (19:52 +0300)]
global: Add asserts to make static analyzers happy
Timo Sirainen [Thu, 9 May 2019 16:48:43 +0000 (19:48 +0300)]
doveadm dict: Make it clear that *iter_flags can't dereference NULL pointer
It's not possible to dereference it anyway, because only "doveadm dict iter"
has these iter parameters. This change fixes warnings from static analyzers.
Timo Sirainen [Thu, 9 May 2019 16:27:18 +0000 (19:27 +0300)]
lib-storage: Fix mail_user_home_mkdir() crash when user has no home directory
This is used only by dsync when creating lock file. It wouldn't work
without a home directory anyway.
Timo Sirainen [Thu, 9 May 2019 16:22:28 +0000 (19:22 +0300)]
lib: net_*() - Make sure sockaddr_union is always cleared
Fixes scan-build warnings
Timo Sirainen [Thu, 9 May 2019 16:19:42 +0000 (19:19 +0300)]
lib: data-stack - Make STACK_BLOCK_DATA() behavior clearer
Otherwise scan-build thinks that it's pointing outside valid memory in the
struct and gives an error:
"Memory set function accesses out-of-bound array element"
Timo Sirainen [Thu, 9 May 2019 12:29:34 +0000 (15:29 +0300)]
global: Change CALLBACK_TYPECHECK() to used with subtraction
This is because clang's -Wstring-plus-int gave warnings when using
"string" + CALLBACK_TYPECHECK(), but there are no warnings when using
"string" - CALLBACK_TYPECHECK(). It would have been enough to change
only the string parameters to use "-", but for consistency this commit
changes all of them.
Stephan Bosch [Mon, 24 Dec 2018 14:02:58 +0000 (15:02 +0100)]
lmtp: local: Make the local_deliver client vfunc responsible for submitting the reply.
This gives plugins more power to override delivery behavior.
Stephan Bosch [Sat, 10 Nov 2018 14:26:51 +0000 (15:26 +0100)]
lmtp: Load all globally-defined mail_plugins at client connect.
Before, this was not performed until after a user lookup was performed for a
recipient. That is not acceptable when plugins need to modify the LMTP protocol
itself.
Stephan Bosch [Sat, 10 Nov 2018 12:58:37 +0000 (13:58 +0100)]
lmtp: Install header files.
This allows creating external lmtp plugins.
Stephan Bosch [Sat, 10 Nov 2018 12:48:56 +0000 (13:48 +0100)]
lmtp: Rename commands.h to lmtp-commands.h.
Stephan Bosch [Sat, 10 Nov 2018 12:52:28 +0000 (13:52 +0100)]
lmtp: Rename client.h to lmtp-client.h.
Stephan Bosch [Sat, 10 Nov 2018 12:41:27 +0000 (13:41 +0100)]
lmtp: Make include directory available to external plugins.
Stephan Bosch [Sat, 3 Nov 2018 12:34:20 +0000 (13:34 +0100)]
lmtp: local: Create a client vfunc for local delivery.
This way,for example, the struct mail_deliver_context passed to mail_deliver()
can be adjusted by plugins.
Stephan Bosch [Sat, 3 Nov 2018 10:18:46 +0000 (11:18 +0100)]
lib-smtp: server: Add support for adding (non-standard) extra capabilities.
Stephan Bosch [Sat, 10 Nov 2018 12:27:52 +0000 (13:27 +0100)]
lib-smtp: syntax: Add new smtp_ehlo_params_are_valid().
This new version checks whether the parameters contained in the provided string
array are all valid EHLO parameters.
Stephan Bosch [Sat, 10 Nov 2018 12:22:52 +0000 (13:22 +0100)]
lib-smtp: syntax: Remame smtp_ehlo_params_are_valid() to smtp_ehlo_params_str_is_valid().
Moves it out of the way for a function that is better suited for this name;
i.e., it operates on an array of parameters.
Stephan Bosch [Sat, 3 Nov 2018 10:18:10 +0000 (11:18 +0100)]
lib-smtp: server: Add smtp_server_reply_ehlo_add_params().
Stephan Bosch [Sat, 3 Nov 2018 08:55:41 +0000 (09:55 +0100)]
lib-smtp: server: EHLO command: Move composition of individual reply lines to separate functions.
Stephan Bosch [Sat, 3 Nov 2018 08:27:48 +0000 (09:27 +0100)]
lib-smtp: server: EHLO command: Move composition of default EHLO reply to a separate public function.
Stephan Bosch [Sat, 3 Nov 2018 00:00:13 +0000 (01:00 +0100)]
lmtp: Add support for module contexts to recipient.
Stephan Bosch [Fri, 2 Nov 2018 23:54:50 +0000 (00:54 +0100)]
lmtp: Add support for module contexts to client.
Stephan Bosch [Fri, 2 Nov 2018 23:49:32 +0000 (00:49 +0100)]
lmtp: Implement client vfuncs for transaction start and free.
Stephan Bosch [Fri, 2 Nov 2018 23:33:31 +0000 (00:33 +0100)]
lmtp: Implement client vfuncs for SMTP transaction commands.
Stephan Bosch [Sat, 3 Nov 2018 13:26:24 +0000 (14:26 +0100)]
lmtp: RCPT command: Allocate lmtp_recipient object immediately.
Stephan Bosch [Fri, 2 Nov 2018 23:41:03 +0000 (00:41 +0100)]
lmtp: DATA command: Add data size to client state.
Stephan Bosch [Fri, 2 Nov 2018 23:37:52 +0000 (00:37 +0100)]
lmtp: DATA command: Put the data input stream in the client state rather than the transaction context.
Stephan Bosch [Fri, 2 Nov 2018 22:48:48 +0000 (23:48 +0100)]
lmtp: Implement basic client vfuncs.
Currently, only client_destroy can be overriden.
Stephan Bosch [Sat, 3 Nov 2018 11:56:30 +0000 (12:56 +0100)]
lmtp: Add hook for client_create().
Stephan Bosch [Sat, 3 Nov 2018 11:47:00 +0000 (12:47 +0100)]
lmtp: Remove obsolete declaration from lmtp-common.h.
Stephan Bosch [Sat, 3 Nov 2018 11:45:19 +0000 (12:45 +0100)]
lmtp: Make lmtp-common.h the primary include.
This better matches other services.
Stephan Bosch [Sat, 3 Nov 2018 11:34:02 +0000 (12:34 +0100)]
lmtp: Rename main.h to lmtp-common.h.
This better matches other services.
Stephan Bosch [Sat, 3 Nov 2018 11:26:51 +0000 (12:26 +0100)]
lmtp: Rename lmtp-common to lmtp-recipient.
Martti Rannanjärvi [Thu, 28 Jun 2018 11:36:51 +0000 (14:36 +0300)]
fts-solr: Remove obsolete break-imap-search setting
Stephan Bosch [Mon, 26 Feb 2018 22:12:03 +0000 (23:12 +0100)]
lib-program-client: Add more detailed debug logging.
Stephan Bosch [Mon, 26 Feb 2018 21:27:40 +0000 (22:27 +0100)]
lib-program-client: Use event logging.
This also makes the overall log messages better match similar messages produced
by other parts of Dovecot.
Stephan Bosch [Thu, 15 Mar 2018 23:08:17 +0000 (00:08 +0100)]
lib-program-client: Use i_close_fd() rather than close() when error is not supposed to happen.
Stephan Bosch [Mon, 26 Feb 2018 22:26:50 +0000 (23:26 +0100)]
lib-program-client: Make debug mode for test suite optional.
It is now disabled by default.
Stephan Bosch [Mon, 26 Feb 2018 17:58:37 +0000 (18:58 +0100)]
lib-program-client: local: Cleanup any kill timeout while program client is destroyed.
Stephan Bosch [Mon, 26 Feb 2018 17:32:32 +0000 (18:32 +0100)]
lib-program-client: local: Make sure the child is dead once the program client is destroyed.
Stephan Bosch [Mon, 26 Feb 2018 17:01:23 +0000 (18:01 +0100)]
lib-program-client: Simplify disconnect handling.
Perform all of the cleanups in a separate shared function.
Always close all fds, since there is nothing left to be read or written at
disconnect.
Stephan Bosch [Mon, 26 Feb 2018 17:21:04 +0000 (18:21 +0100)]
lib-program-client: remote: Don't try to read remaining input at disconnect.
This code is no longer relevant. At disconnect, there is nothing left to be read
by definition.
Stephan Bosch [Sun, 25 Feb 2018 23:07:10 +0000 (00:07 +0100)]
lib-program-client: Use iostream-pump for streaming data from program.
Stephan Bosch [Mon, 26 Feb 2018 16:16:41 +0000 (17:16 +0100)]
lib-program-client: Destroy timeout once client is passively disconnected.
Stephan Bosch [Mon, 26 Feb 2018 16:15:13 +0000 (17:15 +0100)]
lib-program-client: remote: Initialize program_client_istream with parent FD.
This way, io_add_istream() works as expected.
Stephan Bosch [Mon, 26 Feb 2018 16:12:29 +0000 (17:12 +0100)]
lib-program-client: local: Stop immediately when child program without I/O ends.
Particularly, don't perform this by calling the input handler.