[request-tracker-maintainers] Bug#674865: request-tracker3.8: Cannot send mail after DSA-2480
Paul Szabo
paul.szabo at sydney.edu.au
Mon May 28 11:47:52 UTC 2012
Package: request-tracker3.8
Version: 3.8.8-7+squeeze2
Severity: important
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.q4S1k7vj002531 at prt.pc.maths.usyd.edu.au>, relay=www-data at localhost
Changing one file, adding some sleeps:
# 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 20:38:49.000000000 +1000
@@ -454,7 +454,9 @@
my $pid = IPC::Open2::open2( $stdout, $mail, $path, @args )
or die "couldn't execute program: $!";
+sleep 1;
$args{'Entity'}->print($mail);
+sleep 1;
close $mail or die "close pipe failed: $!";
waitpid($pid, 0);
causes it to log instead the somewhat more informative:
May 28 20:44:30 prt sendmail[5447]: q4SAiUOt005447: collect: premature EOM: Bad file descriptor
May 28 20:44:30 prt sendmail[5447]: q4SAiUOt005447: from=www-data, size=0, class=0, nrcpts=0, msgid=<201205281044.q4SAiUOt005447 at prt.pc.maths.usyd.edu.au>, relay=www-data at localhost
May 28 20:44:31 prt RT: <rt-3.8.8-5421-1338201870-1014.5363-7-0 at maths.usyd.edu.au>: Could not send mail with command `/usr/sbin/sendmail -oi -t`: program unexpectedly closed pipe at /usr/share/request-tracker3.8/lib/RT/Interface/Email.pm line 450. Stack: [/usr/share/request-tracker3.8/lib/RT/Interface/Email.pm:450] [/usr/lib/perl/5.10/IO/Handle.pm:148] [/usr/share/perl5/MIME/Head.pm:532] [/usr/share/perl5/Mail/Internet.pm:112] [/usr/share/perl5/MIME/Entity.pm:1771] [/usr/share/request-tracker3.8/lib/RT/Interface/Email.pm:458] [/usr/share/request-tracker3.8/lib/RT/Action/SendEmail.pm:307] [/usr/share/request-tracker3.8/lib/RT/Action/SendEmail.pm:129] [/usr/share/request-tracker3.8/lib/RT/ScripAction_Overlay.pm:238] [/usr/share/request-tracker3.8/lib/RT/Scrip_Overlay.pm:477] [/usr/share/request-tracker3.8/lib/RT/Scrips_Overlay.pm:196] [/usr/share/request-tracker3.8/lib/RT/Transaction_Overlay.pm:188] [/usr/share/request-tracker3.8/lib/RT/Record.pm:145!
7] [/usr/share/request-tracker3
The following change seems to solve the issue, seems cleaner,
and might return better error messages:
# 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`: " . $@ );
Cheers, Paul
Paul Szabo psz at maths.usyd.edu.au http://www.maths.usyd.edu.au/u/psz/
School of Mathematics and Statistics University of Sydney Australia
-- Package-specific info:
Changed files:
usr/share/request-tracker3.8/lib/RT/Interface/Email.pm
-- System Information:
Debian Release: 6.0.5
APT prefers stable
APT policy: (500, 'stable')
Architecture: i386 (i686)
Kernel: Linux 2.6.32-pk05.15-i386 (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash
Versions of packages request-tracker3.8 depends on:
ii dbconfig-common 1.8.46+squeeze.0 common framework for packaging dat
ii debconf [debconf-2.0] 1.5.36.1 Debian configuration management sy
ii libapache-session-perl 1.87-1 Perl modules for keeping persisten
ii libcache-simple-timede 0.27-2 Perl module to cache and expire ke
ii libcalendar-simple-per 1.21-1 module for producing simple calend
ii libcgi-fast-perl 5.10.1-17squeeze3 CGI::Fast Perl module
ii libcgi-pm-perl 3.49-1squeeze1 module for Common Gateway Interfac
ii libclass-returnvalue-p 0.55-1 A return-value object that lets yo
ii libcss-squish-perl 0.09-1 module to compact many CSS files i
ii libdata-ical-perl 0.16+dfsg-1 Perl module for manipulating iCale
ii libdbi-perl 1.612-1 Perl Database Interface (DBI)
ii libdbix-searchbuilder- 1.56-1 Perl implementation of a simple OR
ii libdevel-stacktrace-pe 1.2100-1 Perl module containing stack trace
ii libemail-address-perl 1.889-2 RFC 2822 Address Parsing and Creat
ii libfcgi-procmanager-pe 0.18-2 Functions for managing FastCGI app
ii libfile-sharedir-perl 1.00-0.1 Locate per-dist and per-module sha
ii libgd-graph-perl 1.44-3 Graph Plotting Module for Perl 5
ii libgd-text-perl 0.86-5 Text utilities for use with GD
ii libgnupg-interface-per 0.42-3 Perl interface to GnuPG
ii libgraphviz-perl 2.04-1 Perl interface to the GraphViz gra
ii libhtml-mason-perl 1:1.44-1 HTML::Mason Perl module
ii libhtml-parser-perl 3.66-1 collection of modules that parse H
ii libhtml-rewriteattribu 0.03-1 concise attribute rewriting
ii libhtml-scrubber-perl 0.08-4 Perl extension for scrubbing/sanit
ii libipc-run-safehandles 0.02-1 Use IPC::Run and IPC::Run3 safely
ii libjs-prototype 1.6.1-1 JavaScript Framework for dynamic w
ii libjs-scriptaculous 1.8.3-1 JavaScript library for dynamic web
ii liblocale-maketext-fuz 0.10-1 Maketext from already interpolated
ii liblocale-maketext-lex 0.82-1 lexicon-handling backends for Loca
ii liblog-dispatch-perl 2.22-1 Dispatches messages to multiple Lo
ii libmailtools-perl 2.06-1 Manipulate email in perl programs
ii libmime-perl 5.427-2 transitional dummy package
ii libmime-tools-perl [li 5.428-1 Perl5 modules for MIME-compliant m
ii libmime-types-perl 1.30-1 Perl extension for determining MIM
ii libmodule-versions-rep 1.06-1 Report versions of all modules in
ii libperlio-eol-perl 0.14-1+b1 PerlIO layer for normalizing line
ii libregexp-common-perl 2010010201-1 module with common regular express
ii libtext-autoformat-per 1.669002-1 module for automatic text wrapping
ii libtext-quoted-perl 2.06-1 Perl module to extract the structu
ii libtext-template-perl 1.45-1 Text::Template perl module
ii libtext-wikiformat-per 0.78-1 translates Wiki formatted text int
ii libtext-wrapper-perl 1.02-1 Simple word wrapping routine
ii libtime-modules-perl 2006.0814-2 Various Perl modules for time/date
ii libtimedate-perl 1.2000-1 collection of modules to manipulat
ii libtree-simple-perl 1.18-1 A simple tree object
ii libuniversal-require-p 0.13-1 Load modules from a variable
ii libxml-rss-perl 1.48-1 Perl module for managing RSS (RDF
ii libxml-simple-perl 2.18-3 Perl module for reading and writin
ii perl [libdigest-sha-pe 5.10.1-17squeeze3 Larry Wall's Practical Extraction
ii perl-modules [libcgi-p 5.10.1-17squeeze3 Core Perl modules
ii rt3.8-apache2 3.8.8-7+squeeze2 Apache 2 specific files for reques
ii rt3.8-clients 3.8.8-7+squeeze2 mail gateway and command-line inte
ii rt3.8-db-sqlite 3.8.8-7+squeeze2 SQLite database backend for reques
ii sendmail-bin [mail-tra 8.14.3-9.4 powerful, efficient, and scalable
ii sysklogd [system-log-d 1.5-6 System Logging Daemon
ii ucf 3.0025+nmu1 Update Configuration File: preserv
Versions of packages request-tracker3.8 recommends:
ii cron [cron-daemon] 3.0pl1-116 process scheduling daemon
ii libdatetime-locale-perl 1:0.45-1 Perl extension providing localizat
ii libdatetime-perl 2:0.6100-2 module for manipulating dates, tim
ii speedy-cgi-perl 2.22-13 speed up perl scripts by making th
Versions of packages request-tracker3.8 suggests:
pn rt3.8-rtfm <none> (no description available)
-- debconf information:
request-tracker3.8/mysql/method: unix socket
request-tracker3.8/dbconfig-reinstall: false
request-tracker3.8/db/dbname: rtdb
* request-tracker3.8/dbconfig-install: false
request-tracker3.8/remote/newhost:
request-tracker3.8/db/app-user: rtuser
* request-tracker3.8/rtname: SMSsup
request-tracker3.8/internal/reconfiguring: false
request-tracker3.8/passwords-do-not-match:
request-tracker3.8/pgsql/no-empty-passwords:
* request-tracker3.8/handle-siteconfig-permissions: false
* request-tracker3.8/correspondaddress: rt at maths.usyd.edu.au
request-tracker3.8/dbconfig-upgrade: true
request-tracker3.8/purge: false
* request-tracker3.8/webpath: /rt
request-tracker3.8/upgrade-backup: true
request-tracker3.8/db/basepath:
request-tracker3.8/internal/skip-preseed: true
* request-tracker3.8/commentaddress: rt-comment at maths.usyd.edu.au
* request-tracker3.8/organization: maths.usyd.edu.au
request-tracker3.8/pgsql/authmethod-user: password
request-tracker3.8/install-error: abort
request-tracker3.8/dbconfig-remove:
request-tracker3.8/missing-db-package-error: abort
request-tracker3.8/remove-error: abort
request-tracker3.8/warn-sqlite-file:
request-tracker3.8/pgsql/admin-user: postgres
request-tracker3.8/remote/host:
request-tracker3.8/database-type:
* request-tracker3.8/install-cronjobs: false
request-tracker3.8/upgrade-error: abort
request-tracker3.8/mysql/admin-user: root
request-tracker3.8/remote/port:
request-tracker3.8/pgsql/changeconf: false
request-tracker3.8/pgsql/method: unix socket
request-tracker3.8/pgsql/authmethod-admin: ident
request-tracker3.8/pgsql/manualconf:
* request-tracker3.8/webbaseurl: http://www.maths.usyd.edu.au
More information about the pkg-request-tracker-maintainers
mailing list