From: Jamal Mubarak on

On May 9, 2010, at 5:56 PM, Wietse Venema wrote:

> This involves getting a trace of system calls (arguments and results)
> when the error happens.
>
> Some systems capture a system call trace with commands like:
>
> ktrace -f /file/name -d command
> strace -o /file/name -f command
> truss -o /file/name -f command
>
> But, things may be different on MacOS.
>
> Above, "command" is the command that starts the entire printing
> system. On some systems, "command" would be:
>
> sh /etc/rc.d/cups start
> sh /etc/init.d/cups start


Thanks for replying! I did try "dtruss -n sendmail". It gave me a large output which I compared with a regular email that did not fail. It is hard for me to decipher but here is a part of it. The rest is given below:

11901/0x3ecda: fstat64(0x3, 0x7FFF5FBFF650, 0xFC080) = 0 0
11901/0x3ecda: close(0x3) = 0 0
11901/0x3ecda: getrlimit(0x1008, 0x7FFF5FBFEE10, 0x7FFF82755CCC) = 0 0
11901/0x3ecda: open_nocancel("/etc/sysinfo.conf\0", 0x0, 0x1B6) = -1 Err#2
11901/0x3ecda: fork() = 11902 0
11902/0x3ecdc: __semwait_signal(0x803, 0x0, 0x1) = -1 Err#60
11901/0x3ecda: read(0x4, "\333\006\0", 0x1000) = 0 0
11901/0x3ecda: close(0x4) = 0 0
11901/0x3ecda: wait4(0x2E7E, 0x7FFF5FBFF73C, 0x0) = 11902 0
11901/0x3ecda: write(0x2, "sendmail: warning: command \"/usr/sbin/postdrop -r\" exited with status 1\n\0", 0x48) = 72 0
11901/0x3ecda: gettimeofday(0x7FFF5FBFF3C0, 0x0, 0x10) = 1273446059 0
11901/0x3ecda: getuid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
11901/0x3ecda: getgid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
11901/0x3ecda: __sysctl(0x7FFF5FBFF220, 0x2, 0x7FFF5FBFF230) = 0 0
11901/0x3ecda: write(0x2, "sendmail: fatal: _lp(26): unable to execute /usr/sbin/postdrop -r: Unknown error: 0\n\0", 0x54) = 84 0
11901/0x3ecda: getuid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
11901/0x3ecda: getgid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
11901/0x3ecda: __sysctl(0x7FFF5FBFF240, 0x2, 0x7FFF5FBFF250) = 0 0

I am frankly unable to understand this. Note that _lp has the user id of 26. Should I do it for cups or the CUPS notifier? Any help would be appreciated.

Thanks,

Jamal




------------------Full output------------------------------------------

