]> git.ipfire.org Git - thirdparty/dovecot/core.git/log
thirdparty/dovecot/core.git
7 years agolib-mail: Add message_part_has_attachment
Aki Tuomi [Fri, 10 Nov 2017 12:32:44 +0000 (14:32 +0200)] 
lib-mail: Add message_part_has_attachment

7 years agolib-smtp: client: Fix timeout leak sometimes occurring at unexpected remote disconnect.
Stephan Bosch [Sun, 28 Jan 2018 10:44:26 +0000 (11:44 +0100)] 
lib-smtp: client: Fix timeout leak sometimes occurring at unexpected remote disconnect.

While disconnected, newly submitted commands are queued, yet scheduled for
immediate failure. The timeout used for that was not cleaned up.

7 years agodovecot-config: Update lib-stats directory to lib-old-stats
Timo Sirainen [Wed, 27 Dec 2017 10:05:50 +0000 (12:05 +0200)] 
dovecot-config: Update lib-stats directory to lib-old-stats

7 years agosubmission-login: Fixed handling of ssl=required for trusted connections.
Stephan Bosch [Sat, 23 Dec 2017 18:40:09 +0000 (19:40 +0100)] 
submission-login: Fixed handling of ssl=required for trusted connections.

Normally, SSL is not required for trusted connections (e.g. localhost), but submission-login did not follow this standard.

7 years agosubmission: Restructure handling of QUIT command.
Stephan Bosch [Sun, 24 Dec 2017 14:12:36 +0000 (15:12 +0100)] 
submission: Restructure handling of QUIT command.

- Avoid explicitly proxying QUIT command when the proxy connection is not ready: in that case the SMTP client connection will just send QUIT if appropriate, without waiting for reply.
- Add timeout for proxied QUIT command, so that there are no problems when the relay server hangs after QUIT (addresses FIXME).

7 years agosubmission: Dropped unused field from struct client.
Stephan Bosch [Sun, 24 Dec 2017 13:52:07 +0000 (14:52 +0100)] 
submission: Dropped unused field from struct client.

7 years agosubmission-login: Fix pipelining of commands beyond AUTH.
Stephan Bosch [Sun, 24 Dec 2017 11:17:48 +0000 (12:17 +0100)] 
submission-login: Fix pipelining of commands beyond AUTH.

The master_data_prefix was initialized wrong; it omitted the expected '\0' byte after the helo field.

7 years agosubmission: Initialize proxy connection before starting the SMTP server connection.
Stephan Bosch [Sun, 24 Dec 2017 11:15:29 +0000 (12:15 +0100)] 
submission: Initialize proxy connection before starting the SMTP server connection.

The smtp_server_connection_login() function gets pre-login connection data from login service, which can contain commands.
The execution of commands expects the proxy connection object to be initialized.

7 years agolib-program-client: Make an explicit enum for the exit code.
Stephan Bosch [Fri, 26 Jan 2018 19:37:32 +0000 (20:37 +0100)] 
lib-program-client: Make an explicit enum for the exit code.

Before, the meaning of the code was confusing, since the actual program returns
a different set of values.

7 years agolib-program-client: local: Add test for big data I/O.
Stephan Bosch [Sat, 20 Jan 2018 20:32:07 +0000 (21:32 +0100)] 
lib-program-client: local: Add test for big data I/O.

7 years agolib-program-client: Document the purpose of the use_dotstream setting.
Stephan Bosch [Wed, 24 Jan 2018 00:17:59 +0000 (01:17 +0100)] 
lib-program-client: Document the purpose of the use_dotstream setting.

7 years agolib-program-client: Add comments to program_input/program_output functions.
Stephan Bosch [Tue, 23 Jan 2018 20:14:18 +0000 (21:14 +0100)] 
lib-program-client: Add comments to program_input/program_output functions.

7 years agolib-program-client: Flush/finish the output stream after o_stream_send_istream().
Stephan Bosch [Mon, 22 Jan 2018 22:43:18 +0000 (23:43 +0100)] 
lib-program-client: Flush/finish the output stream after o_stream_send_istream().

