diff -Nru authres-1.0.2/authres/core.py authres-1.1.0/authres/core.py --- authres-1.0.2/authres/core.py 2018-02-16 07:37:38.000000000 +0000 +++ authres-1.1.0/authres/core.py 2018-03-02 05:33:43.000000000 +0000 @@ -458,7 +458,7 @@ feature_context, authserv_id = None, authserv_id_comment = None, version = None, version_comment = None, - results = None + results = None, strict = False ): self.feature_context = feature_context self.authserv_id = authserv_id and authserv_id.lower() @@ -470,6 +470,7 @@ if self.version_comment and not self.version: raise OrphanCommentError('Cannot include header version comment without associated header version') self.results = results or [] + self.strict = strict # TODO Figure out how to set this programatically def __str__(self): return ''.join((self.HEADER_FIELD_NAME, ': ', self.header_value())) @@ -552,10 +553,16 @@ properties = [] property_ = True while property_: - self._parse_rfc5322_cfws() - property_ = self._parse_propspec() - if property_: - properties.append(property_) + try: + self._parse_rfc5322_cfws() + property_ = self._parse_propspec() + if property_: + properties.append(property_) + except: + if self.strict: + raise + else: + pass return self.feature_context.result(method, version, result, None, reason, None, properties) def _parse_methodspec(self): @@ -599,7 +606,13 @@ if not ptype: return elif ptype.lower() not in ['smtp', 'header', 'body', 'policy']: - raise SyntaxError('Invalid ptype; expected any of "smtp", "header", "body", "policy", got "%s"' % ptype, self._parse_text) + self._parse_rfc5322_cfws() + self._parse_pattern(r'\.') + self._parse_rfc5322_cfws() + self._parse_dot_key_atom() + self._parse_pattern(r'=') + self._parse_pvalue() + raise SyntaxError('Invalid ptype; expected any of "smtp", "header", "body", "policy", got "{0}"'.format(ptype)) self._parse_rfc5322_cfws() if not self._parse_pattern(r'\.'): raise SyntaxError('Expected "."', self._parse_text) diff -Nru authres-1.0.2/authres/tests authres-1.1.0/authres/tests --- authres-1.0.2/authres/tests 2018-02-16 07:32:18.000000000 +0000 +++ authres-1.1.0/authres/tests 2018-03-02 11:40:43.000000000 +0000 @@ -174,6 +174,16 @@ >>> dsr_fail.match_signature_algorithm('mail-router.example.net', 'rsa-sha256') False +Header from dcrup testing +>>> import authres +>>> dss_pass = authres.DKIMAuthenticationResult(result = 'pass', result_comment = 'Good 256 bit ed25519-sha256 signature.', +... header_d = 'example.com', header_i = '@example.com', header_a = 'ed25519-sha256') +>>> dss_fail = authres.DKIMAuthenticationResult(result = 'fail', result_comment = 'Bad 1024 bit rsa-sha256 signature.', +... header_d = 'example.com', header_i = '@example.com', header_a = 'rsa-sha256') +>>> str(authres.AuthenticationResultsHeader(authserv_id = 'relay02.example.org', +... results = [dss_pass, dss_fail])) +'Authentication-Results: relay02.example.org; dkim=pass (Good 256 bit ed25519-sha256 signature.) header.d=example.com header.i=@example.com header.a=ed25519-sha256; dkim=fail (Bad 1024 bit rsa-sha256 signature.) header.d=example.com header.i=@example.com header.a=rsa-sha256' + # Missing parsing header comment. #FIXME >>> import authres @@ -655,4 +665,84 @@ ... results = [mfrom_auth])) 'Authentication-Results: example.com; auth=pass smtp.mailfrom=mailauth@example.net' +# Ignore unknown method (RFC 7601 2.7.6 SHOULD) +>>> import authres +>>> arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: mail.example.org; tls=pass smtp.TLSversion=TLSv1.2 smtp.TLScyper=ECDHE-RSA-CHACHA20-POLY1305 smtp.TLSbits=256') +>>> str(arobj.authserv_id) +'mail.example.org' +>>> str(arobj.results[0]) +'tls=pass smtp.tlsversion=TLSv1.2 smtp.tlscyper=ECDHE-RSA-CHACHA20-POLY1305 smtp.tlsbits=256' +>>> str(arobj.results[0].method) +'tls' +>>> str(arobj.results[0].result) +'pass' +>>> try: str(arobj.results[0].smtp_mailfrom) +... except AttributeError as e: print(e) +'AuthenticationResult' object has no attribute 'smtp_mailfrom' +>>> str(arobj.results[0].properties[0].type) +'smtp' +>>> str(arobj.results[0].properties[0].name) +'tlsversion' +>>> str(arobj.results[0].properties[0].value) +'TLSv1.2' + + +# Invalid ptype (error) and unknown method (OK) +>>> import authres +>>> try: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: mail.example.org; x-tls=pass version=TLSv1.2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256') +... except authres.SyntaxError as e: print(e) + +>>> str(arobj.authserv_id) +'mail.example.org' +>>> str(arobj.results[0]) +'x-tls=pass' + +# Valid ptype (OK), unknown method (OK), unknown property (OKish) +>>> import authres +>>> try: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: mail.example.org; x-tls=pass smtp.tlsversion=TLSv1.2') +... except authres.SyntaxError as e: print(e) +>>> str(arobj.authserv_id) +'mail.example.org' +>>> str(arobj.results[0]) +'x-tls=pass smtp.tlsversion=TLSv1.2' +>>> str(arobj.results[0].method) +'x-tls' +>>> str(arobj.results[0].result) +'pass' +>>> try: str(arobj.results[0].smtp_mailfrom) +... except AttributeError as e: print(e) +'AuthenticationResult' object has no attribute 'smtp_mailfrom' +>>> try: str(arobj.results[0].smtp_tlsversion) +... except AttributeError as e: print(e) +'AuthenticationResult' object has no attribute 'smtp_tlsversion' +>>> str(arobj.results[0].properties[0].type) +'smtp' +>>> str(arobj.results[0].properties[0].name) +'tlsversion' +>>> str(arobj.results[0].properties[0].value) +'TLSv1.2' + +# Parse multiple result header field and toss out unknown ptype +>>> import authres +>>> arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: mail.example.org; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=example.net header.i=@example.net header.b=Qgi/FoC0; dmarc=none (p=none) header.from=example.net; spf=none smtp.mailfrom=test@example.net smtp.helo=mail-wm0-x232.example.com; x-tls=pass version=TLSv1.2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256') +>>> for result in arobj.results: +... result.method +... result.result +'arc' +'none' +'dkim' +'pass' +'dmarc' +'none' +'spf' +'none' +'x-tls' +'pass' + +# Repeat authserv_id for each result (invalid) +>>> import authres +>>> try: arobj = authres.AuthenticationResultsHeader.parse('authentication-results: thehesiod.com; dkim=none (message not signed) header.d=none;thehesiod.com; dmarc=none action=none header.from=hotmail.com;') +... except authres.SyntaxError as e: print(e) +Syntax error: Expected "=" at: ; dmarc=none action=none header.from=hot... + # vim:sw=4 sts=4 diff -Nru authres-1.0.2/authres.egg-info/dependency_links.txt authres-1.1.0/authres.egg-info/dependency_links.txt --- authres-1.0.2/authres.egg-info/dependency_links.txt 1970-01-01 00:00:00.000000000 +0000 +++ authres-1.1.0/authres.egg-info/dependency_links.txt 2018-03-02 11:43:55.000000000 +0000 @@ -0,0 +1 @@ + diff -Nru authres-1.0.2/authres.egg-info/not-zip-safe authres-1.1.0/authres.egg-info/not-zip-safe --- authres-1.0.2/authres.egg-info/not-zip-safe 1970-01-01 00:00:00.000000000 +0000 +++ authres-1.1.0/authres.egg-info/not-zip-safe 2018-02-26 16:44:20.000000000 +0000 @@ -0,0 +1 @@ + diff -Nru authres-1.0.2/authres.egg-info/PKG-INFO authres-1.1.0/authres.egg-info/PKG-INFO --- authres-1.0.2/authres.egg-info/PKG-INFO 1970-01-01 00:00:00.000000000 +0000 +++ authres-1.1.0/authres.egg-info/PKG-INFO 2018-03-02 11:43:55.000000000 +0000 @@ -0,0 +1,22 @@ +Metadata-Version: 1.1 +Name: authres +Version: 1.1.0 +Summary: authres - Authentication Results Header Module +Home-page: https://launchpad.net/authentication-results-python +Author: Julian Mehnle, Scott Kitterman +Author-email: julian@mehnle.net +License: Apache 2.0 +Description: UNKNOWN +Keywords: dkim,spf,dmarc,email,authentication,rfc5451,rfc7001,rfc7601 +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: No Input/Output (Daemon) +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Apache Software License +Classifier: Natural Language :: English +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Topic :: Communications :: Email :: Mail Transport Agents +Classifier: Topic :: Communications :: Email :: Filters +Classifier: Topic :: Software Development :: Libraries :: Python Modules diff -Nru authres-1.0.2/authres.egg-info/SOURCES.txt authres-1.1.0/authres.egg-info/SOURCES.txt --- authres-1.0.2/authres.egg-info/SOURCES.txt 1970-01-01 00:00:00.000000000 +0000 +++ authres-1.1.0/authres.egg-info/SOURCES.txt 2018-03-02 11:43:56.000000000 +0000 @@ -0,0 +1,21 @@ +CHANGES +COPYING +MANIFEST.in +README +setup.py +authres/__init__.py +authres/__main__.py +authres/arc.py +authres/core.py +authres/dkim_adsp.py +authres/dkim_b.py +authres/dmarc.py +authres/rrvs.py +authres/smime.py +authres/tests +authres/vbr.py +authres.egg-info/PKG-INFO +authres.egg-info/SOURCES.txt +authres.egg-info/dependency_links.txt +authres.egg-info/not-zip-safe +authres.egg-info/top_level.txt \ No newline at end of file diff -Nru authres-1.0.2/authres.egg-info/top_level.txt authres-1.1.0/authres.egg-info/top_level.txt --- authres-1.0.2/authres.egg-info/top_level.txt 1970-01-01 00:00:00.000000000 +0000 +++ authres-1.1.0/authres.egg-info/top_level.txt 2018-03-02 11:43:55.000000000 +0000 @@ -0,0 +1 @@ +authres diff -Nru authres-1.0.2/CHANGES authres-1.1.0/CHANGES --- authres-1.0.2/CHANGES 2018-02-16 07:21:28.000000000 +0000 +++ authres-1.1.0/CHANGES 2018-03-02 11:35:56.000000000 +0000 @@ -4,6 +4,13 @@ # ! = Changed something significant, or removed a feature # * = Fixed a bug, or made a minor improvement +--- 1.1.0 2018-0302 + + Changed from distutils to setuptools because it's the future + + Implement RFC 7601 SHOULD to ignore unknown method identifiers (2.7.6): + + Discard unknown ptypes and associated properties + + Added tests to document errors raised by different kinds of broken header + fields + --- 1.0.2 2018-02-16 + Added DKIM 'a' property so signature algorithm can be reported as proposed for inclusion in draft-ietf-dmarc-rfc7601bis (experimental) @@ -25,7 +32,7 @@ + Add support for RFC 7601 use of SMTP auth with the mailfrom property * Updated README and docstring reference to refer to RFC 7601 ---- 0.800 (2015-03-09 22:40 -0400)) +--- 0.800 (2015-03-09 22:40 -0400) + Add support for RFC 7293, The Require-Recipient-Valid-Since Header Field and SMTP Service Extension, header field types diff -Nru authres-1.0.2/debian/changelog authres-1.1.0/debian/changelog --- authres-1.0.2/debian/changelog 2018-02-16 07:52:34.000000000 +0000 +++ authres-1.1.0/debian/changelog 2018-03-03 04:29:09.000000000 +0000 @@ -1,3 +1,13 @@ +authres (1.1.0-1) unstable; urgency=medium + + * New upstream release + - Add python{3}-setuptools to build-depends + * Update debian/watch to check signature and use secure uri + * Honor nocheck option in debian/rules + * Include egg meta-information for people that use pip/ez_install + + -- Scott Kitterman Fri, 02 Mar 2018 23:29:09 -0500 + authres (1.0.2-1) unstable; urgency=medium [ Scott Kitterman ] diff -Nru authres-1.0.2/debian/clean authres-1.1.0/debian/clean --- authres-1.0.2/debian/clean 1970-01-01 00:00:00.000000000 +0000 +++ authres-1.1.0/debian/clean 2018-03-03 04:28:09.000000000 +0000 @@ -0,0 +1 @@ +*.egg-info/* diff -Nru authres-1.0.2/debian/control authres-1.1.0/debian/control --- authres-1.0.2/debian/control 2018-02-16 07:52:19.000000000 +0000 +++ authres-1.1.0/debian/control 2018-03-03 03:45:36.000000000 +0000 @@ -3,7 +3,7 @@ Priority: optional Maintainer: Scott Kitterman Uploaders: Debian Python Modules Team -Build-Depends: debhelper (>= 9), dh-python, python-all (>= 2.6.5-2~), python3-all (>= 3.1.2-10~) +Build-Depends: debhelper (>= 9), dh-python, python-all (>= 2.6.5-2~), python-setuptools, python3-all (>= 3.1.2-10~), python3-setuptools Standards-Version: 4.1.3 Homepage: https://launchpad.net/authentication-results-python X-Python-Version: >= 2.6 diff -Nru authres-1.0.2/debian/python3-authres.install authres-1.1.0/debian/python3-authres.install --- authres-1.0.2/debian/python3-authres.install 2018-02-16 07:51:55.000000000 +0000 +++ authres-1.1.0/debian/python3-authres.install 2018-03-03 04:29:09.000000000 +0000 @@ -1 +1 @@ -debian/tmp/usr/lib/python3.*/dist-packages/authres +debian/tmp/usr/lib/python3.*/dist-packages/authres* diff -Nru authres-1.0.2/debian/python-authres.install authres-1.1.0/debian/python-authres.install --- authres-1.0.2/debian/python-authres.install 2018-02-16 07:51:55.000000000 +0000 +++ authres-1.1.0/debian/python-authres.install 2018-03-03 04:29:09.000000000 +0000 @@ -1 +1 @@ -debian/tmp/usr/lib/python2.*/dist-packages/authres +debian/tmp/usr/lib/python2.*/dist-packages/authres* diff -Nru authres-1.0.2/debian/rules authres-1.1.0/debian/rules --- authres-1.0.2/debian/rules 2018-02-16 07:51:55.000000000 +0000 +++ authres-1.1.0/debian/rules 2018-03-03 04:29:09.000000000 +0000 @@ -10,10 +10,12 @@ override_dh_auto_clean: rm -rf build rm -rf .pybuild - dh_clean + dh_auto_clean override_dh_auto_test: +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) set -e && for i in $(pythons); do \ python$$i -m authres ; \ echo "Tested authres with python $$i" ; \ done +endif diff -Nru authres-1.0.2/debian/source/options authres-1.1.0/debian/source/options --- authres-1.0.2/debian/source/options 1970-01-01 00:00:00.000000000 +0000 +++ authres-1.1.0/debian/source/options 2018-03-03 04:28:50.000000000 +0000 @@ -0,0 +1 @@ +extend-diff-ignore="^[^/]+\.egg-info/" diff -Nru authres-1.0.2/debian/upstream/signing-key.asc authres-1.1.0/debian/upstream/signing-key.asc --- authres-1.0.2/debian/upstream/signing-key.asc 1970-01-01 00:00:00.000000000 +0000 +++ authres-1.1.0/debian/upstream/signing-key.asc 2018-03-03 03:39:45.000000000 +0000 @@ -0,0 +1,430 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +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 +=0tNa +-----END PGP PUBLIC KEY BLOCK----- diff -Nru authres-1.0.2/debian/watch authres-1.1.0/debian/watch --- authres-1.0.2/debian/watch 2018-02-16 07:51:55.000000000 +0000 +++ authres-1.1.0/debian/watch 2018-03-03 03:39:45.000000000 +0000 @@ -1,4 +1,4 @@ version=3 -http://launchpad.net/authentication-results-python/+download \ +opts="pgpsigurlmangle=s/$/.asc/" https://launchpad.net/authentication-results-python/+download \ https://launchpad.net/authentication-results-python/.*/.*/authres-(.*)\.tar\.gz \ diff -Nru authres-1.0.2/PKG-INFO authres-1.1.0/PKG-INFO --- authres-1.0.2/PKG-INFO 2018-02-16 07:37:43.000000000 +0000 +++ authres-1.1.0/PKG-INFO 2018-03-02 11:43:56.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: authres -Version: 1.0.2 +Version: 1.1.0 Summary: authres - Authentication Results Header Module Home-page: https://launchpad.net/authentication-results-python Author: Julian Mehnle, Scott Kitterman diff -Nru authres-1.0.2/setup.cfg authres-1.1.0/setup.cfg --- authres-1.0.2/setup.cfg 1970-01-01 00:00:00.000000000 +0000 +++ authres-1.1.0/setup.cfg 2018-03-02 11:43:56.000000000 +0000 @@ -0,0 +1,5 @@ +[egg_info] +tag_build = +tag_date = 0 +tag_svn_revision = 0 + diff -Nru authres-1.0.2/setup.py authres-1.1.0/setup.py --- authres-1.0.2/setup.py 2018-02-16 07:12:37.000000000 +0000 +++ authres-1.1.0/setup.py 2018-02-26 16:44:09.000000000 +0000 @@ -13,19 +13,20 @@ # See the License for the specific language governing permissions and # limitations under the License. -from distutils.core import setup +from setuptools import setup setup(name='authres', - version='1.0.2', - description='authres - Authentication Results Header Module', - author='Julian Mehnle, Scott Kitterman', - author_email='julian@mehnle.net', - url='https://launchpad.net/authentication-results-python', - license='Apache 2.0', - packages = ['authres',], - package_data = {'authres': ['tests']}, - keywords = ['dkim', 'spf', 'dmarc', 'email', 'authentication', 'rfc5451', 'rfc7001', 'rfc7601'], - classifiers = [ + version='1.1.0', + description='authres - Authentication Results Header Module', + author='Julian Mehnle, Scott Kitterman', + author_email='julian@mehnle.net', + url='https://launchpad.net/authentication-results-python', + license='Apache 2.0', + packages = ['authres',], + include_package_data=True, + package_data = {'authres': ['tests']}, + keywords = ['dkim', 'spf', 'dmarc', 'email', 'authentication', 'rfc5451', 'rfc7001', 'rfc7601'], + classifiers = [ 'Development Status :: 5 - Production/Stable', 'Environment :: No Input/Output (Daemon)', 'Intended Audience :: Developers', @@ -37,5 +38,6 @@ 'Topic :: Communications :: Email :: Mail Transport Agents', 'Topic :: Communications :: Email :: Filters', 'Topic :: Software Development :: Libraries :: Python Modules', - ], + ], + zip_safe = False, )