Nachfolgend wird der Hauptteil des Implementierungscodes aufgezeigt, allerdings ohne die Hilfsfunktionen. Dies soll eine Übersicht über den Haraka-spezifischen Algorithmus für den MTA-Entscheider geben.

\begin{minipage}{\linewidth}
\begin{JavaScript}{Haraka MTA-Entscheider}{hentscheider}
exports.hook_data_post = function(next, connection) {
    // if we have a myst mail, we need to inject our Protocol
    if (is_myst_mail(connection.transaction.header)) {
        // we decrypt the mail body and treat it as raw
        // mail data
        var decrypted_email = myst_decrypt(connection.
        	transaction.body.bodytext);

        // replace the current transaction object
        var t = transform_transaction(decrypted_email,
        	connection);
        connection.transaction = t;

        // the unpacked mail is a myst mail too, 
        // relay it
        if (is_myst_mail(connection.transaction.header)) {
            connection.relaying = true;
        }
    }

    // let the other handlers do what they want, we are
    // finished injecting our logic, the rest is still
    // SMTP compliant
    next();
}
\end{JavaScript}
\end{minipage}

Die Funktionen \verb#myst_decrypt()# und \verb#transform_transaction()# können zunächst leere Funktionen sein. Wichtig ist hier lediglich die Funktion \verb#is_myst_mail()#, welche folgendermaßen definiert ist:

\begin{JavaScript}{Haraka Myst header checker}{hismystmail}
function is_myst_mail(header) {
    if (header.get("X-Myst")) {
        return true;
    }

    return false;
}
\end{JavaScript}

Damit ist der erste Teil des MTA-Entscheider bereits implementiert und die Logik für das Entpacken und Erstellen der neuen E-Mail kann implementiert werden.

Die Verschlüsselung und Entschlüsselung ist hier lediglich Base64. Die Funktion \verb#transform_transaction()# wird aufgrund ihrer Komplexität nur im Anhang gezeigt, % toref
da sie ebenso auf interner Haraka-API aufbaut.

Ebenso wichtig ist, anzumerken, dass \verb#connection.relaying = true;# im MTA-Entscheider bedeutet, dass der MTA für alle MystMails ein Open Relay ist. Deshalb kann und sollte ab Zeile 16 weitere Logik darüber entscheiden (z.B. eine Whitelist), ob die E-Mail weitergeleitet werden darf.
