summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomás Touceda <chiiph@leap.se>2013-12-20 12:33:02 -0300
committerTomás Touceda <chiiph@leap.se>2013-12-20 12:33:02 -0300
commitf7c0791687deee4a67a33ec0a34dc3b13888c62c (patch)
treee89641e3eeff61a7202584dee692a6fbe5cdbbe4
parenteabff1070531efaf30899fb13f66710233e04dd0 (diff)
parentaa69b820df0db9a277833a74927e315c083ccbaf (diff)
Merge remote-tracking branch 'refs/remotes/drebs/feature/4335_4671' into develop
-rw-r--r--mail/changes/feature_4335_stop-providing-hostname-for-helo1
-rw-r--r--mail/changes/feature_4671_only-try-to-fetch-keys-for-multipart-signed-or-encrypted1
-rw-r--r--mail/src/leap/mail/imap/fetch.py4
-rw-r--r--mail/src/leap/mail/smtp/gateway.py3
-rw-r--r--mail/src/leap/mail/smtp/rfc3156.py2
-rw-r--r--mail/src/leap/mail/smtp/tests/test_gateway.py15
6 files changed, 17 insertions, 9 deletions
diff --git a/mail/changes/feature_4335_stop-providing-hostname-for-helo b/mail/changes/feature_4335_stop-providing-hostname-for-helo
new file mode 100644
index 00000000..f4b6c29e
--- /dev/null
+++ b/mail/changes/feature_4335_stop-providing-hostname-for-helo
@@ -0,0 +1 @@
+ o Stop providing hostname for helo in smtp gateway (#4335).
diff --git a/mail/changes/feature_4671_only-try-to-fetch-keys-for-multipart-signed-or-encrypted b/mail/changes/feature_4671_only-try-to-fetch-keys-for-multipart-signed-or-encrypted
new file mode 100644
index 00000000..de3bb86d
--- /dev/null
+++ b/mail/changes/feature_4671_only-try-to-fetch-keys-for-multipart-signed-or-encrypted
@@ -0,0 +1 @@
+ o Only try to fetch keys for multipart signed or encrypted emails (#4671).
diff --git a/mail/src/leap/mail/imap/fetch.py b/mail/src/leap/mail/imap/fetch.py
index f69681a5..b1c34ba5 100644
--- a/mail/src/leap/mail/imap/fetch.py
+++ b/mail/src/leap/mail/imap/fetch.py
@@ -389,7 +389,9 @@ class LeapIncomingMail(object):
# try to obtain sender public key
senderPubkey = None
fromHeader = msg.get('from', None)
- if fromHeader is not None:
+ if fromHeader is not None \
+ and (msg.get_content_type() == 'multipart/encrypted' \
+ or msg.get_content_type() == 'multipart/signed'):
_, senderAddress = parseaddr(fromHeader)
try:
senderPubkey = self._keymanager.get_key_from_cache(
diff --git a/mail/src/leap/mail/smtp/gateway.py b/mail/src/leap/mail/smtp/gateway.py
index a24115b9..bef5c6d2 100644
--- a/mail/src/leap/mail/smtp/gateway.py
+++ b/mail/src/leap/mail/smtp/gateway.py
@@ -52,6 +52,7 @@ from leap.common.events import proto, signal
from leap.keymanager import KeyManager
from leap.keymanager.openpgp import OpenPGPKey
from leap.keymanager.errors import KeyNotFound
+from leap.mail import __version__
from leap.mail.smtp.rfc3156 import (
MultipartSigned,
MultipartEncrypted,
@@ -492,7 +493,7 @@ class EncryptedMessage(object):
heloFallback=True,
requireAuthentication=False,
requireTransportSecurity=True)
- factory.domain = LOCAL_FQDN
+ factory.domain = __version__
signal(proto.SMTP_SEND_MESSAGE_START, self._user.dest.addrstr)
reactor.connectSSL(
self._host, self._port, factory,
diff --git a/mail/src/leap/mail/smtp/rfc3156.py b/mail/src/leap/mail/smtp/rfc3156.py
index b0288b4d..97395316 100644
--- a/mail/src/leap/mail/smtp/rfc3156.py
+++ b/mail/src/leap/mail/smtp/rfc3156.py
@@ -361,7 +361,7 @@ class PGPSignature(MIMEApplication):
"""
def __init__(self, _data, name='signature.asc'):
MIMEApplication.__init__(self, _data, 'pgp-signature',
- encoder=lambda x: x, name=name)
+ _encoder=lambda x: x, name=name)
self.add_header('Content-Description', 'OpenPGP Digital Signature')
diff --git a/mail/src/leap/mail/smtp/tests/test_gateway.py b/mail/src/leap/mail/smtp/tests/test_gateway.py
index 5b15b5b8..88ee5f70 100644
--- a/mail/src/leap/mail/smtp/tests/test_gateway.py
+++ b/mail/src/leap/mail/smtp/tests/test_gateway.py
@@ -137,7 +137,8 @@ class TestSmtpGateway(TestCaseWithKeyManager):
self._config['port'], self._config['cert'], self._config['key'])
for line in self.EMAIL_DATA[4:12]:
m.lineReceived(line)
- m.eomReceived()
+ #m.eomReceived() # this includes a defer, so we avoid calling it here
+ m.lines.append('') # add a trailing newline
# we need to call the following explicitelly because it was deferred
# inside the previous method
m._maybe_encrypt_and_sign()
@@ -157,7 +158,7 @@ class TestSmtpGateway(TestCaseWithKeyManager):
m._msg.get_payload(1).get_payload(), privkey)
self.assertEqual(
'\n' + '\r\n'.join(self.EMAIL_DATA[9:12]) + '\r\n\r\n--\r\n' +
- 'I prefer encrypted email - https://leap.se/key/anotheruser.\r\n',
+ 'I prefer encrypted email - https://leap.se/key/anotheruser\r\n',
decrypted,
'Decrypted text differs from plaintext.')
@@ -180,7 +181,8 @@ class TestSmtpGateway(TestCaseWithKeyManager):
for line in self.EMAIL_DATA[4:12]:
m.lineReceived(line)
# trigger encryption and signing
- m.eomReceived()
+ #m.eomReceived() # this includes a defer, so we avoid calling it here
+ m.lines.append('') # add a trailing newline
# we need to call the following explicitelly because it was deferred
# inside the previous method
m._maybe_encrypt_and_sign()
@@ -202,7 +204,7 @@ class TestSmtpGateway(TestCaseWithKeyManager):
m._msg.get_payload(1).get_payload(), privkey, verify=pubkey)
self.assertEqual(
'\n' + '\r\n'.join(self.EMAIL_DATA[9:12]) + '\r\n\r\n--\r\n' +
- 'I prefer encrypted email - https://leap.se/key/anotheruser.\r\n',
+ 'I prefer encrypted email - https://leap.se/key/anotheruser\r\n',
decrypted,
'Decrypted text differs from plaintext.')
@@ -227,7 +229,8 @@ class TestSmtpGateway(TestCaseWithKeyManager):
for line in self.EMAIL_DATA[4:12]:
m.lineReceived(line)
# trigger signing
- m.eomReceived()
+ #m.eomReceived() # this includes a defer, so we avoid calling it here
+ m.lines.append('') # add a trailing newline
# we need to call the following explicitelly because it was deferred
# inside the previous method
m._maybe_encrypt_and_sign()
@@ -240,7 +243,7 @@ class TestSmtpGateway(TestCaseWithKeyManager):
# assert content of message
self.assertEqual(
'\r\n'.join(self.EMAIL_DATA[9:13]) + '\r\n--\r\n' +
- 'I prefer encrypted email - https://leap.se/key/anotheruser.\r\n',
+ 'I prefer encrypted email - https://leap.se/key/anotheruser\r\n',
m._msg.get_payload(0).get_payload(decode=True))
# assert content of signature
self.assertTrue(