Pigeonhole bug: corrupted redirected emails

Peter Williams peter at newton.cx
Thu Jul 1 17:10:28 EEST 2021


Hello,

(Please CC me on any replies since I'm not subscribed to this mailing
list.)

I'm writing to report a bug that I just ran into, involving
Sieve/Pigeonhole message redirections. I recently added a rule
involving redirections and the redirected messages were getting
corrupted. I traced the issue down to the fact that an Mbox-style
"From " header line was getting intermixed with the message headers --
note the entry between the two "Received:" headers in this example,
which shows the text being delivered to the MTA on stdin:

   X-Sieve: Pigeonhole Sieve 0.4.24 (124e06aa)
   X-Sieve-Redirected-From: peter
   Delivered-To: peter
   Received: from dovecot
       by newton.cx with LMTP id xxx
       for <peter>; Thu, 01 Jul 2021 04:32:50 +0000
   From peter at newton.cx Thu Jul 01 04:32:50 2021
   Received: from xxx
       by newton.cx with esmtpsa xxx
       (Exim 4.94.2)
       (envelope-from <peter at newton.cx>)
       id xxxx
       for peter at newton.cx; Thu, 01 Jul 2021 04:32:50 +0000
   Message-ID: <xxx>
   Subject: qqtestqq
   
This was happening with trivial test messages, and trivial Sieve rules,
but I can provide specifics if they would be helpful.

Versions: CentOS 7.9.2009; Dovecot 2.2.36; Pigeonhole 0.4.24; Exim
4.92.2.

Below I've added the output of `dovecot -n`. My `sendmail_path` setting
was empty before, but as a workaround I've set it to a wrapper script
that strips out everything before the `From `, "solving" the problem.

Thanks so much for building Dovecot, I've been using it with great
success for more than a decade!

Best,

Peter

=========================================================

# 2.2.36 (1f10bfa63): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.24 (124e06aa)
# OS: Linux 4.14.210-rh241-20201203010913.xenU.x86_64 x86_64 CentOS
Linux release 7.9.2009 (Core) ext3
# Hostname: newton.cx
auth_username_format = %Ln
mail_location = mdbox:/var/spool/mail/%n
mail_plugins = zlib
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
mbox_write_locks = fcntl
namespace inbox {
  hidden = no
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
  separator = .
  type = private
}
passdb {
  driver = pam
}
plugin {
  recipient_delimiter = +
  sieve = ~/.dovecot.sieve
  sieve_before = /etc/dovecot/dspam.sieve
  sieve_dir = /var/lib/sieve-users/%u
  sieve_global_dir = /etc/dovecot/sieve-global
  zlib_save = gz
  zlib_save_level = 7
}
protocols = imap pop3 lmtp sieve
sendmail_path = /usr/sbin/dovecot-sieve-sendmail.sh
service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service managesieve-login {
  inet_listener sieve {
    address = 127.0.0.1
    port = 4190
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
ssl_cert = </etc/letsencrypt/live/newton.cx/fullchain.pem
ssl_key =  # hidden, use -P to show it
userdb {
  driver = passwd
}
protocol lmtp {
  mail_plugins = zlib sieve
}
protocol lda {
  mail_plugins = zlib sieve
}
protocol imap {
  mail_max_userip_connections = 20
}
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}




More information about the dovecot mailing list