[Dovecot] fdatasync -- Error -- bad file descriptor

Vijay Rajah vijayrajah at gmail.com
Mon Sep 9 09:54:48 EEST 2013


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 at 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 at 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 at 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 = </apps/mail/dovecot/2.2.5/etc/dovecot/ssl/mayca.crt.pem
> ssl_cert = </apps/mail/dovecot/2.2.5/etc/dovecot/ssl/mail1.mydomain.tld.pem
> ssl_key = </apps/mail/dovecot/2.2.5/etc/dovecot/ssl/mail1.mydomain.tld.key
> ssl_parameters_regenerate = 30 hours
> submission_host = 127.0.0.1:587
> userdb {
>   driver = prefetch
> }
> userdb {
>   args = /apps/mail/dovecot/2.2.5/etc/dovecot/conf.d/dovecot-sql.conf.ext
>   driver = sql
> }
> protocol lda {
>   mail_plugins = " virtual quota zlib sieve zlib"
> }
> protocol imap {
>   mail_plugins = " virtual quota zlib imap_quota imap_zlib"
> }
> protocol lmtp {
>   debug_log_path = /var/log/dovecot-lmtp-debg.log
>   mail_plugins = " virtual quota zlib sieve zlib"
> }
>
>


More information about the dovecot mailing list