From 50f599dcc5297b3b29827b2ac02e6a9885b52d62 Mon Sep 17 00:00:00 2001 From: Jefferson Stachelski Date: Wed, 4 Nov 2015 18:45:03 -0200 Subject: Issue #499 - removed the local SMTP --- service/pixelated/adapter/services/mail_sender.py | 23 ------------- service/pixelated/bitmask_libraries/session.py | 11 +++---- service/pixelated/bitmask_libraries/smtp.py | 40 ----------------------- service/pixelated/config/services.py | 8 ++--- 4 files changed, 7 insertions(+), 75 deletions(-) (limited to 'service/pixelated') diff --git a/service/pixelated/adapter/services/mail_sender.py b/service/pixelated/adapter/services/mail_sender.py index 4ffb76b0..bcbf331c 100644 --- a/service/pixelated/adapter/services/mail_sender.py +++ b/service/pixelated/adapter/services/mail_sender.py @@ -84,26 +84,3 @@ class MailSender(object): def _create_twisted_smtp_recipient(self, recipient): return User(str(recipient), NOT_NEEDED, NOT_NEEDED, NOT_NEEDED) - - -class LocalSmtpMailSender(object): - - def __init__(self, account_email_address, smtp): - self.smtp = smtp - self.account_email_address = account_email_address - - def sendmail(self, mail): - if self.smtp.ensure_running(): - recipients = flatten([mail.to, mail.cc, mail.bcc]) - result_deferred = Deferred() - sender_factory = SMTPSenderFactory( - fromEmail=self.account_email_address, - toEmail=set([parseaddr(recipient)[1] for recipient in recipients]), - file=StringIO(mail.to_smtp_format()), - deferred=result_deferred) - - reactor.connectTCP('localhost', self.smtp.local_smtp_port_number, - sender_factory) - - return result_deferred - return fail(SMTPDownException()) diff --git a/service/pixelated/bitmask_libraries/session.py b/service/pixelated/bitmask_libraries/session.py index 3f8e6de6..53f35008 100644 --- a/service/pixelated/bitmask_libraries/session.py +++ b/service/pixelated/bitmask_libraries/session.py @@ -23,10 +23,10 @@ from twisted.internet import reactor, defer from pixelated.bitmask_libraries.certs import LeapCertificate from pixelated.adapter.mailstore import LeapMailStore from leap.mail.incoming.service import IncomingMail -from leap.auth import SRPAuth from leap.mail.imap.account import IMAPAccount +from leap.auth import SRPAuth from .nicknym import NickNym -from .smtp import LeapSmtp, LeapSMTPConfig +from .smtp import LeapSMTPConfig from .soledad import SoledadSessionFactory from leap.common.events import ( @@ -62,8 +62,8 @@ class LeapSession(object): - ``incoming_mail_fetcher`` Background job for fetching incoming mails from LEAP server (LeapIncomingMail) """ - def __init__(self, provider, user_auth, mail_store, soledad_session, nicknym, smtp): - self.smtp = smtp + def __init__(self, provider, user_auth, mail_store, soledad_session, nicknym, smtp_config): + self.smtp_config = smtp_config self.config = provider.config self.provider = provider self.user_auth = user_auth @@ -184,9 +184,8 @@ class LeapSessionFactory(object): smtp_host, smtp_port = self._provider.smtp_info() smtp_config = LeapSMTPConfig(account_email, self._smtp_client_cert_path(), smtp_host, smtp_port) - smtp = LeapSmtp(smtp_config, nicknym.keymanager) - return LeapSession(self._provider, auth, mail_store, soledad, nicknym, smtp) + return LeapSession(self._provider, auth, mail_store, soledad, nicknym, smtp_config) def _download_smtp_cert(self, auth): cert_path = self._smtp_client_cert_path() diff --git a/service/pixelated/bitmask_libraries/smtp.py b/service/pixelated/bitmask_libraries/smtp.py index f4ab00f7..e05ba51a 100644 --- a/service/pixelated/bitmask_libraries/smtp.py +++ b/service/pixelated/bitmask_libraries/smtp.py @@ -14,8 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see . import logging -import random -from leap.mail.smtp import setup_smtp_gateway logger = logging.getLogger(__name__) @@ -28,41 +26,3 @@ class LeapSMTPConfig(object): self.cert_path = cert_path self.remote_smtp_host = remote_smtp_host self.remote_smtp_port = remote_smtp_port - - -class LeapSmtp(object): - - def __init__(self, smtp_config, keymanager=None): - self.local_smtp_port_number = random.randrange(12000, 16000) - self._smtp_config = smtp_config - self._keymanager = keymanager - self._local_smtp_service_socket = None - self._local_smtp_service = None - - def start(self): - self._local_smtp_service, self._local_smtp_service_socket = setup_smtp_gateway( - port=self.local_smtp_port_number, - userid=str(self._smtp_config.account_email), - keymanager=self._keymanager, - smtp_host=self._smtp_config.remote_smtp_host.encode('UTF-8'), - smtp_port=self._smtp_config.remote_smtp_port, - smtp_cert=self._smtp_config.cert_path, - smtp_key=self._smtp_config.cert_path, - encrypted_only=False - ) - - def ensure_running(self): - if not self._local_smtp_service: - try: - self.start() - except: - logger.warning("Couldn't start the SMTP server now, will try again when the user tries to use it") - return False - return True - - def stop(self): - if self._local_smtp_service is not None: - self._local_smtp_service_socket.stopListening() - self._local_smtp_service.doStop() - self._local_smtp_service_socket = None - self._local_smtp_service = None diff --git a/service/pixelated/config/services.py b/service/pixelated/config/services.py index e4bf394c..65a67a3d 100644 --- a/service/pixelated/config/services.py +++ b/service/pixelated/config/services.py @@ -1,7 +1,7 @@ from pixelated.adapter.mailstore.searchable_mailstore import SearchableMailStore from pixelated.adapter.services.mail_service import MailService from pixelated.adapter.model.mail import InputMail -from pixelated.adapter.services.mail_sender import LocalSmtpMailSender, MailSender # , MailSender +from pixelated.adapter.services.mail_sender import MailSender from pixelated.adapter.search import SearchEngine from pixelated.adapter.services.draft_service import DraftService from pixelated.adapter.listeners.mailbox_indexer_listener import listen_all_mailboxes @@ -55,11 +55,7 @@ class Services(object): self.search_engine = search_engine def setup_mail_service(self, leap_session, search_engine): - # pixelated_mail_sender = LocalSmtpMailSender( - # leap_session.account_email(), - # leap_session.smtp) - - pixelated_mail_sender = MailSender(leap_session.smtp._smtp_config, leap_session.nicknym.keymanager) + pixelated_mail_sender = MailSender(leap_session.smtp_config, leap_session.nicknym.keymanager) return MailService( pixelated_mail_sender, -- cgit v1.2.3