]> git.ipfire.org Git - thirdparty/dovecot/core.git/log
thirdparty/dovecot/core.git
7 years agolib-master: postlogin: Don't unreference already closed login-connection
Timo Sirainen [Thu, 17 May 2018 15:35:04 +0000 (18:35 +0300)] 
lib-master: postlogin: Don't unreference already closed login-connection

If the login-connection was already closed, this caused too many
unreferences.

Fixes:
Panic: file master-login.c: line 544 (master_login_conn_unref): assertion failed: (conn->clients == NULL)

7 years agoauth: Improve auth-master connections' error logging
Timo Sirainen [Fri, 4 May 2018 12:27:14 +0000 (15:27 +0300)] 
auth: Improve auth-master connections' error logging

Include connect and handshake times in the error message.

7 years agolib-master: Add auth connect & handshake times to master_login_auth_request errors
Timo Sirainen [Fri, 4 May 2018 11:14:35 +0000 (14:14 +0300)] 
lib-master: Add auth connect & handshake times to master_login_auth_request errors

7 years agolib-master: Add request time also for internal failure error messages
Timo Sirainen [Fri, 4 May 2018 11:10:49 +0000 (14:10 +0300)] 
lib-master: Add request time also for internal failure error messages

7 years agolib-master: Use more exact timestamp in master_login_auth_request failures
Timo Sirainen [Fri, 4 May 2018 11:03:46 +0000 (14:03 +0300)] 
lib-master: Use more exact timestamp in master_login_auth_request failures

7 years agolib-master: Improve error logging for master_auth_connection failures
Timo Sirainen [Fri, 4 May 2018 10:56:45 +0000 (13:56 +0300)] 
lib-master: Improve error logging for master_auth_connection failures

7 years agolib-master: Improve error logging for post-login script failures
Timo Sirainen [Fri, 4 May 2018 10:42:23 +0000 (13:42 +0300)] 
lib-master: Improve error logging for post-login script failures

7 years agolib-master: Improve error logging when master_login_connection gets disconnected
Timo Sirainen [Fri, 4 May 2018 10:23:07 +0000 (13:23 +0300)] 
lib-master: Improve error logging when master_login_connection gets disconnected

7 years agolib-master: Keep linked list of master_login_clients per connection
Timo Sirainen [Fri, 4 May 2018 10:07:50 +0000 (13:07 +0300)] 
lib-master: Keep linked list of master_login_clients per connection

This allows improving logging on connection errors.

7 years agolib-master: If connect() to backend UNIX socket is retried, log a warning
Timo Sirainen [Fri, 13 Apr 2018 13:14:18 +0000 (16:14 +0300)] 
lib-master: If connect() to backend UNIX socket is retried, log a warning

For example if imap-login process needs to retry before it successfully
connects to imap process's socket, a warning is logged. This warning is
important because it means that the imap-login process may have been
sleeping up to 0.5 seconds and causing all the other connections to hang
during it.

It would be better to make this retrying asynchronous, but before spending
time on doing that, lets see if this warning is ever even being logged.

7 years agolib-master: Add how long request took for "Internal auth failure" errors
Timo Sirainen [Fri, 13 Apr 2018 13:12:27 +0000 (16:12 +0300)] 
lib-master: Add how long request took for "Internal auth failure" errors

7 years agolib/compat.h: Undefine WORDS_BIGENDIAN when it's defined as 0
Martti Rannanjärvi [Fri, 27 Oct 2017 08:08:36 +0000 (11:08 +0300)] 
lib/compat.h: Undefine WORDS_BIGENDIAN when it's defined as 0

7 years agocassandra: Fix consistency=quorum to work
Timo Sirainen [Thu, 17 May 2018 13:29:28 +0000 (16:29 +0300)] 
cassandra: Fix consistency=quorum to work

Previously it could have been used by setting "consistency=", but this was
an accident.

7 years agocassandra: Use fallback_consistency on more types of errors
Timo Sirainen [Thu, 3 May 2018 14:06:04 +0000 (17:06 +0300)] 
cassandra: Use fallback_consistency on more types of errors

