I think the answer, limited solely to the symbols you ask about, is that <=
is always going to come before each of the other symbols you list, and a message's Completed
line will come after all of those symbols. However, each of the other symbols ==
, =>
, **
, can appear in any order between <=
and Completed
.
One thing to keep in mind is that a message can have multiple recipients, and each of those recipients can be deferred (==
), so the order of those symbols matters for each recipient of the message
So, every message should have exactly one <=
when the message is accepted by the local server
Every message should have exactly one Completed
line indicating that the local server is done with the message
Between those:
Each message:recipient will have exactly one of **
(failure) or =>
(delivered). It will be the last entry for that specific message:recipient.
Each message:recipient may have one or more ==
(deferred) lines. If a message:recipient has a ==
log line, it will occur before that message:recipient's =>
or **
line.
The order of different recipients in a given message only matters if you think it matters, most likely.