PID/THRD SYSCALL(args) = return
11901/0x3ecda: getpid(0x7FFF5FBFF7C0, 0x7FFFFFE00050, 0x0) = 11901 0
11901/0x3ecda: open_nocancel("/dev/urandom\0", 0x0, 0x0) = 3 0
11901/0x3ecda: read_nocancel(0x3, "\277C\270\214\326L\221\361\322.\264_iN\270\266D\335't\313\032\fU\3259\232X\027\250!\030}\336\200z\315H\324\004\016\273\272\031\210!b\347\245@\220<\265\207\001/\t\316+\201\352\274\204\232\"\023|\260l\036\362\322\276\207\231\267\254\350\373\221\234\371\342\237e&\262\336\213S\004\330\377\232\023\260E\2600\325\265\035#\221\300\277\"\372\0", 0x6C) = 108 0
11901/0x3ecda: close_nocancel(0x3) = 0 0
11901/0x3ecda: issetugid(0x100000000, 0x7FFF5FBFFA92, 0x7FFF5FC40530) = 0 0
11901/0x3ecda: geteuid(0x100000000, 0x7FFF5FBFFA92, 0x0) = 26 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD6B0, 0x2, 0x7FFF5FBFD670) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD670, 0x2, 0x7FFF5FBFD70C) = 0 0
11901/0x3ecda: shared_region_check_np(0x7FFF5FBFD878, 0x0, 0x7FFF5FC1DC86) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory\0", 0x7FFF5FBFC9C0, 0x7FFF5FBFD000) = 0 0
11901/0x3ecda: stat64("/usr/lib/libssl.0.9.8.dylib\0", 0x7FFF5FBFC9C0, 0x7FFF5FBFD000) = 0 0
11901/0x3ecda: stat64("/usr/lib/libsasl2.2.dylib\0", 0x7FFF5FBFC9C0, 0x7FFF5FBFD000) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos\0", 0x7FFF5FBFC9C0, 0x7FFF5FBFD000) = 0 0
11901/0x3ecda: stat64("/usr/lib/libpcre.0.dylib\0", 0x7FFF5FBFC9C0, 0x7FFF5FBFD000) = 0 0
11901/0x3ecda: ioctl(0x3, 0x80086804, 0x7FFF5FBFD610) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD410, 0x2, 0x7FFF5FBFD400) = 0 0
11901/0x3ecda: bsdthread_register(0x7FFF8278B75C, 0x7FFF8276C378, 0x2000) = 0 0
11901/0x3ecda: thread_selfid(0x7FFF8278B75C, 0x7FFF8276C378, 0x0) = 257242 0
11901/0x3ecda: open_nocancel("/dev/urandom\0", 0x0, 0x7FFF704ABB20) = 3 0
11901/0x3ecda: read_nocancel(0x3, "\223\242\030\214\037\346\270'\241\233n\v=2\242\223p\360\253GQ\330f/\327`F\324\264\266\002\341l\357\305k\t\001\t\346\355\004\331oD\350\362h\202\320\275@\265d\334\024\275\363\314\237\204\262\237\335\0", 0x40) = 64 0
11901/0x3ecda: close_nocancel(0x3) = 0 0
11901/0x3ecda: mmap(0x0, 0x3000, 0x3, 0x1002, 0x1000000, 0x7FFF00000001) = 0x62000 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD290, 0x2, 0x7FFF5FBFD250) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD250, 0x2, 0x7FFF5FBFD2E8) = 0 0
11901/0x3ecda: getpid(0x7FFF5FBFD1E0, 0x7FFFFFE00050, 0x0) = 11901 0
11901/0x3ecda: open_nocancel("/dev/urandom\0", 0x0, 0x0) = 3 0
11901/0x3ecda: read_nocancel(0x3, "\235s\324\"l\240\304,\260(\311\232+$\266\224\241i\205d,u\243\203m\2265R\bJ\240kT\263\344\303\373\205 <F\253$g\355\v\312\"\343\314\335\003\306\005\320\320Vg\2058\371\242~\251\333\312\017t\330\266q\n\240\336%\033\224l+\304ysSM\3020\262\241W\024g\0202c\245\232u\267Nf\227\022\207\203(\325#\025\0", 0x6C) = 108 0
11901/0x3ecda: close_nocancel(0x3) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD290, 0x2, 0x7FFF5FBFD2BC) = 0 0
11901/0x3ecda: mmap(0x0, 0xD000, 0x3, 0x1002, 0x1000000, 0x1FFFFFFFF) = 0x65000 0
11901/0x3ecda: mmap(0x0, 0xD000, 0x3, 0x1002, 0x1000000, 0x1FFFFFFFF) = 0x72000 0
11901/0x3ecda: mmap(0x0, 0x1000, 0x3, 0x1002, 0x1000000, 0x1FFFFFFFF) = 0x7F000 0
11901/0x3ecda: mmap(0x0, 0x200000, 0x3, 0x1002, 0x7000000, 0x1FFFFFFFF) = 0x80000 0
11901/0x3ecda: munmap(0x100080000, 0x80000) = 0 0
11901/0x3ecda: munmap(0x100200000, 0x80000) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD3F0, 0x2, 0x7FFF5FBFD3B0) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD3B0, 0x2, 0x7FFF704B8680) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD3F0, 0x2, 0x7FFF5FBFD3B0) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD3B0, 0x2, 0x7FFF704B8684) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD3F0, 0x2, 0x7FFF5FBFD3B0) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFD3B0, 0x2, 0x7FFF704B8688) = 0 0
11901/0x3ecda: issetugid(0x7FFF819878AC, 0x7FFF5FBFD4AC, 0x7FFF5FBFF9C0) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation\0", 0x7FFF5FBFC050, 0x7FFF5FBFC690) = 0 0
11901/0x3ecda: mmap(0x0, 0x1000000, 0x3, 0x1002, 0x2000000, 0x1FFFFFFFF) = 0x200000 0
11901/0x3ecda: munmap(0x100200000, 0x600000) = 0 0
11901/0x3ecda: munmap(0x101000000, 0x200000) = 0 0
11901/0x3ecda: getuid(0x7FFF5FBFD4DC, 0x7FFF5FBFD4D8, 0x0) = 26 0
11901/0x3ecda: geteuid(0x100107220, 0x11, 0x7FFF702D85C8) = 26 0
11901/0x3ecda: getuid(0x100107220, 0x11, 0x0) = 26 0
11901/0x3ecda: issetugid(0x1, 0x2, 0x100107F30) = 0 0
11901/0x3ecda: getuid(0x7FFF5FBFCCAC, 0x0, 0x0) = 26 0
11901/0x3ecda: stat64("/usr/libexec/cups/notifier\0", 0x7FFF5FBFC240, 0xFC080) = 0 0
11901/0x3ecda: open_nocancel("/usr/libexec/cups/notifier\0", 0x100004, 0x0) = 3 0
11901/0x3ecda: fcntl_nocancel(0x3, 0x2, 0x1) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFB860, 0x2, 0x7FFF704B0658) = 0 0
11901/0x3ecda: fstatfs64(0x3, 0x7FFF5FBFB8B0, 0x0) = 0 0
11901/0x3ecda: getdirentries64(0x3, 0x100825800, 0x1000) = 108 0
11901/0x3ecda: getdirentries64(0x3, 0x100825800, 0x1000) = 0 0
11901/0x3ecda: close_nocancel(0x3) = 0 0
11901/0x3ecda: stat64("/usr/libexec/cups/notifier/Contents\0", 0x7FFF5FBFC200, 0xFFFFFFFF) = -1 Err#2
11901/0x3ecda: stat64("/usr/libexec/cups/notifier/Resources\0", 0x7FFF5FBFC200, 0xFFFFFFFF) = -1 Err#2
11901/0x3ecda: stat64("/usr/libexec/cups/notifier/Support Files\0", 0x7FFF5FBFC200, 0xFFFFFFFF) = -1 Err#2
11901/0x3ecda: stat64("/usr/libexec/cups/notifier\0", 0x7FFF5FBFC2A0, 0xFFFFFFFF) = 0 0
11901/0x3ecda: stat64("/usr/libexec/cups/notifier/mailto\0", 0x7FFF5FBFC4B0, 0x100108E4C) = 0 0
11901/0x3ecda: open("/usr/libexec/cups/notifier/mailto\0", 0x0, 0x1FF) = 3 0
11901/0x3ecda: read(0x3, "\312\376\272\276\0", 0x200) = 512 0
11901/0x3ecda: lseek(0x3, 0x8000, 0x0) = 32768 0
11901/0x3ecda: read(0x3, "\316\372\355\376\a\0", 0x20) = 32 0
11901/0x3ecda: close(0x3) = 0 0
11901/0x3ecda: umask(0x12, 0x10001B361, 0x10002B050) = 63 0
11901/0x3ecda: fstat64(0x0, 0x7FFF5FBFF880, 0x0) = 0 0
11901/0x3ecda: fstat64(0x1, 0x7FFF5FBFF880, 0x0) = 0 0
11901/0x3ecda: fstat64(0x2, 0x7FFF5FBFF880, 0x0) = 0 0
11901/0x3ecda: close(0x3) = -1 Err#9
11901/0x3ecda: close(0x4) = -1 Err#9
11901/0x3ecda: close(0x5) = -1 Err#9
11901/0x3ecda: close(0x6) = -1 Err#9
11901/0x3ecda: close(0x7) = -1 Err#9
11901/0x3ecda: close(0x8) = -1 Err#9
11901/0x3ecda: close(0x9) = -1 Err#9
11901/0x3ecda: close(0xA) = -1 Err#9
11901/0x3ecda: close(0xB) = -1 Err#9
11901/0x3ecda: close(0xC) = -1 Err#9
11901/0x3ecda: close(0xD) = -1 Err#9
11901/0x3ecda: close(0xE) = -1 Err#9
11901/0x3ecda: close(0xF) = -1 Err#9
11901/0x3ecda: close(0x10) = -1 Err#9
11901/0x3ecda: close(0x11) = -1 Err#9
11901/0x3ecda: close(0x12) = -1 Err#9
11901/0x3ecda: close(0x13) = -1 Err#9
11901/0x3ecda: close(0x14) = -1 Err#9
11901/0x3ecda: close(0x15) = -1 Err#9
11901/0x3ecda: close(0x16) = -1 Err#9
11901/0x3ecda: close(0x17) = -1 Err#9
11901/0x3ecda: close(0x18) = -1 Err#9
11901/0x3ecda: close(0x19) = -1 Err#9
11901/0x3ecda: close(0x1A) = -1 Err#9
11901/0x3ecda: close(0x1B) = -1 Err#9
11901/0x3ecda: close(0x1C) = -1 Err#9
11901/0x3ecda: close(0x1D) = -1 Err#9
11901/0x3ecda: close(0x1E) = -1 Err#9
11901/0x3ecda: close(0x1F) = -1 Err#9
11901/0x3ecda: close(0x20) = -1 Err#9
11901/0x3ecda: close(0x21) = -1 Err#9
11901/0x3ecda: close(0x22) = -1 Err#9
11901/0x3ecda: close(0x23) = -1 Err#9
11901/0x3ecda: close(0x24) = -1 Err#9
11901/0x3ecda: close(0x25) = -1 Err#9
11901/0x3ecda: close(0x26) = -1 Err#9
11901/0x3ecda: close(0x27) = -1 Err#9
11901/0x3ecda: close(0x28) = -1 Err#9
11901/0x3ecda: close(0x29) = -1 Err#9
11901/0x3ecda: close(0x2A) = -1 Err#9
11901/0x3ecda: close(0x2B) = -1 Err#9
11901/0x3ecda: close(0x2C) = -1 Err#9
11901/0x3ecda: close(0x2D) = -1 Err#9
11901/0x3ecda: close(0x2E) = -1 Err#9
11901/0x3ecda: close(0x2F) = -1 Err#9
11901/0x3ecda: close(0x30) = -1 Err#9
11901/0x3ecda: close(0x31) = -1 Err#9
11901/0x3ecda: close(0x32) = -1 Err#9
11901/0x3ecda: close(0x33) = -1 Err#9
11901/0x3ecda: close(0x34) = -1 Err#9
11901/0x3ecda: close(0x35) = -1 Err#9
11901/0x3ecda: close(0x36) = -1 Err#9
11901/0x3ecda: close(0x37) = -1 Err#9
11901/0x3ecda: close(0x38) = -1 Err#9
11901/0x3ecda: close(0x39) = -1 Err#9
11901/0x3ecda: close(0x3A) = -1 Err#9
11901/0x3ecda: close(0x3B) = -1 Err#9
11901/0x3ecda: close(0x3C) = -1 Err#9
11901/0x3ecda: close(0x3D) = -1 Err#9
11901/0x3ecda: close(0x3E) = -1 Err#9
11901/0x3ecda: close(0x3F) = -1 Err#9
11901/0x3ecda: close(0x40) = -1 Err#9
11901/0x3ecda: close(0x41) = -1 Err#9
11901/0x3ecda: close(0x42) = -1 Err#9
11901/0x3ecda: close(0x43) = -1 Err#9
11901/0x3ecda: close(0x44) = -1 Err#9
11901/0x3ecda: close(0x45) = -1 Err#9
11901/0x3ecda: close(0x46) = -1 Err#9
11901/0x3ecda: close(0x47) = -1 Err#9
11901/0x3ecda: close(0x48) = -1 Err#9
11901/0x3ecda: close(0x49) = -1 Err#9
11901/0x3ecda: close(0x4A) = -1 Err#9
11901/0x3ecda: close(0x4B) = -1 Err#9
11901/0x3ecda: close(0x4C) = -1 Err#9
11901/0x3ecda: close(0x4D) = -1 Err#9
11901/0x3ecda: close(0x4E) = -1 Err#9
11901/0x3ecda: close(0x4F) = -1 Err#9
11901/0x3ecda: close(0x50) = -1 Err#9
11901/0x3ecda: close(0x51) = -1 Err#9
11901/0x3ecda: close(0x52) = -1 Err#9
11901/0x3ecda: close(0x53) = -1 Err#9
11901/0x3ecda: close(0x54) = -1 Err#9
11901/0x3ecda: close(0x55) = -1 Err#9
11901/0x3ecda: close(0x56) = -1 Err#9
11901/0x3ecda: close(0x57) = -1 Err#9
11901/0x3ecda: close(0x58) = -1 Err#9
11901/0x3ecda: close(0x59) = -1 Err#9
11901/0x3ecda: close(0x5A) = -1 Err#9
11901/0x3ecda: close(0x5B) = -1 Err#9
11901/0x3ecda: close(0x5C) = -1 Err#9
11901/0x3ecda: close(0x5D) = -1 Err#9
11901/0x3ecda: close(0x5E) = -1 Err#9
11901/0x3ecda: close(0x5F) = -1 Err#9
11901/0x3ecda: close(0x60) = -1 Err#9
11901/0x3ecda: close(0x61) = -1 Err#9
11901/0x3ecda: close(0x62) = -1 Err#9
11901/0x3ecda: close(0x63) = -1 Err#9
11901/0x3ecda: geteuid(0x10001B37E, 0x7FFF5FBFF880, 0xFFFFFFFFFFFFFFFF) = 26 0
11901/0x3ecda: getuid(0x10001B37E, 0x7FFF5FBFF880, 0x0) = 26 0
11901/0x3ecda: getgid(0x10001B37E, 0x7FFF5FBFF880, 0x1) = 26 0
11901/0x3ecda: getegid(0x10001B37E, 0x7FFF5FBFF880, 0x0) = 26 0
11901/0x3ecda: geteuid(0x10001B38B, 0x7FFF5FBFF77C, 0x7FFF5FBFF9C0) = 26 0
11901/0x3ecda: getuid(0x10001B38B, 0x7FFF5FBFF77C, 0x0) = 26 0
11901/0x3ecda: getgid(0x10001B38B, 0x7FFF5FBFF77C, 0x1) = 26 0
11901/0x3ecda: getegid(0x10001B38B, 0x7FFF5FBFF77C, 0x0) = 26 0
11901/0x3ecda: geteuid(0x10001C78E, 0x2F, 0x0) = 26 0
11901/0x3ecda: getuid(0x10001C78E, 0x2F, 0x0) = 26 0
11901/0x3ecda: getgid(0x10001C78E, 0x2F, 0x1) = 26 0
11901/0x3ecda: getegid(0x10001C78E, 0x2F, 0x0) = 26 0
11901/0x3ecda: geteuid(0x100108FD0, 0x1, 0x10) = 26 0
11901/0x3ecda: getuid(0x100108FD0, 0x1, 0x0) = 26 0
11901/0x3ecda: getgid(0x100108FD0, 0x1, 0x1) = 26 0
11901/0x3ecda: getegid(0x100108FD0, 0x1, 0x0) = 26 0
11901/0x3ecda: open("/usr/lib/libpcre.0.dylib\0", 0x0, 0x0) = 3 0
11901/0x3ecda: pread(0x3, "\312\376\272\276\0", 0x1000, 0x0) = 4096 0
11901/0x3ecda: pread(0x3, "\317\372\355\376\a\0", 0x1000, 0x1000) = 4096 0
11901/0x3ecda: mmap(0x100035000, 0x29000, 0x5, 0x12, 0x3, 0x1FFFFFFFF) = 0x35000 0
11901/0x3ecda: mmap(0x10005E000, 0x1000, 0x3, 0x12, 0x3, 0x1FFFFFFFF) = 0x5E000 0
11901/0x3ecda: mmap(0x10005F000, 0x2550, 0x1, 0x12, 0x3, 0x1FFFFFFFF) = 0x5F000 0
11901/0x3ecda: fcntl(0x3, 0x2C, 0x7FFF5FBFADC0) = 0 0
11901/0x3ecda: close(0x3) = 0 0
11901/0x3ecda: stat64("/usr/lib/libSystem.B.dylib\0", 0x7FFF5FBFC9C0, 0x7FFF5FBFD000) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation\0", 0x7FFF5FBFC810, 0x7FFF5FBFCE50) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory\0", 0x7FFF5FBFC810, 0x7FFF5FBFCE50) = 0 0
11901/0x3ecda: stat64("/usr/lib/libobjc.A.dylib\0", 0x7FFF5FBFC810, 0x7FFF5FBFCE50) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation\0", 0x7FFF5FBFC810, 0x7FFF5FBFCE50) = 0 0
11901/0x3ecda: stat64("/usr/lib/libauto.dylib\0", 0x7FFF5FBFC5D0, 0x7FFF5FBFCC10) = 0 0
11901/0x3ecda: stat64("/usr/lib/libicucore.A.dylib\0", 0x7FFF5FBFC5D0, 0x7FFF5FBFCC10) = 0 0
11901/0x3ecda: stat64("/usr/lib/libxml2.2.dylib\0", 0x7FFF5FBFC5D0, 0x7FFF5FBFCC10) = 0 0
11901/0x3ecda: stat64("/usr/lib/libz.1.dylib\0", 0x7FFF5FBFC5D0, 0x7FFF5FBFCC10) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork\0", 0x7FFF5FBFC5D0, 0x7FFF5FBFCC10) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration\0", 0x7FFF5FBFC5D0, 0x7FFF5FBFCC10) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/Security.framework/Versions/A/Security\0", 0x7FFF5FBFC5D0, 0x7FFF5FBFCC10) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices\0", 0x7FFF5FBFC5D0, 0x7FFF5FBFCC10) = 0 0
11901/0x3ecda: stat64("/usr/lib/libstdc++.6.dylib\0", 0x7FFF5FBFC470, 0x7FFF5FBFCAB0) = 0 0
11901/0x3ecda: stat64("/usr/lib/system/libmathCommon.A.dylib\0", 0x7FFF5FBFC1D0, 0x7FFF5FBFC810) = 0 0
11901/0x3ecda: stat64("/usr/lib/libsqlite3.dylib\0", 0x7FFF5FBFC3C0, 0x7FFF5FBFCA00) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore\0", 0x7FFF5FBFC390, 0x7FFF5FBFC9D0) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata\0", 0x7FFF5FBFC390, 0x7FFF5FBFC9D0) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices\0", 0x7FFF5FBFC390, 0x7FFF5FBFC9D0) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit\0", 0x7FFF5FBFC390, 0x7FFF5FBFC9D0) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE\0", 0x7FFF5FBFC390, 0x7FFF5FBFC9D0) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices\0", 0x7FFF5FBFC390, 0x7FFF5FBFC9D0) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices\0", 0x7FFF5FBFC390, 0x7FFF5FBFC9D0) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit\0", 0x7FFF5FBFC180, 0x7FFF5FBFC7C0) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration\0", 0x7FFF5FBFC180, 0x7FFF5FBFC7C0) = 0 0
11901/0x3ecda: stat64("/usr/lib/libbsm.0.dylib\0", 0x7FFF5FBFC180, 0x7FFF5FBFC7C0) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/NetFS.framework/Versions/A/NetFS\0", 0x7FFF5FBFC180, 0x7FFF5FBFC7C0) = 0 0
11901/0x3ecda: stat64("/usr/lib/system/libkxld.dylib\0", 0x7FFF5FBFBFF0, 0x7FFF5FBFC630) = 0 0
11901/0x3ecda: stat64("/usr/lib/libxslt.1.dylib\0", 0x7FFF5FBFC150, 0x7FFF5FBFC790) = 0 0
11901/0x3ecda: stat64("/System/Library/PrivateFrameworks/PasswordServer.framework/Versions/A/PasswordServer\0", 0x7FFF5FBFC650, 0x7FFF5FBFCC90) = 0 0
11901/0x3ecda: stat64("/System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryService\0", 0x7FFF5FBFC650, 0x7FFF5FBFCC90) = 0 0
11901/0x3ecda: stat64("/usr/lib/libresolv.9.dylib\0", 0x7FFF5FBFC4C0, 0x7FFF5FBFCB00) = 0 0
11901/0x3ecda: stat64("/usr/lib/libcrypto.0.9.8.dylib\0", 0x7FFF5FBFC460, 0x7FFF5FBFCAA0) = 0 0
11901/0x3ecda: stat64("/System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent\0", 0x7FFF5FBFC2E0, 0x7FFF5FBFC920) = 0 0
11901/0x3ecda: madvise(0x7FFF89205000, 0x2000, 0x5) = 0 0
11901/0x3ecda: madvise(0x7FFF891E3000, 0x2000, 0x5) = 0 0
11901/0x3ecda: madvise(0x7FFF891EF000, 0x2000, 0x5) = 0 0
11901/0x3ecda: madvise(0x7FFF891F8000, 0x2000, 0x5) = 0 0
11901/0x3ecda: madvise(0x7FFF89264000, 0x2000, 0x5) = 0 0
11901/0x3ecda: madvise(0x7FFF891F9000, 0x4000, 0x5) = 0 0
11901/0x3ecda: madvise(0x7FFF89216000, 0x2000, 0x5) = 0 0
11901/0x3ecda: open("/dev/dtracehelper\0", 0x2, 0x7FFF5FC46D88) = 3 0
11901/0x3ecda: close(0x3) = 0 0
11901/0x3ecda: access("/etc/localtime\0", 0x4, 0x0) = 0 0
11901/0x3ecda: open_nocancel("/etc/localtime\0", 0x0, 0x0) = 3 0
11901/0x3ecda: fstat64(0x3, 0x7FFF5FBFCC00, 0x0) = 0 0
11901/0x3ecda: read_nocancel(0x3, "TZif\0", 0x2A64) = 1279 0
11901/0x3ecda: close_nocancel(0x3) = 0 0
11901/0x3ecda: shm_open(0x7FFF828A5D80, 0x0, 0x0) = 3 0
11901/0x3ecda: mmap(0x0, 0x1000, 0x1, 0x1, 0x3, 0x100000000) = 0x80000 0
11901/0x3ecda: close_nocancel(0x3) = 0 0
11901/0x3ecda: geteuid(0x7FFF704A4180, 0x0, 0x2) = 26 0
11901/0x3ecda: geteuid(0x9, 0x10010C859, 0x0) = 26 0
11901/0x3ecda: open("/etc/postfix/main.cf\0", 0x0, 0x0) = 3 0
11901/0x3ecda: read(0x3, "# Global Postfix configuration file. This file lists only a subset\n# of all parameters. For the syntax, and for a complete parameter\n# list, see the postconf(5) manual page (command: \"man 5 postconf\").\n#\n# For common configuration examples, see BASIC_CONFI", 0x1000) = 4096 0
11901/0x3ecda: __sysctl(0x7FFF5FBFF440, 0x6, 0x0) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFF440, 0x6, 0x10082C000) = 0 0
11901/0x3ecda: geteuid(0x10001C78E, 0x7FFFFFE00050, 0x0) = 26 0
11901/0x3ecda: getuid(0x10001C78E, 0x7FFFFFE00050, 0x0) = 26 0
11901/0x3ecda: getgid(0x10001C78E, 0x7FFFFFE00050, 0x1) = 26 0
11901/0x3ecda: getegid(0x10001C78E, 0x7FFFFFE00050, 0x0) = 26 0
11901/0x3ecda: mmap(0x0, 0x3000, 0x3, 0x1002, 0x1000000, 0x100000000) = 0x81000 0
11901/0x3ecda: __sysctl(0x7FFF5FBFF640, 0x2, 0x7FFF5FBFF600) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFF600, 0x2, 0x7FFF5FBFF698) = 0 0
11901/0x3ecda: __sysctl(0x7FFF5FBFF640, 0x2, 0x7FFF5FBFF66C) = 0 0
11901/0x3ecda: mmap(0x0, 0xD000, 0x3, 0x1002, 0x1000000, 0x100000000) = 0x84000 0
11901/0x3ecda: mmap(0x0, 0xD000, 0x3, 0x1002, 0x1000000, 0x100000000) = 0x91000 0
11901/0x3ecda: mmap(0x0, 0x200000, 0x3, 0x1002, 0x7000000, 0x100000000) = 0x200000 0
11901/0x3ecda: munmap(0x100300000, 0x100000) = 0 0
11901/0x3ecda: chdir("/private/var/spool/postfix\0", 0x10010F36E, 0x0) = 0 0
11901/0x3ecda: sigaction(0xD, 0x7FFF5FBFF740, 0x7FFF5FBFF770) = 0 0
11901/0x3ecda: getuid(0x2, 0x1, 0x1) = 26 0
11901/0x3ecda: getuid(0x100111714, 0xFFFF0000, 0x0) = 26 0
11901/0x3ecda: socketpair(0x1, 0x1, 0x0) = 0 0
11902/0x3ecdc: thread_selfid(0x7FFF704AEBE0, 0x3, 0x1) = 257244 0
11902/0x3ecdc: getpid(0x7FFF704AEBE0, 0x3, 0x0) = 11902 0
11902/0x3ecdc: close(0x4) = 0 0
11902/0x3ecdc: dup2(0x3, 0x0, 0x0) = 0 0
11902/0x3ecdc: dup2(0x3, 0x1, 0x0) = 1 0
11902/0x3ecdc: close(0x3) = 0 0
11902/0x3ecdc: geteuid(0x1001121B0, 0x3D, 0x3D) = 26 0
11902/0x3ecdc: getuid(0x1001121B0, 0x3D, 0x0) = 26 0
11902/0x3ecdc: getgid(0x1001121B0, 0x3D, 0x1) = 26 0
11902/0x3ecdc: getegid(0x1001121B0, 0x3D, 0x0) = 26 0
11902/0x3ecdc: geteuid(0x100112210, 0x3D, 0x3D) = 26 0
11902/0x3ecdc: getuid(0x100112210, 0x3D, 0x0) = 26 0
11902/0x3ecdc: getgid(0x100112210, 0x3D, 0x1) = 26 0
11902/0x3ecdc: getegid(0x100112210, 0x3D, 0x0) = 26 0
11902/0x3ecdc: geteuid(0x100112230, 0x3D, 0x3D) = 26 0
11902/0x3ecdc: getuid(0x100112230, 0x3D, 0x0) = 26 0
11902/0x3ecdc: getgid(0x100112230, 0x3D, 0x1) = 26 0
11902/0x3ecdc: getegid(0x100112230, 0x3D, 0x0) = 26 0
11902/0x3ecdc: execve(0x100112280, 0x100112380, 0x100200010) = -1 Err#1
11902/0x3ecdc: stat64("/usr/sbin/postdrop\0", 0x7FFF5FBFF100, 0x2) = 0 0
11902/0x3ecdc: write(0x2, "sendmail: fatal: execvp /usr/sbin/postdrop: Operation not permitted\n\0", 0x44) = 68 0
11901/0x3ecda: close(0x3) = 0 0
11902/0x3ecdc: geteuid(0x7FFF704A4180, 0x0, 0xB) = 26 0
11902/0x3ecdc: getuid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
11902/0x3ecdc: getgid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
11902/0x3ecdc: __sysctl(0x7FFF5FBFF0A0, 0x2, 0x7FFF5FBFF0B0) = 0 0
11901/0x3ecda: read(0x3, "nterfaces = $myhostname, localhost\n\n# The proxy_interfaces parameter specifies the network interface\n# addresses that this mail system receives mail on by way of a\n# proxy or network address translation unit. This setting extends\n# the address list specifi", 0x1000) = 4096 0
11901/0x3ecda: read(0x3, "server\n# response code when a recipient domain matches $mydestination or\n# ${proxy,inet}_interfaces, while $local_recipient_maps is non-empty\n# and the recipient address or address local-part is not found.\n#\n# The default setting is 550 (reject mail) but i", 0x1000) = 4096 0
11901/0x3ecda: read(0x3, "ddress] or [address]:port; the form [host] turns off MX lookups.\n#\n# If you're connected via UUCP, see also the default_transport parameter.\n#\n#relayhost = $mydomain\n#relayhost = [gateway.my.domain]\n#relayhost = [mailserver.isp.tld]\n#relayhost = uucphost\n#", 0x1000) = 4096 0
11901/0x3ecda: read(0x3, "\n# system type.\n#\n#mail_spool_directory = /var/mail\n#mail_spool_directory = /var/spool/mail\n\n# The mailbox_command parameter specifies the optional external\n# command to use instead of mailbox delivery. The command is run as\n# the recipient with proper HOM", 0x1000) = 4096 0
11901/0x3ecda: read(0x3, "an multiple physical lines.\n#\n# By default, these patterns also apply to MIME headers and to the\n# headers of attached messages. With older Postfix versions, MIME and\n# attached message headers were treated as body text.\n#\n# For details, see \"man header_ch", 0x1000) = 4096 0
11901/0x3ecda: read(0x3, "l_path: The full pathname of the Postfix sendmail command.\n# This is the Sendmail-compatible mail posting interface.\n# \nsendmail_path = /usr/sbin/sendmail\n\n# newaliases_path: The full pathname of the Postfix newaliases command.\n# This is the Sendmail-compa", 0x1000) = 1850 0
11901/0x3ecda: read(0x3, "no\n\n# manpage_directory: The location of the Postfix on-line manual pages.\n#\nmanpage_directory = /usr/share/man\n\n# sample_directory: The location of the Postfix sample configuration files.\n# This parameter is obsolete as of Postfix 2.1.\n#\nsample_directory ", 0x1000) = 0 0
11901/0x3ecda: fstat64(0x3, 0x7FFF5FBFF650, 0xFC080) = 0 0
11901/0x3ecda: close(0x3) = 0 0
11901/0x3ecda: getrlimit(0x1008, 0x7FFF5FBFEE10, 0x7FFF82755CCC) = 0 0
11901/0x3ecda: open_nocancel("/etc/sysinfo.conf\0", 0x0, 0x1B6) = -1 Err#2
11901/0x3ecda: fork() = 11902 0
11902/0x3ecdc: __semwait_signal(0x803, 0x0, 0x1) = -1 Err#60
11901/0x3ecda: read(0x4, "\333\006\0", 0x1000) = 0 0
11901/0x3ecda: close(0x4) = 0 0
11901/0x3ecda: wait4(0x2E7E, 0x7FFF5FBFF73C, 0x0) = 11902 0
11901/0x3ecda: write(0x2, "sendmail: warning: command \"/usr/sbin/postdrop -r\" exited with status 1\n\0", 0x48) = 72 0
11901/0x3ecda: gettimeofday(0x7FFF5FBFF3C0, 0x0, 0x10) = 1273446059 0
11901/0x3ecda: getuid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
11901/0x3ecda: getgid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
11901/0x3ecda: __sysctl(0x7FFF5FBFF220, 0x2, 0x7FFF5FBFF230) = 0 0
11901/0x3ecda: write(0x2, "sendmail: fatal: _lp(26): unable to execute /usr/sbin/postdrop -r: Unknown error: 0\n\0", 0x54) = 84 0
11901/0x3ecda: getuid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
11901/0x3ecda: getgid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
11901/0x3ecda: __sysctl(0x7FFF5FBFF240, 0x2, 0x7FFF5FBFF250) = 0 0

