]> git.ipfire.org Git - thirdparty/dovecot/core.git/log
thirdparty/dovecot/core.git
6 years agoReleased v2.3.5.2 release-2.3.5 101/head 2.3.5.2
Timo Sirainen [Fri, 5 Apr 2019 07:35:01 +0000 (10:35 +0300)] 
Released v2.3.5.2

6 years agolib: json - Escape invalid UTF-8 as unicode bytes
Aki Tuomi [Tue, 2 Apr 2019 10:09:48 +0000 (13:09 +0300)] 
lib: json - Escape invalid UTF-8 as unicode bytes

This prevents dovecot from crashing if invalid UTF-8 input
is given.

6 years agoReleased v2.3.5.1 2.3.5.1
Aki Tuomi [Mon, 18 Mar 2019 10:54:07 +0000 (12:54 +0200)] 
Released v2.3.5.1

6 years agofts: Fix buffer overflow when reading oversized fts header
Timo Sirainen [Tue, 5 Feb 2019 03:25:13 +0000 (19:25 -0800)] 
fts: Fix buffer overflow when reading oversized fts header

6 years agolib-storage: Fix buffer overflow when reading oversized hdr-pop3-uidl header
Timo Sirainen [Tue, 5 Feb 2019 03:23:02 +0000 (19:23 -0800)] 
lib-storage: Fix buffer overflow when reading oversized hdr-pop3-uidl header

6 years agoReleased v2.3.5. 2.3.5
Timo Sirainen [Mon, 25 Feb 2019 11:21:31 +0000 (13:21 +0200)] 
Released v2.3.5.

6 years agofs-posix: fs_read_stream() - Don't close file's fd
Timo Sirainen [Mon, 25 Feb 2019 18:55:03 +0000 (20:55 +0200)] 
fs-posix: fs_read_stream() - Don't close file's fd

This is especially important with newly created files, because they may
still be accessed after reading. The next file access attempt after
fs_read_stream() might cause the file to be recreated and crash.

Fixes:
Panic: file fs-posix.c: line 252 (fs_posix_create): assertion failed: (file->temp_path == NULL)

6 years agolib: test-istream-seekable - Add asserts to make sure blocking state changes at EOF
Timo Sirainen [Tue, 19 Feb 2019 08:49:37 +0000 (10:49 +0200)] 
lib: test-istream-seekable - Add asserts to make sure blocking state changes at EOF

6 years agolib-storage: mail_get_*stream*() - Assert that returned streams are blocking
Timo Sirainen [Tue, 19 Feb 2019 08:22:43 +0000 (10:22 +0200)] 
lib-storage: mail_get_*stream*() - Assert that returned streams are blocking

Several callers already rely on them being blocking. Making these asserts
explicit makes sure that any bugs are caught early.

6 years agolib: istream-seekable - Change stream to be blocking=TRUE after reaching EOF
Timo Sirainen [Tue, 19 Feb 2019 08:17:45 +0000 (10:17 +0200)] 
lib: istream-seekable - Change stream to be blocking=TRUE after reaching EOF

After EOF is reached, the stream is now fully read into file or memory.
read()s can no longer return 0, so blocking=TRUE can be used.

Some callers were reusing the seekable stream in places that required
blocking=TRUE.

Fixes at least with imapsieve vnd.dovecot report extension:
Panic: file ostream.c: line 427 (o_stream_nsend_istream): assertion failed: (instream->blocking)

6 years agolib-ssl-iostream: iostream-ssl-test - Update the test certificate to have very long...
Stephan Bosch [Tue, 19 Feb 2019 10:31:45 +0000 (11:31 +0100)] 
lib-ssl-iostream: iostream-ssl-test - Update the test certificate to have very long expiry period.

The old certificate expired after one year, which causes all kinds of unit test
failures.

6 years agolib-http: Add assert to make sure http_client_init_shared(NULL, NULL) isn't called
Timo Sirainen [Thu, 30 Aug 2018 13:40:16 +0000 (16:40 +0300)] 
lib-http: Add assert to make sure http_client_init_shared(NULL, NULL) isn't called

This should make scan-build happy.

6 years agolib-smtp: client: Move connection to TRANSACTION state immediately when a transaction...
Stephan Bosch [Thu, 27 Dec 2018 13:13:15 +0000 (14:13 +0100)] 
lib-smtp: client: Move connection to TRANSACTION state immediately when a transaction is started.

