bachelorthesis/Bachelorthesis/Content/Entwicklung/Realisierung/Implementierung/SMTP-gateway.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.