From: Wietse Venema on
Jamal Mubarak:
>
> On May 9, 2010, at 5:56 PM, Wietse Venema wrote:
>
> > This involves getting a trace of system calls (arguments and results)
> > when the error happens.
> >
> > Some systems capture a system call trace with commands like:
> >
> > ktrace -f /file/name -d command
> > strace -o /file/name -f command
> > truss -o /file/name -f command
> >
> > But, things may be different on MacOS.
> >
> > Above, "command" is the command that starts the entire printing
> > system. On some systems, "command" would be:
> >
> > sh /etc/rc.d/cups start
> > sh /etc/init.d/cups start
>
>
> Thanks for replying! I did try "dtruss -n sendmail". It gave me a large output which I compared with a regular email that did not fail. It is hard for me to decipher but here is a part of it. The rest is given below:

The problem does not happen in the Sendmail process that you run,
but in a CHILD process of that Sendmail process.

Therefore, you need to specify an option to trace CHILD processes.

The examples above use "-d" or "-f" to achieve that. MacOS dtrace
may have a different option for the same purpose.

Wietse

From: Jamal Mubarak on

On May 9, 2010, at 6:46 PM, Wietse Venema wrote:

> The problem does not happen in the Sendmail process that you run,
> but in a CHILD process of that Sendmail process.
>
> Therefore, you need to specify an option to trace CHILD processes.
>
> The examples above use "-d" or "-f" to achieve that. MacOS dtrace
> may have a different option for the same purpose.