This could allow for example read_consistency=local-quorum with
read_fallback_consistency=quorum, so most of the time the reads are
from local datacenter, but in case it has problems you can switch to
other datacenters.

7 years agocassandra: Cleanup - Move code to query_error_want_fallback()
Timo Sirainen [Thu, 3 May 2018 13:58:21 +0000 (16:58 +0300)] 
cassandra: Cleanup - Move code to query_error_want_fallback()

This allows extending it more easily.

7 years agodict-sql: dict doesn't support NULL values, so convert SQL NULLs to ""
Timo Sirainen [Fri, 6 Oct 2017 12:54:47 +0000 (15:54 +0300)] 
dict-sql: dict doesn't support NULL values, so convert SQL NULLs to ""

7 years agolib-sql: Add comments about NULL values.
Timo Sirainen [Fri, 6 Oct 2017 12:52:36 +0000 (15:52 +0300)] 
lib-sql: Add comments about NULL values.

7 years agofs-posix: Strip trailing "/" from filenames
Timo Sirainen [Tue, 15 May 2018 14:50:27 +0000 (17:50 +0300)] 
fs-posix: Strip trailing "/" from filenames

This is mainly because "doveadm fs delete -R" adds it to indicate to the
fs-driver that the whole directory is wanted to be deleted. This change
fixes fs-posix to work with NFS, where otherwise unlink("symlink-to-dir/")
fails with ENOTDIR. Without NFS the same call succeeds.

7 years agofts: When indexing virtual mailbox, index each real mailbox entirely
Timo Sirainen [Thu, 3 May 2018 15:33:25 +0000 (18:33 +0300)] 
fts: When indexing virtual mailbox, index each real mailbox entirely

Index all the unindexed messages in them at once, instead of jumping between
real mailboxes and indexing them in small pieces.

7 years agofts: Indexing virtual mailbox didn't always index the last mails
Timo Sirainen [Thu, 3 May 2018 15:33:00 +0000 (18:33 +0300)] 
fts: Indexing virtual mailbox didn't always index the last mails

7 years agofts: Make sure indexing virtual mailbox doesn't recurse and index mail multiple times
Timo Sirainen [Thu, 3 May 2018 15:30:51 +0000 (18:30 +0300)] 
fts: Make sure indexing virtual mailbox doesn't recurse and index mail multiple times

7 years agofs-posix: mkdir missing directory if it's changed by FS_METADATA_WRITE_FNAME
Timo Sirainen [Thu, 3 May 2018 12:22:09 +0000 (15:22 +0300)] 
fs-posix: mkdir missing directory if it's changed by FS_METADATA_WRITE_FNAME

The temp file is created to the initial directory. If the directory is
changed by FS_METADATA_WRITE_FNAME, the new destination directory didn't
necessarily exist. If the link() or rename() fails with ENOENT, try to
mkdir the missing directories.

7 years agolib-storage: Replace DBOX_GUID_BIN_LEN with GUID_128_SIZE
Martti Rannanjärvi [Tue, 24 Oct 2017 07:27:23 +0000 (10:27 +0300)] 
lib-storage: Replace DBOX_GUID_BIN_LEN with GUID_128_SIZE

DBOX_GUID_BIN_LEN define was removed in 0c909e, replace the use with
GUID_128_SIZE.

7 years agolib: Don't use NEEDS_LOCAL_CREDS undefined
Martti Rannanjärvi [Mon, 30 Oct 2017 17:29:02 +0000 (19:29 +0200)] 
lib: Don't use NEEDS_LOCAL_CREDS undefined

7 years agolib,lib-index: Use #ifdef with WORDS_BIGENDIAN
Martti Rannanjärvi [Mon, 30 Oct 2017 14:39:21 +0000 (16:39 +0200)] 
lib,lib-index: Use #ifdef with WORDS_BIGENDIAN

Some were missing from the last change.

7 years agoglobal: Use #ifdef instead of #if with WORDS_BIGENDIAN
Martti Rannanjärvi [Fri, 27 Oct 2017 08:03:07 +0000 (11:03 +0300)] 
global: Use #ifdef instead of #if with WORDS_BIGENDIAN

