[Dovecot] fdatasync -- Error -- bad file descriptor
Hello list,
I have a dovecot 2.2.5 instance configured to use mdbox as mailbox format. I configured to use separate storage attachments and use SIS.. (doveconf -n below)
I get this error
Sep 6 12:29:52 vrajah.mydomain.tld dovecot: lmtp(14258, email@mydomain.tld): Error: fdatasync(/apps/mail/mailbox/attachments/23/12/2312039008db057a1c75-2efc2d00687d2952b2370000f89409f1) failed: Bad file descriptor
I'm using centos 6.4 on a KVM with ext4 as fs.
Can someone tell me why i'm getting this error? and how to fix this?
-Thanks in advance Vijay
##########doveconf -n
# 2.2.5: /apps/mail/dovecot/2.2.5/etc/dovecot/dovecot.conf # OS: Linux 2.6.32-358.14.1.el6.x86_64 x86_64 CentOS release 6.4 (Final) ext4 auth_mechanisms = plain login digest-md5 cram-md5 auth_socket_path = /apps/mail/var/dovecot/run/auth-userdb base_dir = /apps/mail/var/dovecot/run/ debug_log_path = /var/log/dovecot-debug.log dict { sqlquota = mysql:/apps/mail/dovecot/2.2.5/etc/dovecot/conf.d/sqlquota.dict.ext } hostname = mail1@mydomain.tldmydomain.tld mail_attachment_dir = /apps/mail/mailbox/attachments mail_attachment_hash = %{sha256:80} mail_debug = yes mail_location = mdbox:/apps/mail/mailbox/%d/%n/mdbox mail_plugin_dir = /apps/mail/dovecot/2.2.5/lib/dovecot/ mail_plugins = " virtual quota 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 ihave mbox_write_locks = fcntl dotlock mdbox_rotate_size = 1 M namespace inbox { inbox = yes location = mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Spam { auto = subscribe } mailbox Trash { auto = subscribe special_use = \Trash } prefix = separator = / type = private } passdb { args = /apps/mail/dovecot/2.2.5/etc/dovecot/conf.d/dovecot-sql.conf.ext driver = sql } plugin { mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mail_log_fields = uid box msgid size quota = dict:User quota::proxy::sqlquota quota_grace = 10%% quota_rule = *:storage=1GB quota_rule2 = Trash:storage=+10%% quota_rule3 = Spam:storage=+20%% quota_status_nouser = DUNNO quota_status_overquota = 450 4.2.2 Mailbox is full. Try again later quota_status_success = DUNNO quota_warning = storage=95%% quota-warning 95 %u quota_warning2 = storage=80%% quota-warning 80 %u quota_warning3 = -storage=100%% quota-warning below %u sieve = ~/.dovecot.sieve sieve_before = /apps/mail/var/dovecot/sieve/ sieve_dir = ~/sieve sieve_global_dir = /apps/mail/var/dovecot/sieve zlib_save = bz2 zlib_save_level = 9 } protocols = imap lmtp sieve service auth { unix_listener /apps/mail/var/postfix/dovecot-auth { group = postfix mode = 0660 user = postfix } } service dict { unix_listener dict { group = vmail mode = 0600 user = vmail } } service imap-login { inet_listener imap { port = 143 } } service lmtp { unix_listener /apps/mail/var/postfix/dovecot-lmtp { group = postfix mode = 0660 user = postfix } } service managesieve-login { inet_listener sieve { port = 4190 } service_count = 10 vsz_limit = 64 M } service managesieve { process_limit = 1024 } service quota-status { client_limit = 1 executable = quota-status -p postfix inet_listener { port = 12340 } } service quota-warning { executable = script /apps/mail/dovecot/2.2.5/etc/dovecot/conf.d/quota-warning.sh unix_listener quota-warning { group = vmail mode = 0660 user = vmail } user = vmail } shutdown_clients = no ssl_ca =
Ok I finally figured it...
It was because of improper permissions for the attachments folder.... I did an strace and found this.
Once I changed the permision to the attachments folder it was alright..
I think this is a bug... it must check and fail and report a proper error message.. instead of this cryptic error...
here is the strace output...
open("/apps/mail/mailbox/attachments/23/12/hashes/2312039008db057a1c75", O_RDONLY) = -1 ENOENT (No such file or directory) lstat("/apps/mail/mailbox/attachments/23/12/.temp.vrajah-vps5.15910.c9ec404edac079b3", 0x7fff1d300260) = -1 ENOENT (No such file or directory) umask(066) = 077 open("/apps/mail/mailbox/attachments/23/12/.temp.vrajah-vps5.15910.c9ec404edac079b3", O_RDWR|O_CREAT|O_EXCL, 0666) = -1 ENOENT (No such file or directory) umask(077) = 066 umask(0) = 077 mkdir("/apps/mail/mailbox/attachments/23/12", 0700) = -1 ENOENT (No such file or directory) umask(077) = 0 umask(0) = 077 mkdir("/apps/mail/mailbox/attachments/23", 0700) = -1 EACCES (Permission denied) umask(077) = 0 fstat(22, {st_mode=S_IFREG|0600, st_size=137728, ...}) = 0 pread(22, "\320\317\21\340\241\261\32\341\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>\0\3\0\376\377\t\0"..., 8192, 0) = 8192 . . . pread(22, "\n\0%\1\3\0\202\0\16\0\0\0\1\2\6\0&\1\0\0\261\0\375\0\n\0&\1\1\0\201\0"..., 8192, 131072) = 6656 pread(22, "", 1536, 137728) = 0 fdatasync(4294967295) = -1 EBADF (Bad file descriptor) write(2, "\1\00415910 fdatasync(/apps/mail/mai"..., 138) = 138
On Fri, Sep 6, 2013 at 12:38 PM, Vijay Rajah vijayrajah@gmail.com wrote:
Hello list,
I have a dovecot 2.2.5 instance configured to use mdbox as mailbox format. I configured to use separate storage attachments and use SIS.. (doveconf -n below)
I get this error
Sep 6 12:29:52 vrajah.mydomain.tld dovecot: lmtp(14258, email@mydomain.tld): Error: fdatasync(/apps/mail/mailbox/attachments/23/12/2312039008db057a1c75-2efc2d00687d2952b2370000f89409f1) failed: Bad file descriptor
I'm using centos 6.4 on a KVM with ext4 as fs.
Can someone tell me why i'm getting this error? and how to fix this?
-Thanks in advance Vijay
##########doveconf -n
# 2.2.5: /apps/mail/dovecot/2.2.5/etc/dovecot/dovecot.conf # OS: Linux 2.6.32-358.14.1.el6.x86_64 x86_64 CentOS release 6.4 (Final) ext4 auth_mechanisms = plain login digest-md5 cram-md5 auth_socket_path = /apps/mail/var/dovecot/run/auth-userdb base_dir = /apps/mail/var/dovecot/run/ debug_log_path = /var/log/dovecot-debug.log dict { sqlquota = mysql:/apps/mail/dovecot/2.2.5/etc/dovecot/conf.d/sqlquota.dict.ext } hostname = mail1@mydomain.tldmydomain.tld mail_attachment_dir = /apps/mail/mailbox/attachments mail_attachment_hash = %{sha256:80} mail_debug = yes mail_location = mdbox:/apps/mail/mailbox/%d/%n/mdbox mail_plugin_dir = /apps/mail/dovecot/2.2.5/lib/dovecot/ mail_plugins = " virtual quota 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 ihave mbox_write_locks = fcntl dotlock mdbox_rotate_size = 1 M namespace inbox { inbox = yes location = mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Spam { auto = subscribe } mailbox Trash { auto = subscribe special_use = \Trash } prefix = separator = / type = private } passdb { args = /apps/mail/dovecot/2.2.5/etc/dovecot/conf.d/dovecot-sql.conf.ext driver = sql } plugin { mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mail_log_fields = uid box msgid size quota = dict:User quota::proxy::sqlquota quota_grace = 10%% quota_rule = *:storage=1GB quota_rule2 = Trash:storage=+10%% quota_rule3 = Spam:storage=+20%% quota_status_nouser = DUNNO quota_status_overquota = 450 4.2.2 Mailbox is full. Try again later quota_status_success = DUNNO quota_warning = storage=95%% quota-warning 95 %u quota_warning2 = storage=80%% quota-warning 80 %u quota_warning3 = -storage=100%% quota-warning below %u sieve = ~/.dovecot.sieve sieve_before = /apps/mail/var/dovecot/sieve/ sieve_dir = ~/sieve sieve_global_dir = /apps/mail/var/dovecot/sieve zlib_save = bz2 zlib_save_level = 9 } protocols = imap lmtp sieve service auth { unix_listener /apps/mail/var/postfix/dovecot-auth { group = postfix mode = 0660 user = postfix } } service dict { unix_listener dict { group = vmail mode = 0600 user = vmail } } service imap-login { inet_listener imap { port = 143 } } service lmtp { unix_listener /apps/mail/var/postfix/dovecot-lmtp { group = postfix mode = 0660 user = postfix } } service managesieve-login { inet_listener sieve { port = 4190 } service_count = 10 vsz_limit = 64 M } service managesieve { process_limit = 1024 } service quota-status { client_limit = 1 executable = quota-status -p postfix inet_listener { port = 12340 } } service quota-warning { executable = script /apps/mail/dovecot/2.2.5/etc/dovecot/conf.d/quota-warning.sh unix_listener quota-warning { group = vmail mode = 0660 user = vmail } user = vmail } shutdown_clients = no ssl_ca =
On 9.9.2013, at 9.54, Vijay Rajah vijayrajah@gmail.com wrote:
Ok I finally figured it...
It was because of improper permissions for the attachments folder.... I did an strace and found this.
Once I changed the permision to the attachments folder it was alright..
I think this is a bug... it must check and fail and report a proper error message.. instead of this cryptic error…
I did various fixes related to this. The new error message looks like this:
Sep 22 04:36:44 lda(tss 11769 ): Error: read(stdin) failed: Couldn't create attachment /tmp/mdbox/attachments/95/84/9584a63bd21ba5db6c92f6efb162c46f9e351d16-7a1fa036ac493e52f92d00007049b30b: mkdir_parents(/tmp/mdbox/attachments/95/84) failed: Permission denied
participants (2)
-
Timo Sirainen
-
Vijay Rajah