Before, it waited until the actual start handler was called from timeout, but
that causes a race condition with mtp_client_connection_abort_transaction(),
which in turn causes an assert panic.

Panic was:

Panic: file smtp-client-connection.c: line 2153 (smtp_client_connection_abort_transaction): assertion failed: (conn->state != SMTP_CLIENT_CONNECTION_STATE_READY)

6 years agolib-smtp: client: Properly reset connection state upon reconnect.
Stephan Bosch [Sun, 11 Nov 2018 19:41:18 +0000 (20:41 +0100)] 
lib-smtp: client: Properly reset connection state upon reconnect.

6 years agolib-smtp: client: connection: Prevent timeout leak for transaction start.
Stephan Bosch [Sun, 11 Nov 2018 19:32:09 +0000 (20:32 +0100)] 
lib-smtp: client: connection: Prevent timeout leak for transaction start.

Perform timeout management in a single place. Also, always start the next
transaction only through a timeout.

6 years agom4: Fix moduledir behaviour
Aki Tuomi [Mon, 14 Jan 2019 12:37:03 +0000 (14:37 +0200)] 
m4: Fix moduledir behaviour

This is mainly a fix for plugins that depend on dovecot.m4

6 years agom4/dovecot.m4: rename valgrind output file to hide it from certain tests
Phil Carmody [Tue, 19 Jun 2018 12:30:36 +0000 (15:30 +0300)] 
m4/dovecot.m4: rename valgrind output file to hide it from certain tests

Some lib-http tests use readdir() to create test cases, and sometimes
object to the contents of test.out.$$. However, as lib-http is also
sensitive to certain characters in the filenames of the files it uses,
we can hide the valgrind output by chosing its filename to exclude it
from the lib_http tests. Non-initial '~' is not known to cause any issues
for either the shell or any known operating system, so is the safest of
lib-http's 'dodgy' characters to use as the separator.

Signed-off-by: Phil Carmody <phil@dovecot.fi>
6 years agom4/dovecot.m4 - Apply DRY principle to test output filename
Phil Carmody [Wed, 29 Aug 2018 11:57:45 +0000 (14:57 +0300)] 
m4/dovecot.m4 - Apply DRY principle to test output filename

Define the name we will use for the file once, then just use that variable
instead of using explicit repeatition.

Signed-off-by: Phil Carmody <phil@dovecot.fi>
6 years agom4/dovecot.m4: run-test.sh - disable valgrind for individual tests
Phil Carmody [Mon, 4 Jun 2018 16:58:23 +0000 (19:58 +0300)] 
m4/dovecot.m4: run-test.sh - disable valgrind for individual tests

OpenSSL doesn't like valgrind on my setup, so permit a local instalation
to have a list of excluded binaries that won't use valgrind in make check.

Signed-off-by: Phil Carmody <phil@dovecot.fi>
6 years agolib-http: increase pool sizes in tests
Phil Carmody [Tue, 19 Jun 2018 10:29:46 +0000 (13:29 +0300)] 
lib-http: increase pool sizes in tests

Pool growth messages spam the test output, just dive in with a slightly
larger default to shut them up. Only affects these individual tests,
not any other users of the library.

Signed-off-by: Phil Carmody <phil@dovecot.fi>
6 years agolib-http: change default client/server pool sizes when using SSL
Phil Carmody [Tue, 19 Jun 2018 10:28:12 +0000 (13:28 +0300)] 
lib-http: change default client/server pool sizes when using SSL

SSL carries a lot of state with it, so just start with a bigger
pool if we know we're using it.

Signed-off-by: Phil Carmody <phil@dovecot.fi>
6 years agolib-http: harden payload tests against dodgy filenames
Phil Carmody [Thu, 14 Jun 2018 05:51:37 +0000 (08:51 +0300)] 
lib-http: harden payload tests against dodgy filenames

Tests use files from readdir() as input, but do no sanitation of the
names, and therefore things like editor temp files can cause havoc
with the HTTP request parser.

The solution is to trap dodgy characters in the filenames, and ignore
those files. Initially, trap HTTP's "unsafe" and "reserved" characters.

Signed-off-by: Phil Carmody <phil@dovecot.fi>
6 years agolib-mail: ostream-dot - Add unit test for parent stream buffer being almost full.
Stephan Bosch [Mon, 7 Jan 2019 14:35:07 +0000 (15:35 +0100)] 
lib-mail: ostream-dot - Add unit test for parent stream buffer being almost full.

