Ben Johnson
2016-Aug-19 01:10 UTC
What might cause messages delivered with dovecot-lda to be "invisible" to IMAP clients?
Hello! I'm attempting to use dovecot-lda, and for whatever reason, messages that I send with it are not visible in my IMAP client. $ dovecot --version 2.2.22 (fe789d2) (Full "doveconf -n" output is at the bottom of this message!) Here's the the sequence of commands that I'm using: # su vmail $ echo 'This is a test message.' > /tmp/test.txt $ stat /tmp/test.txt File: '/tmp/test.txt' Size: 24 Blocks: 8 IO Block: 4096 regular file Device: fd01h/64769d Inode: 783925 Links: 2 Access: (0664/-rw-rw-r--) Uid: ( 5000/ vmail) Gid: ( 5000/ vmail) Access: 2016-08-18 20:49:38.419011552 -0400 Modify: 2016-08-18 20:49:07.178995015 -0400 Change: 2016-08-18 20:49:38.191011425 -0400 Birth: - $ /usr/lib/dovecot/dovecot-lda -d "test at example.com" -p "/tmp/test.txt" When I do this, the destination mailbox acts like there's a new message (I'm using Thunderbird, and the mailbox is highlighted in blue and bolded, which is the "new mail" behavior in this client). But when I "check my inbox", i.e., click on the Inbox, I don't see the new message. With regard to the filesystem, the message is present and contains the intended contents. Here's the "stat" output: $ stat /var/vmail/example.com/ben/Maildir/cur/1471567777.M685753P32257.example.com,S=24:2, File: '/var/vmail/example.com/ben/Maildir/cur/1471567777.M685753P32257.example.com,S=24:2,' Size: 24 Blocks: 8 IO Block: 4096 regular file Device: fd01h/64769d Inode: 783925 Links: 2 Access: (0664/-rw-rw-r--) Uid: ( 5000/ vmail) Gid: ( 5000/ vmail) Access: 2016-08-18 20:51:05.647059340 -0400 Modify: 2016-08-18 20:50:58.543055378 -0400 Change: 2016-08-18 20:50:58.543055378 -0400 Birth: - Might anyone know why I'm not "seeing" this message in my IMAP client? Interestingly, I tried another IMAP client (Blue Mail for Android), and I can actually see the messages there, but they appear in the Inbox as: (No subject) <Empty Message> When I click on the messages, Blue Mail simply displays "No text", without the quotes. Surely, I'm overlooking something simple... Thank you for any help here! -Ben Full "doveconf -n" output: $ doveconf -n # 2.2.22 (fe789d2): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.13 (7b14904) # OS: Linux 4.4.0-34-generic x86_64 Ubuntu 16.04.1 LTS auth_mechanisms = plain login disable_plaintext_auth = no listen = *,[::] log_timestamp = "%Y-%m-%d %H:%M:%S " mail_max_userip_connections = 100 mail_plugins = " quota" mail_privileged_group = vmail passdb { args = /etc/dovecot/dovecot-sql.conf driver = sql } plugin { antispam_backend = pipe antispam_debug_target = syslog antispam_pipe_program = /bin/bash antispam_pipe_program_args = /usr/local/bin/sa-learn-pipe.sh antispam_pipe_program_notspam_arg = --ham antispam_pipe_program_spam_arg = --spam antispam_pipe_tmpdir = /tmp antispam_spam_pattern_ignorecase = SPAM;JUNK antispam_trash_pattern_ignorecase = trash;Deleted * antispam_verbose_debug = 1 quota = dict:user::file:/var/vmail/%d/%n/.quotausage quota_rule2 = Trash:storage=+100M quota_rule3 = Junk:ignore quota_rule4 = INBOX:storage=+100M quota_warning = storage=100%% quota-reached 100 %u %d quota_warning2 = storage=95%% quota-warning 95 %u %d quota_warning3 = storage=80%% quota-warning 80 %u %d quota_warning4 = -storage=100%% quota-below below %u %d sieve = /var/vmail/%d/%n/.sieve sieve_max_redirects = 25 } postmaster_address = postmaster at example.com protocols = imap pop3 service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } unix_listener auth-userdb { group = vmail mode = 0600 user = vmail } user = root } service imap-login { client_limit = 1000 process_limit = 512 } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } } service quota-below { executable = script /usr/local/bin/quota-below.sh unix_listener quota-below { group = vmail mode = 0666 user = vmail } user = vmail } service quota-reached { executable = script /usr/local/bin/quota-reached.sh unix_listener quota-reached { group = vmail mode = 0666 user = vmail } user = vmail } service quota-warning { executable = script /usr/local/bin/quota-warning.sh unix_listener quota-warning { group = vmail mode = 0666 user = vmail } user = vmail } ssl_cert = </etc/postfix/smtpd.cert ssl_key = </etc/postfix/smtpd.key ssl_protocols = !SSLv2 !SSLv3 userdb { driver = prefetch } userdb { args = /etc/dovecot/dovecot-sql.conf driver = sql } protocol imap { mail_plugins = quota imap_quota antispam } protocol pop3 { mail_plugins = quota pop3_uidl_format = %08Xu%08Xv } protocol lda { mail_plugins = sieve quota } protocol lmtp { mail_plugins = quota sieve postmaster_address = webmaster at localhost }
Ben Johnson
2016-Aug-19 01:30 UTC
What might cause messages delivered with dovecot-lda to be "invisible" to IMAP clients?
I'm mildly ashamed of myself. The "butchered" messages were presumably the result of not having a valid message structure with appropriate syntax. If I do this, the mail is delivered and "visible" in any client, as expected: # su vmail $ cd ~ $ wget http://spamassassin.apache.org/gtube/gtube.txt $ /usr/lib/dovecot/dovecot-lda -d "test at example.com" -p "/var/vmail/gtube.txt" That's wonderful! But it brings me back to my original question, which is why I'm unable to use dovecot-lda to feed my antispam pipe program. I'll post a separate message for that. Thanks! -Ben On 8/18/2016 9:10 PM, Ben Johnson wrote:> Hello! > > I'm attempting to use dovecot-lda, and for whatever reason, messages > that I send with it are not visible in my IMAP client. > > $ dovecot --version > 2.2.22 (fe789d2) > > (Full "doveconf -n" output is at the bottom of this message!) > > Here's the the sequence of commands that I'm using: > > # su vmail > > $ echo 'This is a test message.' > /tmp/test.txt > > $ stat /tmp/test.txt > File: '/tmp/test.txt' > Size: 24 Blocks: 8 IO Block: 4096 regular file > Device: fd01h/64769d Inode: 783925 Links: 2 > Access: (0664/-rw-rw-r--) Uid: ( 5000/ vmail) Gid: ( 5000/ vmail) > Access: 2016-08-18 20:49:38.419011552 -0400 > Modify: 2016-08-18 20:49:07.178995015 -0400 > Change: 2016-08-18 20:49:38.191011425 -0400 > Birth: - > > $ /usr/lib/dovecot/dovecot-lda -d "test at example.com" -p "/tmp/test.txt" > > When I do this, the destination mailbox acts like there's a new message > (I'm using Thunderbird, and the mailbox is highlighted in blue and > bolded, which is the "new mail" behavior in this client). > > But when I "check my inbox", i.e., click on the Inbox, I don't see the > new message. > > With regard to the filesystem, the message is present and contains the > intended contents. Here's the "stat" output: > > $ stat > /var/vmail/example.com/ben/Maildir/cur/1471567777.M685753P32257.example.com,S=24:2, > File: > '/var/vmail/example.com/ben/Maildir/cur/1471567777.M685753P32257.example.com,S=24:2,' > Size: 24 Blocks: 8 IO Block: 4096 regular file > Device: fd01h/64769d Inode: 783925 Links: 2 > Access: (0664/-rw-rw-r--) Uid: ( 5000/ vmail) Gid: ( 5000/ vmail) > Access: 2016-08-18 20:51:05.647059340 -0400 > Modify: 2016-08-18 20:50:58.543055378 -0400 > Change: 2016-08-18 20:50:58.543055378 -0400 > Birth: - > > Might anyone know why I'm not "seeing" this message in my IMAP client? > > Interestingly, I tried another IMAP client (Blue Mail for Android), and > I can actually see the messages there, but they appear in the Inbox as: > > (No subject) > <Empty Message> > > When I click on the messages, Blue Mail simply displays "No text", > without the quotes. > > Surely, I'm overlooking something simple... > > Thank you for any help here! > > -Ben > > > > Full "doveconf -n" output: > > $ doveconf -n > # 2.2.22 (fe789d2): /etc/dovecot/dovecot.conf > # Pigeonhole version 0.4.13 (7b14904) > # OS: Linux 4.4.0-34-generic x86_64 Ubuntu 16.04.1 LTS > auth_mechanisms = plain login > disable_plaintext_auth = no > listen = *,[::] > log_timestamp = "%Y-%m-%d %H:%M:%S " > mail_max_userip_connections = 100 > mail_plugins = " quota" > mail_privileged_group = vmail > passdb { > args = /etc/dovecot/dovecot-sql.conf > driver = sql > } > plugin { > antispam_backend = pipe > antispam_debug_target = syslog > antispam_pipe_program = /bin/bash > antispam_pipe_program_args = /usr/local/bin/sa-learn-pipe.sh > antispam_pipe_program_notspam_arg = --ham > antispam_pipe_program_spam_arg = --spam > antispam_pipe_tmpdir = /tmp > antispam_spam_pattern_ignorecase = SPAM;JUNK > antispam_trash_pattern_ignorecase = trash;Deleted * > antispam_verbose_debug = 1 > quota = dict:user::file:/var/vmail/%d/%n/.quotausage > quota_rule2 = Trash:storage=+100M > quota_rule3 = Junk:ignore > quota_rule4 = INBOX:storage=+100M > quota_warning = storage=100%% quota-reached 100 %u %d > quota_warning2 = storage=95%% quota-warning 95 %u %d > quota_warning3 = storage=80%% quota-warning 80 %u %d > quota_warning4 = -storage=100%% quota-below below %u %d > sieve = /var/vmail/%d/%n/.sieve > sieve_max_redirects = 25 > } > postmaster_address = postmaster at example.com > protocols = imap pop3 > service auth { > unix_listener /var/spool/postfix/private/auth { > group = postfix > mode = 0660 > user = postfix > } > unix_listener auth-userdb { > group = vmail > mode = 0600 > user = vmail > } > user = root > } > service imap-login { > client_limit = 1000 > process_limit = 512 > } > service lmtp { > unix_listener /var/spool/postfix/private/dovecot-lmtp { > group = postfix > mode = 0600 > user = postfix > } > } > service quota-below { > executable = script /usr/local/bin/quota-below.sh > unix_listener quota-below { > group = vmail > mode = 0666 > user = vmail > } > user = vmail > } > service quota-reached { > executable = script /usr/local/bin/quota-reached.sh > unix_listener quota-reached { > group = vmail > mode = 0666 > user = vmail > } > user = vmail > } > service quota-warning { > executable = script /usr/local/bin/quota-warning.sh > unix_listener quota-warning { > group = vmail > mode = 0666 > user = vmail > } > user = vmail > } > ssl_cert = </etc/postfix/smtpd.cert > ssl_key = </etc/postfix/smtpd.key > ssl_protocols = !SSLv2 !SSLv3 > userdb { > driver = prefetch > } > userdb { > args = /etc/dovecot/dovecot-sql.conf > driver = sql > } > protocol imap { > mail_plugins = quota imap_quota antispam > } > protocol pop3 { > mail_plugins = quota > pop3_uidl_format = %08Xu%08Xv > } > protocol lda { > mail_plugins = sieve quota > } > protocol lmtp { > mail_plugins = quota sieve > postmaster_address = webmaster at localhost > } >