]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Stephan Bosch [Fri, 9 Mar 2018 14:47:06 +0000 (15:47 +0100)]
lib-smtp: common: Use the BIT() macro for defining the capability flags.
Stephan Bosch [Sun, 24 Dec 2017 13:35:15 +0000 (14:35 +0100)]
lib-smtp: client: Fix rawlog input stream inconsistency by updating streams right after initializing TLS.
Restructured the code to call a new function called smtp_client_connection_streams_changed() which performs all the necessary updates.
Before, enabling rawlog could break the TLS handshake.
Aki Tuomi [Fri, 1 Dec 2017 11:46:10 +0000 (13:46 +0200)]
auth: Include tls=true/false in policy server request
Aki Tuomi [Fri, 1 Dec 2017 11:30:43 +0000 (13:30 +0200)]
auth: Support secured=tls
Aki Tuomi [Mon, 11 Dec 2017 09:16:02 +0000 (11:16 +0200)]
login-common: Pass SSL protocol details to auth
Aki Tuomi [Fri, 1 Dec 2017 11:16:34 +0000 (13:16 +0200)]
login-common: Indicate TLS encryption if haproxy says it was
Aki Tuomi [Mon, 11 Dec 2017 09:08:08 +0000 (11:08 +0200)]
lib-auth: Include ssl protocol details in request when present
Aki Tuomi [Fri, 1 Dec 2017 11:16:07 +0000 (13:16 +0200)]
lib-auth: Add AUTH_REQUEST_FLAG_TLS
Indicates whether connection is over TLS encryption.
Aki Tuomi [Mon, 11 Dec 2017 09:00:41 +0000 (11:00 +0200)]
lib-ssl-iostream: Add accessors for additional SSL protocol details
This is needed in order to send these details as fields to auth process
Aki Tuomi [Wed, 13 Dec 2017 07:52:16 +0000 (09:52 +0200)]
m4: Check for SSL_CIPHER_get_kx_nid
Aki Tuomi [Thu, 11 Jan 2018 14:10:48 +0000 (16:10 +0200)]
auth: Ensure crypt schemes match with samples
Aki Tuomi [Thu, 11 Jan 2018 13:22:30 +0000 (15:22 +0200)]
auth: Fix crypt scheme detection
Broken by
1ebb6094e5105ba7ef521a0177c42d3ea81243f0
Aki Tuomi [Thu, 8 Feb 2018 13:45:55 +0000 (15:45 +0200)]
auth: Support standard auth variables in LDAP subqueries
Stephan Bosch [Sun, 28 Jan 2018 20:39:07 +0000 (21:39 +0100)]
lib-http: client: Assert that req->client != NULL in http_client_request_send_error().
Applies when blocking payload output API is being used.
Addresses a report by scan-build.
Stephan Bosch [Sat, 20 Jan 2018 17:48:00 +0000 (18:48 +0100)]
lib-http: test-http-payload: Initialize http_context in test_client_create_clients().
Fixes complaint from scan-build.
Stephan Bosch [Sat, 20 Jan 2018 15:48:03 +0000 (16:48 +0100)]
lib-smtp: address: Remove useless local variable initialization in smtp_address_clone().
Fixes complaint from scan-build.
Timo Sirainen [Thu, 8 Feb 2018 11:27:25 +0000 (13:27 +0200)]
lib-http: client: Fix using non-context SSL settings
The SSL settings were used for the SSL context, but they weren't used for
individual SSL streams. This broke stream-only settings, like
allow_invalid_cert=TRUE.
Timo Sirainen [Thu, 8 Mar 2018 12:10:42 +0000 (14:10 +0200)]
lib: Remove ostream.get_used_size()
Removes backwards compatibility.
Timo Sirainen [Thu, 8 Mar 2018 12:08:50 +0000 (14:08 +0200)]
lib-test: test-ostream - Implement the new ostream.get_buffer_used_size() API
It's implemented the same way as the old get_used_size(). The default
implementation for get_buffer_avail_size() also works with this.
Timo Sirainen [Thu, 8 Mar 2018 12:08:43 +0000 (14:08 +0200)]
lib: ostream-buffer - Implement the new ostream.get_buffer_used_size() API
It's implemented the same way as the old get_used_size(). The default
implementation for get_buffer_avail_size() also works with this.
Timo Sirainen [Thu, 8 Mar 2018 12:07:34 +0000 (14:07 +0200)]
lib: ostream-file - Implement the new ostream.get_buffer_used_size() API
It's implemented the same way as the old get_used_size(). The default
implementation for get_buffer_avail_size() also works with this.
Timo Sirainen [Sat, 24 Feb 2018 20:04:49 +0000 (22:04 +0200)]
lib-compression: Implement the new ostream.get_buffer_used/avail_size() APIs
The avail_size() implementation isn't fully correct for bzlib/zlib/lzma.
Fixing it requires larger changes though.
Timo Sirainen [Sat, 24 Feb 2018 20:04:27 +0000 (22:04 +0200)]
lib-ssl-iostream: Implement the new ostream.get_buffer_used/avail_size() APIs
Timo Sirainen [Sat, 24 Feb 2018 20:04:11 +0000 (22:04 +0200)]
lib: ostream-multiplex - Implement the new get_buffer_used/avail_size() APIs
Timo Sirainen [Mon, 26 Feb 2018 13:17:36 +0000 (15:17 +0200)]
lib: Remove ostream-escaped
It can't implement o_stream_get_buffer_avail_size() correctly with its
current API. Nothing uses it currently, so easier to just remove it
entirely.
Timo Sirainen [Sat, 24 Feb 2018 20:03:10 +0000 (22:03 +0200)]
lib: Change/clarify o_stream_get_buffer_used/avail_size() APIs
ostream.get_used_size() is deprecated and replaced by get_buffer_used_size()
and get_buffer_avail_size().
Aki Tuomi [Sat, 20 Jan 2018 13:44:56 +0000 (15:44 +0200)]
auth: db-lua - Do not assert-crash if given parameter was not auth_request
Use luaL_error instead that will back out more gracefully.
Fixes Panic: file db-lua.c: line 279 (auth_lua_check_auth_request): assertion failed: (lua_istable(script->L, arg))
Aki Tuomi [Sat, 20 Jan 2018 18:33:01 +0000 (20:33 +0200)]
auth: db-lua - Use luaL_error correctly
Aki Tuomi [Thu, 8 Jun 2017 09:18:30 +0000 (12:18 +0300)]
lib-auth: Require being connected before adding requests
Aki Tuomi [Mon, 5 Jun 2017 09:44:06 +0000 (12:44 +0300)]
lib-auth: Prevent double-disconnect
When disconnecting, it's possible that
disconnect gets called twice by some callback,
so protect it with a boolean.
Fixes Panic: file hash.c: line 152 (hash_table_clear): assertion failed: (table->frozen == 0)
Stephan Bosch [Tue, 6 Mar 2018 21:11:34 +0000 (22:11 +0100)]
lib-lda: Do not convert "From:" message address to STMP address, just to make a string for logging.
This leads to problems when the message address (RFC5322) has UTF-8 code points
in the local part, which is (currently) allowed for message addresses, but not
for SMTP addresses (RFC5321).
Martti Rannanjärvi [Tue, 6 Mar 2018 11:27:17 +0000 (13:27 +0200)]
master: Strip '\n' from suid_dumpable read buffer before str_to_uint()
Timo Sirainen [Thu, 1 Mar 2018 16:38:43 +0000 (18:38 +0200)]
master: Improve "core not dumped" error messages with Linux
Recommend setting /proc/fs/suid_dumpable to 2 and
/proc/sys/kernel/core_pattern to absolute path, if they already aren't.
Timo Sirainen [Thu, 1 Mar 2018 16:37:43 +0000 (18:37 +0200)]
master: Add explanation URL to "core dumps disabled" and "core not dumped" errors
Aki Tuomi [Mon, 19 Feb 2018 17:22:42 +0000 (19:22 +0200)]
global: Use unix_socket capability in connection.c
This is more reliably way to correctly create input stream
with unix socket capability for passing fd's around
Aki Tuomi [Mon, 19 Feb 2018 17:09:46 +0000 (19:09 +0200)]
lib: connection - only switch created iostreams
Fixes imap-hibernate: Fatal: master: service(imap-hibernate):
child killed with signal 11 (core dumps disabled)
Broken in
086b73efd1a5812a64acc951366a499d325509a6
Stephan Bosch [Sat, 27 Jan 2018 23:14:21 +0000 (00:14 +0100)]
submission: Properly handle omission of required authentication for relay connection.
Particularly, do not forward the 530 error to the client. Instead, log the
problem and close the client connection with an internal error.
Stephan Bosch [Sat, 27 Jan 2018 23:10:11 +0000 (00:10 +0100)]
lib-smtp: server: Fix overwriting a previously submitted reply.
The submitted flag was not reset, nor was the replies_submitted counter
decreased. This caused assertion failures.
Stephan Bosch [Mon, 5 Mar 2018 20:02:49 +0000 (21:02 +0100)]
submission: Limit the set of capabilities to those that are actually supported.
Particularly, the XCLIENT capability was inappropriately enabled when the
backend MTA announced support. XCLIENT is not supported by Dovecot post-login.
Stephan Bosch [Thu, 1 Mar 2018 13:53:11 +0000 (14:53 +0100)]
lib-smtp: server: Only accept XCLIENT command when the XCLIENT capability is active.
Report "502 Unsupported command" otherwise. Before, it would complain about the
client not being trusted, which is confusing.
Stephan Bosch [Thu, 1 Mar 2018 13:52:06 +0000 (14:52 +0100)]
lib-smtp: client: Make clear that XCLIENT is not sent if the server has no support.
Stephan Bosch [Sat, 23 Dec 2017 21:51:37 +0000 (22:51 +0100)]
lib-smtp: client: Add assertion to smtp_client_command_write().
Makes sure it is not used after the command is submitted.
Stephan Bosch [Sat, 23 Dec 2017 21:49:57 +0000 (22:49 +0100)]
lib-smtp: client: Fix smtp_client_command_name_equals() to work properly after the command is submitted.
At command submission, CRLF is appended to command data. This messed up the name comparison.
This in turn caused a spurious QUIT command to be sent to the server at connection close.
Stephan Bosch [Sat, 23 Dec 2017 21:14:16 +0000 (22:14 +0100)]
lib-smtp: client: Make smtp_client_connection_commands_abort() more reliable by copying the command lists.
Copy the current lists of queued and waiting commands and reference each command before calling smtp_client_command_abort().
Aborting one command can cause other dependent commands to be aborted (in a transaction or from submission service), which could have caused trouble in this function.
Stephan Bosch [Sat, 23 Dec 2017 21:04:13 +0000 (22:04 +0100)]
lib-smtp: client: Make smtp_client_connection_commands_fail_reply() more reliable by copying the command lists.
Copy the current lists of queued and waiting commands and reference each command before calling smtp_client_command_fail_reply().
Failing one command can cause other dependent commands to be aborted (in a transaction or from submission service), which could have caused trouble in this function.
Problems would likely occur at connection disconnect.
Timo Sirainen [Thu, 1 Feb 2018 21:04:12 +0000 (23:04 +0200)]
dsync: Log a warning if copying a mail fails unexpectedly
Don't log a warning if it happens because the source message was expunged.
That's an expected failure.
Stephan Bosch [Wed, 7 Mar 2018 14:14:52 +0000 (15:14 +0100)]
submission-login: Only send HELO domain to post-login service when it is valid.
Stephan Bosch [Wed, 7 Mar 2018 14:03:42 +0000 (15:03 +0100)]
lib-smtp: server: Fix application of pre-login HELO domain when no post-login HELO is issued.
The substituted domain was not marked as valid, which caused the HELO field of
the produced received line to be set to 'unknown'.
Stephan Bosch [Sun, 4 Mar 2018 22:43:55 +0000 (23:43 +0100)]
lib-smtp: server: RCPT command: Make sure conn->state.pending_rcpt_cmds cannot decrement through zero.
Added assertion.
Stephan Bosch [Sun, 4 Mar 2018 22:42:45 +0000 (23:42 +0100)]
lib-smtp: server: MAIL command: Make sure conn->state.pending_mail_cmds cannot decrement through zero.
Added assertion.
Stephan Bosch [Sun, 4 Mar 2018 22:35:53 +0000 (23:35 +0100)]
lib-smtp: server: Fix double decrement of RCPT pending counter upon error.
The pending counter was sometimes decremented twice in specific error
conditions, leading to an assert panic in the DATA command. This was caused by
some dead code. If the MAIL command failed in a pipeline before the RCPT command,
the assert was triggered.
Panic was:
Panic: file smtp-server-cmd-data.c: line 354 (cmd_data_start): assertion failed: (conn->state.pending_mail_cmds == 0 && conn->state.pending_rcpt_cmds == 0)
Stephan Bosch [Wed, 31 Jan 2018 23:14:55 +0000 (00:14 +0100)]
lib-lda: Parse Return-Path header using RFC5322 (IMF) "path" syntax, rather than RFC5321 (SMTP) "Path" syntax.
SMTP does not allow white space, which causes all kinds of trouble when the
address is parsed from a header field.
Stephan Bosch [Wed, 31 Jan 2018 23:08:40 +0000 (00:08 +0100)]
lib-mail: message-address: Add support for parsing RFC5322 "path" syntax.
This is either a single angle-addr or just <>. This path syntax differs from the
RFC5321 "Path" syntax in that it allows whitespace, which is very important when
it is parsed from a header.
Ville Savolainen [Mon, 12 Mar 2018 10:42:46 +0000 (12:42 +0200)]
Fixup "lib-mail: message_address_write() - don't crash with NULL address"
Remove content that did not belong to
9f2fe2782224266bf2a403f430de011cf3b9da9d
Timo Sirainen [Fri, 2 Feb 2018 16:07:43 +0000 (18:07 +0200)]
lib-storage: Fix mailbox rename checking child mailbox name lengths
It was supposed to prevent allowing renames that would cause any child
mailbox name to be too long. However, the check wasn't working.
Timo Sirainen [Thu, 1 Mar 2018 15:59:34 +0000 (17:59 +0200)]
lib-storage: Fix memory leak when search accessed headers but found no mails
For example fetching headers with UID FETCH for a nonexistent UID.
Timo Sirainen [Thu, 1 Mar 2018 15:55:50 +0000 (17:55 +0200)]
lib-storage: Code cleanup - remove unnecessary temporary variable
Josef 'Jeff' Sipek [Mon, 29 Jan 2018 13:43:05 +0000 (08:43 -0500)]
global: start relying on file_lock_free(NULL) being a no-op
Cleanup performed with the following semantic patch:
@@
expression E;
@@
- if (E != NULL) {
- file_lock_free(&E);
- }
+ file_lock_free(&E);
Josef 'Jeff' Sipek [Mon, 29 Jan 2018 13:41:03 +0000 (08:41 -0500)]
global: start relying on mailbox_header_lookup_unref(NULL) being a no-op
Cleanup performed with the following semantic patch:
@@
expression E;
@@
- if (E != NULL) {
- mailbox_header_lookup_unref(&E);
- }
+ mailbox_header_lookup_unref(&E);
Josef 'Jeff' Sipek [Mon, 29 Jan 2018 13:40:27 +0000 (08:40 -0500)]
lib-storage: mailbox_header_lookup_unref(NULL) should be a no-op
Josef 'Jeff' Sipek [Mon, 29 Jan 2018 13:38:45 +0000 (08:38 -0500)]
lib-mail: start relying on mail_html2text_deinit(NULL) being a no-op
Cleanup performed with the following semantic patch:
@@
expression E;
@@
- if (E != NULL) {
- mail_html2text_deinit(&E);
- }
+ mail_html2text_deinit(&E);
Josef 'Jeff' Sipek [Mon, 29 Jan 2018 13:38:16 +0000 (08:38 -0500)]
lib-mail: mail_html2text_deinit(NULL) should be a no-op
Josef 'Jeff' Sipek [Thu, 9 Nov 2017 15:37:34 +0000 (10:37 -0500)]
global: start relying on ssl_iostream_destroy(NULL) being a no-op
Cleanup performed with the following semantic patch:
@@
expression E;
@@
- if (E != NULL) {
- ssl_iostream_destroy(&E);
- }
+ ssl_iostream_destroy(&E);
Josef 'Jeff' Sipek [Thu, 9 Nov 2017 15:39:25 +0000 (10:39 -0500)]
ssl-iostream: ssl_iostream_destroy(NULL) should be a no-op
Josef 'Jeff' Sipek [Thu, 9 Nov 2017 15:34:21 +0000 (10:34 -0500)]
global: start relying on iostream_proxy_unref(NULL) being a no-op
Cleanup performed with the following semantic patch:
@@
expression E;
@@
- if (E != NULL) {
- iostream_proxy_unref(&E);
- }
+ iostream_proxy_unref(&E);
Josef 'Jeff' Sipek [Thu, 9 Nov 2017 15:36:02 +0000 (10:36 -0500)]
lib: iostream_proxy_unref(NULL) should be a no-op
Josef 'Jeff' Sipek [Thu, 9 Nov 2017 15:30:51 +0000 (10:30 -0500)]
global: start relying on str_free(NULL) being a no-op
Cleanup performed with the following semantic patch:
@@
expression E;
@@
- if (E != NULL) {
- str_free(&E);
- }
+ str_free(&E);
Josef 'Jeff' Sipek [Thu, 9 Nov 2017 15:32:32 +0000 (10:32 -0500)]
lib: str_free(NULL) should be a no-op
Stephan Bosch [Mon, 19 Feb 2018 12:27:39 +0000 (13:27 +0100)]
lib-http: client: Add event fields for the number of bytes sent and received for each request in the last attempt.
Stephan Bosch [Mon, 19 Feb 2018 12:24:57 +0000 (13:24 +0100)]
lib-http: response parser: Record input stream offset for the start of the last parsed response.
Stephan Bosch [Mon, 19 Feb 2018 12:20:11 +0000 (13:20 +0100)]
lib-http: message parsers: Record beginning of parsed data.
Stephan Bosch [Sun, 21 Jan 2018 14:46:49 +0000 (15:46 +0100)]
lib-http: client: Trigger special events when a request is finished, retried or redirected.
Stephan Bosch [Sun, 21 Jan 2018 15:19:41 +0000 (16:19 +0100)]
lib-http: client: Record last status code in the request object.
Stephan Bosch [Sun, 21 Jan 2018 15:08:55 +0000 (16:08 +0100)]
lib-http: client: Reset redirect counter when the request is retried.
The absence of this reset caused problems when there was a redirect limit and
the request was retried, in which case the limit is reached too soon.
Stephan Bosch [Sun, 21 Jan 2018 15:06:19 +0000 (16:06 +0100)]
lib-http: client: Add "host" and "port" fields to request event.
Stephan Bosch [Sun, 21 Jan 2018 15:00:31 +0000 (16:00 +0100)]
lib-http: client: Use the new http_url_get_port*() functions.
Stephan Bosch [Sun, 21 Jan 2018 14:54:18 +0000 (15:54 +0100)]
lib-http: url: Add functions that obtain the effective port for the URL.
When no port is set for the URL, it is set to 0. These functions substitute the
applicable default.
Stephan Bosch [Sun, 21 Jan 2018 14:50:37 +0000 (15:50 +0100)]
lib-http: Create http-common.h, which contains global definitions shared by client and server.
Currently contains only the default HTTP port definitions that used to be
private to the client.
Stephan Bosch [Fri, 23 Feb 2018 20:09:42 +0000 (21:09 +0100)]
lmtp: proxy: Do not forward 421 reply (server shutdown) from backend.
This closes the LMTP connection implicitly. Instead, translate it into a 451
4.4.0 response, just like all the other connection-related failures.
Stephan Bosch [Fri, 23 Feb 2018 19:49:48 +0000 (20:49 +0100)]
lib-smtp: client: transaction: Better document the failure handling for incomplete transactions.
Stephan Bosch [Fri, 23 Feb 2018 19:43:50 +0000 (20:43 +0100)]
lib-smtp: client: transaction: Don't call the DATA callbacks upon failure until the transaction is complete.
The transaction is not complete until smtp_client_transaction_send() is called.
Stephan Bosch [Fri, 23 Feb 2018 17:21:49 +0000 (18:21 +0100)]
lib-smtp: client: transaction: Properly advance the transaction to the DATA state once the DATA command is to be sent.
Stephan Bosch [Fri, 23 Feb 2018 17:16:57 +0000 (18:16 +0100)]
lib-smtp: client: transaction: Use the correct callback for finish timeout.
Timo Sirainen [Wed, 7 Feb 2018 14:31:12 +0000 (16:31 +0200)]
global: Set extra_groups=$default_internal_group for various services
Services with user=$default_internal_user are expected to already set the
group properly. This change is adding the group for mail processes.
Timo Sirainen [Wed, 7 Feb 2018 14:00:46 +0000 (16:00 +0200)]
lib: restrict_access_by_env() - Preserve RESTRICT_SETEXTRAGROUPS if root isn't dropped
This way service { extra_groups } is preserved for the whole duration of the
process lifetime (e.g. lmtp, doveadm)
Timo Sirainen [Wed, 7 Feb 2018 11:06:06 +0000 (13:06 +0200)]
imap-hibernate: Change imap-hibernate default socket permissions to allow default_internal_group
It would be enough to allow only imap processes access to it, but it
shouldn't really harm to allow other processes access to it also.
Timo Sirainen [Wed, 7 Feb 2018 11:05:09 +0000 (13:05 +0200)]
stats: Change stats-writer default socket permissions to allow default_internal_group
It's important that all dovecot processes can send statistics to the stats
process.
Timo Sirainen [Wed, 7 Feb 2018 11:04:03 +0000 (13:04 +0200)]
dict: Change dict and dict-async default socket permissions to allow default_internal_group
Many mail processes need to talk to dict. This makes it easier to enable
dict without having to configure permissions.
Timo Sirainen [Wed, 7 Feb 2018 11:03:23 +0000 (13:03 +0200)]
master: Add default_internal_group setting, defaulting to "dovecot"
It's expected that this is the primary group of the default_internal_user.
This group will be used to provide access to sockets that are generally
required by all Dovecot processes, but aren't safe enough to be allowed
completely open access from untrusted processes.
Stephan Bosch [Thu, 15 Feb 2018 23:44:07 +0000 (00:44 +0100)]
lib-smtp: server: Remove inappropriate assert from MAIL command.
When the MAIL command is next to reply, it is possible to have RCPT commands
that are still pending.
Stephan Bosch [Sat, 17 Feb 2018 14:02:53 +0000 (15:02 +0100)]
lib-http: client: Simplified return code handling in http_client_request_send_real().
Stephan Bosch [Sat, 17 Feb 2018 13:54:47 +0000 (14:54 +0100)]
lib-http: client: Make sure output is used only when valid in http_client_request_send_real().
Stephan Bosch [Sat, 17 Feb 2018 11:03:41 +0000 (12:03 +0100)]
lib-http: client: Uncork and flush the output stream explicitly after continuing request payload.
This allows detecting any output stream errors.
Stephan Bosch [Sat, 17 Feb 2018 14:17:06 +0000 (15:17 +0100)]
lib-http: client: Hold reference to the connection while continuing request payload.
Subsequent changes may cause the connection to be destroyed while sending.
Stephan Bosch [Sat, 17 Feb 2018 11:01:47 +0000 (12:01 +0100)]
lib-http: client: Continue sending request payload in a separate function.
Stephan Bosch [Sat, 17 Feb 2018 14:08:44 +0000 (15:08 +0100)]
lib-http: client: Hold reference to the connection while sending the next request.
Subsequent changes may cause the connection to be destroyed while sending.
Stephan Bosch [Sat, 17 Feb 2018 10:32:37 +0000 (11:32 +0100)]
lib-http: client: Perform output stream error handling in one place.
Stephan Bosch [Sat, 17 Feb 2018 10:10:05 +0000 (11:10 +0100)]
lib-http: client: Make http_client_connection_lost() available outside http-client-connection.c.
Stephan Bosch [Sat, 17 Feb 2018 10:08:20 +0000 (11:08 +0100)]
lib-http: client: Handle output stream errors in a separate function.
Stephan Bosch [Sat, 17 Feb 2018 00:25:50 +0000 (01:25 +0100)]
lib-http: client: Flush and check output for errors after uncorking.
Otherwise, a disconnection event may be missed.