bachelorthesis/Bachelorthesis/Content/Entwicklung/Realisierung/Implementierung/SMTP-gateway.tex

38 lines
1.5 KiB
TeX
Raw Normal View History

2016-06-15 12:40:15 +00:00
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.