You are the first person to truly help me! Yes, indeed, the -f option traces child processes. Here is the end of the output for the command "sudo dtruss -fn sendmail":

12180/0x403cc: fstat64(0x3, 0x7FFF5FBFF650, 0xFC080) = 0 0
12180/0x403cc: close(0x3) = 0 0
12180/0x403cc: getrlimit(0x1008, 0x7FFF5FBFEE10, 0x7FFF82755CCC) = 0 0
12180/0x403cc: open_nocancel("/etc/sysinfo.conf\0", 0x0, 0x1B6) = -1 Err#2
12180/0x403cc: __sysctl(0x7FFF5FBFF440, 0x6, 0x0) = 0 0
12180/0x403cc: __sysctl(0x7FFF5FBFF440, 0x6, 0x10082C000) = 0 0
12180/0x403cc: geteuid(0x10001C78E, 0x7FFFFFE00050, 0x0) = 26 0
12180/0x403cc: getuid(0x10001C78E, 0x7FFFFFE00050, 0x0) = 26 0
12180/0x403cc: getgid(0x10001C78E, 0x7FFFFFE00050, 0x1) = 26 0
12180/0x403cc: getegid(0x10001C78E, 0x7FFFFFE00050, 0x0) = 26 0
12180/0x403cc: mmap(0x0, 0x3000, 0x3, 0x1002, 0x1000000, 0x1FFFFFFFF) = 0x81000 0
12180/0x403cc: __sysctl(0x7FFF5FBFF640, 0x2, 0x7FFF5FBFF600) = 0 0
12180/0x403cc: __sysctl(0x7FFF5FBFF600, 0x2, 0x7FFF5FBFF698) = 0 0
12180/0x403cc: __sysctl(0x7FFF5FBFF640, 0x2, 0x7FFF5FBFF66C) = 0 0
12180/0x403cc: mmap(0x0, 0xD000, 0x3, 0x1002, 0x1000000, 0x1FFFFFFFF) = 0x84000 0
12180/0x403cc: mmap(0x0, 0xD000, 0x3, 0x1002, 0x1000000, 0x1FFFFFFFF) = 0x91000 0
12180/0x403cc: mmap(0x0, 0x200000, 0x3, 0x1002, 0x7000000, 0x1FFFFFFFF) = 0x200000 0
12180/0x403cc: munmap(0x100300000, 0x100000) = 0 0
12180/0x403cc: chdir("/private/var/spool/postfix\0", 0x10010F36E, 0x0) = 0 0
12180/0x403cc: sigaction(0xD, 0x7FFF5FBFF740, 0x7FFF5FBFF770) = 0 0
12180/0x403cc: getuid(0x2, 0x1, 0x1) = 26 0
12180/0x403cc: getuid(0x100111714, 0xFFFF0000, 0x0) = 26 0
12180/0x403cc: socketpair(0x1, 0x1, 0x0) = 0 0
12180/0x403cc: fork() = 12181 0
12180/0x403cc: close(0x3) = 0 0
12181/0x403d0: fork() = 0 0
12181/0x403d0: thread_selfid(0x7FFF704AEBE0, 0x3, 0x1) = 263120 0
12181/0x403d0: getpid(0x7FFF704AEBE0, 0x3, 0x0) = 12181 0
12181/0x403d0: close(0x4) = 0 0
12181/0x403d0: dup2(0x3, 0x0, 0x0) = 0 0
12181/0x403d0: dup2(0x3, 0x1, 0x0) = 1 0
12181/0x403d0: close(0x3) = 0 0
12181/0x403d0: geteuid(0x1001121B0, 0x3D, 0x3D) = 26 0
12181/0x403d0: getuid(0x1001121B0, 0x3D, 0x0) = 26 0
12181/0x403d0: getgid(0x1001121B0, 0x3D, 0x1) = 26 0
12181/0x403d0: getegid(0x1001121B0, 0x3D, 0x0) = 26 0
12181/0x403d0: geteuid(0x100112210, 0x3D, 0x3D) = 26 0
12181/0x403d0: getuid(0x100112210, 0x3D, 0x0) = 26 0
12181/0x403d0: getgid(0x100112210, 0x3D, 0x1) = 26 0
12181/0x403d0: getegid(0x100112210, 0x3D, 0x0) = 26 0
12181/0x403d0: geteuid(0x100112230, 0x3D, 0x3D) = 26 0
12181/0x403d0: getuid(0x100112230, 0x3D, 0x0) = 26 0
12181/0x403d0: getgid(0x100112230, 0x3D, 0x1) = 26 0
12181/0x403d0: getegid(0x100112230, 0x3D, 0x0) = 26 0
12181/0x403d0: execve(0x100112280, 0x100112380, 0x100200010) = -1 Err#1
12181/0x403d0: stat64("/usr/sbin/postdrop\0", 0x7FFF5FBFF100, 0x2) = 0 0
12181/0x403d0: write(0x2, "sendmail: fatal: execvp /usr/sbin/postdrop: Operation not permitted\n\0", 0x44) = 68 0
12181/0x403d0: geteuid(0x7FFF704A4180, 0x0, 0xB) = 26 0
12181/0x403d0: getuid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
12181/0x403d0: getgid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
12181/0x403d0: __sysctl(0x7FFF5FBFF0A0, 0x2, 0x7FFF5FBFF0B0) = 0 0
12180/0x403cc: getuid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
12180/0x403cc: getgid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
12180/0x403cc: __sysctl(0x7FFF5FBFF220, 0x2, 0x7FFF5FBFF230) = 0 0
12180/0x403cc: write(0x2, "sendmail: fatal: _lp(26): unable to execute /usr/sbin/postdrop -r: Unknown error: 0\n\0", 0x54) = 84 0
12180/0x403cc: getuid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
12180/0x403cc: getgid(0x0, 0x7FFF704A25F0, 0x7FFF704A25F0) = 26 0
12180/0x403cc: __sysctl(0x7FFF5FBFF240, 0x2, 0x7FFF5FBFF250) = 0 0
12181/0x403d0: __semwait_signal(0x803, 0x0, 0x1) = -1 Err#60
12180/0x403cc: read(0x4, "\333\006\0", 0x1000) = 0 0
12180/0x403cc: close(0x4) = 0 0
12180/0x403cc: wait4(0x2F95, 0x7FFF5FBFF73C, 0x0) = 12181 0
12180/0x403cc: write(0x2, "sendmail: warning: command \"/usr/sbin/postdrop -r\" exited with status 1\n\0", 0x48) = 72 0


