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@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@xxx.com): Debug: Effective uid=9203, gid=9203, home=/home/mail_data/xxx.com/xxx lda(xxx@xxx.com): Debug: Quota root: name= backend=maildir args= lda(xxx@xxx.com): Debug: Quota rule: root= mailbox=* bytes=1048576 messages=0 lda(xxx@xxx.com): Debug: Quota rule: root= mailbox=Trash bytes=+104857600 messages=0 lda(xxx@xxx.com): Debug: maildir++: root=/home/mail_data/xxx.com/xxx, index=, control=, inbox=/home/mail_data/xxx.com/xxx lda(xxx@xxx.com): Debug: Quota root: name= backend=maildir args= lda(xxx@xxx.com): Debug: none: root=, index=, control=, inbox= lda(xxx@xxx.com):
Panic: stream doesn't support seeking backwards lda(xxx@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@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?