matchup exits after it sees end of file. It prints pending messages and deliveries on descriptor 5, in a format suitable for input to a future invocation of matchup:
<log.1 matchup >out.1 5>pending.2
cat pending.2 log.2 | matchup >out.2 5>pending.3
cat pending.3 log.3 | matchup >out.3 5>pending.4
Note that the 5> notation does not work with csh.
m birth done bytes nk nz nd <sender> qp uid
Here birth and done are timestamps, bytes is the number of bytes in the message, nk is the number of successful deliveries, nz is the number of deferred delivery attempts, nd is the number of failed delivery attempts, sender is the message's return path, qp is the message's long-term queue identifier, and uid is the userid of the user that queued the message.
Note that matchup converts sender to lowercase. This can lose information, since a few hosts pay attention to the case in the box part of an address.
d result birth dstart ddone bytes
<sender> chan.recip qp uid reason
Here birth, bytes, sender, qp, and uid are message information as above; chan is the channel for this delivery; recip is the recipient address for this delivery; dstart and ddone are timestamps; result is the letter k for success, z for deferral, d for failure; and reason is a more detailed explanation of the delivery result.
matchup converts recip to lowercase.