This is to not rely on undefined WORDS_BIGENDIAN being evaluated as 0.

7 years agomdbox: Assume that empty uid maps found during sync are harmless
Josef 'Jeff' Sipek [Mon, 23 Apr 2018 22:15:51 +0000 (18:15 -0400)] 
mdbox: Assume that empty uid maps found during sync are harmless

Instead of failing the sync and causing index rebuild, just skip over
the empty uid maps.  Chances are that they these records came from
various plugins that create fake mails.

7 years agolib-storage: Make sure index root is created when it's the same as root directory
Timo Sirainen [Tue, 12 Dec 2017 19:36:07 +0000 (21:36 +0200)] 
lib-storage: Make sure index root is created when it's the same as root directory

Fixes errors about failing to create mailboxes.lock when the index root
directory doesn't exist yet.

7 years agoconfigure: Released v2.2.36.rc1 2.2.36.rc1
Timo Sirainen [Mon, 30 Apr 2018 13:51:33 +0000 (16:51 +0300)] 
configure: Released v2.2.36.rc1

7 years agoNEWS: Update to v2.2.36.rc1
Timo Sirainen [Mon, 30 Apr 2018 13:50:35 +0000 (16:50 +0300)] 
NEWS: Update to v2.2.36.rc1

7 years agoplugins/old-stats: Remove restrict_access_set_dumpable calls from process_io_open().
Sergey Kitov [Thu, 26 Apr 2018 06:48:39 +0000 (09:48 +0300)] 
plugins/old-stats: Remove restrict_access_set_dumpable calls from process_io_open().

proc_io_fd is opened in preinit(), while process have root access, so
restrict_access_set_dumpable() calls are not needed.

7 years agolib: Call module's preinit function, when loading
Sergey Kitov [Wed, 18 Apr 2018 10:30:50 +0000 (13:30 +0300)] 
lib: Call module's preinit function, when loading

7 years agoplugins/old-stats: Add old-stats preinit() which opens mail stats io.
Sergey Kitov [Fri, 9 Mar 2018 13:17:29 +0000 (15:17 +0200)] 
plugins/old-stats: Add old-stats preinit() which opens mail stats io.

7 years agofs-posix: Fix iterating nonexistent symlinks when readdir() returns DT_UNKNOWN
Timo Sirainen [Thu, 29 Mar 2018 18:24:11 +0000 (14:24 -0400)] 
fs-posix: Fix iterating nonexistent symlinks when readdir() returns DT_UNKNOWN

This especially broke "doveadm fs delete -R" when the symlink destination
was deleted before the symlink.

7 years agolib-fs: fs-posix - Add accurate-mtime parameter
Timo Sirainen [Thu, 26 Apr 2018 16:38:55 +0000 (19:38 +0300)] 
lib-fs: fs-posix - Add accurate-mtime parameter

This is mainly useful for testing to find out whether one file was created
after another.

7 years agolib-fs: Update FS_METADATA_WRITE_FNAME comment
Timo Sirainen [Thu, 26 Apr 2018 15:23:54 +0000 (18:23 +0300)] 
lib-fs: Update FS_METADATA_WRITE_FNAME comment

7 years agolib-fs: fs-posix - FS_METADATA_WRITE_FNAME replaces the full path
Timo Sirainen [Thu, 26 Apr 2018 15:14:27 +0000 (18:14 +0300)] 
lib-fs: fs-posix - FS_METADATA_WRITE_FNAME replaces the full path

This is how all the other fs drivers work, although the macro name is a bit
confusing.

7 years agolib-fs: fs-metawrap - Pass FS_METADATA_WRITE_FNAME through to parent fs
Timo Sirainen [Thu, 26 Apr 2018 15:14:46 +0000 (18:14 +0300)] 
lib-fs: fs-metawrap - Pass FS_METADATA_WRITE_FNAME through to parent fs

fs-metawrap in the middle pervented the renaming from working.

