(mostly answered on the Haraka mailing list already, but putting more here so others can benefit)
There's two things in Haraka you have to do to get the email parsed:
1) set `connection.transaction.parse_body = true` in `hook_data` (or one of the earlier hooks, but not before 'MAIL FROM' because that's when the transaction is created).
2) read the stuff you want in `hook_data_post`. You get the body text or html from `transaction.body` and the headers from `transaction.header`,
If you want access to the attachments they are streams, and accessed via events on the transaction.
See the following doc pages:
Note some people don't like the way Haraka parses the email (it does several things to make sure it is efficient, not necessarily easy to use). If you don't like that you can pipe the `transaction.message_stream` into the node "mailparser" module. See
https://github.com/andris9/mailparser#pipe-file-to-mailparser