On Wed, Aug 18, 2004 at 10:43:43AM +0100, Philip Hazel wrote:
> On Tue, 17 Aug 2004, Adam J. Henry wrote:
>
> >> LOG: MAIN
> >> <hank@???>: dspam transport output: An error was
> >> detected while processing a file of BSMTP input.
> >> LOG: MAIN
> >> == hank@??? R=dspam T=dspam defer (0): Child
> >> process of dspam transport returned 2 from command:
> >> /usr/local/exim/bin/exim
> >
> >According to 42.12., Incoming batched SMTP "[...] writes a more verbose
> >version, for human consumption, to the standard error file." Where is
> >the standard error file?
>
> If you are running exim as a pipe transport command (which it looks as
> if you are), the standard error output goes to the same file descriptor
> as the standard output. The text starts "An error was detected while
> processing a file of BSMTP input." and is followed by further lines.
>
> The problem here is that only the first line of output is being logged
> because that's how stdout/stderr from pipe transports work.
>
> Do you have return_output set on the pipe transport?
Here is my configuration (the '\' are not in the real config):
dspam:
driver = pipe
command = /usr/local/exim/bin/exim -oMr ds -bS
transport_filter = /usr/local/bin/dspam --stdout \
--deliver=innocent,spam --mode=teft --feature=chained,noise \
--user ${local_part}@${domain}
use_bsmtp = true
user = mail
group = mail
return_path_add = false
log_fail_output = true
log_defer_output = true
temp_errors = *
return_fail_output = true
home_directory = "/tmp"
current_directory = "/tmp"
message_prefix = ""
message_suffix = ""
> One way of finding out what is happening is to change the command just
> to write the message to a file instead of passing it back to Exim. Then
> you'll see what dspam has done to it.
Thank you. I find tee to be very handy for this.
BTW, I got the problem solved. I used the workaround proposed by Tore
Anderson.