7 years agolib-storage: Remove mail_attachment_detection_options=add-flags-on-fetch parsing
Timo Sirainen [Thu, 26 Apr 2018 13:42:40 +0000 (16:42 +0300)] 
lib-storage: Remove mail_attachment_detection_options=add-flags-on-fetch parsing

It wasn't actually used yet.

7 years agolib-storage: Fail if mail_attachment_detection_options has invalid options
Timo Sirainen [Thu, 26 Apr 2018 13:41:55 +0000 (16:41 +0300)] 
lib-storage: Fail if mail_attachment_detection_options has invalid options

7 years agolib-storage: Set $Has[No]Attachment earlier among other cached data
Timo Sirainen [Thu, 19 Apr 2018 13:38:22 +0000 (16:38 +0300)] 
lib-storage: Set $Has[No]Attachment earlier among other cached data

7 years agodoveadm: mailbox cache decisions - Fatally fail if fields are missing
Aki Tuomi [Wed, 25 Apr 2018 08:04:08 +0000 (11:04 +0300)] 
doveadm: mailbox cache decisions - Fatally fail if fields are missing

7 years agoman: Document doveadm mailbox cache commands
Aki Tuomi [Wed, 25 Apr 2018 07:56:04 +0000 (10:56 +0300)] 
man: Document doveadm mailbox cache commands

7 years agodoveadm: Add mailbox cache manipulation commands
Aki Tuomi [Fri, 13 Apr 2018 10:28:47 +0000 (13:28 +0300)] 
doveadm: Add mailbox cache manipulation commands

This allows changing cache decisions and dropping cache pointer
for wanted mails.

7 years agodoveadm-mail: Handle field conversion to short opt better
Aki Tuomi [Sat, 14 Apr 2018 11:31:44 +0000 (14:31 +0300)] 
doveadm-mail: Handle field conversion to short opt better

Convert non-string types as well

7 years agolib: introduce container_of
Josef 'Jeff' Sipek [Tue, 13 Sep 2016 19:01:56 +0000 (15:01 -0400)] 
lib: introduce container_of

This is a simple but type safe implementation.

7 years agolib-index: mail_index_sync_map() - Don't try to-resync extension updates
Timo Sirainen [Sun, 29 Apr 2018 09:31:23 +0000 (12:31 +0300)] 
lib-index: mail_index_sync_map() - Don't try to-resync extension updates

This was done to call extension record sync handlers, but the previous
commit removes them. Fixes a problem where obsolete cache offsets were
used in some situations:

 - Some cache updates are from external transactions and some are from
non-external transactions. This is because cache offset updates are being
added by whatever the parent index transaction is.

 - When mail_index_sync_map() is mapping MAIL_INDEX_SYNC_HANDLER_FILE, it
has already synced the map. But it's calling mail_index_sync_record()
for non-external transactions to call expunge handlers and extension
update handlers. It's calling the regular mail_index_sync_record() to do
this work.

 - But mail_index_sync_record() is actually still updating the map. So now
mail_index_sync_record() is called for all non-external cache updates,
but not for external cache updates! And since these are somewhat
randomly either external or non-external, the end result is that the
cache offset may be obsolete.

7 years agolib-index: Remove extension record sync handlers
Timo Sirainen [Sun, 29 Apr 2018 09:23:49 +0000 (12:23 +0300)] 
lib-index: Remove extension record sync handlers

This is no longer used by anything, and it makes the fix in the following
commit much easier.

This was originally added in 6a19e109ee8c5a6f688da83a86a7f6abeb71abdd to
allow dovecot.index.cache updating to hook into updating cache offsets to
link cache records together. This was reimplemented in a different way in
131b073bdc3650083b00616dc778dd3017c2bbb5

7 years ago.gitignore: Ignore doc/man/doveadm-rebuild.1
Martti Rannanjärvi [Thu, 26 Apr 2018 10:18:01 +0000 (13:18 +0300)] 
.gitignore: Ignore doc/man/doveadm-rebuild.1

7 years agodoveadm: Add rebuild attachments command
Aki Tuomi [Thu, 12 Apr 2018 11:09:10 +0000 (14:09 +0300)] 
doveadm: Add rebuild attachments command