There may still be data in the output stream buffer. Failing to flush this
leads to truncated output. For the output towards the program o_stream_finish()
is used, since there may be an ostream_dot in between (or something else for
future features).

7 years agolib-program-client: remote: Don't change exit_code in program_client_remote_disconnec...
Stephan Bosch [Wed, 24 Jan 2018 00:09:16 +0000 (01:09 +0100)] 
lib-program-client: remote: Don't change exit_code in program_client_remote_disconnect() when program_input is already NULL.

When the program_input is NULL, the stream is finished, meaning that the
exit_code is set based on the return code. There can be a program_input for
remote streams, even when the program produces no output.

7 years agolib-program-client: Simplify cleanup of dot input stream in program_client_program_in...
Stephan Bosch [Tue, 23 Jan 2018 20:38:27 +0000 (21:38 +0100)] 
lib-program-client: Simplify cleanup of dot input stream in program_client_program_input().

7 years agolib-program-client: Restructure reading input from program to simplify handling of...
Stephan Bosch [Tue, 23 Jan 2018 20:24:35 +0000 (21:24 +0100)] 
lib-program-client: Restructure reading input from program to simplify handling of dot input stream.

7 years agolib-program-client: Use reliable means of checking for input stream EOF.
Stephan Bosch [Mon, 22 Jan 2018 22:25:34 +0000 (23:25 +0100)] 
lib-program-client: Use reliable means of checking for input stream EOF.

7 years agolib-program-client: Remove check for -2 returned from i_stream_read_more().
Stephan Bosch [Wed, 24 Jan 2018 20:48:07 +0000 (21:48 +0100)] 
lib-program-client: Remove check for -2 returned from i_stream_read_more().

The stream must have space for at least 1 byte.

7 years agolib-program-client: Remove useless stream eof check.
Stephan Bosch [Tue, 23 Jan 2018 21:16:26 +0000 (22:16 +0100)] 
lib-program-client: Remove useless stream eof check.

It also looks to be problematic.

7 years agoimap: support for FETCH SNIPPET
Josef 'Jeff' Sipek [Thu, 4 Jan 2018 17:44:16 +0000 (12:44 -0500)] 
imap: support for FETCH SNIPPET

7 years agoimapc: Fix deleting mailbox
Timo Sirainen [Mon, 22 Jan 2018 11:33:29 +0000 (13:33 +0200)] 
imapc: Fix deleting mailbox

Broken by f8f30bd27e41e1041a8de0b97f35d7d75e0a412e

7 years agolib-auth: Remove request after abort
Aki Tuomi [Fri, 26 Jan 2018 08:55:54 +0000 (10:55 +0200)] 
lib-auth: Remove request after abort

Otherwise the request will still stay in hash table
and get dereferenced when all requests are aborted
causing an attempt to access free'd memory.

Found by Apollon Oikonomopoulos <apoikos@debian.org>

Broken in 1a29ed2f96da1be22fa5a4d96c7583aa81b8b060

7 years agolib-auth: Fix memory leak in auth_client_request_abort()
Timo Sirainen [Mon, 18 Dec 2017 14:50:51 +0000 (16:50 +0200)] 
lib-auth: Fix memory leak in auth_client_request_abort()

This caused memory leaks when authentication was aborted. For example
with IMAP:

a AUTHENTICATE PLAIN
*

Broken by 9137c55411aa39d41c1e705ddc34d5bd26c65021

7 years agolib-index: Write forced cache decision changes immediately to cache file
Timo Sirainen [Wed, 24 Jan 2018 16:01:48 +0000 (18:01 +0200)] 
lib-index: Write forced cache decision changes immediately to cache file

When mail_always/never_cache_fields doesn't match the current caching
decisions in the cache file, write the updated decisions to the file.

7 years agolib-index: Code cleanup for reading caching decisions
Timo Sirainen [Wed, 24 Jan 2018 16:01:23 +0000 (18:01 +0200)] 
lib-index: Code cleanup for reading caching decisions

No functional changes.

7 years agolib-index: Finish fixing removal of forced cache decisions from existing cache files
Timo Sirainen [Wed, 24 Jan 2018 15:58:57 +0000 (17:58 +0200)] 
lib-index: Finish fixing removal of forced cache decisions from existing cache files

