<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run(self, host, port=25, with_ssl=False):
 """Executes a single health check against a remote host and port. This method may only be called once per object. :param host: The hostname or IP address of the SMTP server to check. :type host: str :param port: The port number of the SMTP server to check. :type port: int :param with_ssl: If ``True``, SSL will be initiated before attempting to get the banner message. :type with_ssl: bool """

        try:
            dns_rec = self._lookup(host, port)
            self._connect(dns_rec)
            if with_ssl:
                self._wrap_ssl()
            banner = self._get_banner()
            self._check_banner(banner)
        except Exception:
            exc_type, exc_value, exc_tb = sys.exc_info()
            self.results['Exception-Type'] = str(exc_type.__name__)
            self.results['Exception-Value'] = str(exc_value)
            self.results['Exception-Traceback'] = repr(traceback.format_exc())
        finally:
            self._close(with_ssl)