Goes thru given mails and resets the attachment indicator.

7 years agolib-storage: Parse mail parts in mail_set_attachment_keywords if not present
Aki Tuomi [Thu, 12 Apr 2018 11:07:54 +0000 (14:07 +0300)] 
lib-storage: Parse mail parts in mail_set_attachment_keywords if not present

7 years agolib-storage: Add error reporting to mail_set_attachment_keywords
Aki Tuomi [Thu, 19 Apr 2018 07:19:15 +0000 (10:19 +0300)] 
lib-storage: Add error reporting to mail_set_attachment_keywords

7 years agolib-fts: Minor fix to randomness test in test-fts-tokenizer
Timo Sirainen [Wed, 25 Apr 2018 12:20:58 +0000 (15:20 +0300)] 
lib-fts: Minor fix to randomness test in test-fts-tokenizer

If the random input was entirely valid UTF-8, the input was truncated to
empty.

7 years agofts: Fix indexing input that contains NULs
Timo Sirainen [Wed, 25 Apr 2018 12:17:53 +0000 (15:17 +0300)] 
fts: Fix indexing input that contains NULs

Any message_block that contained NULs, but otherwise was valid UTF-8, was
simply dropped.

7 years agolib: Implement str_sanitize_utf8().
Stephan Bosch [Sat, 14 Apr 2018 00:05:51 +0000 (02:05 +0200)] 
lib: Implement str_sanitize_utf8().

Unlike str_sanitize(), this function truncates strings based on a UTF8 code point
limit rather than a maximum size in bytes. Also, the Unicode replacement
character is used to mark invalid/control characters and an ellipsis character
is used to indicate the string truncation. For the normal str_sanitize() this is
done using a question mark and triple dots respectively.

7 years agolib: unichar: Add Horizontal Ellipsis character.
Stephan Bosch [Tue, 17 Apr 2018 19:31:38 +0000 (21:31 +0200)] 
lib: unichar: Add Horizontal Ellipsis character.

7 years agodsync: If lock file can't be created because home is missing, mkdir the home
Timo Sirainen [Tue, 24 Apr 2018 15:50:38 +0000 (18:50 +0300)] 
dsync: If lock file can't be created because home is missing, mkdir the home

7 years agolib-storage: Add mail_user_home_mkdir()
Timo Sirainen [Tue, 24 Apr 2018 15:47:28 +0000 (18:47 +0300)] 
lib-storage: Add mail_user_home_mkdir()

7 years agolib-lda: mail_send_rejection() - Don't assert-crash with empty input mail
Timo Sirainen [Wed, 25 Apr 2018 14:45:39 +0000 (17:45 +0300)] 
lib-lda: mail_send_rejection() - Don't assert-crash with empty input mail

Fixes: Panic: file mail-send.c: line 176 (mail_send_rejection): assertion failed: (ret != 0)
7 years agologin-common: If no CRL check is required, allow revoked certs
Aki Tuomi [Wed, 28 Feb 2018 12:22:44 +0000 (14:22 +0200)] 
login-common: If no CRL check is required, allow revoked certs

7 years agologin-common: ssl_require_crl works both ways
Aki Tuomi [Wed, 28 Feb 2018 12:22:04 +0000 (14:22 +0200)] 
login-common: ssl_require_crl works both ways

It applies for incoming and outgoing connections.

7 years agologin-common: Fix boolean misuse in preverify_ok
Aki Tuomi [Wed, 28 Feb 2018 11:29:51 +0000 (13:29 +0200)] 
login-common: Fix boolean misuse in preverify_ok

Fixes problem where dovecot does not accept revoked cert
when CRL checking has been disabled.

7 years agoimapc: Fix expunges+appends in same session with imapc_features=no-msn-updates
Timo Sirainen [Tue, 17 Apr 2018 12:46:41 +0000 (15:46 +0300)] 
imapc: Fix expunges+appends in same session with imapc_features=no-msn-updates

