38 lines
1.5 KiB
TeX
38 lines
1.5 KiB
TeX
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.
|
|
|