6 years agolib-mail: ostream-dot - Add asserts to make sure max_bytes doesn't underflow
Timo Sirainen [Sat, 15 Dec 2018 14:32:22 +0000 (16:32 +0200)] 
lib-mail: ostream-dot - Add asserts to make sure max_bytes doesn't underflow

6 years agolib-mail: ostream-dot - Fix potential assert-crash when parent stream buffer gets...
Timo Sirainen [Sat, 15 Dec 2018 14:24:42 +0000 (16:24 +0200)] 
lib-mail: ostream-dot - Fix potential assert-crash when parent stream buffer gets full

If max_bytes=1, the (max_bytes-2) calculation brings it to (size_t)-1. This
causes too much data to be sent to the parent stream, which then returns a
partial write and causes an assert-crash.

The final chunk calculation doesn't need the -2 check, because additional
bytes aren't inserted at that point.

Fixes:
Panic: file ostream-dot.c: line 208 (o_stream_dot_sendv): assertion failed: ((size_t)ret == sent + added)

6 years agolib: Fix buffer code to satisfy static analyzers
Aki Tuomi [Tue, 20 Feb 2018 10:04:13 +0000 (12:04 +0200)] 
lib: Fix buffer code to satisfy static analyzers

6 years agolib: randgen - Init seed to 0
Aki Tuomi [Thu, 8 Feb 2018 09:56:08 +0000 (11:56 +0200)] 
lib: randgen - Init seed to 0

Satisfies static analyzer, the seed is guaranteed to get
filled with random data.

6 years agotrash: Use TRASH_USER_CONTEXT_REQUIRE
Aki Tuomi [Thu, 8 Feb 2018 09:45:20 +0000 (11:45 +0200)] 
trash: Use TRASH_USER_CONTEXT_REQUIRE

Satisfies static analyzer

6 years agolib/randgen - warn when DOVECOT_SRAND is not able to be used
Phil Carmody [Tue, 30 Jan 2018 12:14:42 +0000 (14:14 +0200)] 
lib/randgen - warn when DOVECOT_SRAND is not able to be used

As suggested by Jeff, it's friendly to warn if we're unable to act
upon the request for reproduceable random numbers because we're not
built for that.

Note, this deliberately permits a blank string, so that you can
silence the warning by prefixing a command with an empty
  DOVECOT_SRAND=
which is taken as an explicit attempt to disable use of the feature.

Signed-off-by: Phil Carmody <phil@dovecot.fi>
6 years agolib/lib-test: restore DOVECOT_SRAND feature in DEBUG builds
Phil Carmody [Mon, 11 Dec 2017 12:03:13 +0000 (14:03 +0200)] 
lib/lib-test: restore DOVECOT_SRAND feature in DEBUG builds

Add a deterministic PRNG, an ability to force its use, and an
ability to re-use the same sequence later.

Since proper random numbers have been forced into use, making
reproducable tests isn't quite as easy as it used to be, it's 3 steps
rather than 2. When seeing an intermittent test failure:
 - rerun the tests with environmental variable DOVECOT_SRAND=kiss
 - upon seeing a new failure case, note the seed logged at the failure
 - debug using DOVECOT_SRAND=<that number>

In non-DEBUG builds, there's no trace of this code, and the
randomisation that is an inherent part of many tests remains
non-reproduceable.

Works with all of the RNG preferences, getrandom/urandom/arc4.

Signed-off-by: Phil Carmody <phil@dovecot.fi>
6 years agolib-smtp: client: Make sending the XCLIENT command(s) always implicit and do it only...
Stephan Bosch [Mon, 3 Dec 2018 17:45:43 +0000 (18:45 +0100)] 
lib-smtp: client: Make sending the XCLIENT command(s) always implicit and do it only once.

For most servers, XCLIENT changes the ip:port identity of the client, causing it
to lose privileges to send more XCLIENT commands. For long XCLIENT commands
split in a series of XCLIENT commands, the ip:port parameters were sent last
already, so that did not cause problems even before this change. However, the
old code assumed it could update XCLIENT fields later on, which is often not
possible.

6 years agosubmission: relay backend: Don't bother updating the protocol in proxy data.
Stephan Bosch [Mon, 3 Dec 2018 17:45:43 +0000 (18:45 +0100)] 
submission: relay backend: Don't bother updating the protocol in proxy data.