Since the EXPUNGEs were ignored, the sequence numbers weren't updated.
When a new mail arrived, the sequence number sent by the remote IMAP server
pointed to existing mails in imapc's mapping. Fix this by changing the
sequence number if the returned UID is >= next_uid.

Fixes "FETCH UID mismatch" errors.

7 years agopo3pc: Handle unexpected server disconnections without assert-crash
Timo Sirainen [Fri, 13 Apr 2018 10:33:56 +0000 (13:33 +0300)] 
po3pc: Handle unexpected server disconnections without assert-crash

Fixes: Panic: file pop3c-client.c: line 308 (pop3c_client_wait_one): assertion failed: (client->fd != -1 || client->state == POP3C_CLIENT_STATE_CONNECTING)
7 years agolib-mail: html2text: do not parse entity when quote_level > 0.
Sergey Kitov [Tue, 13 Mar 2018 14:36:44 +0000 (16:36 +0200)] 
lib-mail: html2text: do not parse entity when quote_level > 0.

&entities inside blockquotes are added to text, while other text is
not, this leads to strange results.

7 years agolib-mail: Fix include guards for istream-nonuls.h
Sergey Kitov [Fri, 6 Apr 2018 12:48:02 +0000 (15:48 +0300)] 
lib-mail: Fix include guards for istream-nonuls.h

7 years agolib-program-client: Wait longer in test-program-client-local
Aki Tuomi [Wed, 11 Apr 2018 12:11:23 +0000 (15:11 +0300)] 
lib-program-client: Wait longer in test-program-client-local

Sometiems it can take longer than 1 second to execute, if the test
environment is loaded.

7 years agoimapc: Fix crash when handling empty mailboxes.
Timo Sirainen [Mon, 9 Apr 2018 13:41:19 +0000 (16:41 +0300)] 
imapc: Fix crash when handling empty mailboxes.

Broken by c05b4ac76c4c6012958f1cc37e2fccf7a7d31c33

7 years agoimapc: Fix local state if mailbox is empty after reconnection
Timo Sirainen [Sun, 25 Mar 2018 20:15:58 +0000 (23:15 +0300)] 
imapc: Fix local state if mailbox is empty after reconnection

If local indexes had more than 0 mails, but after reconnection the remote
IMAP server replied with "* 0 EXISTS", the mails in local index weren't
expunged. This could have resulted in:

Panic: file imapc-sync.c: line 328 (imapc_initial_sync_check): assertion failed: (mail_index_is_expunged(view, lseq) || seq_range_exists(&ctx->mbox->delayed_expunged_uids, luid))

7 years agoimapc: If SELECT INBOX fails with NO, treat it as temporary failure
Timo Sirainen [Wed, 11 Apr 2018 11:19:06 +0000 (14:19 +0300)] 
imapc: If SELECT INBOX fails with NO, treat it as temporary failure

If it's treated as "mailbox doesn't exist", the INBOX autocreation code
will attempt to CREATE INBOX. This is very unlikely to work.

7 years agoimapc: Fix crash when untagged FETCH reply doesn't have key-value pairs
Timo Sirainen [Tue, 27 Feb 2018 10:26:09 +0000 (12:26 +0200)] 
imapc: Fix crash when untagged FETCH reply doesn't have key-value pairs

The last key with the missing value is just silently ignored.

7 years agoimapc: Ignore fetch-msn-workarounds/no-msn-updates during initial FETCH
Timo Sirainen [Sun, 25 Mar 2018 21:01:26 +0000 (00:01 +0300)] 
imapc: Ignore fetch-msn-workarounds/no-msn-updates during initial FETCH

Otherwise duplicate UIDs aren't detected and it causes an assert-crash:

Panic: file imapc-mailbox.c: line 533 (imapc_untagged_fetch): assertion failed: (lseq == mbox->sync_next_lseq)

7 years agolib-master: Fix dns_wildcard_match usage
Arkadiusz Miśkiewicz [Wed, 21 Mar 2018 09:29:26 +0000 (11:29 +0200)] 
lib-master: Fix dns_wildcard_match usage

Broken by 446c0b02a7802b676e893ccc4934fc7318d950ea