Jamal

From: Wietse Venema on
Jamal Mubarak:
> 12181/0x403d0: execve(0x100112280, 0x100112380, 0x100200010) = -1 Err#1
> 12181/0x403d0: stat64("/usr/sbin/postdrop\0", 0x7FFF5FBFF100, 0x2) = 0 0
> 12181/0x403d0: write(0x2, "sendmail: fatal: execvp /usr/sbin/postdrop: Operation not permitted\n\0", 0x44) = 68 0

execve() fails with error number 1. You can look that number up in
/usr/include/sys/errno.h (or whatever the pathname is on MacOS).
But, MacOS is a descendant of FreeBSD, and on my machine:

#define EPERM 1 /* Operation not permitted */

Now the question is why execve() fails with EPERM.

On UNIX systems, EPERM does not report a file permission problem.
Instead:

1 EPERM Operation not permitted. An attempt was made to perform an oper-
ation limited to processes with appropriate privileges or to the
owner of a file or other resources.

For example, only the owner (or root) can change the owner or
permissions of a file; everyone gets an EPERM error. The same error
is returned when a non-root process attempts to raise some resource
limit beyond its hard limit.

Unfortunately, I see no EPERM error in the FreeBSD exec.c library
module or in the kern_exec.c kernel side. Perhaps MacOS has "extra
security" features similar to Systrace or AppArmor that interfere
with Postfix operation, or you are using a weird file system that
burps errors.

