Extract a predicate to classify messages as already encrypted

Also: perform minor cleanup.
This commit is contained in:
Piotr F. Mieszkowski 2022-06-21 20:50:55 +02:00
parent 002e150805
commit 447da78c19
1 changed files with 17 additions and 19 deletions

View File

@ -17,7 +17,6 @@
# along with gpg-mailgate source code. If not, see <http://www.gnu.org/licenses/>.
#
from configparser import RawConfigParser
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
import copy
@ -394,6 +393,17 @@ def send_msg( message, recipients ):
else:
LOG.info("No recipient found")
def is_encrypted(raw_message):
if raw_message.get_content_type() == 'multipart/encrypted':
return True
first_part = get_first_payload(raw_message)
if first_part.get_content_type() == 'application/pkcs7-mime':
return True
first_payload = first_part.get_payload(decode=True)
return text.is_pgp_inline(first_payload)
def deliver_message( raw_message, from_address, to_addrs ):
global LOG
global from_addr
@ -404,19 +414,7 @@ def deliver_message( raw_message, from_address, to_addrs ):
recipients_left = [sanitize_case_sense(recipient) for recipient in to_addrs]
# There is no need for nested encryption
first_payload = get_first_payload(raw_message)
if first_payload.get_content_type() == 'application/pkcs7-mime':
LOG.debug("Message is already encrypted with S/MIME. Encryption aborted.")
send_msg(raw_message.as_string(), recipients_left)
return
first_payload = first_payload.get_payload(decode=True)
if text.is_pgp_inline(first_payload):
LOG.debug("Message is already encrypted as PGP/INLINE. Encryption aborted.")
send_msg(raw_message.as_string(), recipients_left)
return
if raw_message.get_content_type() == 'multipart/encrypted':
if is_encrypted(raw_message):
LOG.debug("Message is already encrypted. Encryption aborted.")
send_msg(raw_message.as_string(), recipients_left)
return