Old SMTP clients cannot use the submission service, since these cannot perform
the required authentication.

6 years agosubmission: Move client_create_backend_default() after smtp_server_connection_login...
Stephan Bosch [Mon, 3 Dec 2018 17:45:42 +0000 (18:45 +0100)] 
submission: Move client_create_backend_default() after smtp_server_connection_login() in client_create().

This way, the created default backend can use the HELO data provided to smtp_server_connection_login().

6 years agolib-smtp: client: Allow deferring sending the XCLIENT command until authentication...
Stephan Bosch [Mon, 3 Dec 2018 17:45:42 +0000 (18:45 +0100)] 
lib-smtp: client: Allow deferring sending the XCLIENT command until authentication or first mail transaction.

This allows updating the proxy data until the XCLIENT command actually needs to
be sent. For submission, this means that later EHLO domain changes can still be
accounted for. This change makes the simplifications in subsequent changes
easier.

6 years agolib-smtp: client: Merge smtp_client_connection_init_xclient() into smtp_client_connec...
Stephan Bosch [Mon, 3 Dec 2018 17:45:41 +0000 (18:45 +0100)] 
lib-smtp: client: Merge smtp_client_connection_init_xclient() into smtp_client_connection_authenticate().

6 years agolib-smtp: client: Move smtp_client_connection_send_xclient() before smtp_client_conne...
Stephan Bosch [Mon, 3 Dec 2018 17:45:40 +0000 (18:45 +0100)] 
lib-smtp: client: Move smtp_client_connection_send_xclient() before smtp_client_connection_authenticate().

Keeps ordering of functions logical for next changes.

6 years agosubmission: relay backend: Provide data for the HELO and PROTO XCLIENT fields to...
Stephan Bosch [Mon, 3 Dec 2018 17:45:40 +0000 (18:45 +0100)] 
submission: relay backend: Provide data for the HELO and PROTO XCLIENT fields to the relay connection.

6 years agolib-smtp: server: Use the HELO domain provided to smtp_server_connection_login()...
Stephan Bosch [Mon, 3 Dec 2018 17:45:39 +0000 (18:45 +0100)] 
lib-smtp: server: Use the HELO domain provided to smtp_server_connection_login() immediately.

Before, it was only used when no new HELO/EHLO command was issued before MAIL.

6 years agolib-smtp: client: Remove proxy_data parameter from smtp_client_connection_send_xclient().
Stephan Bosch [Mon, 3 Dec 2018 17:45:39 +0000 (18:45 +0100)] 
lib-smtp: client: Remove proxy_data parameter from smtp_client_connection_send_xclient().

Use smtp_client_connection_update_proxy_data() to change fields in the proxy
data recorded in the client.

6 years agolib-smtp: client: Add smtp_client_connection_update_proxy_data().
Stephan Bosch [Mon, 3 Dec 2018 17:45:38 +0000 (18:45 +0100)] 
lib-smtp: client: Add smtp_client_connection_update_proxy_data().

Allows updating the proxy data after creation of the connection.

6 years agolib-smtp: client: Make smtp_client_connection_send_xclient() return void.
Stephan Bosch [Mon, 3 Dec 2018 17:45:38 +0000 (18:45 +0100)] 
lib-smtp: client: Make smtp_client_connection_send_xclient() return void.

6 years agolib-smtp: client: Copy proxy data from settings using the new smtp_proxy_data_merge...
Stephan Bosch [Mon, 3 Dec 2018 17:45:37 +0000 (18:45 +0100)] 
lib-smtp: client: Copy proxy data from settings using the new smtp_proxy_data_merge() functioá¹….

6 years agolib-smtp: common: Add smtp_proxy_data_merge().
Stephan Bosch [Mon, 3 Dec 2018 17:45:36 +0000 (18:45 +0100)] 
lib-smtp: common: Add smtp_proxy_data_merge().

6 years agolib-smtp: client: Drop smtp_client_command_mail_submit_after().
Stephan Bosch [Mon, 3 Dec 2018 17:45:35 +0000 (18:45 +0100)] 
lib-smtp: client: Drop smtp_client_command_mail_submit_after().

It is not used.

6 years agolib-smtp: client: connection: Fix copying of PROTO XCLIENT field in proxy data.
Stephan Bosch [Mon, 3 Dec 2018 17:45:24 +0000 (18:45 +0100)] 
lib-smtp: client: connection: Fix copying of PROTO XCLIENT field in proxy data.

