Um die initiale MystMail zu erstellen, die die Informationen über die Hops verschlüsselt in sich trägt, wird diese der Einfachheit halber im MSA, also gewissermaßen einem SMTP-Gateway, generiert.

Die Liste der Hops ist statisch und vordefiniert für Testzwecke. Es liegt somit kein Zufallsalgorithmus vor. Die Verschlüsselung ist ebenso lediglich Pseudoverschlüsselung und kodiert gemäß Base64.

\begin{minipage}{\linewidth}
\begin{JavaScript}{Haraka Myst Erstellung}{hcreatemystmail}
function create_myst_mail(transaction) {
	// recipient is always the last hop
	var recipient = transaction.rcpt_to[0].host;
	var hops = get_hops();
	hops.push(recipient);

	// innermost mail, untouched
	var old_mail = get_raw_mail(transaction.body);

	var i;
	var new_mail = old_mail;
	for (i = hops.length - 1; i >= 0; i--) {
		if (i == 0) {
			// first hop, "from" must be the actual sender
			var sender = transaction.mail_from.host;
			new_mail = create_mail_for_hop(sender, hops[i],
			             date, new_mail);
		} else {
			new_mail = create_mail_for_hop(hops[i-1],
			             hops[i], date, new_mail);
		}
	}

	return new_mail;
}
\end{JavaScript}
\end{minipage}

Die Hilfsfunktionen lassen sich im Anhang einsehen. % toref

Nachdem die Mail erstellt ist, wird ähnlich wie beim MTA-Entscheider im Hook \verb#data_post# angesetzt und das Transaktions-Objekt manipuliert, um die dort enthaltene E-Mail mit der MystMail auszutauschen. Der entsprechende Code ist etwas kompliziert und ebenfalls im Anhang einsehbar.
 