6ef2504d020461b0f480766c41596595a4300023 didn't fix it for already known
fields.

7 years agolib-index: Fix removal of forced cache decisions from existing cache files
Timo Sirainen [Mon, 22 Jan 2018 22:04:28 +0000 (00:04 +0200)] 
lib-index: Fix removal of forced cache decisions from existing cache files

The forced-flags are written to the cache file when the file is created.
They were also read back, and the force-flag was preserved even when the
configuration was removed.

7 years agolib-index: Fix adding forced cache decisions to existing cache files
Timo Sirainen [Mon, 22 Jan 2018 15:38:32 +0000 (17:38 +0200)] 
lib-index: Fix adding forced cache decisions to existing cache files

If a field already existed in the cache file, the cache decision from the
file was always used. This caused force-decisions to be ignored.

7 years agoauth: passdb-cache - Verify credentials with worker when enabled
Aki Tuomi [Mon, 8 Jan 2018 13:08:10 +0000 (15:08 +0200)] 
auth: passdb-cache - Verify credentials with worker when enabled

7 years agoauth: Expose auth_request_verify_plain_callback_finish
Aki Tuomi [Mon, 8 Jan 2018 13:00:17 +0000 (15:00 +0200)] 
auth: Expose auth_request_verify_plain_callback_finish

7 years agoauth-worker: Support PASSW request
Aki Tuomi [Mon, 8 Jan 2018 13:09:28 +0000 (15:09 +0200)] 
auth-worker: Support PASSW request

This will attempt to verify given credentials.

7 years agoauth-worker: Add auth_worker_auth_request_new
Aki Tuomi [Mon, 8 Jan 2018 12:52:10 +0000 (14:52 +0200)] 
auth-worker: Add auth_worker_auth_request_new

Replaces worker_auth_request_new, moves in
check for username and service. Simplifies code.

7 years agoauth: passdb-blocking - Expose passdb_blocking_auth_worker_reply_parse
Aki Tuomi [Tue, 2 Jan 2018 10:33:50 +0000 (12:33 +0200)] 
auth: passdb-blocking - Expose passdb_blocking_auth_worker_reply_parse

Enables sharing code with passdb cache

7 years agoimapc: Fix imap_features=no-msn-updates to not fail on SELECT
Timo Sirainen [Tue, 16 Jan 2018 16:17:00 +0000 (18:17 +0200)] 
imapc: Fix imap_features=no-msn-updates to not fail on SELECT

The initial EXISTS reply shouldn't be ignored, only the following ones.

7 years agoimapc: Add imapc_features=no-msn-updates
Timo Sirainen [Mon, 25 Dec 2017 09:10:19 +0000 (11:10 +0200)] 
imapc: Add imapc_features=no-msn-updates

This is a stricter version of fetch-msn-workarounds. The MSNs aren't trusted
at all. This means any new untagged EXISTS and EXPUNGE replies are ignored,
as well as untagged FETCH replies that don't include UID.

A potential downside with this feature is that UID FETCH/STORE commands
sent to expunged messages will likely fail without the IMAP client being
notified of the EXPUNGEs. New mails are also not noticed, so this should
be used only when it's known that the clients don't keep the connection
open for long.

7 years agoimapc: Fix sending initial FETCH after reconnection SELECTs mailbox
Timo Sirainen [Mon, 25 Dec 2017 14:11:26 +0000 (16:11 +0200)] 
imapc: Fix sending initial FETCH after reconnection SELECTs mailbox

Move sending the FETCH when the SELECT returns tagged OK reply instead of
delaying it until mailbox is next synced. Most importantly this allows
sending the FETCH before any retried commands that are also sent after
SELECT receives tagged reply.

7 years agoimapc: gmail-migration: Fetch X-GM-MSGID for new mails as well
Timo Sirainen [Mon, 25 Dec 2017 20:48:00 +0000 (22:48 +0200)] 
imapc: gmail-migration: Fetch X-GM-MSGID for new mails as well

I'm not sure why it was originally restricted only for the initial FETCH.
Fetching GUIDs for new mails can be just as useful.