6 years agolib-smtp: syntax: Fix smtp_ehlo_line_parse() to also record the last parameter.
Stephan Bosch [Mon, 3 Dec 2018 17:45:17 +0000 (18:45 +0100)] 
lib-smtp: syntax: Fix smtp_ehlo_line_parse() to also record the last parameter.

6 years agosubmission: Install header files
Timo Sirainen [Fri, 9 Nov 2018 11:03:43 +0000 (13:03 +0200)] 
submission: Install header files

This allows creating external submission plugins.

6 years agolib-fs: If fs_get_metadata() isn't implemented, return internal metadata anyway
Timo Sirainen [Wed, 31 Oct 2018 15:19:42 +0000 (17:19 +0200)] 
lib-fs: If fs_get_metadata() isn't implemented, return internal metadata anyway

The metadata is sometimes used for transferring internal metadata within the
files. This metadata isn't stored to disk. So even if the fs driver doesn't
support metadata at all, it should still be possible to get/set the internal
metadata. Setting it was already possible, but getting wasn't.

6 years agosubmission: relay backend: Forward a (possibly multi-line) 421 reply from relay serve...
Stephan Bosch [Fri, 2 Nov 2018 09:39:17 +0000 (10:39 +0100)] 
submission: relay backend: Forward a (possibly multi-line) 421 reply from relay server to the client.

Before, it substituted a generic 421 error reply, which is far less helpful.

6 years agosubmission: client: Properly handle a multi-line reason string in client_disconnect().
Stephan Bosch [Fri, 2 Nov 2018 09:37:22 +0000 (10:37 +0100)] 
submission: client: Properly handle a multi-line reason string in client_disconnect().

Pass the multi-line string to smtp_server_connection_terminate(), yet log it as a single line.

6 years agolib-smtp: server: connection: Properly handle a multi-line reason in smtp_server_conn...
Stephan Bosch [Fri, 2 Nov 2018 09:26:53 +0000 (10:26 +0100)] 
lib-smtp: server: connection: Properly handle a multi-line reason in smtp_server_connection_terminate().

6 years agolib-smtp: server: connection: Properly handle a multi-line reason in smtp_server_conn...
Stephan Bosch [Fri, 2 Nov 2018 09:43:11 +0000 (10:43 +0100)] 
lib-smtp: server: connection: Properly handle a multi-line reason in smtp_server_connection_disconnect().

Convert it to a single line string.

6 years agolib-smtp: server: connection: Add smtp_server_connection_reply_lines().
Stephan Bosch [Fri, 2 Nov 2018 09:23:42 +0000 (10:23 +0100)] 
lib-smtp: server: connection: Add smtp_server_connection_reply_lines().

This function immediately sends a reply on the connection with the indicated
status, enhanced code and text lines.

6 years agolib-smtp: server: connection: Add debug messages for protocol elements sent outside...
Stephan Bosch [Fri, 2 Nov 2018 09:17:30 +0000 (10:17 +0100)] 
lib-smtp: server: connection: Add debug messages for protocol elements sent outside the normal reply API.

6 years agolib-smtp: reply: Add smtp_reply_get_text_lines_omit_prefix().
Stephan Bosch [Fri, 2 Nov 2018 09:14:57 +0000 (10:14 +0100)] 
lib-smtp: reply: Add smtp_reply_get_text_lines_omit_prefix().

This returns a string array of the lines in the reply, omitting the prefix (the
first word), which is usually a "<domain>" value.

6 years agolib-smtp: reply: Make parsing enhanced status codes available as a separate function.
Stephan Bosch [Fri, 2 Nov 2018 09:11:35 +0000 (10:11 +0100)] 
lib-smtp: reply: Make parsing enhanced status codes available as a separate function.

6 years agolib: strfuncs: Add t_str_oneline().
Stephan Bosch [Fri, 2 Nov 2018 09:12:20 +0000 (10:12 +0100)] 
lib: strfuncs: Add t_str_oneline().

This puts the string on a single line by replacing all newlines with spaces and
dropping any carriage returns

6 years agolib-smtp: client: transaction: Hold a reference to the transaction while calling...
Stephan Bosch [Fri, 2 Nov 2018 09:08:26 +0000 (10:08 +0100)] 
lib-smtp: client: transaction: Hold a reference to the transaction while calling the RCPT command callback.

