Well spotted.
In my first attempt, the configuration I originally posted was at the end of my dovecot.conf file, and I was not including the conf.d configuration files. Preceding that was my lmtp protocol cong.
protocol lmtp { postmaster_address = postmaster # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = $mail_plugins sieve }
mail_plugins = $mail_plugins zlib
plugin { zlib_save_level = 6 zlib_save = xz }
The doveconf -n associated with this is as follows:
01 # 2.2.22 (fe789d2): /etc/dovecot/dovecot.conf 02 # Pigeonhole version 0.4.13 (7b14904) 03 # OS: Linux 4.9.15-x86_64-linode81 x86_64 Ubuntu 16.04.2 LTS 04 auth_mechanisms = plain login 05 log_timestamp = "%Y-%m-%d %H:%M:%S " 06 mail_gid = vmail 07 mail_home = maildir:/var/vmail/%d/%n 08 mail_location = maildir:~/Maildir 09 10 mail_privileged_group = vmail 11 mail_uid = vmail 12 managesieve_notify_capability = mailto 13 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 ihave 14 namespace inbox { 15 inbox = yes 16 location = 17 mailbox Archive { 18 auto = subscribe 19 special_use = \Archive 20 } 21 mailbox Drafts { 22 auto = subscribe 23 special_use = \Drafts 24 } 25 mailbox Sent { 26 auto = subscribe 27 special_use = \Sent 28 } 29 mailbox Spam { 30 auto = subscribe 31 special_use = \Junk 32 } 33 mailbox Trash { 34 auto = subscribe 35 special_use = \Trash 36 } 37 prefix = 38 } 39 passdb { 40 args = /etc/dovecot/dovecot-sql.conf.ext 41 driver = sql 42 } 43 plugin { 44 sieve = ~/.dovecot.sieve 45 sieve_dir = ~/sieve 46 zlib_save = bz2 47 zlib_save_level = 6 48 } 49 protocols = " imap lmtp sieve" 50 service auth { 51 unix_listener /var/spool/postfix/private/dovecot-auth { 52 group = postfix 53 mode = 0660 54 user = postfix 55 } 56 user = root 57 } 58 service lmtp { 59 unix_listener /var/spool/postfix/private/dovecot-lmtp { 60 group = postfix 61 mode = 0600 62 user = postfix 63 } 64 } 65 ssl_ca = </etc/ssl/repeal18c.today/fullchain.pem 66 ssl_cert = </etc/ssl/repeal18c.today/cert.pem 67 ssl_cipher_list = ALL:!LOW:!SSLv2:!aNULL:!ADH:!eNULL:!EXP:RC4+RSA:+HIGH:+MEDIUM 68 ssl_key = </etc/ssl/repeal18c.today/privkey.pem 69 userdb { 70 args = /etc/dovecot/dovecot-sql.conf.ext 71 driver = sql 72 } 73 protocol imap { 74 imap_client_workarounds = delay-newmail 75 mail_max_userip_connections = 100 76 } 77 protocol lmtp { 78 mail_plugins = " sieve zlib" 79 postmaster_address = postmaster 80 }
(The blank line at 09 I have inserted.)
Note the mail_plugins for protocol lmtp at 77.
I changed the protocol lmtp settings in dovecot.conf as follows:
protocol lmtp { postmaster_address = postmaster mail_plugins = $mail_plugins sieve zlib }
and I removed this line:
mail_plugins = $mail_plugins zlib
The resulting doveconf -n is:
01 # 2.2.22 (fe789d2): /etc/dovecot/dovecot.conf 02 # Pigeonhole version 0.4.13 (7b14904) 03 # OS: Linux 4.9.15-x86_64-linode81 x86_64 Ubuntu 16.04.2 LTS 04 auth_mechanisms = plain login 05 log_timestamp = "%Y-%m-%d %H:%M:%S " 06 mail_gid = vmail 07 mail_home = maildir:/var/vmail/%d/%n 08 mail_location = maildir:~/Maildir 09 mail_plugins = " zlib" 10 mail_privileged_group = vmail 11 mail_uid = vmail 12 managesieve_notify_capability = mailto 13 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 ihave 14 namespace inbox { 15 inbox = yes 16 location = 17 mailbox Archive { 18 auto = subscribe 19 special_use = \Archive 20 } 21 mailbox Drafts { 22 auto = subscribe 23 special_use = \Drafts 24 } 25 mailbox Sent { 26 auto = subscribe 27 special_use = \Sent 28 } 29 mailbox Spam { 30 auto = subscribe 31 special_use = \Junk 32 } 33 mailbox Trash { 34 auto = subscribe 35 special_use = \Trash 36 } 37 prefix = 38 } 39 passdb { 40 args = /etc/dovecot/dovecot-sql.conf.ext 41 driver = sql 42 } 43 plugin { 44 sieve = ~/.dovecot.sieve 45 sieve_dir = ~/sieve 46 zlib_save = bz2 47 zlib_save_level = 6 48 } 49 protocols = " imap lmtp sieve" 50 service auth { 51 unix_listener /var/spool/postfix/private/dovecot-auth { 52 group = postfix 53 mode = 0660 54 user = postfix 55 } 56 user = root 57 } 58 service lmtp { 59 unix_listener /var/spool/postfix/private/dovecot-lmtp { 60 group = postfix 61 mode = 0600 62 user = postfix 63 } 64 } 65 ssl_ca = </etc/ssl/repeal18c.today/fullchain.pem 66 ssl_cert = </etc/ssl/repeal18c.today/cert.pem 67 ssl_cipher_list = ALL:!LOW:!SSLv2:!aNULL:!ADH:!eNULL:!EXP:RC4+RSA:+HIGH:+MEDIUM 68 ssl_key = </etc/ssl/repeal18c.today/privkey.pem 69 userdb { 70 args = /etc/dovecot/dovecot-sql.conf.ext 71 driver = sql 72 } 73 protocol imap { 74 imap_client_workarounds = delay-newmail 75 mail_max_userip_connections = 100 76 } 77 protocol lmtp { 78 mail_plugins = " sieve" 79 postmaster_address = postmaster 80 }
Note line 09, and the modified value of mail_plugins at 78. These are the only changes in doveconf -n.
The result is a reversal of the previous situation.
Received messages in /var/vmail/<host>/<username>/cur are compressed; sent messages in /var/vmail/<host>/<username>/.Sent/cur are not compressed.
I assume that I need both specifications.
Peter West pbw@pbw.id.au And the great throng heard him gladly.
On 10 Jun 2017, at 6:50 pm, Aki Tuomi <aki.tuomi@dovecot.fi> wrote:
Please check that you are not overwriting mail plugins for lmtp. Or post your doveconf -n.
Aki
On June 10, 2017 at 11:10 AM Peter West <lists@pbw.id.au> wrote:
Not sure what you mean. I’m using lmtp to send messages to Dovecot from Postfix.
On 10 Jun 2017, at 6:08 pm, Aki Tuomi <aki.tuomi@dovecot.fi> wrote:
What's your LDA?
Aki
On June 10, 2017 at 11:01 AM Peter West <lists@pbw.id.au> wrote:
Thanks for that Aki.
Follow-up question. I tried to initiate compression by adding
mail_plugins = $mail_plugins zlib
plugin { zlib_save_level = 6 zlib_save = xz }
to dovecot.conf. I restarted dovecot and sent one message to the server, and one message from the server. Neither was compressed. I changed the save type to
zlib_save = bz2
and repeated. This time the message received (in /var/vmail/<host>/<username>/cur) was not compressed, but the message in /var/vmail/<host>/<username>/.Sent/cur was bzip2 compressed.
Why is the received mail not being compressed? Is this the point of the discussion about compressing old mails?
On 10 Jun 2017, at 4:43 pm, Aki Tuomi <aki.tuomi@dovecot.fi> wrote:
On June 10, 2017 at 5:58 AM Peter West <lists@pbw.id.au> wrote:
Concerning Maildir, the wiki page on compression has this:
All mails must have ,S=<size> in their filename where <size> contains the original uncompressed mail size, otherwise there will be problems with quota calculation as well as other potential random failures. Note that if the filename doesn’t contain the ,S=<size> before compression, adding it afterwards changes the base filename and thus the message UID. The safest thing to do is simply to not compress such files.
Further down on the same page is this:
If the file does exist, rename() (mv) the compressed file over the original file. • Dovecot can now read the file, but to avoid compressing it again on the next run, you'll probably want to rename it again to include e.g. a "Z" flag in the file name to mark that it was compressed (e.g. 1223212411.M907959P17184.host,S=3271:2,SZ).
These comments seem to contradict each. Or is there a difference between adding the size specifier to the filename and adding a Z flag to the end of the file name?
-- Peter West pbw@pbw.id.au And the great throng heard him gladly.
Keyword is 'base filename'. From the wiki, "The standard filename definition is: "<base filename>:2,<flags>".". Z is a flag.
Aki