7 years agoimapc: Move imapc_mailbox_fetch_state*() to imapc-mailbox.c
Timo Sirainen [Mon, 25 Dec 2017 18:21:40 +0000 (20:21 +0200)] 
imapc: Move imapc_mailbox_fetch_state*() to imapc-mailbox.c

Mainly to make the next commit smaller.

7 years agoimapc: Handle untagged UIDVALIDITY immediately
Timo Sirainen [Mon, 25 Dec 2017 17:19:09 +0000 (19:19 +0200)] 
imapc: Handle untagged UIDVALIDITY immediately

This is part of the changes to fix mailbox resyncing after reconnect.

7 years agoimapc: If mailbox select fails, rollback any changes done to it
Timo Sirainen [Mon, 25 Dec 2017 17:34:31 +0000 (19:34 +0200)] 
imapc: If mailbox select fails, rollback any changes done to it

Required by the following changes that start adding changes immediately
after SELECT. If the initial syncing doesn't finish successfully, these
changes need to be reverted.

7 years agoimapc: Keep "selected" state TRUE only while mailbox is successfully SELECTed
Timo Sirainen [Mon, 25 Dec 2017 17:33:33 +0000 (19:33 +0200)] 
imapc: Keep "selected" state TRUE only while mailbox is successfully SELECTed

7 years agoimapc: Fix leaking mail_index_view on delayed expunge handling
Timo Sirainen [Wed, 17 Jan 2018 13:05:38 +0000 (15:05 +0200)] 
imapc: Fix leaking mail_index_view on delayed expunge handling

Fixes:
Panic: Leaked view for index (in-memory index): Opened in imapc-mailbox.c:47

7 years agolib-imap-client: Avoid "Unknown tag" errors for aborted commands
Timo Sirainen [Wed, 17 Jan 2018 13:03:06 +0000 (15:03 +0200)] 
lib-imap-client: Avoid "Unknown tag" errors for aborted commands

If mailbox is closed before all command replies were received, the commands
were aborted but they'll still receive the replies from server. Remember
the aborted commands' tag numbers so they can be ignored.

7 years agolib-imap-client: Fix reason text when unselecting mailbox aborts commands
Timo Sirainen [Wed, 17 Jan 2018 13:02:09 +0000 (15:02 +0200)] 
lib-imap-client: Fix reason text when unselecting mailbox aborts commands

7 years agolib-imap-client: Add asserts for reconnect_command_count
Timo Sirainen [Mon, 25 Dec 2017 19:31:05 +0000 (21:31 +0200)] 
lib-imap-client: Add asserts for reconnect_command_count

7 years agolib-imap-client: Delay sending more commands while SELECT is running
Timo Sirainen [Mon, 25 Dec 2017 19:29:06 +0000 (21:29 +0200)] 
lib-imap-client: Delay sending more commands while SELECT is running

7 years agolib-imap-client: After reconnection send retried commands last
Timo Sirainen [Mon, 25 Dec 2017 16:49:15 +0000 (18:49 +0200)] 
lib-imap-client: After reconnection send retried commands last

Previously only SELECT was sent before others. This allows sending more
commands on reconnection before the retried commands.

7 years agoauth: client protocol: Recognize empty initial response field as an absent initial...
Stephan Bosch [Wed, 3 Jan 2018 18:46:58 +0000 (19:46 +0100)] 
auth: client protocol: Recognize empty initial response field as an absent initial response for older clients.

Particularly, Exim sends an empty initial response field in the AUTH request for
an authentication command that has no initial response. Originally, Dovecot
allowed this, but this was recently changed so that the EXTERNAL SASL mechanism
works properly from ManageSieve. This commit makes it allowed again for older
authentication clients to send an empty initial response field for an
authentication command that has no initial response part. Sending '=' for an
empty initial response is still allowed in general.

7 years agoauth: client protocol: Record minor version for authentication client connection.
Stephan Bosch [Wed, 3 Jan 2018 18:26:33 +0000 (19:26 +0100)] 
auth: client protocol: Record minor version for authentication client connection.

7 years agoglobal: Rename timing API to stats-dist API
Timo Sirainen [Mon, 18 Dec 2017 13:21:44 +0000 (15:21 +0200)] 
global: Rename timing API to stats-dist API