This fixes memory problems when the callback inadvertently gets the transaction destroyed.

6 years agolib-smtp: server: recipient: Hold a reference to the recipient while calling a non...
Stephan Bosch [Thu, 1 Nov 2018 00:14:50 +0000 (01:14 +0100)] 
lib-smtp: server: recipient: Hold a reference to the recipient while calling a non-destroy hook.

Prevents memory problems when the hook inadvertently gets the recipient
destroyed. Unlike the server command, this is not strictly necessary for the
recipient object, but we add this anyway to prevent future problems when the
recipient implementation becomes more complex (e.g. with additional hooks).

6 years agolib-smtp: server: recipient: Prevent reference counting from within destroy hook.
Stephan Bosch [Wed, 31 Oct 2018 23:58:47 +0000 (00:58 +0100)] 
lib-smtp: server: recipient: Prevent reference counting from within destroy hook.

6 years agolib-smtp: server: recipient: Add reference counting.
Stephan Bosch [Thu, 1 Nov 2018 00:25:10 +0000 (01:25 +0100)] 
lib-smtp: server: recipient: Add reference counting.

Unlike the server command, this is not strictly necessary for the recipient
object, but we add this anyway to prevent future problems when the recipient
implementation becomes more complex.

6 years agolib-smtp: server: Make sure command object is not used after it is destroyed in hook.
Stephan Bosch [Wed, 31 Oct 2018 23:12:03 +0000 (00:12 +0100)] 
lib-smtp: server: Make sure command object is not used after it is destroyed in hook.

6 years agolib-smtp: server: command: Hold connection reference while calling replied hook.
Stephan Bosch [Thu, 1 Nov 2018 00:40:10 +0000 (01:40 +0100)] 
lib-smtp: server: command: Hold connection reference while calling replied hook.

6 years agolib-smtp: server: command: Move core of smtp_server_command_submit_reply() into a...
Stephan Bosch [Wed, 31 Oct 2018 23:44:10 +0000 (00:44 +0100)] 
lib-smtp: server: command: Move core of smtp_server_command_submit_reply() into a separate function.

Makes the next changes easier.

6 years agolib-smtp: server: command: Hold a reference to the command while calling a non-destro...
Stephan Bosch [Wed, 31 Oct 2018 23:39:21 +0000 (00:39 +0100)] 
lib-smtp: server: command: Hold a reference to the command while calling a non-destroy hook.

Prevents memory problems when the hook inadvertently gets the command destroyed.

6 years agolib-smtp: server: command: Prevent reference counting from within destroy hook.
Stephan Bosch [Wed, 31 Oct 2018 23:27:50 +0000 (00:27 +0100)] 
lib-smtp: server: command: Prevent reference counting from within destroy hook.

6 years agolib-smtp: Consistently use signed integer for reference counters.
Stephan Bosch [Thu, 1 Nov 2018 21:22:34 +0000 (22:22 +0100)] 
lib-smtp: Consistently use signed integer for reference counters.

6 years agosubmission: relay backend: Add assertion in backend_relay_handle_relay_reply() to...
Stephan Bosch [Tue, 30 Oct 2018 08:53:07 +0000 (09:53 +0100)] 
submission: relay backend: Add assertion in backend_relay_handle_relay_reply() to address compiler warning.

Assert that the error message is assinged when the result is FALSE.

6 years agosubmission: relay backend: In backend_relay_handle_relay_reply(): Only determine...
Stephan Bosch [Tue, 30 Oct 2018 08:57:31 +0000 (09:57 +0100)] 
submission: relay backend: In backend_relay_handle_relay_reply(): Only determine error detail when it is used.

6 years agosubmission: Make include directory available to external plugins.
Stephan Bosch [Mon, 29 Oct 2018 00:36:43 +0000 (01:36 +0100)] 
submission: Make include directory available to external plugins.

6 years agosubmission: relay backend: Allow creating the client transaction with specific flags.
Stephan Bosch [Thu, 25 Oct 2018 21:50:55 +0000 (23:50 +0200)] 
submission: relay backend: Allow creating the client transaction with specific flags.

6 years agolib-smtp: client: Allow enabling the LMTP per-RCPT DATA reply behavior for ESMTP...
Stephan Bosch [Thu, 18 Oct 2018 00:15:07 +0000 (02:15 +0200)] 
lib-smtp: client: Allow enabling the LMTP per-RCPT DATA reply behavior for ESMTP transactions.

