~dricottone/huttese-apk

5212aa81d3ee7175fc61c4062a41c99a018335ca — Drew DeVault 3 years ago f761f2c
py3-aiosmtpd: upgrade to 1.2.2, patch LHLO
3 files changed, 63 insertions(+), 125 deletions(-)

A sr.ht/py3-aiosmtpd/0001-Make-LHLO-behave-like-EHLO.patch
M sr.ht/py3-aiosmtpd/APKBUILD
D sr.ht/py3-aiosmtpd/test-ssl-certs.patch
A sr.ht/py3-aiosmtpd/0001-Make-LHLO-behave-like-EHLO.patch => sr.ht/py3-aiosmtpd/0001-Make-LHLO-behave-like-EHLO.patch +58 -0
@@ 0,0 1,58 @@
From 0efc8e3404050331c033cc4388a9855f5508dc7b Mon Sep 17 00:00:00 2001
From: Simon Ser <contact@emersion.fr>
Date: Mon, 16 Nov 2020 14:19:31 +0100
Subject: [PATCH] Make LHLO behave like EHLO

The current logic makes LHLO behave like the legacy HELO. However the
RFC says:

> The LHLO command has identical semantics to the EHLO command of ESMTP.

Clients connecting to the LMTP server expect extensions such as 8BITMIME
to be advertised. However aiosmtpd won't send any extension string.

Fix this by making LHLO an alias for EHLO instead of HELO.

[1]: https://tools.ietf.org/html/rfc2033#section-4.1
---
 aiosmtpd/lmtp.py            |  2 +-
 aiosmtpd/tests/test_lmtp.py | 10 +++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/aiosmtpd/lmtp.py b/aiosmtpd/lmtp.py
index 53ed087364d2..61e7768f4474 100644
--- a/aiosmtpd/lmtp.py
+++ b/aiosmtpd/lmtp.py
@@ -7,7 +7,7 @@ class LMTP(SMTP):
     @syntax('LHLO hostname')
     async def smtp_LHLO(self, arg):
         """The LMTP greeting, used instead of HELO/EHLO."""
-        await super().smtp_HELO(arg)
+        await super().smtp_EHLO(arg)
         self.show_smtp_greeting = False
 
     async def smtp_HELO(self, arg):
diff --git a/aiosmtpd/tests/test_lmtp.py b/aiosmtpd/tests/test_lmtp.py
index a3855e45b2b0..d32a394e756b 100644
--- a/aiosmtpd/tests/test_lmtp.py
+++ b/aiosmtpd/tests/test_lmtp.py
@@ -25,7 +25,15 @@ class TestLMTP(unittest.TestCase):
         with SMTP(*self.address) as client:
             code, response = client.docmd('LHLO', 'example.com')
             self.assertEqual(code, 250)
-            self.assertEqual(response, bytes(socket.getfqdn(), 'utf-8'))
+            lines = response.splitlines()
+            expecteds = (
+                bytes(socket.getfqdn(), 'utf-8'),
+                b'SIZE 33554432',
+                b'8BITMIME',
+                b'HELP',
+            )
+            for actual, expected in zip(lines, expecteds):
+                self.assertEqual(actual, expected)
 
     def test_helo(self):
         # HELO and EHLO are not valid LMTP commands.
-- 
2.29.2


M sr.ht/py3-aiosmtpd/APKBUILD => sr.ht/py3-aiosmtpd/APKBUILD +5 -4
@@ 2,8 2,8 @@
# Maintainer: Drew DeVault <sir@cmpwn.com>
pkgname=py3-aiosmtpd
_pyname=aiosmtpd
pkgver=1.2
pkgrel=2
pkgver=1.2.2
pkgrel=0
pkgdesc="A reimplementation of the Python stdlib smtpd.py based on asyncio"
url="https://github.com/aio-libs/aiosmtpd"
arch="noarch"


@@ 11,10 11,9 @@ license="Apache-2.0"
depends="py3-atpublic"
makedepends="python3-dev py3-setuptools py3-pytest"
_pypiprefix="${_pyname%${_pyname#?}}"
# Remove test-ssl-certs.patch for next version
source="
	https://files.pythonhosted.org/packages/source/$_pypiprefix/$_pyname/$_pyname-$pkgver.tar.gz
	test-ssl-certs.patch
	0001-Make-LHLO-behave-like-EHLO.patch