7 years agoNEWS: Add v2.2.35 release notes
Aki Tuomi [Mon, 19 Mar 2018 09:51:01 +0000 (11:51 +0200)] 
NEWS: Add v2.2.35 release notes

7 years agolib-dcrypt: Add libssl_iostream.la to LIBADD
Martti Rannanjärvi [Mon, 19 Mar 2018 10:20:14 +0000 (12:20 +0200)] 
lib-dcrypt: Add libssl_iostream.la to LIBADD

This allows running the tests in src/lib-dcrypt.

7 years agoNEWS: Update up to 2.2.34
Aki Tuomi [Mon, 19 Mar 2018 09:30:14 +0000 (11:30 +0200)] 
NEWS: Update up to 2.2.34

7 years agonotify: Fix crash if NO_NOTIFY transaction is rolled back during commit
Timo Sirainen [Wed, 7 Mar 2018 09:24:30 +0000 (11:24 +0200)] 
notify: Fix crash if NO_NOTIFY transaction is rolled back during commit

Fixes: Panic: no notify_mail_txn found
7 years agoimapc: Update mail size also when RFC822.SIZE is smaller than fetched header size
Timo Sirainen [Thu, 15 Mar 2018 11:19:53 +0000 (13:19 +0200)] 
imapc: Update mail size also when RFC822.SIZE is smaller than fetched header size

If this isn't done, istream-mail will detect that the fetched header is
larger than RFC822.SIZE and fail with "Cached message size smaller than
expected"

7 years agoimapc: Update mail size also when istream_opened() hook is called
Timo Sirainen [Thu, 15 Mar 2018 10:20:14 +0000 (12:20 +0200)] 
imapc: Update mail size also when istream_opened() hook is called

When fetching a message body the cached message size was set. However,
if istream_opened() hook was used this wasn't done. If a client had
fetched both (RFC822.SIZE BODY.PEEK[]) and the server sent a wrong
RFC822.SIZE, that size was used for the message body size, which resulted
in "Cached message size larger than expected" errors.

7 years agolib-master: Correctly match when local_name has multiple names
Aki Tuomi [Tue, 6 Mar 2018 13:15:01 +0000 (15:15 +0200)] 
lib-master: Correctly match when local_name has multiple names

Reported by J. Nick Koston <nick@cpanel.net>

7 years agolib-master: Reply from config process is tabescaped
Aki Tuomi [Tue, 6 Mar 2018 08:33:27 +0000 (10:33 +0200)] 
lib-master: Reply from config process is tabescaped

Found by J. Nick Koston <nick@cpanel.net>

7 years agoconfig: tabescape local name and service
Aki Tuomi [Sat, 10 Mar 2018 17:43:27 +0000 (19:43 +0200)] 
config: tabescape local name and service

7 years agoconfig: Make local_name comparison faster
Aki Tuomi [Tue, 6 Mar 2018 08:31:51 +0000 (10:31 +0200)] 
config: Make local_name comparison faster

Based on patch by J. Nick Koston <nick@cpanel.net>

7 years agolib-master: Fix dns_match_wildcard result value check
Aki Tuomi [Mon, 26 Feb 2018 10:53:19 +0000 (12:53 +0200)] 
lib-master: Fix dns_match_wildcard result value check

It returns 0, not TRUE.

7 years agoimapc: Don't try to add mails to index if they already exist there
Timo Sirainen [Mon, 12 Mar 2018 13:06:13 +0000 (15:06 +0200)] 
imapc: Don't try to add mails to index if they already exist there

Broken by 259a4ca5943123915a019799623d2e4a4ef7fd15 when imapc was used
with (not in-memory) index files.

This caused errors like "Append with UID 200, but next_uid = 201"

7 years agocharset-alias: Don't return value from void functions
Martti Rannanjärvi [Mon, 5 Mar 2018 12:55:04 +0000 (14:55 +0200)] 
charset-alias: Don't return value from void functions

7 years agolib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
Aki Tuomi [Mon, 12 Mar 2018 12:50:32 +0000 (14:50 +0200)] 
lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty

