public function signMessage(Message &$message)
    {
        // format message
        $this->formatMessage($message);

        // generate empty dkim header including the body hash
        $this->generateEmptyDkimHeader($message);

        // add empty (unsigned) dkim header
        $message->getHeaders()->addHeader($this->getEmptyDkimHeader());

        // canonize headers for signing
        $this->canonizeHeaders($message);

        // sign message
        $this->sign($message);
    }