This is non-standard.

6 years agosubmission: Add support for module contexts to backend.
Stephan Bosch [Sat, 27 Oct 2018 10:20:01 +0000 (12:20 +0200)] 
submission: Add support for module contexts to backend.

6 years agosubmission: Allocate each backend on its own pool.
Stephan Bosch [Sat, 27 Oct 2018 09:56:59 +0000 (11:56 +0200)] 
submission: Allocate each backend on its own pool.

This allows allocating per-backend module data.

6 years agosubmission: Add support for modifying the transaction path and parameters in the...
Stephan Bosch [Fri, 26 Oct 2018 19:00:00 +0000 (21:00 +0200)] 
submission: Add support for modifying the transaction path and parameters in the trans_start backend vfunc.

To keep the changes limited to a particular backend, the server transaction
cannot be modified. Also, creating a mock server transaction and passing it on
is not a good idea, since it is not a simple container struct.

6 years agosubmission: Add backend flag indicating whether the backend is ready.
Stephan Bosch [Fri, 26 Oct 2018 15:00:32 +0000 (17:00 +0200)] 
submission: Add backend flag indicating whether the backend is ready.

This flag is set just before the ready() vfunc is called.

6 years agosubmission: Add backend vfunc called when the backend is ready.
Stephan Bosch [Thu, 18 Oct 2018 21:35:05 +0000 (23:35 +0200)] 
submission: Add backend vfunc called when the backend is ready.

For a relay backend, this means that the connection is fully connected and
handshaked. For any backend it means the capabilities are known (and passed as a
parameter to the ready function).

6 years agolib-smtp: params: Explicitly allow smtp_params_*_add_extra() value parameter to be...
Stephan Bosch [Thu, 25 Oct 2018 21:50:22 +0000 (23:50 +0200)] 
lib-smtp: params: Explicitly allow smtp_params_*_add_extra() value parameter to be NULL.

6 years agosubmission: relay backend: Allow recording extra (non-standard) capabilities.
Stephan Bosch [Tue, 16 Oct 2018 23:34:54 +0000 (01:34 +0200)] 
submission: relay backend: Allow recording extra (non-standard) capabilities.

6 years agosubmission: relay backend: Provide access to the client connection and transaction...
Stephan Bosch [Tue, 16 Oct 2018 21:58:23 +0000 (23:58 +0200)] 
submission: relay backend: Provide access to the client connection and transaction for plugins.

6 years agolib-smtp: client: Add support for recording extra (non-standard) capabilities from...
Stephan Bosch [Tue, 16 Oct 2018 22:59:02 +0000 (00:59 +0200)] 
lib-smtp: client: Add support for recording extra (non-standard) capabilities from server.

6 years agolib-smtp: client: connection: Consolidate capability data into a struct.
Stephan Bosch [Tue, 16 Oct 2018 23:05:07 +0000 (01:05 +0200)] 
lib-smtp: client: connection: Consolidate capability data into a struct.

Allows clearing it reliably.

6 years agosubmission: Clarify the behavior of command handlers and the requirements for overrid...
Stephan Bosch [Fri, 26 Oct 2018 20:26:53 +0000 (22:26 +0200)] 
submission: Clarify the behavior of command handlers and the requirements for overriding them.

6 years agosubmission: Use the new smtp_server_cmd_noop_reply_success() function.
Stephan Bosch [Thu, 25 Oct 2018 19:02:46 +0000 (21:02 +0200)] 
submission: Use the new smtp_server_cmd_noop_reply_success() function.

6 years agolmtp: local: Use the new smtp_server_cmd_rcpt_reply_success() function.
Stephan Bosch [Mon, 12 Mar 2018 01:59:28 +0000 (02:59 +0100)] 
lmtp: local: Use the new smtp_server_cmd_rcpt_reply_success() function.

6 years agolib-smtp: server: NOOP command: Implement smtp_server_cmd_noop_reply_success() for...
Stephan Bosch [Thu, 25 Oct 2018 18:29:30 +0000 (20:29 +0200)] 
lib-smtp: server: NOOP command: Implement smtp_server_cmd_noop_reply_success() for sending default success reply.

6 years agolib-smtp: server: RSET command: Implement smtp_server_cmd_rset_reply_success() for...
Stephan Bosch [Thu, 25 Oct 2018 18:38:26 +0000 (20:38 +0200)] 
lib-smtp: server: RSET command: Implement smtp_server_cmd_rset_reply_success() for sending default success reply.

