[Dovecot] dovecot-lda 2.0.8 Panic: stream doesn't support seeking backwards

Jacky Chan jacky at jesstech.com
Wed Dec 8 05:43:46 EET 2010


Running 2.0.8 as IMAP server and LDA with quota support.

The environment is:
os: 64bit Slackware 13.1.0
fs: ext3
smtp: postfix-2.7.2
imap: dovecot-2.0.8

The dovecot setting in postfix master.cf
dovecot           unix      -       n       n       -       -          pipe
   user=mailuser:mailuser argv=/usr/dovecot/libexec/dovecot/dovecot-lda 
-d ${recipient}

Everything work fine and mail can be saved to user's home directory 
without error when the user is not over quota.
If over quota occur, the maillog log this error message:

  Command died with signal 6: "/usr/dovecot/libexec/dovecot/dovecot-lda".
  Command output: lda:
  Debug: Loading modules from directory: /usr/dovecot/lib64/dovecot lda:
  Debug: Module loaded: /usr/dovecot/lib64/dovecot/lib10_quota_plugin.so 
lda:
  Debug: auth input: xxx at xxx.com home=/home/mail_data/xxx.com/xxx 
quota_rule=*:storage=1024 uid=9203 gid=9203 lda:
  Debug: Added userdb setting: plugin/quota_rule=*:storage=1024 
lda(xxx at xxx.com):
  Debug: Effective uid=9203, gid=9203, home=/home/mail_data/xxx.com/xxx 
lda(xxx at xxx.com):
  Debug: Quota root: name= backend=maildir args= lda(xxx at xxx.com):
  Debug: Quota rule: root= mailbox=* bytes=1048576 messages=0 
lda(xxx at xxx.com):
  Debug: Quota rule: root= mailbox=Trash bytes=+104857600 messages=0 
lda(xxx at xxx.com):
  Debug: maildir++: root=/home/mail_data/xxx.com/xxx, index=, control=, 
inbox=/home/mail_data/xxx.com/xxx lda(xxx at xxx.com):
  Debug: Quota root: name= backend=maildir args= lda(xxx at xxx.com): 
Debug: none: root=, index=, control=, inbox= lda(xxx at xxx.com):

Panic: stream doesn't support seeking backwards lda(xxx at xxx.com):

Error: Raw backtrace: 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(+0x3ca6a) 
[0x7ffc860a1a6a] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(default_fatal_handler+0x32) 
[0x7ffc860a1b52] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(i_fatal+0) 
[0x7ffc8607c031] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(+0x45834) 
[0x7ffc860aa834] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(i_stream_seek+0x86) 
[0x7ffc860a81f6] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(+0x45d87) 
[0x7ffc860aad87] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(i_stream_read+0x64) 
[0x7ffc860a8284] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(i_stream_read_data+0x3d) [0x7ffc860a894d] 
-> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(message_parse_header_next+0x73) 
[0x7ffc8608e973] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(+0x2b1a7) 
[0x7ffc860901a7] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(message_parser_parse_next_block+0x29) 
[0x7ffc860908f9] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot.so.0(message_parser_parse_header+0x41) 
[0x7ffc86090a91] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot-storage.so.0(index_mail_parse_headers+0xc2) 
[0x7ffc86535fd2] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot-storage.so.0(+0x462ea) 
[0x7ffc865362ea] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot-storage.so.0(index_mail_get_first_header+0x5e) 
[0x7ffc8653689e] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot-lda.so.0(mail_deliver_get_log_var_expand_table+0x48) 
[0x7ffc862eb848] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot-lda.so.0(+0x593a) 
[0x7ffc862eb93a] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot-lda.so.0(mail_deliver_log+0x118) 
[0x7ffc862ebb28] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot-lda.so.0(mail_deliver_save+0x2e2) 
[0x7ffc862ec012] -> 
/usr/dovecot-2.0.8/lib64/dovecot/libdovecot-lda.so.0(mail_deliver+0xe3) 
[0x7ffc862ec2c3] -> /usr/dovecot/libexec/dovecot/dovecot-lda(main+0x67c) 
[0x402dec] -> /lib64/libc.so.6(__libc_start_main+0xfd) [0x7ffc858f4c7d] 
-> /usr/dovecot/libexec/dovecot/dovecot-lda() [0x402549]

I tried run the dovecot-lda at command line:
/usr/dovecot/libexec/dovecot/dovecot-lda -d xxx at xxx.com < some_saved_mail

The result is dovecot quota plugin reject the mail and send an over 
quota message back to the sender without any error.

It seems that the error is only occur with postfix pipe command.

Any hints?








More information about the dovecot mailing list