A generic Erlang SMTP server and client that can be extended via callback modules