diff --git a/email_handler.py b/email_handler.py index d2487630..b4723360 100644 --- a/email_handler.py +++ b/email_handler.py @@ -344,14 +344,10 @@ def prepare_pgp_message(orig_msg: Message, pgp_fingerprint: str): second = MIMEApplication("octet-stream", _encoder=encoders.encode_7or8bit) second.add_header("Content-Disposition", "inline") - try: - # encrypt original message - encrypted_data = pgp_utils.encrypt_file( - BytesIO(orig_msg.as_bytes()), pgp_fingerprint - ) - except PGPException: - LOG.error("Exit due to PGP fail") - exit() + # encrypt original message + encrypted_data = pgp_utils.encrypt_file( + BytesIO(orig_msg.as_bytes()), pgp_fingerprint + ) second.set_payload(encrypted_data) msg.attach(second) @@ -421,7 +417,14 @@ def forward_email_to_mailbox( # create PGP email if needed if mailbox.pgp_finger_print and user.is_premium() and not alias.disable_pgp: LOG.d("Encrypt message using mailbox %s", mailbox) - msg = prepare_pgp_message(msg, mailbox.pgp_finger_print) + try: + msg = prepare_pgp_message(msg, mailbox.pgp_finger_print) + except PGPException: + LOG.error( + "Cannot encrypt message %s -> %s. %s %s", contact, alias, mailbox, user + ) + # so the client can retry later + return False, "421 SL E12" # add custom header add_or_replace_header(msg, "X-SimpleLogin-Type", "Forward") @@ -608,7 +611,14 @@ def handle_reply(envelope, smtp: SMTP, msg: Message, rcpt_to: str) -> (bool, str # create PGP email if needed if contact.pgp_finger_print and user.is_premium(): LOG.d("Encrypt message for contact %s", contact) - msg = prepare_pgp_message(msg, contact.pgp_finger_print) + try: + msg = prepare_pgp_message(msg, contact.pgp_finger_print) + except PGPException: + LOG.error( + "Cannot encrypt message %s -> %s. %s %s", alias, contact, mailbox, user + ) + # so the client can retry later + return False, "421 SL E13" smtp.sendmail( alias.email, @@ -1065,12 +1075,6 @@ class MailHandler: return handle(envelope, smtp) -def exit(): - pid = os.getpid() - LOG.warning("kill pid %s", pid) - os.kill(pid, 9) - - if __name__ == "__main__": controller = Controller(MailHandler(), hostname="0.0.0.0", port=20381)