hi,

i'm not sure if i've discovered a bug or if i'm not following the IMAP
specs correctly.

observations:

  { echo -en "a1 login foo bar\r\na2 notify set (subscribed (FlagChange 
SubscriptionChange MessageNew MessageExpunge))\r\n"; cat - } | openssl s_client 
-connect [my_dovecot_server]:993

produces the following output (aside from the openssl s_client
cert-inspection stuff):

  2020-06-21 12:26:02 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID 
ENABLE IDLE LITERAL+ AUTH=PLAIN AUTH=LOGIN] Dovecot (Debian) ready.
  2020-06-21 12:26:02 a1 OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID 
ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS 
THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN 
NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT 
SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY LITERAL+ 
NOTIFY SPECIAL-USE] Logged in
  2020-06-21 12:26:02 a2 OK NOTIFY completed (0.005 + 0.000 + 0.004 secs).
  2020-06-21 12:26:02 a2 OK NOTIFY completed (0.002 + 0.000 + 0.001 secs).


the first line is the pre-login welcome prompt, the second one the
result of the "a1 login .." command and the third and fourth seem to be
the answer to the "a2 notify set .." command, twice. from the different
timings given, it seems the a2 command is actually executed twice.

is this a case of "you're not allowed to pipeline commands like this"
or a bug in dovecot (or both)?


i attached the output of `dovecot -n`.


best,
   dario
# dovecot -n
# 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.4 ()
# OS: Linux 4.19.0-6-amd64 x86_64 Debian 10.4
# Hostname: hetzner.deaktualisierung.org
doveconf: Warning: please set ssl_dh=</etc/dovecot/dh.pem
doveconf: Warning: You can generate it with: dd 
if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform 
der > /etc/dovecot/dh.pem
auth_mechanisms = plain login
auth_username_format = %n
mail_home = /mail/%u
mail_location = Maildir:~/mail
mail_log_prefix = "%s(%u): "
namespace inbox {
  inbox = yes
  list = yes
  location =
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    auto = subscribe
    special_use = \Sent
  }
  mailbox trash {
    auto = subscribe
    special_use = \Trash
  }
  prefix =
  separator = .
  subscriptions = yes
  type = private
}
passdb {
  args = scheme=SHA256-CRYPT username_format=%n /etc/dovecot/users
  driver = passwd-file
}
plugin {
  imapsieve_mailbox1_before = file:/etc/dovecot/sieve/report-spam.sieve
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox2_before = file:/etc/dovecot/sieve/report-ham.sieve
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_name = *
  mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
  mail_log_fields = uid box msgid size
  sieve = file:~/.dovecot.sieve
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.debug
  sieve_pipe_bin_dir = /etc/dovecot/sieve/bin
  sieve_plugins = sieve_imapsieve sieve_extprograms
  sieve_user_log = ~/.dovecot.sieve.log
}
protocols = " imap lmtp"
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service imap-login {
  inet_listener imaps {
    port = 993
    ssl = yes
  }
  process_min_avail = 0
  service_count = 1
}
service imap {
  process_limit = 128
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
ssl_cert = </etc/dovecot/letsencrypt-ssl-cert-and-key.pem
ssl_cipher_list = 
EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:-3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA:EDH-RSA-DES-CBC3-SHA:DES-CBC3-SHA
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
userdb {
  args = username_format=%n /etc/dovecot/users
  default_fields = uid=vmail gid=vmail home=/mail/%u
  driver = passwd-file
}
protocol lmtp {
  mail_plugins = " sieve fts fts_lucene"
  plugin {
    fts = lucene
    fts_autoindex = yes
  }
}
protocol imap {
  imap_client_workarounds = tb-extra-mailbox-sep tb-lsub-flags
  imap_idle_notify_interval = 2 mins
  mail_max_userip_connections = 100
  mail_plugins = " fts fts_lucene imap_sieve"
}

Reply via email to