6 years agolib-smtp: server: RCPT command: Implement smtp_server_cmd_rcpt_reply_success() for...
Stephan Bosch [Mon, 12 Mar 2018 00:03:24 +0000 (01:03 +0100)] 
lib-smtp: server: RCPT command: Implement smtp_server_cmd_rcpt_reply_success() for sending default success reply.

6 years agolib-smtp: server: MAIL command: Implement smtp_server_cmd_mail_reply_success() for...
Stephan Bosch [Mon, 12 Mar 2018 00:01:46 +0000 (01:01 +0100)] 
lib-smtp: server: MAIL command: Implement smtp_server_cmd_mail_reply_success() for sending default success reply.

6 years agosubmission: relay backend: Always reset the trans_started flag upon trans_free().
Stephan Bosch [Sun, 28 Oct 2018 11:08:50 +0000 (12:08 +0100)] 
submission: relay backend: Always reset the trans_started flag upon trans_free().

6 years agosubmission: backend: Properly reset the trans_started flag upon trans_free().
Stephan Bosch [Sun, 28 Oct 2018 11:08:13 +0000 (12:08 +0100)] 
submission: backend: Properly reset the trans_started flag upon trans_free().

6 years agodoc: example-config: Document the new submission_backend_capabilities setting.
Stephan Bosch [Fri, 19 Oct 2018 15:39:36 +0000 (17:39 +0200)] 
doc: example-config: Document the new submission_backend_capabilities setting.

6 years agosubmission,submission-login: Implicitly enable CHUNKING when submission_backend_capab...
Stephan Bosch [Mon, 29 Oct 2018 16:27:17 +0000 (17:27 +0100)] 
submission,submission-login: Implicitly enable CHUNKING when submission_backend_capabilities setting includes BINARYMIME.

BINARYMIME requires CHUNKING support and we should not expect administrators to
always be aware of that fact.

6 years agosubmission: relay backend: VRFY command: Avoid forwarding 500 and 502 replies back...
Stephan Bosch [Fri, 19 Oct 2018 15:12:10 +0000 (17:12 +0200)] 
submission: relay backend: VRFY command: Avoid forwarding 500 and 502 replies back to client.

These are in fact non-standard for VRFY and indicate that VRFY support is
disabled, which is not allowed by the specification. Instead, we now substitute
the default 252 response.

6 years agolib-smtp: server: VRFY command: Implement smtp_server_cmd_reply_default() for sending...
Stephan Bosch [Fri, 19 Oct 2018 15:02:08 +0000 (17:02 +0200)] 
lib-smtp: server: VRFY command: Implement smtp_server_cmd_reply_default() for sending default reply.

6 years agosubmission,submission-login: Omit listing VRFY capability if the backend provides...
Stephan Bosch [Fri, 19 Oct 2018 14:42:41 +0000 (16:42 +0200)] 
submission,submission-login: Omit listing VRFY capability if the backend provides no explicit support.

6 years agosubmission-login: Use the submission_backend_capabilities setting to compose the...
Stephan Bosch [Fri, 19 Oct 2018 09:15:50 +0000 (11:15 +0200)] 
submission-login: Use the submission_backend_capabilities setting to compose the EHLO reply when configured.

This way, the EHLO response prior to AUTH will better match the EHLO response after AUTH.

6 years agosubmission-login: Add the VRFY capability to the EHLO reply.
Stephan Bosch [Fri, 19 Oct 2018 09:24:35 +0000 (11:24 +0200)] 
submission-login: Add the VRFY capability to the EHLO reply.

The post-login service does it too.

6 years agosubmission: relay backend: Fix non-transaction commands to work when submission_backe...
Stephan Bosch [Thu, 18 Oct 2018 22:35:53 +0000 (00:35 +0200)] 
submission: relay backend: Fix non-transaction commands to work when submission_backend_capabilities is configured.

When submission_backend_capabilities is configured, the backend is not started
until the first transaction is started. But for commands that should work
outside the transaction, the backend should also be started, which was not the
case before this fix.

6 years agosubmission: backends: Set the started flag before calling the backend start vfunc.
Stephan Bosch [Thu, 18 Oct 2018 22:01:40 +0000 (00:01 +0200)] 
submission: backends: Set the started flag before calling the backend start vfunc.

This prevents recursive mishaps.