merge 674522 674865 thanks On Mon, May 28, 2012 at 09:47:52PM +1000, Paul Szabo wrote: > Since the > http://www.debian.org/security/2012/dsa-2480 > update, my RT is not sending email but logging: > > May 28 11:46:07 prt sendmail[2531]: q4S1k7vj002531: collect: premature EOM: > Bad file descriptor > May 28 11:46:07 prt sendmail[2531]: q4S1k7vj002531: from=www-data, size=0, > class=0, nrcpts=0, > msgid=<201205280146.q4s1k7vj002...@prt.pc.maths.usyd.edu.au>, > relay=www-data@localhost
This should be addressed shortly in an erratum DSA; see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=674522 for more details. Cheers, Dominic. > # diff -u /usr/share/request-tracker3.8/lib/RT/Interface/Email.pm.bak > /usr/share/request-tracker3.8/lib/RT/Interface/Email.pm > --- /usr/share/request-tracker3.8/lib/RT/Interface/Email.pm.bak 2012-05-19 > 22:37:07.000000000 +1000 > +++ /usr/share/request-tracker3.8/lib/RT/Interface/Email.pm 2012-05-28 > 21:34:51.000000000 +1000 > @@ -443,28 +443,38 @@ > } > > eval { > - # don't ignore CHLD signal to get proper exit code > - local $SIG{'CHLD'} = 'DEFAULT'; > - > - # if something wrong with $mail->print we will get PIPE signal, > handle it > - local $SIG{'PIPE'} = sub { die "program unexpectedly closed > pipe" }; > - > - require IPC::Open2; > - my ($mail, $stdout); > - my $pid = IPC::Open2::open2( $stdout, $mail, $path, @args ) > - or die "couldn't execute program: $!"; > - > - $args{'Entity'}->print($mail); > - close $mail or die "close pipe failed: $!"; > - > - waitpid($pid, 0); > - if ($?) { > - # sendmail exit statuses mostly errors with data not software > - # TODO: status parsing: core dump, exit on signal or EX_* > - my $msg = "$msgid: `$path @args` exited with code ". ($?>>8); > - $msg = ", interrupted by signal ". ($?&127) if $?&127; > - $RT::Logger->error( $msg ); > - } > + ## don't ignore CHLD signal to get proper exit code > + #local $SIG{'CHLD'} = 'DEFAULT'; > + # > + ## if something wrong with $mail->print we will get PIPE signal, > handle it > + #local $SIG{'PIPE'} = sub { die "program unexpectedly closed > pipe" }; > + # > + #require IPC::Open2; > + #my ($mail, $stdout); > + #my $pid = IPC::Open2::open2( $stdout, $mail, $path, @args ) > + # or die "couldn't execute program: $!"; > + # > + #$args{'Entity'}->print($mail); > + #close $mail or die "close pipe failed: $!"; > + # > + #waitpid($pid, 0); > + #if ($?) { > + # # sendmail exit statuses mostly errors with data not > software > + # # TODO: status parsing: core dump, exit on signal or EX_* > + # my $msg = "$msgid: `$path @args` exited with code ". > ($?>>8); > + # $msg = ", interrupted by signal ". ($?&127) if $?&127; > + # $RT::Logger->error( $msg ); > + #} > + ##### > + #use File::Temp; # Done above > + my $tmp_fh = File::Temp->new() or die "Cannot create temp file > for sendmail data\n"; > + my $tmp_fn = $tmp_fh->filename or die "Nameless temp file for > sendmail data\n"; > + $args{'Entity'}->print($tmp_fh) or die "Cannot write temp file > for sendmail data\n"; > + close ($tmp_fh) or die "Cannot close temp file for sendmail > data\n"; > + my $cmd = "$path @args < $tmp_fn 2>&1 || echo \"Sendmail failed, > status \$?\""; > + #$RT::Logger->info( "PSz using command: $cmd" ); > + my $msg = `$cmd`; die "$msg\n" if $msg; > + unlink ($tmp_fn) or die "Cannot delete temp file for sendmail > data\n"; > }; > if ( $@ ) { > $RT::Logger->crit( "$msgid: Could not send mail with command > `$path @args`: " . $@ ); -- Dominic Hargreaves | http://www.larted.org.uk/~dom/ PGP key 5178E2A5 from the.earth.li (keyserver,web,email) -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org