Sendmail rset command hangs socket on 1.6-Release

Sven Willenberger sven at dmv.com
Wed Aug 2 06:49:52 PDT 2006


On Tue, 2006-08-01 at 18:24 -0700, Matthew Dillon wrote:
> :We have a cluster of mail servers, one of which we have upgraded to
> :1.6-Release (from 1.2) and then subsequently did a fresh install of 1.6
> :on after the issue first arose.
> :
> :In essence, using the supplied sendmail and having the connected
> :sendmail session issue a rset command results in that sendmail process
> :hanging (only by issuing the telnet ^] command to get to a telnet prompt
> :and issuing quit can the session be killed). If instead of an rset
> :command the quit command is issued, the session will end (i.e. the
> :telnet session terminates) but the sendmail process with "quit" appears
> :in the process list and will not go away unless killed.
> :
> :Has anyone seen this odd behavior? At first I thought it was due to a
> :milter, so I removed it from the .mc file and rebuilt sendmail.cf but no
> :change in socket behavior. How can I help in terms of troubleshooting?
> :
> :Sven
>     
>     That is really odd. I wonder if it is related to the posix issues
>     that were reported recently.
> 
>     If you can repeat it easily with telnet, could you use tcpdump
>     and ktrace (on the forked sendmail demon after you connect) to
>     figure out what happens when you try to send it the 'rset' ?
>     With tcpdump it should be possible to determine if the 'rset' gets
>     transmitted, and with ktrace it should be possible to determine
>     if sendmail sees it.
> 
> 					-Matt
> 					Matthew Dillon 
> 					<dillon at xxxxxxxxxxxxx>

Based on the tcpdump it would appear that the command does get sent:
Transmission Control Protocol, Src Port: 38093 (38093), Dst Port: smtp
(25), Seq: 67, Ack: 357, Len: 6
    Source port: 38093 (38093)
    Destination port: smtp (25)
    Sequence number: 67    (relative sequence number)
    Next sequence number: 73    (relative sequence number)
    Acknowledgement number: 357    (relative ack number)
    Header length: 32 bytes
    Flags: 0x0018 (PSH, ACK)
    Window size: 6912 (scaled)
    Checksum: 0xfd64 [correct]
    Options: (12 bytes)
Simple Mail Transfer Protocol
    Command: rset\r\n
        Command: rset

Based on the ktrace it would appear that sendmail sees it, but fails to
write to the sendmail.st file:

 50367 sendmail RET   sendto 163/0xa3
 50367 sendmail CALL  gettimeofday(0xbfbfba38,0)
 50367 sendmail RET   gettimeofday 0
 50367 sendmail CALL  lstat(0xbfbfb570,0xbfbfb9c0)
 50367 sendmail NAMI  "/var/log/sendmail.st"
 50367 sendmail RET   lstat 0
 50367 sendmail CALL  lstat(0xbfbeb020,0xbfbeafb0)
 50367 sendmail NAMI  "/"
 50367 sendmail RET   lstat 0
 50367 sendmail CALL  geteuid
 50367 sendmail RET   geteuid 0
 50367 sendmail CALL  lstat(0xbfbeb020,0xbfbeafb0)
 50367 sendmail NAMI  "/var"
 50367 sendmail RET   lstat 0
 50367 sendmail CALL  geteuid
 50367 sendmail RET   geteuid 0
 50367 sendmail CALL  lstat(0xbfbeb020,0xbfbeafb0)
 50367 sendmail NAMI  "/var/log"
 50367 sendmail RET   lstat 0
 50367 sendmail CALL  geteuid
 50367 sendmail RET   geteuid 0
 50367 sendmail CALL  open(0x283778a0,0x2,0x180)
 50367 sendmail NAMI  "/var/log/sendmail.st"
 50367 sendmail RET   open 7
 50367 sendmail CALL  fstat(0x7,0xbfbfb910)
 50367 sendmail RET   fstat 0
 50367 sendmail CALL  flock(0x7,0x2)


Compare this to a "normal" situation (taken from a freebsd box):

 52523 sendmail RET   sendto 160/0xa0
 52523 sendmail CALL  gettimeofday(0x7fffffffa3d0,0)
 52523 sendmail RET   gettimeofday 0
 52523 sendmail CALL  lstat(0x7fffffff9df0,0x7fffffffa340)
 52523 sendmail NAMI  "/var/log/sendmail.st"
 52523 sendmail RET   lstat 0
 52523 sendmail CALL  lstat(0x7fffffff1d70,0x7fffffff1cf0)
 52523 sendmail NAMI  "/"
 52523 sendmail RET   lstat 0
 52523 sendmail CALL  geteuid
 52523 sendmail RET   geteuid 0
 52523 sendmail CALL  lstat(0x7fffffff1d70,0x7fffffff1cf0)
 52523 sendmail NAMI  "/var"
 52523 sendmail RET   lstat 0
 52523 sendmail CALL  geteuid
 52523 sendmail RET   geteuid 0
 52523 sendmail CALL  lstat(0x7fffffff1d70,0x7fffffff1cf0)
 52523 sendmail NAMI  "/var/log"
 52523 sendmail RET   lstat 0
 52523 sendmail CALL  geteuid
 52523 sendmail RET   geteuid 0
 52523 sendmail CALL  open(0x5eb5c0,0x2,0x180)
 52523 sendmail NAMI  "/var/log/sendmail.st"
 52523 sendmail RET   open 6
 52523 sendmail CALL  fstat(0x6,0x7fffffffa270)
 52523 sendmail RET   fstat 0
 52523 sendmail CALL  flock(0x6,0x2)
 52523 sendmail RET   flock 0
 52523 sendmail CALL  fstat(0x6,0x7fffffffa2a0)
 52523 sendmail RET   fstat 0
 52523 sendmail CALL  read(0x6,0x7fffffffa3f0,0x5a8)
 52523 sendmail GIO   fd 6 read 1448 bytes
       0x0000 deb1 0100 0400 0000 06e8 ce44 0000 0000 a805 0000 0000
0000 3100 0000 0000 0000  |...........D............1.......|
       0x0020 6a00 0000 0000 0000 0300 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000  |j...............................|
       0x0040 0000 0000 0000 0000 0e00 0000 0000 0000 0000 0000 0000
0000 2300 0000 0000 0000  |........................#.......|

< --chop -->

 52523 sendmail RET   read 1448/0x5a8
 52523 sendmail CALL  lseek(0x6,0,0,0)
 52523 sendmail RET   lseek 0
 52523 sendmail CALL  write(0x6,0x7fffffffa3f0,0x5a8)
 52523 sendmail GIO   fd 6 wrote 1448 bytes
       0x0000 deb1 0100 0400 0000 06e8 ce44 0000 0000 a805 0000 0000
0000 3200 0000 0000 0000  |...........D............2.......|

and so on ...

Sven







More information about the Bugs mailing list