Re: [Exim] error in BSMTP input from spamc?

Top Page
Delete this message
Reply to this message
Author: John Dalbec
Date:  
To: exim-users
Subject: Re: [Exim] error in BSMTP input from spamc?
One problem was that NSCD (Red Hat Linux 7.3) had died, and LDAP wasn't
responding quickly enough to take up the slack. This was causing Exim to report
configuration errors because some of the trusted_users are defined only in LDAP.
Maybe this was causing errors in SpamAssassin (actually spamc/spamd) also?
Thanks,
John

John Dalbec wrote:

> 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
>
>
>
> --
>
> ## List details at http://www.exim.org/mailman/listinfo/exim-users Exim
> details at http://www.exim.org/ ##
>
>
>