"
replaces="py-aiosmtpd"
builddir="$srcdir"/$_pyname-$pkgver


@@ 31,3 30,5 @@ package() {
	python3 setup.py install --prefix=/usr --root="$pkgdir"
}

sha512sums="7ffc279a73685601496dbfffef30a78cc254a76f8c8fccd0c7b7efe41da66672f0d8662f302eb928e90eb8977b859cb7e713415d0aa5e93f369ef23bdff405fc  aiosmtpd-1.2.2.tar.gz
fac4ce50a992d3d77a57b8da2cf9656f0c3945a446b31121269d7f04290d1e656ee21d9bd044830e1447cc11ddc160baf59ef034e279e12deed1bc25f916a832  0001-Make-LHLO-behave-like-EHLO.patch"

D sr.ht/py3-aiosmtpd/test-ssl-certs.patch => sr.ht/py3-aiosmtpd/test-ssl-certs.patch +0 -121
@@ 1,121 0,0 @@
From f414dcdc0312c4cf3f3d39deb3ea7d15e89a5334 Mon Sep 17 00:00:00 2001
From: Wayne Werner <wayne@waynewerner.com>
Date: Sat, 1 Jun 2019 14:00:30 +0000
Subject: [PATCH] Create new ssl certs

These ones will be valid for 100 years, so that should be plenty of
time for running tests before they have to be recreated.
---
 aiosmtpd/tests/certs/server.crt | 43 +++++++++++++--------------
 aiosmtpd/tests/certs/server.key | 52 ++++++++++++++++-----------------
 2 files changed, 47 insertions(+), 48 deletions(-)

diff --git a/aiosmtpd/tests/certs/server.crt b/aiosmtpd/tests/certs/server.crt
index e4f8f09..04f19cf 100644
--- a/aiosmtpd/tests/certs/server.crt
+++ b/aiosmtpd/tests/certs/server.crt
@@ -1,24 +1,23 @@
 -----BEGIN CERTIFICATE-----
