\boldhead{1.2 Direct Mail}
The direct mail strategy attempts to notify all other sites of an update soon after it occurs. The basic algorithm, executed at a site $s$ where an update occurs is:
\vskip 20pt
\settabs 20 \columns
\+&FOR EACH $s^\prime \in S$ DO\cr
\+&&$\hbox{PostMail}[\hbox{to}: s^\prime, \hbox{msg}: (\hbox{``Update''}, s.\hbox{ValueOf})]$\cr
\+&&ENDLOOP\cr
\vskip 10pt
\noindent
Upon receiving the message $(\hbox{``Update''}, (v, t))$ site $s$ executes
\vskip 20pt
\+&IF $s.\hbox{ValueOf}.t < t$ THEN \cr
\+&&$s.\hbox{ValueOf} \leftarrow (v, t)$ \cr
\vskip 10pt
The operation $\hbox{PostMail}$ is expected to be nearly, but not completely, reliable. It queues messages so the sender isn't delayed. The queues are kept in stable storage at the mail server so they are unaffected by server crashes. Nevertheless, $\hbox{PostMail}$ can fail: messages may be discarded when queues overflow or their destinations are inaccessible for a long time. In addition to this basic fallibility of the mail system, the direct mail may also fail when the source site of an update does not have accurate knowledge of $S$, the set of sites.
In the Grapevine system [Bi] the burden of detecting and correcting failures of the direct mail strategy was placed on the people administering the network. In networks with only a few tens of servers this proved adequate.
Direct mail generates $n$ messages per update; each message traverses all the network links between its source and destination. So in units of $(\hbox{links}\cdot\hbox{messages})$ the traffic is proportional to the number of sites times the average distance between sites.