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 > } >