-MIIEEzCCAvugAwIBAgIJANUfzx76nsWrMA0GCSqGSIb3DQEBCwUAMIGfMQswCQYD
-VQQGEwJSVTEZMBcGA1UECAwQU2FpbnQtUGV0ZXJzYnVyZzEZMBcGA1UEBwwQU2Fp
-bnQtUGV0ZXJzYnVyZzETMBEGA1UECgwKSW50ZXJtZWRpYTEQMA4GA1UECwwHRGV2
-VGVhbTEMMAoGA1UEAwwDYWVzMSUwIwYJKoZIhvcNAQkBFhZrdm9sa292QGludGVy
-bWVkaWEubmV0MB4XDTE2MDgyMzEzMDE1NFoXDTE5MDUyMDEzMDE1NFowgZ8xCzAJ
-BgNVBAYTAlJVMRkwFwYDVQQIDBBTYWludC1QZXRlcnNidXJnMRkwFwYDVQQHDBBT
-YWludC1QZXRlcnNidXJnMRMwEQYDVQQKDApJbnRlcm1lZGlhMRAwDgYDVQQLDAdE
-ZXZUZWFtMQwwCgYDVQQDDANhZXMxJTAjBgkqhkiG9w0BCQEWFmt2b2xrb3ZAaW50
-ZXJtZWRpYS5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0c3sW
-h3wlBuM21PhiF2AKlYniu697xCv3cvOyqg4ybq+Vd44ldQc+3twIyxtO+p1zgxTW
-bkxwV+s6qBU5i09m8RHX2sBW0e61Vx4dR8dEkGjmqy3hebJy33GZOWh5bp1yZoZp
-9AsbGQ2dNPCBSc75hc/5+CMcyzoK3pXuC09kwXPNmnWgy/dJWk6FVRP3/3u2KkDo
-ZGKDY7+vnJ8hYLk+stGZGfu0C6qU7cguRnsuuH6nC6KIhbn3hJNVYMlXRBXF1tE4
-UBjvdSYlFfyiwc1zJ77TVq8lSnn/9yiBfG+xUqGq7+KEHkg3SezmBFTFaXRc+RT3
-e3wf/e5WJRHl4joxAgMBAAGjUDBOMB0GA1UdDgQWBBSR+2YlBnyuYLHm9xNL/dJw
-fn6RtjAfBgNVHSMEGDAWgBSR+2YlBnyuYLHm9xNL/dJwfn6RtjAMBgNVHRMEBTAD
-AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCJExJ/YpMJeWq/VsEBiQ9MevNUbhy4bDn1
-8JkDazIAwcSALkqG+VKFp5JBJxS8BIMJ//31L26r0pjT8eOCivyEAf5jtBt594Jn
-v+IANbVXfGds3H0QtFgpMKDlvpwfYDXwNDRsClLhwgIzhkrtl0y1vIn6gNx2Np0p
-Xn4nRewPXpNfUXuE4mot0njMOp2Iyf0AuhaM9rqqK9TEwZCvpwpptjnBg0Z+vd+h
-U4rQNt6WaRMkYc1xZpOy6pESB98JkmTFJ6se33JLc7GXJbdLcQ+Zy6TWCGhUqZ/U
-kaKttZGpHTZfuMkwRwhPG6ou3SlvlARYN3wGTMy+Um9tk+J+k0Tw
+MIID6DCCAtCgAwIBAgIJAOT/DNOqIMqmMA0GCSqGSIb3DQEBCwUAMIGHMQswCQYD
+VQQGEwJVUzELMAkGA1UECAwCQVIxEjAQBgNVBAcMCUdyZWVud29vZDERMA8GA1UE
+CgwIQWlvc210cGQxEDAOBgNVBAsMB0RldlRlYW0xDDAKBgNVBAMMA2FlczEkMCIG
+CSqGSIb3DQEJARYVd2F5bmVAd2F5bmV3ZXJuZXIuY29tMCAXDTE5MDYwMTEzNTUy
+NloYDzIxMTkwNTA4MTM1NTI2WjCBhzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkFS
+MRIwEAYDVQQHDAlHcmVlbndvb2QxETAPBgNVBAoMCEFpb3NtdHBkMRAwDgYDVQQL
+DAdEZXZUZWFtMQwwCgYDVQQDDANhZXMxJDAiBgkqhkiG9w0BCQEWFXdheW5lQHdh
+eW5ld2VybmVyLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMXp
+glx/G19+jt/m/AQAy4+85ng3L1/PsXri91SpvPz1YD7Z3/0Yz3SFyuP1mkRCTplO
+H3Ok1BVbnycHxBDLBkbEjoJOfzMWxsV1Xp1vE4XEVQaq111pjgxQoFD1qU9vOs4c
+0g54PSTtGio0WCOcJq1fWXz9T1QqM5n4MAL2KzFNkqfyyhCesoja4qnPn9n8MCjk
+TFslwX/2xJVXrsZyGH0IwiGmJDzkW3/FgXj0brcRZe4BYx/BM7ka1LDNnrdUQ7Wj
+GuYbC7mQLWzOUJBF+UQUWHbPadCEPYpAgd4J4seME2XUW/ygi95oY6mJcZGOyz0c
+c8D/Dja8Elt5DeTYypsCAwEAAaNTMFEwHQYDVR0OBBYEFDofuwFE+DEx8uQisFlQ
+Dfn4LIqdMB8GA1UdIwQYMBaAFDofuwFE+DEx8uQisFlQDfn4LIqdMA8GA1UdEwEB
+/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAKdtV5GiiE66bZyqh7aKAOJb6dAe
+qAD8LH9u2hqili7fHNzRQLppSiNGGxy/yZoqh7+I3Z64km5jEiSiw2bY7vqbhReC
+qU57Dlf5Q4PQVSe36d+2T/g0oGq1pzJkfY27Pse+e9c/m4FkKeEltdqS8Tl2WJFI
+Qfux88wBnfrZWCgCvZFQGD6RaqEx9Z2//cUOmU+FcM+JHfbfnQy2QEY13CKQfniP
+YBprCg866+ecVC+J+Aeu9ubZgv557SJwJ/0b4rsQ/ETUw95g6AxqdHntDTrWamxQ
+iKiGHt3N9iEdnnjXsKYNMsOFXSHHG10PtBQUpNOSUrp5HMb1Kd0oTdNz/kU=
 -----END CERTIFICATE-----
