On Jan 25, 2008 11:44 AM, tomas@tuxteam.de wrote:
I'd typically do
#!/bin/sh { DELIVER=... echo "==" echo $DATE ... } >> /tmp/foo.txt 2>&1
Thanks, I wasn't aware of the curly bracket trick. STRACE found the problem for me! It was something completely unexpected. Patsing my script here for future reference for anyone:
#!/bin/sh
{
DELIVER=/usr/local/libexec/dovecot/deliver
STRACE=/usr/local/bin/strace
DATE=date
echo "=="
/usr/bin/env
echo $DATE
echo $LOGNAME
$STRACE $DELIVER -d "$LOGNAME"
echo $DATE
} >> /tmp/foo.txt 2>&1
So, doing this, near the end of the STRACE gave me:
open("/var/log/dovecot-lda.log", O_WRONLY|O_APPEND|O_CREAT, 0666) = 6 lseek(6, 0, SEEK_END) = 51237618 fcntl(6, F_GETFD) = 0 fcntl(6, F_SETFD, FD_CLOEXEC) = 0 open("/var/log/dovecot-lda.log", O_WRONLY|O_APPEND|O_CREAT, 0666) = 7 lseek(7, 0, SEEK_END) = 51237618 fcntl(7, F_GETFD) = 0 fcntl(7, F_SETFD, FD_CLOEXEC) = 0 fstat(7, {st_mode=0, st_size=0, ...}) = 0 gettimeofday({0, 0}, NULL) = 0 access("/etc/localtime", R_OK) = 0 open("/etc/localtime", O_RDONLY) = 8 fstat(8, {st_mode=S_IFCHR|S_ISUID|S_ISGID|S_ISVTX|045, st_rdev=makedev(37, 842006560), ...}) = 0 read(8, "\377\377\377\377\377\377\377\377\377\377\377\377\377\377"..., 7944) = 1279 close(8) = 0 write(7, "deliver(username): Jan 25 12:58:"..., 100) = -1 EFBIG (File too large) --- SIGXFSZ (Filesize limit exceeded: 25) --- --- SIGXFSZ (Filesize limit exceeded: 25) --- syscall_417(0xbfbfe820) = -1 (errno 27) exit(75) = ?
So, the issue was that SOMETHING is enforcing /var/log/dovecot-lda/log size! I was able to get this working by rotating, and the solution will be to constantly rotate, but I still need to figure out what's enforcing this.
I have no filesystem quotas enabled (FreeBSD) and never have.
I could not find any 'max file size' type of settings in dovecot. Even if there were, I don't know why this would be the default behavior!
So, anyone have thoughts as to what's enforcing the "Filesize limit exceeded: 25"?
--falz