[Exim] error in BSMTP input from spamc?

Top Page
Delete this message
Reply to this message
Author: John Dalbec
Date:  
To: exim-users
Subject: [Exim] error in BSMTP input from spamc?
What would cause this?

2004-01-09 06:26:38 1Aeuma-0007cV-5s <jpdalbec@???>: spamcheck transport
output: An error was detected while processing a file of BSMTP input.
2004-01-09 06:26:38 1Aeume-0007cC-Mn <anotheruser@???>: spamcheck transport
output: An error was detected while processing a file of BSMTP input.
2004-01-09 06:26:38 1Aeuma-0007cW-A3 <jpdalbec@???>: spamcheck transport
output: An error was detected while processing a file of BSMTP input.

spamcheck:
driver = pipe
command = /usr/local/exim/bin/exim -oMr spam-scanned -bS
# use sudo equivalent (w/o logging) to run spamc as the recipient
transport_filter = /usr/local/exim/sbin/sudospamc $local_part
# must use a privileged user to set $received_protocol on the way
# back in!
user = exim
group = exim
log_output = true
return_fail_output = true
use_bsmtp = true
return_path_add = false
message_prefix =
message_suffix =

sudospamc.c:
---
#include <pwd.h>
#include <unistd.h>
#include <sys/types.h>

#define SPAMC (ARGV[0])
char * const ARGV [] = {"/usr/bin/spamc", NULL};
#define ENVP (ARGV + 1)

int main(int argc, char **argv, char **envp)
{
         struct passwd *pwdp;


         if (argc != 2) {
                 printf("Usage: %s username\n", argv[0]);
                 exit(-1);
         }


         if ((pwdp = getpwnam("exim")) == NULL ||
                         getuid() != pwdp->pw_uid ||
                         getgid() != pwdp->pw_gid) {
                 printf("Only the exim user may run %s\n", argv[0]);
                 exit(-1);
         }


         /* getppid, lstat proc/id/exe, lstat exim binary, compare? */


         if ((pwdp = getpwnam(argv[1])) == NULL ||
                         /* Make sure UID is a normal user */
                         pwdp->pw_uid < 500 ||
                         setregid(pwdp->pw_gid,pwdp->pw_gid) != 0 ||
                         /* Set UID last since doing so drops root. */
                         setreuid(pwdp->pw_uid,pwdp->pw_uid) != 0) {
                 printf("Error setting uid/gid for user %s\n", argv[1]);
                 exit(-1);
         }


         execve(SPAMC,ARGV,ENVP);
}
---


Exim version 4.24 #2 built 27-Oct-2003 17:07:24
Copyright (c) University of Cambridge 2003
Berkeley DB: Sleepycat Software: Berkeley DB 3.3.11: (July 12, 2001)
Support for: iconv() OpenSSL
Authenticators: cram_md5 plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir autoreply pipe smtp
Configuration file is /usr/local/exim/configure

SpamAssassin version 2.61