Bug: Dovecot appending "MISSING_DOMAIN" to fetch envelope responses

Michael Gratton mike at vee.net
Mon Aug 31 15:23:57 EEST 2020


Any word about this issue? Should I file a bug in an actual bug tracker 
or something?

//Mike

On Sat, 15 Aug, 2020 at 13:26, Michael Gratton <mike at vee.net> wrote:
> Hi all,
> 
> I'm seeing Dovecot include the string "MISSING_DOMAIN" in fetch 
> envelope requests when an mailbox's `addr-spec` part does not have a 
> `domain` part.
> 
> For example:
> 
>>  C: a022 uid fetch 40 (envelope rfc822.header)
>>  S: * 5 FETCH (UID 40 ENVELOPE ("Sat, 15 Aug 2020 12:53:05 +1000" 
>> "test {{name}}" (("Michael Gratton" NIL "mike" "vee.net")) 
>> (("Michael Gratton" NIL "mike" "vee.net")) (("Michael Gratton" NIL 
>> "mike" "vee.net")) (("postgres" NIL "postgres" "MISSING_DOMAIN")) 
>> NIL NIL NIL NIL) RFC822.HEADER {literal/244b})
> 
> I understand that RFC 5322 require a mailbox to have a domain part, 
> however it is still possible for mail to contain mailboxes that do 
> not. In these cases, Dovecot returning random string such as the 
> above is harmful, since it not possible for IMAP clients to determine 
> whether host name string is actually present or something that the 
> IMAP server has made up.
> 
> As a result, an IMAP client has two options: Either display the 
> string as-is, preventing it from providing an appropriately localised 
> explanation or visual indication of the problem in the user 
> interface, or simply avoid ever requesting IMAP envelopes from the 
> server and always download and parse the complete RFC822 headers 
> itself (as I believe Thunderbird does).
> 
> The former is untenable since "MISSING_DOMAIN" does not mean anything 
> to non-English speakers, the latter is untenable since it 
> unnecessarily inflates the of volume of data that must be transmitted 
> over the wire to work around a server bug.
> 
> In these cases, or when any other part of a required IMAP address 
> structure is missing, Dovecot should return the empty string, e.g. "".
> 
> Cheers,
> //Mike
> 
> Dovecot details:
> 
>> *REDACTED*:~$ sudo dovecot -n
>> # 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf
>> # Pigeonhole version 0.5.4 ()
>> # OS: Linux 4.19.0-9-amd64 x86_64 Debian 10.4 ext4
>> # Hostname: *REDACTED*
>> first_valid_uid = *REDACTED*
>> hostname = *REDACTED*
>> last_valid_uid = *REDACTED*
>> lda_original_recipient_header = X-Original-To
>> lmtp_rcpt_check_quota = yes
>> lmtp_save_to_detail_mailbox = yes
>> mail_gid = *REDACTED*
>> mail_home = *REDACTED*
>> mail_location = mdbox:*REDACTED*:UTF-8
>> mail_privileged_group = mail
>> mail_server_admin = mailto:*REDACTED*
>> mail_temp_dir = *REDACTED*
>> mail_uid = *REDACTED*
>> managesieve_notify_capability = mailto
>> managesieve_sieve_capability = fileinto reject envelope 
>> encoded-character vacation subaddress comparator-i;ascii-numeric 
>> relational regex imap4flags copy include variables body enotify 
>> environment mailbox date index ihave duplicate mime foreverypart 
>> extracttext imapsieve vnd.dovecot.imapsieve
>> namespace inbox {
>>   inbox = yes
>>   location =
>>   mailbox Drafts {
>>     auto = subscribe
>>     special_use = \Drafts
>>   }
>>   mailbox Junk {
>>     auto = subscribe
>>     autoexpunge = 30 days
>>     special_use = \Junk
>>   }
>>   mailbox Sent {
>>     auto = subscribe
>>     special_use = \Sent
>>   }
>>   mailbox Trash {
>>     auto = subscribe
>>     autoexpunge = 30 days
>>     special_use = \Trash
>>   }
>>   prefix =
>>   separator = .
>>   type = private
>> }
>> passdb {
>>   args = *REDACTED*
>>   driver = ldap
>> }
>> plugin {
>>   imapsieve_mailbox1_before = file:*REDACTED*
>>   imapsieve_mailbox1_causes = COPY
>>   imapsieve_mailbox1_name = Junk
>>   imapsieve_mailbox2_before = file:*REDACTED*
>>   imapsieve_mailbox2_causes = COPY
>>   imapsieve_mailbox2_from = Junk
>>   imapsieve_mailbox2_name = *
>>   recipient_delimiter = +
>>   sieve = file://*REDACTED*
>>   sieve_before = /etc/dovecot/sieve-before.d
>>   sieve_global_extensions = +vnd.dovecot.pipe 
>> +vnd.dovecot.environment +vnd.dovecot.report
>>   sieve_pipe_bin_dir = /etc/dovecot/sieve-scripts
>>   sieve_plugins = sieve_imapsieve sieve_extprograms
>>   sieve_quota_max_storage = 50M
>> }
>> postmaster_address = *REDACTED*
>> protocols = " imap lmtp sieve"
>> service auth-worker {
>>   user = mail
>> }
>> service auth {
>>   unix_listener *REDACTED* {
>>     group = postfix
>>     mode = 0666
>>     user = postfix
>>   }
>> }
>> service lmtp {
>>   process_min_avail = 2
>>   unix_listener *REDACTED* {
>>     group = postfix
>>     mode = 0600
>>     user = postfix
>>   }
>>   user = mail
>> }
>> ssl = required
>> ssl_cert = <*REDACTED*
>> ssl_client_ca_dir = *REDACTED*
>> ssl_dh = # hidden, use -P to show it
>> ssl_key = # hidden, use -P to show it
>> submission_host = *REDACTED*:587
>> userdb {
>>   args = uid=8
>>   driver = static
>> }
>> protocol lmtp {
>>   mail_plugins = " sieve"
>> }
>> protocol imap {
>>   mail_plugins = " imap_sieve"
>> }
> 
> 
> --
> Michael Gratton.
> <https://mjog.vee.net>


-- 
Michael Gratton.
<https://mjog.vee.net>




More information about the dovecot mailing list