def deliver(mlist, msg, msgdata):
    """Deliver a message to a mailing list's recipients.

        Ordinarily the mailing list is consulted for delivery specifics,
        however the message metadata dictionary can contain additional
        directions to control delivery.  Specifics are left to the
        implementation, but there are a few common keys:

        * envelope_sender - the email address of the RFC 2821 envelope sender;
        * decorated - a flag indicating whether the message has been decorated
            with headers and footers yet;
        * recipients - the set of all recipients who should receive this
            message, as a set of email addresses;

        :param mlist: The mailing list being delivered to.
        :type mlist: `IMailingList`
        :param msg: The original message being delivered.
        :type msg: `Message`
        :param msgdata: Additional message metadata for this delivery.
        :type msgdata: dictionary
        :return: delivery failures as defined by `smtplib.SMTP.sendmail`
        :rtype: dictionary
        """