The API wasn't really about timings specifically, but about statistics in
general. The new stats service was already using it for tracking statistics
for non-timing related numbers.

7 years agolib/timing - helper for arbitrary percentiles
Phil Carmody [Tue, 12 Dec 2017 13:21:17 +0000 (15:21 +0200)] 
lib/timing - helper for arbitrary percentiles

Replace fixed 95th %-ile helper with request for arbitrary
percentiles, or even arbitrary fractions of the range.

Signed-off-by: Phil Carmody <phil@dovecot.fi>
7 years agodoveconf: add hostname to output
Jarkko Mourujärvi [Thu, 28 Dec 2017 11:53:14 +0000 (13:53 +0200)] 
doveconf: add hostname to output

7 years agolib-http: Only depend on iostream openssl lib if building with openssl
Aki Tuomi [Thu, 28 Dec 2017 08:47:28 +0000 (10:47 +0200)] 
lib-http: Only depend on iostream openssl lib if building with openssl

Fixes build without openssl

7 years agolib-storage: mail_storage_set_index_error() - handle NULL index error
Timo Sirainen [Mon, 25 Dec 2017 16:24:35 +0000 (18:24 +0200)] 
lib-storage: mail_storage_set_index_error() - handle NULL index error

This avoids assert-crashing later on in mail*_get_last_internal_error().

This could potentially be an assert instead of setting it as "BUG", but
it looks like there are various code paths in lib-index that return -1
without setting an error. (That's to avoid duplicate error logging,
although it could now be fixed with mail_index_set_error_nolog().)

7 years agolib-storage: Set index error on transaction commit() callback
Timo Sirainen [Mon, 25 Dec 2017 16:18:14 +0000 (18:18 +0200)] 
lib-storage: Set index error on transaction commit() callback

The commit callback is setting errors to storage. However, it's being
called from mail_index_transaction_commit() whose callers are expecting
the error to be in index. If that index error was attempted to be used,
it could have been wrong or NULL. Fix this by setting the same storage
error also to the index.

7 years agolib-index: Add mail_index_set_error_nolog()
Timo Sirainen [Mon, 25 Dec 2017 16:17:57 +0000 (18:17 +0200)] 
lib-index: Add mail_index_set_error_nolog()

7 years agodsync: Add per-mailbox sync lock that is always used.
Timo Sirainen [Thu, 28 Dec 2017 12:10:23 +0000 (14:10 +0200)] 
dsync: Add per-mailbox sync lock that is always used.

Both importing and exporting gets the lock before they even sync the
mailbox. The lock is kept until the import/export finishes. This guarantees
that no matter how dsync is run, two dsyncs can't be working on the same
mailbox at the same time.

This lock is in addition to the optional per-user lock enabled by the -l
parameter. If the -l parameter is used, the same lock timeout is used for
the per-mailbox lock. Otherwise 30s timeout is used.

This should help to avoid email duplication when replication is enabled for
public namespaces, and maybe in some other rare situations as well.

7 years agolib: Make file_lock_free(NULL) no-op
Timo Sirainen [Thu, 28 Dec 2017 17:40:29 +0000 (19:40 +0200)] 
lib: Make file_lock_free(NULL) no-op

7 years agodsync: Add debug logging for .dovecot-sync.lock locking/unlocking
Timo Sirainen [Thu, 28 Dec 2017 08:27:27 +0000 (10:27 +0200)] 
dsync: Add debug logging for .dovecot-sync.lock locking/unlocking

7 years agoUpdated copyright notices to include the year 2018.
Stephan Bosch [Mon, 1 Jan 2018 19:57:51 +0000 (20:57 +0100)] 
Updated copyright notices to include the year 2018.

7 years agodoveadm dump: Add "multiplex" dump type
Timo Sirainen [Fri, 22 Dec 2017 13:12:30 +0000 (15:12 +0200)] 
doveadm dump: Add "multiplex" dump type

This allows dumping all channels from istream-multiplex stream.