diff --git a/aiosmtpd/tests/certs/server.key b/aiosmtpd/tests/certs/server.key
index f9e279b..f22e0f5 100644
--- a/aiosmtpd/tests/certs/server.key
+++ b/aiosmtpd/tests/certs/server.key
@@ -1,28 +1,28 @@
 -----BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC0c3sWh3wlBuM2
-1PhiF2AKlYniu697xCv3cvOyqg4ybq+Vd44ldQc+3twIyxtO+p1zgxTWbkxwV+s6
-qBU5i09m8RHX2sBW0e61Vx4dR8dEkGjmqy3hebJy33GZOWh5bp1yZoZp9AsbGQ2d
-NPCBSc75hc/5+CMcyzoK3pXuC09kwXPNmnWgy/dJWk6FVRP3/3u2KkDoZGKDY7+v
-nJ8hYLk+stGZGfu0C6qU7cguRnsuuH6nC6KIhbn3hJNVYMlXRBXF1tE4UBjvdSYl
-Ffyiwc1zJ77TVq8lSnn/9yiBfG+xUqGq7+KEHkg3SezmBFTFaXRc+RT3e3wf/e5W
-JRHl4joxAgMBAAECggEAFLHZv++x0R1FGZi7E6TSouQbeCFGMs+Aq1RHloniLu56
-vI2Fg840EoXEfk2syBX90K2LyjvEEG5Ez+lO5daQOKIVBchUnqBc2/ctwPXmaHqX
-TTz8egtW582wXX4z+RkyfVg8uhH+5BCvewQDQRCR6BPskiJfBIJaGb0FPNOXO1qy
-vI0MupbfHU1J80M6PEzfszswdC+5Lgx0kFRphr8mSLn42dlFsqFVmFCVuaxg6bfn
-zowXppUcUM4lkBrsXpLKYTr2+u64wZkclL/GjMCYuyQ52xiBsw3JPDeDDFI3kFkw
-gOCqDedqyim60qM9Dtq1bf4EW4/AEZp5LM7bSOXTsQKBgQDtuUynfJyKsqdXCrAa
-Z+uVhSlAN7a4/n4s0wFomgXmQnYNaNAq5PF8Nplq95JiGkD6BX/FPKPUxHwpeT3F
-F98h03BafU/06RR/m3A8ACclTVM5vmqv3I+L2eqAPVP+mE5pPrQwMxhxwhcHrbtg
-LmUVegkahRZgR8WhrhRyQ6fL0wKBgQDCUvubeKtY09u6j1AuTgfGCNmjqFyNHsuZ
-PQhqmiIcsmKWja2ybiFk8hQf09scjQOGC9GunD1aB8KTnBYOr/WcNLRjLuKWL3WO
-xKDfIrOJ6StooU6+/hYz+RBcYn87d4sSVzZIgTPdN1OyQKls9QhP4Ds9j4wWNmnM
-EWEjzCczawKBgQCcNP6hr8hNe0dqcqN1NoQfI/kPMYzn0pKmcaCjU1I9E77u4Mio
-5venX1lAaJ3PyOCZabOjr00YKmRL/FcSg7UjTQSu8Vjw3ZeSolkFlDQk1sKxVuZT
-2OKaSv9EdQgUa5Bap9FPOsP9PERVz1sowFO74QzKWFlzurWqn/DfhIVl8QKBgEmN
-a1rvk7uthQ/aSvkb4+lbVDWT9mQb8ehwp4ziBmNiSdq+ia5t7QnubxuU7uyhm2HT
-e2xiCv7WzRleDSNGCuszL8wS5QT/tblyR4nt8pMSxLF3zPyR5AmMDltJlOsHVoZ8
-qDlNXjovROjFfNuW66yALSwh9144/laVhXUtQvE9AoGBANvLJfJ7b3QxvQduFfRB
-667/l4/2zkVvPkKABgf+v+/GH+oQq4K3ZX+LZDQb1PcliaUNtE1l3maQNUTa1iar
-WMYYYhs05mnIWCYu9H8Dd1LzpNmZVqTK6cJSTrbOAkStopf95l0QGUxG+hIbewmh
-HJa7IfPvASHjtu/R/HZr/n5W
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDF6YJcfxtffo7f
+5vwEAMuPvOZ4Ny9fz7F64vdUqbz89WA+2d/9GM90hcrj9ZpEQk6ZTh9zpNQVW58n
+B8QQywZGxI6CTn8zFsbFdV6dbxOFxFUGqtddaY4MUKBQ9alPbzrOHNIOeD0k7Roq
+NFgjnCatX1l8/U9UKjOZ+DAC9isxTZKn8soQnrKI2uKpz5/Z/DAo5ExbJcF/9sSV
+V67Gchh9CMIhpiQ85Ft/xYF49G63EWXuAWMfwTO5GtSwzZ63VEO1oxrmGwu5kC1s
+zlCQRflEFFh2z2nQhD2KQIHeCeLHjBNl1Fv8oIveaGOpiXGRjss9HHPA/w42vBJb
+eQ3k2MqbAgMBAAECggEBAMLwy8giJys7tK2Ujn2+7sMpNPYKnW5JXK8HasmI269q
+Xp/p6XgafRVwR7WckJRVn6ffzJkTLRfQhIZkXtqPsCH6r8hoW2BOOgH7JvP5mggz
+p/CGTNYlB5bXv+Ge6GNm00x8FOfNxaReq1wQ7RQ+VdaFydaUiBQF8YficCAqq8bF
+v2q/5XBydcJ4N2fyI4Mm3g03NIiXjeCNbxU5MBTwx2W6xN+PitN/KPGrC/KQoQEt
+PibnBkojBFfty8FTjISX/7ZKaQBp3UEktccru0k1V2LpOJ+aQMfPLGSgMdyx8hei
+oQbwv97dQfTjMaC3z53ae2sbfOyFmurWcV8Yhlo1uQECgYEA528s2Gsybcg1NQYo
+63Z7UYNd4PWOIHVuaf6XX06e0zUncaY0yf5sb0W1VTrXJ6VdgRT1Et9kkgYKZ2I7
+zsLnJQQiB0Xk7K+kha9WRgmtsxqsks9E61S/K+Ao0hNBeegwn8G6tu8KQlFDKVF0
+LN/SU/Q9J2/CVeaMDK8fugs3yoECgYEA2utto2CJ3TALc451yhqYiVHMq2WLW3M0
++ctrRqTQJ/vgTgCXNDNZPPY+xY83Hbcaw4XxBUI9idNyorqUP3Z05kKEyZUSe4YK
+SnRi5+m/YLghNCX/MDAQasmCvV8I3ZXvzqP0TuAQW3XETqs3Cwy5wJfGXYxkVf41
+4fe0ypvo7xsCgYA+C744HzUb3Yr2NjqONeuFxPRMNUjvRsxdOlYWxRsrgJqci3Sn
+msAzbLraqLW5+UmCK74wWxe5Vkk/wkRKgFI7yEnfLUvccJJpDMLScBHTbJlLmqnd
+dZDzEFuhRmxNZIR0sBmApcFYWjTpRN8ikLbwrxAeHIY7RV3SoLiexhclAQKBgAD4
+2KTIEfSkePiLYmSCV7kMXu9H5SWDznFpgNFwe+ghiy5tfD5kF/pYUZEJAMKmBH1n
+w9k1IRbSlIi6cVwSx5QaKYLHoaxgvPz1pVbIR+xDBQq5PHfXTstal7UFjgGF3+m3
++qa7AfeV/0gmJHltFgoP4naZ3/wtw8l8ExZvOMqPAoGBAMG9pMCCY653KfRQ237I
+m/ds9b3VmaLZ5wAwoAEeU/kfwVa27GlP6uDwz6xJmn3XLQ29YwWx8hgqIBm5TfBU
+EYQE2RNEcTOY5fnT7QK+xrKyvr3o8fTxCV15EzX/Nwc723QCO8mXN/8ekAhBRHQ7
+6QRoqSt0NeWpSSVRTNwYwFrL
 -----END PRIVATE KEY-----