Is there some secret config sauce I'm unaware of to get IMAP push
notifications working with Outlook ?
My present situation is that non-Outlook users (e.g. Apple iOS, Apple Mail etc.)
work perfectly with the config below. New emails get pushed, deletes get
reflected, all is happy in the world.
But with Outlook nothing. You send a user an email, nothing happens in their
inbox until you manually refresh by checking for new mails or waiting for the
auto-check to kick in (sometimes switching between IMAP folders also does the
trick).
I know Outlook has a long history of being a mess when it comes to standards
compliance, but surely it can't be this bad ?
doveconf -n :
# 2.3.18 (9dd8408c18): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.18 (0bc28b32)
# OS: Linux 5.10.0-11-amd64 x86_64 Debian 11.2 xfs
# Hostname: foobar.example.com
auth_verbose = yes
auth_verbose_passwords = sha1:7
doveadm_password = # hidden, use -P to show it
imap_capability = +SPECIAL-USE
imapc_features = rfc822.size fetch-headers fetch-bodystructure
imapc_port = 993
imapc_ssl = imaps
mail_location = maildir:/foo_data/mail/%d/%n/Maildir
mail_plugins = notify replication push_notification
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 "Deleted Messages" {
auto = no
special_use = \Trash
}
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
auto = subscribe
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix }
passdb {
args = /etc/dovecot/local_sql_users.conf
driver = sql
}
plugin {
imapsieve_mailbox1_before = file:/etc/dovecot/imap_sieve/spam.sieve
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_name = Junk
imapsieve_mailbox2_before = file:/etc/dovecot/imap_sieve/ham.sieve
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_name = *
sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
sieve_pipe_bin_dir = /etc/dovecot/imap_sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = imap lmtp sieve
service auth {
unix_listener /var/spool/postfix/private/dovecot-auth {
group = postfix
mode = 0660
user = postfix
}
vsz_limit = 2 G
}
service doveadm {
inet_listener {
port = 11867
ssl = yes
}
}
service imap-login {
process_min_avail = 5
service_count = 1
}
service lmtp {
process_min_avail = 5
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0660
user = postfix
}
user = foo_virtmail
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
inet_listener sieves {
address port = 5190
ssl = yes
}
}
ssl = required
ssl_ca = </etc/foobar/ssl/certificates/_.example.com.issuer.crt
ssl_cert = </etc/foobar/ssl/certificates/_.example.com.crt
ssl_cipher_list =
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_prefer_server_ciphers = yes
userdb {
args = /etc/dovecot/local_sql_users.conf
default_fields = uid=foo_virtmail gid=foo_virtmail home=/foo_data/mail/%d/%n
driver = sql
}
protocol lmtp {
mail_plugins = notify replication push_notification sieve
postmaster_address = foo at foobar.com
}
protocol lda {
deliver_log_format = msgid=%m: %$
mail_plugins = notify replication push_notification sieve
postmaster_address = postmaster
quota_full_tempfail = yes
rejection_reason = Your message to <%t> was automatically rejected:%n%r
}
protocol imap {
mail_max_userip_connections = 20
mail_plugins = notify replication push_notification imap_sieve
}