7 years agodoveadm dump: Allow doveadm_cmd_dump.test() to be NULL
Timo Sirainen [Fri, 22 Dec 2017 13:11:45 +0000 (15:11 +0200)] 
doveadm dump: Allow doveadm_cmd_dump.test() to be NULL

This means that there's no auto-detection for the dump type.

7 years agolib: istream-multiplex - Return error if the last packet wasn't fully read
Timo Sirainen [Fri, 22 Dec 2017 13:10:00 +0000 (15:10 +0200)] 
lib: istream-multiplex - Return error if the last packet wasn't fully read

7 years agodoveadm: Fix potential crash or reading garbage from doveadm-server
Timo Sirainen [Fri, 22 Dec 2017 13:07:28 +0000 (15:07 +0200)] 
doveadm: Fix potential crash or reading garbage from doveadm-server

The connection's input buffer may have been reallocated or otherwise moved
while checking for log input.

7 years agodoveadm: Don't connect to stats-writer for the "quick init" commands
Timo Sirainen [Fri, 22 Dec 2017 11:36:32 +0000 (13:36 +0200)] 
doveadm: Don't connect to stats-writer for the "quick init" commands

7 years agolib-master: Add master_service_init_stats_client()
Timo Sirainen [Fri, 22 Dec 2017 11:20:41 +0000 (13:20 +0200)] 
lib-master: Add master_service_init_stats_client()

This allows initializing the stats client after master_service_init() if
necessary.

7 years agolib-master: Hide connect(stats-writer) errors when running via CLI
Timo Sirainen [Fri, 22 Dec 2017 11:27:48 +0000 (13:27 +0200)] 
lib-master: Hide connect(stats-writer) errors when running via CLI

Only hide errors that occur if the stats process isn't running, i.e. when
socket isn't found or there's no listener. This way e.g. permission errors
are still logged, which points to a wrong configuration.

7 years agoauth: Fix password and scheme handling in Lua db
Aki Tuomi [Fri, 22 Dec 2017 11:34:45 +0000 (13:34 +0200)] 
auth: Fix password and scheme handling in Lua db

This was only partially fixed in c86575ac9776d0995355d03719c82e7ceac802e6

7 years agoimap-old-stats plugin: Finish renaming the plugin
Timo Sirainen [Fri, 22 Dec 2017 07:42:50 +0000 (09:42 +0200)] 
imap-old-stats plugin: Finish renaming the plugin

The init functions and dependency were named wrong, so it didn't work.

7 years agom4: Fix detecting libsodium to use LIBS instead of LDFLAGS
Timo Sirainen [Fri, 22 Dec 2017 07:37:53 +0000 (09:37 +0200)] 
m4: Fix detecting libsodium to use LIBS instead of LDFLAGS

Patch by Eray Aslan

7 years agom4: Avoid _FORTIFY_SOURCE redefinition warnings
Timo Sirainen [Fri, 22 Dec 2017 07:36:48 +0000 (09:36 +0200)] 
m4: Avoid _FORTIFY_SOURCE redefinition warnings

Some source based distros like Gentoo already enable -D_FORTIFY_SOURCE=2
by default resulting in the following warnings during build:

<command-line>:0:0: warning: "_FORTIFY_SOURCE" redefined
<built-in>: note: this is the location of the previous definition

Patch by Eray Aslan

7 years agoexample-config: Fix postmaster_address comment
Timo Sirainen [Fri, 22 Dec 2017 07:59:27 +0000 (09:59 +0200)] 
example-config: Fix postmaster_address comment

The default value was wrong.

7 years agodoveadm-server: Fix potential hangs with SSL connections
Timo Sirainen [Fri, 22 Dec 2017 09:25:06 +0000 (11:25 +0200)] 
doveadm-server: Fix potential hangs with SSL connections

7 years agoauth: Don't include LIBSODIUM_LIBS in dependencies
Timo Sirainen [Mon, 18 Dec 2017 19:58:16 +0000 (21:58 +0200)] 
auth: Don't include LIBSODIUM_LIBS in dependencies

Put it into AUTH_LIBS among other libraries that are used by auth.

