Package: sendmail
Version: 8.13.4-1
Severity: critical

When migrating a server from woody to sarge, the following error is displayed 
on Sendmail's startup if there was mail queued at the time of upgrade.  


Jun  3 17:04:57 mailtest1 sendmail[25561]: j4VDWurI013546: SYSERR(root): 
readqf: ./qfj4VDWurI013546: line 4: bad line "G0"

Jun  3 17:04:57 mailtest1 sendmail[25561]: j4VDWurI013546: Losing 
./qfj4VDWurI013546: unrecognized line

Bug marked as critical, as the entire queue will be marked as lost, and not 
delivered.  This can be thousands of messages on high volume servers.   

The problem was not discovered earlier when upgrading test boxes, as they had 
no queued mail at time of upgrade.  

Hunting through the code, it seems that a QF file V7 Y and G options are no 
longer supported.  These are not truly important to message queueing, and 
should be ignored instead of effectively losing the mail queue.    



The apparent source of the problem, sendmail/queue.c:

   4444 #if _FFR_QUEUEDELAY
   4445                   case 'G':
   4446                   case 'Y':
   4447
   4448                         /*
   4449                         **  Maintain backward compatibility for
   4450                         **  users who defined _FFR_QUEUEDELAY in
   4451                         **  previous releases.  Remove this
   4452                         **  code in 8.14 or 8.15.
   4453                         */
   4454
   4455                         if (qfver == 5 || qfver == 7)
   4456                                 break;
   4457
   4458                         /* If not qfver 5 or 7, then 'G' or 'Y' is 
invalid */
   4459                         /* FALLTHROUGH */
   4460 #endif /* _FFR_QUEUEDELAY */
   4461
   4462                   default:
   4463                         syserr("readqf: %s: line %d: bad line \"%s\"",
   4464                                 qf, LineNumber, shortenstring(bp, 
MAXSHORTSTR));
   4465                         err = "unrecognized line";
   4466                         goto fail;





Two potential fixes:

1) patch sendmail/queue.c:

--- sendmail/queue.c.old        2005-06-03 17:37:55.282259719 +1000
+++ sendmail/queue.c    2005-06-03 17:39:23.403051888 +1000
@@ -4441,7 +4441,6 @@
                        nomore = true;
                        break;

-#if _FFR_QUEUEDELAY
                  case 'G':
                  case 'Y':

@@ -4457,7 +4456,6 @@

                        /* If not qfver 5 or 7, then 'G' or 'Y' is invalid */
                        /* FALLTHROUGH */
-#endif /* _FFR_QUEUEDELAY */

                  default:
                        syserr("readqf: %s: line %d: bad line \"%s\"",


2) Add something to the postinstall script to remove the Y and G lines from QF 
files, like:

for file in /var/spool/mqueue*/[Qq]f*; do echo -n "file: $file: "; grep -v 
^[GY] $file > /tmp/file; mv /tmp/file $file; echo "done."; done



Other info:

dpkg --status sendmail:
Package: sendmail
Status: install ok installed
Priority: extra
Section: mail
Installed-Size: 244
Maintainer: Richard A Nelson (Rick) <[EMAIL PROTECTED]>
Architecture: all
Version: 8.13.4-1
Replaces: sendmail-tls
Depends: sendmail-base (= 8.13.4-1), sendmail-bin (= 8.13.4-1), sendmail-cf (= 
8.13.4-1), sensible-mda (= 8.13.4-1), rmail (= 8.13.4-1)
Suggests: sendmail-doc



________________________________________
Martin Foster | Systems Engineer
Pacific Internet (Australia) Pty Ltd

P: +61 3 9674 7659
 
Australia I Singapore I Hong Kong I Philippines I India I Thailand I Malaysia 
http://www.pacific.net.au/disclaimer/


Reply via email to