starting phase `set-SOURCE-DATE-EPOCH' phase `set-SOURCE-DATE-EPOCH' succeeded after 0.0 seconds starting phase `set-paths' environment variable `PATH' set to `/gnu/store/6wpnf4yx1ar04jmcs7ardf3dcb7fc4k7-python-wrapper-3.9.9/bin:/gnu/store/vffvncn7d149shc7c2znx2ia7mg30d8j-tar-1.34/bin:/gnu/store/bdwsnfq7y20cwzxd5xdipz2lqndcniv2-gzip-1.10/bin:/gnu/store/hq8w61vwbjgr7kkwdfvcr9wgdf7i7pyf-bzip2-1.0.8/bin:/gnu/store/3bmnfqz1a46ddl89iqcargdf2ximijxs-xz-5.2.5/bin:/gnu/store/q4g6nw26jlg61018xhjn575nzc975wh3-file-5.39/bin:/gnu/store/gzl6fga809pi6x0mncgh4hl97xcrai2v-diffutils-3.8/bin:/gnu/store/d8nk495685457rpmdf6a46278zijc4mf-patch-2.7.6/bin:/gnu/store/5sr7igkcclqyz01g0q3f2gsc5y5lg7am-findutils-4.8.0/bin:/gnu/store/z42b5grcygvc8rxp3638qhkjv1410b4d-gawk-5.1.0/bin:/gnu/store/axhn2x0d98gj3fmrlc06d5j1vn715ray-sed-4.8/bin:/gnu/store/f4kp7yaiqp9imxf2r9lm3kzs35cwfsc8-grep-3.6/bin:/gnu/store/kvpvk5wh70wdbjnr83hh85rg22ysxm9h-coreutils-8.32/bin:/gnu/store/74aw9c2yfpgbwac78c5jddhk2lf03958-make-4.3/bin:/gnu/store/lzf5zg0diw2bhh2qji4bl2v46wd8pylc-bash-minimal-5.1.8/bin:/gnu/store/1khybib025zzd3hjqkaw8bf909ccbq2b-ld-wrapper-0/bin:/gnu/store/0cwwi9fdd1xx0pn0xxk4xya6wdhliyds-binutils-2.37/bin:/gnu/store/dbcbcaxq20kbkhh2mr8k98qfnymq22kp-gcc-10.3.0/bin:/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/bin:/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/sbin:/gnu/store/yqyf9xwlnylfgc5w2ym0m4pfm8k9lz3p-python-3.9.9/bin' environment variable `GUIX_PYTHONPATH' set to `/gnu/store/yqyf9xwlnylfgc5w2ym0m4pfm8k9lz3p-python-3.9.9/lib/python3.9/site-packages' environment variable `PYTHONTZPATH' unset environment variable `BASH_LOADABLES_PATH' unset environment variable `C_INCLUDE_PATH' set to `/gnu/store/hq8w61vwbjgr7kkwdfvcr9wgdf7i7pyf-bzip2-1.0.8/include:/gnu/store/3bmnfqz1a46ddl89iqcargdf2ximijxs-xz-5.2.5/include:/gnu/store/q4g6nw26jlg61018xhjn575nzc975wh3-file-5.39/include:/gnu/store/z42b5grcygvc8rxp3638qhkjv1410b4d-gawk-5.1.0/include:/gnu/store/74aw9c2yfpgbwac78c5jddhk2lf03958-make-4.3/include:/gnu/store/0cwwi9fdd1xx0pn0xxk4xya6wdhliyds-binutils-2.37/include:/gnu/store/dbcbcaxq20kbkhh2mr8k98qfnymq22kp-gcc-10.3.0/include:/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/include:/gnu/store/yqyf9xwlnylfgc5w2ym0m4pfm8k9lz3p-python-3.9.9/include:/gnu/store/gm5mbaxkqhzafwy0wnimrg53j884glxn-linux-libre-headers-5.10.35/include' environment variable `CPLUS_INCLUDE_PATH' set to `/gnu/store/hq8w61vwbjgr7kkwdfvcr9wgdf7i7pyf-bzip2-1.0.8/include:/gnu/store/3bmnfqz1a46ddl89iqcargdf2ximijxs-xz-5.2.5/include:/gnu/store/q4g6nw26jlg61018xhjn575nzc975wh3-file-5.39/include:/gnu/store/z42b5grcygvc8rxp3638qhkjv1410b4d-gawk-5.1.0/include:/gnu/store/74aw9c2yfpgbwac78c5jddhk2lf03958-make-4.3/include:/gnu/store/0cwwi9fdd1xx0pn0xxk4xya6wdhliyds-binutils-2.37/include:/gnu/store/dbcbcaxq20kbkhh2mr8k98qfnymq22kp-gcc-10.3.0/include/c++:/gnu/store/dbcbcaxq20kbkhh2mr8k98qfnymq22kp-gcc-10.3.0/include:/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/include:/gnu/store/yqyf9xwlnylfgc5w2ym0m4pfm8k9lz3p-python-3.9.9/include:/gnu/store/gm5mbaxkqhzafwy0wnimrg53j884glxn-linux-libre-headers-5.10.35/include' environment variable `LIBRARY_PATH' set to `/gnu/store/hq8w61vwbjgr7kkwdfvcr9wgdf7i7pyf-bzip2-1.0.8/lib:/gnu/store/3bmnfqz1a46ddl89iqcargdf2ximijxs-xz-5.2.5/lib:/gnu/store/q4g6nw26jlg61018xhjn575nzc975wh3-file-5.39/lib:/gnu/store/z42b5grcygvc8rxp3638qhkjv1410b4d-gawk-5.1.0/lib:/gnu/store/0cwwi9fdd1xx0pn0xxk4xya6wdhliyds-binutils-2.37/lib:/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/lib:/gnu/store/4yb66zp717gb7hc5a1q4lkxhami93d4b-glibc-2.33-static/lib:/gnu/store/akml58i0q8mikg7xf6hm789mzlijpm5j-glibc-utf8-locales-2.33/lib:/gnu/store/yqyf9xwlnylfgc5w2ym0m4pfm8k9lz3p-python-3.9.9/lib' environment variable `GUIX_LOCPATH' set to `/gnu/store/akml58i0q8mikg7xf6hm789mzlijpm5j-glibc-utf8-locales-2.33/lib/locale' phase `set-paths' succeeded after 0.0 seconds starting phase `install-locale' using 'en_US.utf8' locale for category "LC_ALL" phase `install-locale' succeeded after 0.0 seconds starting phase `unpack' authres-1.2.0/ authres-1.2.0/CHANGES authres-1.2.0/COPYING authres-1.2.0/MANIFEST.in authres-1.2.0/PKG-INFO authres-1.2.0/README authres-1.2.0/authres/ authres-1.2.0/authres/__init__.py authres-1.2.0/authres/__main__.py authres-1.2.0/authres/arc.py authres-1.2.0/authres/core.py authres-1.2.0/authres/dkim_adsp.py authres-1.2.0/authres/dkim_b.py authres-1.2.0/authres/dmarc.py authres-1.2.0/authres/rrvs.py authres-1.2.0/authres/smime.py authres-1.2.0/authres/tests authres-1.2.0/authres/vbr.py authres-1.2.0/authres.egg-info/ authres-1.2.0/authres.egg-info/PKG-INFO authres-1.2.0/authres.egg-info/SOURCES.txt authres-1.2.0/authres.egg-info/dependency_links.txt authres-1.2.0/authres.egg-info/not-zip-safe authres-1.2.0/authres.egg-info/top_level.txt authres-1.2.0/setup.cfg authres-1.2.0/setup.py phase `unpack' succeeded after 0.0 seconds starting phase `ensure-no-mtimes-pre-1980' phase `ensure-no-mtimes-pre-1980' succeeded after 0.0 seconds starting phase `enable-bytecode-determinism' phase `enable-bytecode-determinism' succeeded after 0.0 seconds starting phase `ensure-no-cythonized-files' phase `ensure-no-cythonized-files' succeeded after 0.0 seconds starting phase `patch-usr-bin-file' phase `patch-usr-bin-file' succeeded after 0.0 seconds starting phase `patch-source-shebangs' phase `patch-source-shebangs' succeeded after 0.0 seconds starting phase `patch-generated-file-shebangs' phase `patch-generated-file-shebangs' succeeded after 0.0 seconds starting phase `build' running "python setup.py" with command "build" and parameters () running build running build_py creating build creating build/lib creating build/lib/authres copying authres/__main__.py -> build/lib/authres copying authres/dmarc.py -> build/lib/authres copying authres/dkim_adsp.py -> build/lib/authres copying authres/arc.py -> build/lib/authres copying authres/vbr.py -> build/lib/authres copying authres/rrvs.py -> build/lib/authres copying authres/dkim_b.py -> build/lib/authres copying authres/core.py -> build/lib/authres copying authres/smime.py -> build/lib/authres copying authres/__init__.py -> build/lib/authres running egg_info writing authres.egg-info/PKG-INFO writing dependency_links to authres.egg-info/dependency_links.txt writing top-level names to authres.egg-info/top_level.txt reading manifest file 'authres.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' writing manifest file 'authres.egg-info/SOURCES.txt' copying authres/tests -> build/lib/authres warning: build_py: byte-compiling is disabled, skipping. phase `build' succeeded after 0.5 seconds starting phase `install' running "python setup.py" with command "install" and parameters ("--prefix=/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0" "--no-compile" "--single-version-externally-managed" "--root=/") running install running build running build_py running egg_info writing authres.egg-info/PKG-INFO writing dependency_links to authres.egg-info/dependency_links.txt writing top-level names to authres.egg-info/top_level.txt reading manifest file 'authres.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'COPYING' writing manifest file 'authres.egg-info/SOURCES.txt' warning: build_py: byte-compiling is disabled, skipping. running install_lib creating /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0 creating /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib creating /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9 creating /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages creating /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/__main__.py -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/dmarc.py -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/dkim_adsp.py -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/tests -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/arc.py -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/vbr.py -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/rrvs.py -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/dkim_b.py -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/core.py -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/smime.py -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres copying build/lib/authres/__init__.py -> /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres warning: install_lib: byte-compiling is disabled, skipping. running install_egg_info Copying authres.egg-info to /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres-1.2.0-py3.9.egg-info running install_scripts Listing '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0'... Listing '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib'... Listing '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9'... Listing '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages'... Listing '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres'... Compiling '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres/__init__.py'... Compiling '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres/__main__.py'... Compiling '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres/arc.py'... Compiling '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres/core.py'... Compiling '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres/dkim_adsp.py'... Compiling '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres/dkim_b.py'... Compiling '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres/dmarc.py'... Compiling '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres/rrvs.py'... Compiling '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres/smime.py'... Compiling '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres/vbr.py'... Listing '/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages/authres-1.2.0-py3.9.egg-info'... phase `install' succeeded after 0.7 seconds starting phase `add-install-to-pythonpath' phase `add-install-to-pythonpath' succeeded after 0.0 seconds starting phase `add-install-to-path' phase `add-install-to-path' succeeded after 0.0 seconds starting phase `wrap' find-files: /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/bin: No such file or directory find-files: /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/sbin: No such file or directory phase `wrap' succeeded after 0.0 seconds starting phase `check' Trying: import authres Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader('test.example.org', version=1)) Expecting: 'Authentication-Results: test.example.org 1; none' ok Trying: import authres Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id = 'test.example.org', results = [authres.NoneAuthenticationResult(comment = 'SPF not checked for localhost')])) Expecting: 'Authentication-Results: test.example.org; none (SPF not checked for localhost)' ok Trying: import authres Expecting nothing ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: example.com; spf=pass smtp.mailfrom=example.net') Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'example.com' ok Trying: str(arobj.results[0]) Expecting: 'spf=pass smtp.mailfrom=example.net' ok Trying: str(arobj.results[0].method) Expecting: 'spf' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: str(arobj.results[0].smtp_mailfrom) Expecting: 'example.net' ok Trying: str(arobj.results[0].smtp_helo) Expecting: 'None' ok Trying: str(arobj.results[0].reason) Expecting: 'None' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'smtp' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'mailfrom' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'example.net' ok Trying: import authres Expecting nothing ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: example.com; auth=pass (cram-md5) smtp.auth=sender@example.net; spf=pass smtp.mailfrom=example.net') Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'example.com' ok Trying: str(arobj.results[0]) Expecting: 'auth=pass smtp.auth=sender@example.net' ok Trying: str(arobj.results[0].method) Expecting: 'auth' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: str(arobj.results[0].smtp_auth) Expecting: 'sender@example.net' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'smtp' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'auth' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'sender@example.net' ok Trying: str(arobj.results[1]) Expecting: 'spf=pass smtp.mailfrom=example.net' ok Trying: str(arobj.results[1].method) Expecting: 'spf' ok Trying: str(arobj.results[1].result) Expecting: 'pass' ok Trying: str(arobj.results[1].smtp_mailfrom) Expecting: 'example.net' ok Trying: str(arobj.results[1].properties[0].type) Expecting: 'smtp' ok Trying: str(arobj.results[1].properties[0].name) Expecting: 'mailfrom' ok Trying: str(arobj.results[1].properties[0].value) Expecting: 'example.net' ok Trying: import authres Expecting nothing ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: example.com; sender-id=pass header.from=example.com') Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'example.com' ok Trying: str(arobj.results[0]) Expecting: 'sender-id=pass header.from=example.com' ok Trying: str(arobj.results[0].method) Expecting: 'sender-id' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: str(arobj.results[0].header_from) Expecting: 'example.com' ok Trying: try: str(arobj.results[0].smtp_mailfrom) except AttributeError as x: print(x) Expecting: 'SenderIDAuthenticationResult' object has no attribute 'smtp_mailfrom' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'from' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'example.com' ok Trying: import authres Expecting nothing ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: example.com; sender-id=fail header.from=example.com; dkim=pass (good signature) header.i=sender@example.com') Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'example.com' ok Trying: str(arobj.results[0]) Expecting: 'sender-id=fail header.from=example.com' ok Trying: str(arobj.results[0].method) Expecting: 'sender-id' ok Trying: str(arobj.results[0].result) Expecting: 'fail' ok Trying: str(arobj.results[0].header_from) Expecting: 'example.com' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'from' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'example.com' ok Trying: str(arobj.results[1]) Expecting: 'dkim=pass header.i=sender@example.com' ok Trying: str(arobj.results[1].method) Expecting: 'dkim' ok Trying: str(arobj.results[1].result) Expecting: 'pass' ok Trying: str(arobj.results[1].header_i) Expecting: 'sender@example.com' ok Trying: str(arobj.results[1].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[1].properties[0].name) Expecting: 'i' ok Trying: str(arobj.results[1].properties[0].value) Expecting: 'sender@example.com' ok Trying: import authres Expecting nothing ok Trying: dar_pass = authres.DKIMAuthenticationResult(result = 'pass', result_comment = 'good signature', header_d = 'mail-router.example.net') Expecting nothing ok Trying: dar_fail = authres.DKIMAuthenticationResult(result = 'fail', header_d = 'newyork.example.com', result_comment = 'bad signature') Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id = 'example.com', results = [dar_pass, dar_fail])) Expecting: 'Authentication-Results: example.com; dkim=pass (good signature) header.d=mail-router.example.net; dkim=fail (bad signature) header.d=newyork.example.com' ok Trying: dar_pass.match_signature('mail-router.example.net') Expecting: True ok Trying: dar_fail.match_signature('mail-router.example.net') Expecting: False ok Trying: import authres Expecting nothing ok Trying: dsr_pass = authres.DKIMAuthenticationResult(result = 'pass', result_comment = 'good signature', header_d = 'mail-router.example.net', header_a = 'rsa-sha256', header_s = 'default') Expecting nothing ok Trying: dsr_fail = authres.DKIMAuthenticationResult(result = 'fail', header_d = 'newyork.example.com', result_comment = 'bad signature') Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id = 'example.com', results = [dsr_pass, dsr_fail])) Expecting: 'Authentication-Results: example.com; dkim=pass (good signature) header.d=mail-router.example.net header.a=rsa-sha256 header.s=default; dkim=fail (bad signature) header.d=newyork.example.com' ok Trying: dsr_pass.match_signature_algorithm('mail-router.example.net', 'rsa-sha256') Expecting: True ok Trying: dsr_fail.match_signature_algorithm('mail-router.example.net', 'rsa-sha256') Expecting: False ok Trying: import authres Expecting nothing ok Trying: 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') Expecting nothing ok Trying: 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') Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id = 'relay02.example.org', results = [dss_pass, dss_fail])) Expecting: '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' ok Trying: import authres Expecting nothing ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: example.com; dkim=pass (good signature) header.i=@mail-router.example.net; dkim=fail (bad signature) header.i=@newyork.example.com') Expecting nothing ok Trying: str(arobj.results[0]) Expecting: 'dkim=pass header.i=@mail-router.example.net' ok Trying: str(arobj.results[0].method) Expecting: 'dkim' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: str(arobj.results[0].header_i) Expecting: '@mail-router.example.net' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'i' ok Trying: str(arobj.results[0].properties[0].value) Expecting: '@mail-router.example.net' ok Trying: str(arobj.results[1]) Expecting: 'dkim=fail header.i=@newyork.example.com' ok Trying: str(arobj.results[1].method) Expecting: 'dkim' ok Trying: str(arobj.results[1].result) Expecting: 'fail' ok Trying: str(arobj.results[1].header_i) Expecting: '@newyork.example.com' ok Trying: str(arobj.results[1].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[1].properties[0].name) Expecting: 'i' ok Trying: str(arobj.results[1].properties[0].value) Expecting: '@newyork.example.com' ok Trying: import authres Expecting nothing ok Trying: dar_pass = authres.DKIMAuthenticationResult(result = 'pass', reason = 'good signature', header_d = 'mail-router.example.net') Expecting nothing ok Trying: dar_fail = authres.DKIMAuthenticationResult(result = 'fail', header_d = 'newyork.example.com', reason = 'bad signature') Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id = 'example.com', results = [dar_pass, dar_fail])) Expecting: 'Authentication-Results: example.com; dkim=pass reason="good signature" header.d=mail-router.example.net; dkim=fail reason="bad signature" header.d=newyork.example.com' ok Trying: dar_pass.match_signature('mail-router.example.net') Expecting: True ok Trying: dar_fail.match_signature('mail-router.example.net') Expecting: False ok Trying: import authres Expecting nothing ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: example.com; dkim=pass reason="good signature" header.i=@mail-router.example.net; dkim=fail reason="bad signature" header.i=@newyork.example.com') Expecting nothing ok Trying: str(arobj.results[0]) Expecting: 'dkim=pass reason="good signature" header.i=@mail-router.example.net' ok Trying: str(arobj.results[0].method) Expecting: 'dkim' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: str(arobj.results[0].reason) Expecting: 'good signature' ok Trying: str(arobj.results[0].header_i) Expecting: '@mail-router.example.net' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'i' ok Trying: str(arobj.results[0].properties[0].value) Expecting: '@mail-router.example.net' ok Trying: str(arobj.results[1]) Expecting: 'dkim=fail reason="bad signature" header.i=@newyork.example.com' ok Trying: str(arobj.results[1].method) Expecting: 'dkim' ok Trying: str(arobj.results[1].result) Expecting: 'fail' ok Trying: str(arobj.results[1].reason) Expecting: 'bad signature' ok Trying: str(arobj.results[1].header_i) Expecting: '@newyork.example.com' ok Trying: str(arobj.results[1].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[1].properties[0].name) Expecting: 'i' ok Trying: str(arobj.results[1].properties[0].value) Expecting: '@newyork.example.com' ok Trying: import authres Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id = 'example.net', results = [authres.DKIMAuthenticationResult(result = 'pass', result_comment = 'good signature', header_i = '@newyork.example.com')])) Expecting: 'Authentication-Results: example.net; dkim=pass (good signature) header.i=@newyork.example.com' ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: example.net; dkim=pass (good signature) header.i=@newyork.example.com') Expecting nothing ok Trying: str(arobj.results[0]) Expecting: 'dkim=pass header.i=@newyork.example.com' ok Trying: str(arobj.results[0].method) Expecting: 'dkim' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: str(arobj.results[0].header_i) Expecting: '@newyork.example.com' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'i' ok Trying: str(arobj.results[0].properties[0].value) Expecting: '@newyork.example.com' ok Trying: import authres Expecting nothing ok Trying: import authres.dkim_b Expecting nothing ok Trying: authres_context = authres.FeatureContext(authres.dkim_b) Expecting nothing ok Trying: dar_b = authres.dkim_b.DKIMAuthenticationResult(result = 'pass', result_comment = 'good signature', header_d = 'newyork.example.com', header_b = 'oINEO8hg') Expecting nothing ok Trying: str(authres_context.header(authserv_id = 'mail-router.example.net', results = [dar_b, authres.dkim_b.DKIMAuthenticationResult(result = 'fail', header_d = 'newyork.example.com', result_comment = 'bad signature', header_b = 'EToRSuvU')])) Expecting: 'Authentication-Results: mail-router.example.net; dkim=pass (good signature) header.d=newyork.example.com header.b=oINEO8hg; dkim=fail (bad signature) header.d=newyork.example.com header.b=EToRSuvU' ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b,'newyork.example.com','oINEO8h') Expecting: False ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b,'newyork.example.com','oINEO8hg') Expecting: True ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b,'newyork.example.com','oINEO8hq') Expecting: False ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b,'newyork.example.com','oINEO8hq1') Expecting: False ok Trying: dar_b2 = authres.dkim_b.DKIMAuthenticationResult(result = 'pass', result_comment = 'good signature', header_d = 'newyork.example.com', header_b = 'oINEO8') Expecting nothing ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b2,'newyork.example.com','oINEO8') Expecting: True ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b2,'newyork.example.com','oINEO8hq') Expecting: False ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b2,'newyork.example.com', None) Expecting: False ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b2,'newyork.example.com', None) Expecting: False ok Trying: dar_b_none = authres.dkim_b.DKIMAuthenticationResult(result = 'pass', result_comment = 'good signature', header_d = 'newyork.example.com') Expecting nothing ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b_none,'newyork.example.com', None) Expecting: True ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b_none,'newyork.example.com', None, strict=True) Expecting: False ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b_none,'newyork.example.com','oINEO8hq') Expecting: True ok Trying: authres.dkim_b.DKIMAuthenticationResult.match_signature(dar_b_none,'newjersey.example.com', None) Expecting: False ok Trying: arobj = authres_context.parse('Authentication-Results: mail-router.example.net; dkim=pass (good signature) header.d=newyork.example.com header.b=oINEO8hg; dkim=fail (bad signature) header.d=newyork.example.com header.b=EToRSuvU') Expecting nothing ok Trying: str(arobj.results[0]) Expecting: 'dkim=pass header.d=newyork.example.com header.b=oINEO8hg' ok Trying: str(arobj.results[0].method) Expecting: 'dkim' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: str(arobj.results[0].header_d) Expecting: 'newyork.example.com' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'd' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'newyork.example.com' ok Trying: str(arobj.results[0].header_b) Expecting: 'oINEO8hg' ok Trying: str(arobj.results[0].properties[1].type) Expecting: 'header' ok Trying: str(arobj.results[0].properties[1].name) Expecting: 'b' ok Trying: str(arobj.results[0].properties[1].value) Expecting: 'oINEO8hg' ok Trying: str(arobj.results[1].method) Expecting: 'dkim' ok Trying: str(arobj.results[1].result) Expecting: 'fail' ok Trying: str(arobj.results[1].header_d) Expecting: 'newyork.example.com' ok Trying: str(arobj.results[1].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[1].properties[0].name) Expecting: 'd' ok Trying: str(arobj.results[1].properties[0].value) Expecting: 'newyork.example.com' ok Trying: str(arobj.results[1].header_b) Expecting: 'EToRSuvU' ok Trying: str(arobj.results[1].properties[1].type) Expecting: 'header' ok Trying: str(arobj.results[1].properties[1].name) Expecting: 'b' ok Trying: str(arobj.results[1].properties[1].value) Expecting: 'EToRSuvU' ok Trying: import authres Expecting nothing ok Trying: import authres.dkim_adsp Expecting nothing ok Trying: authres_context = authres.FeatureContext(authres.dkim_adsp) Expecting nothing ok Trying: str(authres_context.header(authserv_id = 'example.com', results = [authres.DKIMAuthenticationResult(result = 'fail', result_comment = 'bad signature', header_d = 'bank.example.net'), authres.dkim_adsp.DKIMADSPAuthenticationResult(result = 'discard', header_from = 'phish@bank.example.com', result_comment = 'From domain and d= domain match')])) Expecting: 'Authentication-Results: example.com; dkim=fail (bad signature) header.d=bank.example.net; dkim-adsp=discard (From domain and d= domain match) header.from=phish@bank.example.com' ok Trying: arobj = authres_context.parse('Authentication-Results: example.com; dkim=fail (bad signature) header.d=bank.example.net; dkim-adsp=discard (From domain and d= domain match) header.from=phish@bank.example.com') Expecting nothing ok Trying: str(arobj.results[1]) Expecting: 'dkim-adsp=discard header.from=phish@bank.example.com' ok Trying: str(arobj.results[1].method) Expecting: 'dkim-adsp' ok Trying: str(arobj.results[1].result) Expecting: 'discard' ok Trying: str(arobj.results[1].header_from) Expecting: 'phish@bank.example.com' ok Trying: str(arobj.results[1].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[1].properties[0].name) Expecting: 'from' ok Trying: str(arobj.results[1].properties[0].value) Expecting: 'phish@bank.example.com' ok Trying: import authres Expecting nothing ok Trying: import authres.dkim_b, authres.vbr Expecting nothing ok Trying: authres_context = authres.FeatureContext(authres.dkim_b, authres.vbr) Expecting nothing ok Trying: str(authres_context.header(authserv_id = 'mail-router.example.net', results = [authres.dkim_b.DKIMAuthenticationResult(result = 'pass', result_comment = 'good signature', header_d = 'newyork.example.com', header_b = 'oINEO8hg'), authres.vbr.VBRAuthenticationResult(result = 'pass', header_md = 'newyork.example.com', result_comment = 'voucher.example.net', header_mv = 'voucher.example.org')])) Expecting: 'Authentication-Results: mail-router.example.net; dkim=pass (good signature) header.d=newyork.example.com header.b=oINEO8hg; vbr=pass (voucher.example.net) header.md=newyork.example.com header.mv=voucher.example.org' ok Trying: arobj = authres_context.parse('Authentication-Results: mail-router.example.net; dkim=pass (good signature) header.d=newyork.example.com header.b=oINEO8hg; vbr=pass (voucher.example.net) header.md=newyork.example.com header.mv=voucher.example.org') Expecting nothing ok Trying: str(arobj.results[1]) Expecting: 'vbr=pass header.md=newyork.example.com header.mv=voucher.example.org' ok Trying: str(arobj.results[1].method) Expecting: 'vbr' ok Trying: str(arobj.results[1].result) Expecting: 'pass' ok Trying: str(arobj.results[1].header_md) Expecting: 'newyork.example.com' ok Trying: str(arobj.results[1].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[1].properties[0].name) Expecting: 'md' ok Trying: str(arobj.results[1].properties[0].value) Expecting: 'newyork.example.com' ok Trying: str(arobj.results[1].header_mv) Expecting: 'voucher.example.org' ok Trying: str(arobj.results[1].properties[1].type) Expecting: 'header' ok Trying: str(arobj.results[1].properties[1].name) Expecting: 'mv' ok Trying: str(arobj.results[1].properties[1].value) Expecting: 'voucher.example.org' ok Trying: import authres Expecting nothing ok Trying: import authres.dmarc Expecting nothing ok Trying: new_context = authres.FeatureContext(authres.dmarc) Expecting nothing ok Trying: str(new_context.header(authserv_id = 'mail-router.example.net', results = [authres.dmarc.DMARCAuthenticationResult(result = 'pass', header_from = 'example.com')])) Expecting: 'Authentication-Results: mail-router.example.net; dmarc=pass header.from=example.com' ok Trying: newarobj = new_context.parse('Authentication-Results: mail-router.example.net; dmarc=pass header.from=example.com') Expecting nothing ok Trying: str(newarobj.results[0]) Expecting: 'dmarc=pass header.from=example.com' ok Trying: str(newarobj.results[0].method) Expecting: 'dmarc' ok Trying: str(newarobj.results[0].result) Expecting: 'pass' ok Trying: str(newarobj.results[0].header_from) Expecting: 'example.com' ok Trying: str(newarobj.results[0].properties[0].type) Expecting: 'header' ok Trying: str(newarobj.results[0].properties[0].name) Expecting: 'from' ok Trying: str(newarobj.results[0].properties[0].value) Expecting: 'example.com' ok Trying: import authres Expecting nothing ok Trying: import authres.dmarc Expecting nothing ok Trying: new_context = authres.FeatureContext(authres.dmarc) Expecting nothing ok Trying: str(new_context.header(authserv_id='mail-router.example.net', results = [authres.dmarc.DMARCAuthenticationResult(result='pass', policy='none', header_from='example.com')])) Expecting: 'Authentication-Results: mail-router.example.net; dmarc=pass header.from=example.com policy.dmarc=none' ok Trying: import authres Expecting nothing ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: example.com; spf=pass smtp.mailfrom=authenticated@example.net') Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'example.com' ok Trying: str(arobj.results[0]) Expecting: 'spf=pass smtp.mailfrom=authenticated@example.net' ok Trying: str(arobj.results[0].method) Expecting: 'spf' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: str(arobj.results[0].smtp_mailfrom) Expecting: 'authenticated@example.net' ok Trying: str(arobj.results[0].smtp_helo) Expecting: 'None' ok Trying: str(arobj.results[0].reason) Expecting: 'None' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'smtp' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'mailfrom' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'authenticated@example.net' ok Trying: import authres Expecting nothing ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: example.com; spf=pass smtp.mailfrom=authenticated@example.net; spf=none smtp.helo=mailserver.example.net') Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'example.com' ok Trying: str(arobj.results[0]) Expecting: 'spf=pass smtp.mailfrom=authenticated@example.net' ok Trying: str(arobj.results[0].method) Expecting: 'spf' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: str(arobj.results[0].smtp_mailfrom) Expecting: 'authenticated@example.net' ok Trying: str(arobj.results[0].smtp_helo) Expecting: 'None' ok Trying: str(arobj.results[0].reason) Expecting: 'None' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'smtp' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'mailfrom' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'authenticated@example.net' ok Trying: str(arobj.results[1]) Expecting: 'spf=none smtp.helo=mailserver.example.net' ok Trying: str(arobj.results[1].method) Expecting: 'spf' ok Trying: str(arobj.results[1].result) Expecting: 'none' ok Trying: str(arobj.results[1].smtp_mailfrom) Expecting: 'None' ok Trying: str(arobj.results[1].smtp_helo) Expecting: 'mailserver.example.net' ok Trying: str(arobj.results[1].reason) Expecting: 'None' ok Trying: str(arobj.results[1].properties[0].type) Expecting: 'smtp' ok Trying: str(arobj.results[1].properties[0].name) Expecting: 'helo' ok Trying: str(arobj.results[1].properties[0].value) Expecting: 'mailserver.example.net' ok Trying: import authres Expecting nothing ok Trying: mfrom_pass = authres.SPFAuthenticationResult(result = 'pass', smtp_mailfrom = 'authenticated@example.net') Expecting nothing ok Trying: helo_none = authres.SPFAuthenticationResult(result = 'none', smtp_helo = 'mailserver.example.net', reason = 'No SPF record for HELO') Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id = 'example.com', results = [mfrom_pass, helo_none])) Expecting: 'Authentication-Results: example.com; spf=pass smtp.mailfrom=authenticated@example.net; spf=none reason="No SPF record for HELO" smtp.helo=mailserver.example.net' ok Trying: import authres Expecting nothing ok Trying: import authres.arc Expecting nothing ok Trying: arc_pass = authres.arc.ARCAuthenticationResult(result = 'pass', header_ams_d = 'example.net', header_ams_s='valimail2016', header_as_d="example.com", header_as_s="valimail2017", header_oldest_pass='1', smtp_remote_ip='203.0.113.1') Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id = 'example.com', results = [arc_pass])) Expecting: 'Authentication-Results: example.com; arc=pass header.ams-d=example.net header.ams-s=valimail2016 header.as-d=example.com header.as-s=valimail2017 header.oldest-pass=1 smtp.remote-ip=203.0.113.1' ok Trying: arobj = authres_context.parse('Authentication-Results: mail.bmsi.com; iprev=pass policy.iprev="2001:748:100:40::2:2" (mout0.freenet.de); spf=none smtp.mailfrom=markuslaudi@freenet.de') Expecting nothing ok Trying: str(arobj.results[0]) Expecting: 'iprev=pass policy.iprev="2001:748:100:40::2:2"' ok Trying: arobj.results[0].policy_iprev Expecting: '2001:748:100:40::2:2' ok Trying: try: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: mail.bmsi.com; iprev=pass policy.iprev=2001:748:100:40::2:2 (mout0.freenet.de); spf=none smtp.mailfrom=markuslaudi@freenet.de') except authres.SyntaxError as x: print(x) Expecting: Syntax error: Expected end of text at: :748:100:40::2:2 (mout0.freenet.de); spf... ok Trying: iprev_pass = authres.IPRevAuthenticationResult(result = 'pass', policy_iprev = '2001:db8:ea1::dead:beef', policy_iprev_comment='yummy.example.net') Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id='example.com',results = [iprev_pass])) Expecting: 'Authentication-Results: example.com; iprev=pass policy.iprev="2001:db8:ea1::dead:beef" (yummy.example.net)' ok Trying: import authres.smime Expecting nothing ok Trying: mimearobj = authres_context.parse('Authentication-Results: example.net; smime=fail (certificate is revoked by CRL) body.smime-identifier=aliceDss@example.com body.smime-part=2') Expecting nothing ok Trying: str(mimearobj.results[0]) Expecting: 'smime=fail body.smime-identifier=aliceDss@example.com body.smime-part=2' ok Trying: str(mimearobj.authserv_id) Expecting: 'example.net' ok Trying: str(mimearobj.results[0].method) Expecting: 'smime' ok Trying: str(mimearobj.results[0].result) Expecting: 'fail' ok Trying: str(mimearobj.results[0].reason) Expecting: 'None' ok Trying: str(mimearobj.results[0].properties[0].type) Expecting: 'body' ok Trying: str(mimearobj.results[0].properties[0].name) Expecting: 'smime-identifier' ok Trying: str(mimearobj.results[0].properties[0].value) Expecting: 'aliceDss@example.com' ok Trying: str(mimearobj.results[0].properties[1].type) Expecting: 'body' ok Trying: str(mimearobj.results[0].properties[1].name) Expecting: 'smime-part' ok Trying: str(mimearobj.results[0].properties[1].value) Expecting: '2' ok Trying: import authres.smime Expecting nothing ok Trying: smime_fail = authres.smime.SMIMEAuthenticationResult(result = 'fail', result_comment = 'certificate is revoked by CRL', body_smime_identifier = 'aliceDss@example.com', body_smime_part = '2') Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id='example.net',results = [smime_fail])) Expecting: 'Authentication-Results: example.net; smime=fail (certificate is revoked by CRL) body.smime-identifier=aliceDss@example.com body.smime-part=2' ok Trying: import authres.rrvs Expecting nothing ok Trying: rrvsarobj = authres_context.parse('Authentication-Results: mx.example.com; rrvs=pass smtp.rcptto=user@example.com') Expecting nothing ok Trying: str(rrvsarobj.authserv_id) Expecting: 'mx.example.com' ok Trying: str(rrvsarobj.results[0].method) Expecting: 'rrvs' ok Trying: str(rrvsarobj.results[0].result) Expecting: 'pass' ok Trying: str(rrvsarobj.results[0].reason) Expecting: 'None' ok Trying: str(rrvsarobj.results[0].properties[0].type) Expecting: 'smtp' ok Trying: str(rrvsarobj.results[0].properties[0].name) Expecting: 'rcptto' ok Trying: str(rrvsarobj.results[0].properties[0].value) Expecting: 'user@example.com' ok Trying: import authres.rrvs Expecting nothing ok Trying: rrvs_fail = authres.rrvs.RRVSAuthenticationResult(result = 'fail', result_comment = 'Mail box expired.', smtp_rrvs = 'user@example.com', smtp_rrvs_comment = "These are not the droids you're looking for.") Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id='example.net',results = [rrvs_fail])) Expecting: "Authentication-Results: example.net; rrvs=fail (Mail box expired.) smtp.rrvs=user@example.com (These are not the droids you're looking for.)" ok Trying: import authres Expecting nothing ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: example.com; auth=pass smtp.mailfrom=sender@example.net') Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'example.com' ok Trying: str(arobj.results[0]) Expecting: 'auth=pass smtp.mailfrom=sender@example.net' ok Trying: str(arobj.results[0].method) Expecting: 'auth' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: str(arobj.results[0].smtp_mailfrom) Expecting: 'sender@example.net' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'smtp' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'mailfrom' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'sender@example.net' ok Trying: import authres Expecting nothing ok Trying: mfrom_auth = authres.SMTPAUTHAuthenticationResult(result = 'pass', smtp_mailfrom = 'mailauth@example.net') Expecting nothing ok Trying: str(authres.AuthenticationResultsHeader(authserv_id = 'example.com', results = [mfrom_auth])) Expecting: 'Authentication-Results: example.com; auth=pass smtp.mailfrom=mailauth@example.net' ok Trying: import authres Expecting nothing ok Trying: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: mail.example.org; tls=pass smtp.TLSversion=TLSv1.2 smtp.TLScyper=ECDHE-RSA-CHACHA20-POLY1305 smtp.TLSbits=256') Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'mail.example.org' ok Trying: str(arobj.results[0]) Expecting: 'tls=pass smtp.tlsversion=TLSv1.2 smtp.tlscyper=ECDHE-RSA-CHACHA20-POLY1305 smtp.tlsbits=256' ok Trying: str(arobj.results[0].method) Expecting: 'tls' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: try: str(arobj.results[0].smtp_mailfrom) except AttributeError as e: print(e) Expecting: 'AuthenticationResult' object has no attribute 'smtp_mailfrom' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'smtp' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'tlsversion' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'TLSv1.2' ok Trying: import authres Expecting nothing ok Trying: 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) Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'mail.example.org' ok Trying: str(arobj.results[0]) Expecting: 'x-tls=pass' ok Trying: import authres Expecting nothing ok Trying: try: arobj = authres.AuthenticationResultsHeader.parse('Authentication-Results: mail.example.org; x-tls=pass smtp.tlsversion=TLSv1.2') except authres.SyntaxError as e: print(e) Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'mail.example.org' ok Trying: str(arobj.results[0]) Expecting: 'x-tls=pass smtp.tlsversion=TLSv1.2' ok Trying: str(arobj.results[0].method) Expecting: 'x-tls' ok Trying: str(arobj.results[0].result) Expecting: 'pass' ok Trying: try: str(arobj.results[0].smtp_mailfrom) except AttributeError as e: print(e) Expecting: 'AuthenticationResult' object has no attribute 'smtp_mailfrom' ok Trying: try: str(arobj.results[0].smtp_tlsversion) except AttributeError as e: print(e) Expecting: 'AuthenticationResult' object has no attribute 'smtp_tlsversion' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'smtp' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'tlsversion' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'TLSv1.2' ok Trying: import authres Expecting nothing ok Trying: 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') Expecting nothing ok Trying: for result in arobj.results: result.method result.result Expecting: 'arc' 'none' 'dkim' 'pass' 'dmarc' 'none' 'spf' 'none' 'x-tls' 'pass' ok Trying: import authres Expecting nothing ok Trying: 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) Expecting: Syntax error: Expected "=" at: ; dmarc=none action=none header.from=hot... ok 1 items passed all tests: 330 tests in tests 330 tests in 1 items. 330 passed and 0 failed. Test passed. Trying: str(AuthenticationResultsHeader('test.example.org')) Expecting: 'Authentication-Results: test.example.org; none' ok Trying: str(AuthenticationResultsHeader(authserv_id = 'example.com', results = [SPFAuthenticationResult(result = 'pass', smtp_mailfrom = 'example.net')])) Expecting: 'Authentication-Results: example.com; spf=pass smtp.mailfrom=example.net' ok Trying: str(AuthenticationResultsHeader(authserv_id = 'example.com', results = [SMTPAUTHAuthenticationResult(result = 'pass', result_comment = 'cram-md5', smtp_auth = 'sender@example.net'), SPFAuthenticationResult(result = 'pass', smtp_mailfrom = 'example.net')])) Expecting: 'Authentication-Results: example.com; auth=pass (cram-md5) smtp.auth=sender@example.net; spf=pass smtp.mailfrom=example.net' ok Trying: str(AuthenticationResultsHeader(authserv_id = 'example.com', results = [SenderIDAuthenticationResult(result = 'pass', header_from = 'example.com')])) Expecting: 'Authentication-Results: example.com; sender-id=pass header.from=example.com' ok Trying: str(AuthenticationResultsHeader(authserv_id = 'example.com', results = [SenderIDAuthenticationResult(result = 'fail', header_from = 'example.com'), DKIMAuthenticationResult(result = 'pass', header_i = 'sender@example.com', result_comment = 'good signature')])) Expecting: 'Authentication-Results: example.com; sender-id=fail header.from=example.com; dkim=pass (good signature) header.i=sender@example.com' ok Trying: arobj = AuthenticationResultsHeader.parse('Authentication-Results: example.com; sender-id=fail header.from=example.com; dkim=pass (good signature) header.i=sender@example.com') Expecting nothing ok Trying: str(arobj.authserv_id) Expecting: 'example.com' ok Trying: str(arobj.results[0]) Expecting: 'sender-id=fail header.from=example.com' ok Trying: str(arobj.results[0].method) Expecting: 'sender-id' ok Trying: str(arobj.results[0].result) Expecting: 'fail' ok Trying: str(arobj.results[0].header_from) Expecting: 'example.com' ok Trying: str(arobj.results[0].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[0].properties[0].name) Expecting: 'from' ok Trying: str(arobj.results[0].properties[0].value) Expecting: 'example.com' ok Trying: str(arobj.results[1]) Expecting: 'dkim=pass header.i=sender@example.com' ok Trying: str(arobj.results[1].method) Expecting: 'dkim' ok Trying: str(arobj.results[1].result) Expecting: 'pass' ok Trying: str(arobj.results[1].header_i) Expecting: 'sender@example.com' ok Trying: str(arobj.results[1].properties[0].type) Expecting: 'header' ok Trying: str(arobj.results[1].properties[0].name) Expecting: 'i' ok Trying: str(arobj.results[1].properties[0].value) Expecting: 'sender@example.com' ok 16 items had no tests: authres.AuthenticationResultsHeader authres.AuthenticationResultsHeader.__init__ authres.AuthenticationResultsHeader.parse authres.AuthenticationResultsHeader.parse_value authres.FeatureContext authres.FeatureContext.__init__ authres.FeatureContext.header authres.FeatureContext.parse authres.FeatureContext.parse_value authres.FeatureContext.result authres.all_features authres.core_features authres.header authres.parse authres.parse_value authres.result 1 items passed all tests: 21 tests in authres 21 tests in 17 items. 21 passed and 0 failed. Test passed. phase `check' succeeded after 0.3 seconds starting phase `sanity-check' validating 'authres' /gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib/python3.9/site-packages ...checking requirements: OK ...trying to load module authres: OK phase `sanity-check' succeeded after 0.3 seconds starting phase `patch-shebangs' phase `patch-shebangs' succeeded after 0.0 seconds starting phase `rename-pth-file' phase `rename-pth-file' succeeded after 0.0 seconds starting phase `strip' stripping binaries in "/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib" with "strip" and flags ("--strip-unneeded" "--enable-deterministic-archives") phase `strip' succeeded after 0.0 seconds starting phase `validate-runpath' validating RUNPATH of 0 binaries in "/gnu/store/2qcdrab4ird5z4d9wgcl28k5gz884b2m-python-authres-1.2.0/lib"... phase `validate-runpath' succeeded after 0.0 seconds starting phase `validate-documentation-location' phase `validate-documentation-location' succeeded after 0.0 seconds starting phase `delete-info-dir-file' phase `delete-info-dir-file' succeeded after 0.0 seconds starting phase `patch-dot-desktop-files' phase `patch-dot-desktop-files' succeeded after 0.0 seconds starting phase `make-dynamic-linker-cache' phase `make-dynamic-linker-cache' succeeded after 0.0 seconds starting phase `install-license-files' installing 1 license files from '.' phase `install-license-files' succeeded after 0.0 seconds starting phase `reset-gzip-timestamps' phase `reset-gzip-timestamps' succeeded after 0.0 seconds starting phase `compress-documentation' phase `compress-documentation' succeeded after 0.0 seconds