7 years agolib-dcrypt: istream-decrypt - Read more if buffer is empty
Aki Tuomi [Mon, 12 Mar 2018 12:48:41 +0000 (14:48 +0200)] 
lib-dcrypt: istream-decrypt - Read more if buffer is empty

If there is no more buffered data, try to decrypt more.

- Fixes Panic: file istream.c: line 192 (i_stream_read): assertion failed: (!stream->blocking)
- Fixes infinite loop when stream is not blocking

7 years agosdbox: Delete .temp* files on when save/copy transaction is rolled back
Timo Sirainen [Thu, 1 Mar 2018 10:17:16 +0000 (12:17 +0200)] 
sdbox: Delete .temp* files on when save/copy transaction is rolled back

For example when copying was aborted due to user being over quota, temp
files were left behind.

7 years agoglobal: Call rfc822_parser_deinit() wherever possible
Timo Sirainen [Fri, 22 Dec 2017 16:58:11 +0000 (18:58 +0200)] 
global: Call rfc822_parser_deinit() wherever possible

7 years agolib-mail: Refactor code to make the next commit smaller
Timo Sirainen [Tue, 9 Jan 2018 16:33:59 +0000 (11:33 -0500)] 
lib-mail: Refactor code to make the next commit smaller

7 years agolib-mail: Add rfc822_parser_deinit()
Timo Sirainen [Fri, 22 Dec 2017 16:56:53 +0000 (18:56 +0200)] 
lib-mail: Add rfc822_parser_deinit()

It's not a strict requirement to call this, but it assert-crashes if the
state isn't valid.

7 years agolib-mail: Make sure parsers don't accidentally go much beyond end pointer
Timo Sirainen [Fri, 22 Dec 2017 16:42:53 +0000 (18:42 +0200)] 
lib-mail: Make sure parsers don't accidentally go much beyond end pointer

7 years agolib-mail: Fix out-of-bounds read when parsing an invalid email address
Timo Sirainen [Fri, 22 Dec 2017 16:36:55 +0000 (18:36 +0200)] 
lib-mail: Fix out-of-bounds read when parsing an invalid email address

The included unit test doesn't fail, but running it with valgrind shows
"Invalid read of size 1" error.

Broken in d6737a17a27402e7a262f7ba8a2ed588d576f23c

Discovered by Aleksandar Nikolic of Cisco Talos

7 years agolib-mail: test-message-address - Add TEST_MESSAGE_ADDRESS_FLAG_SKIP_LIST flag
Timo Sirainen [Fri, 22 Dec 2017 16:36:09 +0000 (18:36 +0200)] 
lib-mail: test-message-address - Add TEST_MESSAGE_ADDRESS_FLAG_SKIP_LIST flag

This commit just adds the flag and sets it to 0 for all existing tests.

7 years agolib-mail: rfc822-parser - Add asserts to make sure parser state is correct
Timo Sirainen [Fri, 22 Dec 2017 16:31:52 +0000 (18:31 +0200)] 
lib-mail: rfc822-parser - Add asserts to make sure parser state is correct

7 years agolib-dns: Move before lib-master
Aki Tuomi [Mon, 19 Feb 2018 12:19:08 +0000 (14:19 +0200)] 
lib-dns: Move before lib-master

7 years agologin-common: Enable config filtering by local name
Aki Tuomi [Thu, 30 Nov 2017 18:52:11 +0000 (20:52 +0200)] 
login-common: Enable config filtering by local name

Prevents servername misuse.

7 years agolib-master: Support validating config filters against requests
Aki Tuomi [Thu, 30 Nov 2017 13:47:25 +0000 (15:47 +0200)] 
lib-master: Support validating config filters against requests

Validation will sanitize the input request and drop any fields
that have no filter in config. E.g. if you have a local block
with name, and nothing else, then lip/rip will be dropped
from the request.

7 years agoconfig: Add command to request all filters
Aki Tuomi [Thu, 30 Nov 2017 13:46:52 +0000 (15:46 +0200)] 
config: Add command to request all filters