7 years agolib-smtp: server: STARTTLS command: Call smtp_server_connection_set_ssl_streams(...
Stephan Bosch [Thu, 21 Dec 2017 22:09:13 +0000 (23:09 +0100)] 
lib-smtp: server: STARTTLS command: Call smtp_server_connection_set_ssl_streams() after calling the conn_start_tls() connection callback.

This is called instead smtp_server_connection_set_streams(), so that the connection is now marked as SSL-secured.
This fixes a submission-login bug that prevented client login when ssl=required.

7 years agolib-smtp: server: Add smtp_server_connection_set_ssl_streams().
Stephan Bosch [Thu, 21 Dec 2017 22:07:10 +0000 (23:07 +0100)] 
lib-smtp: server: Add smtp_server_connection_set_ssl_streams().

It wraps smtp_server_connection_set_streams() and additionally marks the connection as SSL-secured.

7 years agolib-smtp: server: Change conn_start_tls() connection callback to return a success...
Stephan Bosch [Thu, 21 Dec 2017 22:00:18 +0000 (23:00 +0100)] 
lib-smtp: server: Change conn_start_tls() connection callback to return a success status.

7 years agoman: Update version number to v2.3
Timo Sirainen [Mon, 18 Dec 2017 22:29:03 +0000 (00:29 +0200)] 
man: Update version number to v2.3

7 years agolib-smtp: server: Fixed assertion in smtp_server_connection_next_reply() checking...
Stephan Bosch [Mon, 18 Dec 2017 15:45:23 +0000 (16:45 +0100)] 
lib-smtp: server: Fixed assertion in smtp_server_connection_next_reply() checking whether command is fully replied.

It did not handle LMTP DATA/BDAT command correctly, for which there can be multiple replies.

This fixes mixing local/remote recipients in LMTP, which used to crash:
Panic: file smtp-server-connection.c: line 610 (smtp_server_connection_next_reply): assertion failed: (cmd->state == SMTP_SERVER_COMMAND_STATE_READY_TO_REPLY && smtp_server_command_is_replied(cmd))

7 years agolib-smtp: server: Fix compile error in smtp-server-cmd-helo.c.
Stephan Bosch [Mon, 18 Dec 2017 18:28:10 +0000 (19:28 +0100)] 
lib-smtp: server: Fix compile error in smtp-server-cmd-helo.c.

Error was:
"smtp-server-cmd-helo.c", line 140: void function cannot return value

7 years agolib-smtp: command parser: Fix error recovery.
Stephan Bosch [Mon, 18 Dec 2017 14:20:07 +0000 (15:20 +0100)] 
lib-smtp: command parser: Fix error recovery.

Input characters were not skipped upon error, meaning that error recovery would encounter these again.
This would make the parser parse the same data over and over again, yielding the same error.
This in turn caused the SMTP server application to hang in an infinite input loop, submitting error replies in the process, thereby filling up the process memory until exhaustion.
Problem seen in submission service, but LMTP is also affected.

7 years agolib-smtp: server: Fix panic when disconnecting client aborting commands
Timo Sirainen [Mon, 18 Dec 2017 12:08:16 +0000 (14:08 +0200)] 
lib-smtp: server: Fix panic when disconnecting client aborting commands

This happened at least if the relay server simply disconnected without
sending any output.

Fixes: Panic: file submission-commands.c: line 39: unreached
7 years agolib-smtp: smtp_server_connection_pending_command_data() - don't crash if smtp_parser...
Timo Sirainen [Mon, 18 Dec 2017 12:04:48 +0000 (14:04 +0200)] 
lib-smtp: smtp_server_connection_pending_command_data() - don't crash if smtp_parser is NULL

7 years agodoc: example-config: Properly document SSL configuration for submission relay server.
Stephan Bosch [Mon, 18 Dec 2017 12:16:09 +0000 (13:16 +0100)] 
doc: example-config: Properly document SSL configuration for submission relay server.

7 years agosubmission: Fix memory leaks at deinit when submission_relay_host setting is missing
Timo Sirainen [Mon, 18 Dec 2017 10:08:43 +0000 (12:08 +0200)] 
submission: Fix memory leaks at deinit when submission_relay_host setting is missing

7 years agolib-smtp: server: Fix panic when io_remove() is called too late
Timo Sirainen [Mon, 18 Dec 2017 10:06:43 +0000 (12:06 +0200)] 
lib-smtp: server: Fix panic when io_remove() is called too late

With submission-login the conn_disconnect() callback ends up in
login-common's client_disconnect(), which closes the file descriptor.
The io_remove() was done afterwards, which caused a crash:

submission-login: Panic: epoll_ctl(del, 18) failed: Bad file descriptor

7 years agolib-smtp: server: Fix infinite loop when client disconnects in initial state
Timo Sirainen [Mon, 18 Dec 2017 10:05:59 +0000 (12:05 +0200)] 
lib-smtp: server: Fix infinite loop when client disconnects in initial state

7 years agoold-stats plugin: Rename stats_* settings to old_stats_*
Timo Sirainen [Mon, 18 Dec 2017 10:48:07 +0000 (12:48 +0200)] 
old-stats plugin: Rename stats_* settings to old_stats_*

7 years agoauth: Install stats plugin to old-stats/
Timo Sirainen [Mon, 18 Dec 2017 10:47:47 +0000 (12:47 +0200)] 
auth: Install stats plugin to old-stats/

Fixes using auth_stats=yes

7 years agolib: Fix using appended log prefixes for events when full prefix isn't replaced
Timo Sirainen [Sun, 17 Dec 2017 18:41:52 +0000 (20:41 +0200)] 
lib: Fix using appended log prefixes for events when full prefix isn't replaced

7 years agolib: Fix using failure_context.log_prefix with internal log process communication
Timo Sirainen [Sun, 17 Dec 2017 18:39:39 +0000 (20:39 +0200)] 
lib: Fix using failure_context.log_prefix with internal log process communication

7 years agolog: Add "disable log prefix" flag to log lines
Timo Sirainen [Sun, 17 Dec 2017 18:38:38 +0000 (20:38 +0200)] 
log: Add "disable log prefix" flag to log lines

7 years agolib: Add event_send()
Timo Sirainen [Sun, 17 Dec 2017 18:35:58 +0000 (20:35 +0200)] 
lib: Add event_send()

7 years agolib: Rename event_send() to event_vsend()
Timo Sirainen [Sun, 17 Dec 2017 18:35:42 +0000 (20:35 +0200)] 
lib: Rename event_send() to event_vsend()

7 years agolmtp: local: Properly handle a user being over quota.
Stephan Bosch [Fri, 15 Dec 2017 22:28:58 +0000 (23:28 +0100)] 
lmtp: local: Properly handle a user being over quota.

Recent changes caused quota enforcement to be ineffective.

7 years agolmtp: local: Make sure pending recipient is always destroyed.
Stephan Bosch [Fri, 15 Dec 2017 20:31:44 +0000 (21:31 +0100)] 
lmtp: local: Make sure pending recipient is always destroyed.

Before, the recipient was not freed when the server/connection ended prematurely.

7 years agologin-proxy: Add back support for ssl_client_cert/key
Timo Sirainen [Thu, 14 Dec 2017 21:00:00 +0000 (23:00 +0200)] 
login-proxy: Add back support for ssl_client_cert/key

Forgot to add these while rewriting login-proxy to use lib-ssl-iostream.

7 years agolib-ssl-iostream: If allow_invalid_cert=TRUE, skip verifying hostname
Timo Sirainen [Thu, 14 Dec 2017 20:59:30 +0000 (22:59 +0200)] 
lib-ssl-iostream: If allow_invalid_cert=TRUE, skip verifying hostname

7 years agolib-master: Fix master_service_ssl_settings_to_iostream_set() for client settings
Timo Sirainen [Fri, 15 Dec 2017 12:42:54 +0000 (14:42 +0200)] 
lib-master: Fix master_service_ssl_settings_to_iostream_set() for client settings

ssl_verify_client_cert setting applies only to server side. For client side
we always verify the SSL certificate validity.

7 years agolib-http: Add http_client_init_private()
Timo Sirainen [Fri, 15 Dec 2017 12:11:37 +0000 (14:11 +0200)] 
lib-http: Add http_client_init_private()

This allows creating a HTTP client without a shared context, in case it's
needed for some reason.