Wietse

From: Jamal Mubarak on

On May 9, 2010, at 7:35 PM, Wietse Venema wrote:

> execve() fails with error number 1. You can look that number up in
> /usr/include/sys/errno.h (or whatever the pathname is on MacOS).
> But, MacOS is a descendant of FreeBSD, and on my machine:
>
> #define EPERM 1 /* Operation not permitted */

You are absolutely correct.

> Now the question is why execve() fails with EPERM.
>
> On UNIX systems, EPERM does not report a file permission problem.
> Instead:
>
> 1 EPERM Operation not permitted. An attempt was made to perform an oper-
> ation limited to processes with appropriate privileges or to the
> owner of a file or other resources.
>
> For example, only the owner (or root) can change the owner or
> permissions of a file; everyone gets an EPERM error. The same error
> is returned when a non-root process attempts to raise some resource
> limit beyond its hard limit.
>
> Unfortunately, I see no EPERM error in the FreeBSD exec.c library
> module or in the kern_exec.c kernel side. Perhaps MacOS has "extra
> security" features similar to Systrace or AppArmor that interfere
> with Postfix operation, or you are using a weird file system that
> burps errors.

So if I can find out what this security policy is, and disable it, the print confirmation emails will go thru?

Thank you once again for looking into my problem.

Jamal