Diff of the two buildlogs: -- --- b1/build.log 2024-12-05 23:36:47.263516372 +0000 +++ b2/build.log 2024-12-05 23:43:23.225528539 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Thu Dec 5 11:29:58 -12 2024 -I: pbuilder-time-stamp: 1733441398 +I: Current time: Thu Jan 8 19:59:49 +14 2026 +I: pbuilder-time-stamp: 1767851989 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -46,52 +46,84 @@ dpkg-source: info: applying 0013-Fix-FTBFS-with-Ruby-3.2.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/2959311/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/1140452/tmp/hooks/D01_modify_environment starting +debug: Running on codethink03-arm64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Jan 8 05:59 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/1140452/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/1140452/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='arm64' - DEBIAN_FRONTEND='noninteractive' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=arm64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='c2ae594c25934841bfd7cf2d05edd2d8' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='2959311' - PS1='# ' - PS2='> ' + INVOCATION_ID=a4ed7010333c4411a048848084beb519 + LANG=C + LANGUAGE=nl_BE:nl + LC_ALL=C + MACHTYPE=aarch64-unknown-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=1140452 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.DGJJabeI/pbuilderrc_1Vgb --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.DGJJabeI/b1 --logfile b1/build.log schleuder_4.0.3-14.dsc' - SUDO_GID='109' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://192.168.101.4:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.DGJJabeI/pbuilderrc_oTxC --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.DGJJabeI/b2 --logfile b2/build.log schleuder_4.0.3-14.dsc' + SUDO_GID=109 + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://192.168.101.4:3128 I: uname -a - Linux codethink04-arm64 6.1.0-28-cloud-arm64 #1 SMP Debian 6.1.119-1 (2024-11-22) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-28-cloud-arm64 #1 SMP Debian 6.1.119-1 (2024-11-22) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/2959311/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/1140452/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -333,7 +365,7 @@ Get: 166 http://deb.debian.org/debian unstable/main arm64 ruby-sqlite3 arm64 1.6.9-2 [48.9 kB] Get: 167 http://deb.debian.org/debian unstable/main arm64 ruby-thor all 1.3.1-1 [49.2 kB] Get: 168 http://deb.debian.org/debian unstable/main arm64 thin arm64 1.8.2-1 [60.2 kB] -Fetched 46.5 MB in 1s (76.6 MB/s) +Fetched 46.5 MB in 0s (115 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.12-minimal:arm64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20086 files and directories currently installed.) @@ -892,8 +924,8 @@ Setting up tzdata (2024b-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Thu Dec 5 23:30:23 UTC 2024. -Universal Time is now: Thu Dec 5 23:30:23 UTC 2024. +Local time is now: Thu Jan 8 06:00:13 UTC 2026. +Universal Time is now: Thu Jan 8 06:00:13 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -1043,7 +1075,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/schleuder-4.0.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../schleuder_4.0.3-14_source.changes +I: user script /srv/workspace/pbuilder/1140452/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/1140452/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/schleuder-4.0.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../schleuder_4.0.3-14_source.changes dpkg-buildpackage: info: source package schleuder dpkg-buildpackage: info: source version 4.0.3-14 dpkg-buildpackage: info: source distribution unstable @@ -1079,7 +1115,7 @@ dh_ruby --build dh_auto_test -O--buildsystem=ruby dh_ruby --test - rm -fr -- /tmp/dh-xdg-rundir-Ewb2iyHP + rm -fr -- /tmp/dh-xdg-rundir-a0eP_HAV create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=ruby dh_prep -O--buildsystem=ruby @@ -1201,697 +1237,697 @@ RUBYLIB=/build/reproducible-path/schleuder-4.0.3/debian/schleuder/usr/lib/ruby/vendor_ruby:. GEM_PATH=/build/reproducible-path/schleuder-4.0.3/debian/schleuder/usr/share/rubygems-integration/all:/build/reproducible-path/schleuder-4.0.3/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/aarch64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/aarch64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.1 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --format documentation -Randomized with seed 5434 +Randomized with seed 11180 -Mail::Message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_07.txt.eml as normal message - recognizes a sudo message with 'Auto-Submitted'-header NOT as automated message - does not misclassify bounce spec/fixtures/mails/bounces/tt_1234285532.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_14.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_15.txt.eml as normal message - does not misclassify normal message spec/fixtures/mails/not_bounces/tt_1234241664.txt.eml as bounce - does not misclassify normal message spec/fixtures/mails/not_bounces/Bug_948982-_marked_as_pending_in_schleuder.eml as bounce - recognizes bounce message subject using the bounce_email gem - does not misclassify bounce spec/fixtures/mails/bounces/unknown_code_bounce_01.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_16.txt.eml as normal message - doesn't change the order of mime-parts - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_18.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_17.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_1234177688.txt.eml as normal message - recognizes a cron message with 'Auto-Submitted'-header NOT as automated message - verifies an encapsulated (signed-then-encrypted) message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_03.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_1234241665.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_24.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/undeliverable_gmail.txt.eml as normal message - does not misclassify normal message spec/fixtures/mails/not_bounces/tt_1234211024.txt.eml as bounce - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_19.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_08.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_22.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_09.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_12_soft.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/malformed_bounce_01.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_05.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_10.txt.eml as normal message - does not misclassify normal message spec/fixtures/mails/not_bounces/Bug_948981-_marked_as_pending_in_schleuder.eml as bounce - recognizes a Jenkins message with 'Auto-Submitted'-header NOT as automated message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_11.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_13.txt.eml as normal message - does not misclassify normal message spec/fixtures/mails/not_bounces/tt_1234210666.txt.eml as bounce - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_23.txt.eml as normal message - does not misclassify normal message spec/fixtures/mails/not_bounces/Bug_948980-_marked_as_pending_in_schleuder.eml as bounce - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_25.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_02.txt.eml as normal message - adds list#internal_footer as last mime-part without changing its value - does not misclassify bounce spec/fixtures/mails/bounces/tt_1234210655.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_1234285668.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_21.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_1234211929.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_1234211931.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_1234211357.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_1234175799.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_20.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_06.txt.eml as normal message - adds list#public_footer as last mime-part without changing its value - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_04.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_1234211932.txt.eml as normal message - does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_01.txt.eml as normal message - recognizes a message sent to listname-bounce@hostname as automated message - #add_subject_prefix! - adds a configured subject prefix without subject - adds a configured subject prefix - does not add a subject prefix if already present - makes a pseudo header - with key / value - that a line with less than 76 gets wrapped - with empty value - that is getting wrapped - that single multiline are getting indented - that multiline are getting wrapped - that a multiline with less than 76 get wrapped correctly on the first line and the following lines - without value - that a multiline with less than 76 get wrapped correctly on the first line - .keywords - splits lines into words and downcases them in keyword arguments - stops looking for keywords when already the first line is blank followed by email content - takes the whole rest of the body as keyword argument if blank lines are present - ignores empty lines before keywords - stops looking for keywords when the first line is already email content - drops empty lines in keyword arguments parsing - drops multiple empty lines between keywords and content - stops looking for keywords when a blank line that is not followed by another keyword is met - reads multiple lines as keyword arguments - -user sends emails with different charsets - works with japanese_shift_jis - works with simple_latin1 - works with ks_c_5601-1987 - works with japanese - works with japanese_attachment_long_name - works with japanese_attachment - works with simple_jis - works with simple_utf8 - works with signed_utf8 - works with japanese_iso_2022 - works with thunderbird-multi-alt-html - works with simple_jpiso2022 +Schleuder::Conf + reads ERB code in config files -user sends an encrypted message - from thunderbird being encrypted-inline - from thunderbird being encrypted+signed-mime - from thunderbird being encrypted+signed-inline - from thunderbird being encrypted-mime +Schleuder::Filters + .strip_html_from_alternative_if_keywords_present + does NOT strip HTML-part from multipart/alternative-message that does NOT contain keywords + does not choke on nor change a message without Content-Type-header + strips HTML-part from multipart/alternative-message that contains keywords + .strip_html_from_alternative + does NOT strip HTML-part from multipart/alternative-message that does NOT contain ascii-armored PGP-data + does not choke on nor change a message without Content-Type-header + strips HTML-part from multipart/alternative-message that contains ascii-armored PGP-data + .receive_from_subscribed_emailaddresses_only + does not reject a message with a non-subscribed address as From-header if list.receive_from_subscribed_emailaddresses_only is not set + does not reject a message with a subscribed address as From-header if list.receive_from_subscribed_emailaddresses_only is set + does not reject a message with a subscribed address as From-header with different letter case if list.receive_from_subscribed_emailaddresses_only is set + rejects a message with a non-subscribed address as From-header if list.receive_from_subscribed_emailaddresses_only is set + .fix_exchange_messages + fixes pgp/mime-messages that were mangled by Exchange + works with a text/plain message -lists via api - shows a list - creates a list - correctly finds a list by email-address that starts with a number +Schleuder::KeywordHandlers::Base + stores mail, list and arguments as instance variables + provides methods to register keywords Schleuder::Subscription - removes whitespaces and 0x from the fingerprint - is invalid when fingerprint contains invalid characters is invalid when list_id is blank - is invalid if admin is nil - formats email address when email begins with a space - is invalid when email is nil - is expected to respond to #list_id - downcases all letters of an email address + is expected to respond to #delivery_enabled is expected to respond to #admin - is invalid if delivery_enabled is blank - is invalid when email does not contain an @ + is invalid if admin is nil is valid when fingerprint is empty has a valid factory - is expected to respond to #delivery_enabled - is expected to respond to #email - is invalid if admin is blank + downcases all letters of an email address + is invalid if delivery_enabled is blank is expected to respond to #fingerprint - is invalid if delivery_enabled is nil is invalid when email is blank + is expected to respond to #list_id is valid when fingerprint is nil + removes whitespaces and 0x from the fingerprint is invalid if the given email is already subscribed for the list + is invalid when email does not contain an @ + is invalid when fingerprint contains invalid characters + is expected to respond to #email + formats email address when email begins with a space + is invalid when email is nil + is invalid if admin is blank + is invalid if delivery_enabled is nil #fingerprint transforms the fingerprint to upper case +user sends keyword + x-get-logfile with error-level sends empty logfile + x-resend-cc to 2 addresses with one missing keys + x-resend with invalid recipient + x-list-key with arbitrary email-sub-string + x-resend with iso-8859-1 body + x-unsubscribe + x-subscribe with invalid arguments + x-list-subscriptions without arguments + x-sign-this with attachments + x-resend does not include internal_footer + resend returns an error about wrong arguments if email content got into the arguments due to no blank line + x-list-keys with two arguments + does not parse keywords once the mail body started + x-fetch-key with invalid URL + x-set-fingerprint without email-address and with valid fingerprint + x-fetch-key with unknown email-address + x-fetch-key with fingerprint + x-resend-encrypted-only with matching key + x-list-subscriptions with matching argument + x-set-fingerprint with other email-address and valid fingerprint + x-resend + x-subscribe without attributes + x-resend with utf-8 body and umlauts + x-fetch-key with fingerprint of unchanged key + x-subscribe with one attribute and spaces-separated fingerprint + x-subscribe with attributes (first one 'false') and spaces-separated fingerprint + x-list-subscriptions without arguments but with admin-notification + x-unsubscribe with invalid argument + x-set-fingerprint with email-address but without valid fingerprint + x-fetch-key without arguments + x-sign-this with inline text + x-subscribe with attributes and spaces-separated fingerprint + x-set-fingerprint with email-address but without fingerprint + x-get-logfile with debug level sends non-empty logfile + x-subscribe with attributes (last one 'true') and spaces-separated fingerprint + x-set-fingerprint with not-subscribed email-address and valid fingerprint + x-fetch-key with URL + x-resend-cc-encrypted-only to 2 addresses with missing keys + x-resend-encrypted-only with expired key + x-get-version + x-resend-cc-encrypted-only with matching key + x-unset-fingerprint with own email-address as admin and force + x-subscribe with attributes + x-get-key with invalid argument + x-list-key with correctly prefixed email-sub-string + x-resend-cc-encrypted-only to 3 addresses with one missing keys + x-resend with admin-notification and admin has delivery disabled + x-set-fingerprint with other email-address and valid fingerprint as non-admin + x-resend with admin-notification + x-unset-fingerprint without argument + x-unsubscribe without argument + x-unset-fingerprint with not-subscribed email-address + x-unset-fingerprint with other email-address as admin + x-resend-cc-encrypted-only to 2 addresses with matching keys + x-fetch-key with unknown fingerprint + x-set-fingerprint without email-address and with invalid fingerprint + x-list-key with prefixed fingerprint + x-resend-cc-encrypted-only with expired key + x-resend-cc-encrypted-only to 2 addresses with one missing keys + x-unset-fingerprint with own email-address as admin but without force + x-list-keys without arguments + x-fetch-key with email address + x-unsubscribe doesn't unsubscribe last admin + x-resend-unencrypted with matching key + x-set-fingerprint with own email-address and valid fingerprint + x-resend-cc to 2 addresses with missing keys + x-list-subscriptions with non-matching argument + x-subscribe without arguments + x-get-version with delivery disabled + x-list-keys with one argument + x-resend-encrypted-only with two matching keys, one of which is expired + x-subscribe without attributes, but with spaces-separated fingerprint + x-get-key with valid argument + x-set-fingerprint without argument + x-fetch-key with invalid input + x-attach-listkey from Thunderbird with protected headers + x-set-fingerprint with own email-address and valid, spaces-separated fingerprint + x-get-key with empty argument + x-unset-fingerprint with other email-address as non-admin + x-attach-listkey + with broken utf8 in key + x-get-key with valid argument + x-add-key with inline key-material + x-list-keys works + +someone sends an email to a listname-dash-address + forwards the message to the admins if extension is -owner + sends the list's key as reply to -sendkey + forwards the message to the admins if extension is -bounce + forwards the message to the admins if extension is -bounce and it's a real bounce mail + subscription via api - unsubscribes members subscribes an admin user + doesn't subscribe new member without authentication subscribes new member to a list + unsubscribes members subscribes an admin user with a truthy value subscribes an user and unsets delivery flag - doesn't subscribe new member without authentication - -Errors - ::MessageTooBig shows sensible string in response to to_s() - ::KeyGenerationFailed shows sensible string in response to to_s() - ::KeyAdduidFailed shows sensible string in response to to_s() - ::LoadingListSettingsFailed shows sensible string in response to to_s() - ::ListNotFound shows sensible string in response to to_s() - ::ListdirProblem shows sensible string in response to to_s() - ::KeywordAdminOnly shows sensible string in response to to_s() - ::MessageEmpty shows sensible string in response to to_s() - ::DecryptionFailed shows sensible string in response to to_s() - ::MessageUnauthenticated shows sensible string in response to to_s() - ::MessageSenderNotSubscribed shows sensible string in response to to_s() - ::MessageNotFromAdmin shows sensible string in response to to_s() - ::MessageUnencrypted shows sensible string in response to to_s() - ::MessageUnsigned shows sensible string in response to to_s() - ::TooManyKeys shows sensible string in response to to_s() - -Schleuder::Filters::Runner - is expected to respond to #run - #run - runs the filters - stops on a StandardError and returns error - stops on a StandardError and returns error even with bounces_drop_all - stops on a StandardError and returns error even on headers match - loading filters - loads custom filters from filters_dir and sorts them in, ignores filter not following convention - loads custom filters from filters_dir and sorts them in with missing dir - loads filters from built-in filters_dir sorts them - loads custom filters from filters_dir even with non-2-digit priority - -Schleuder::KeywordHandlers::KeyManagement - registers keywords - .add_key - imports a key from inline ascii-armored material - imports a key from attached binary material (without specified encoding) - ignores arguments - imports a key from attached acsii-armored material - imports from attached quoted-printable key-material (as produced by Thunderbird 115) - imports from attached quoted-printable binary key-material (as produced by Mutt 2.0.5) - imports from an inline mix of ascii-armored key and non-key material - rejects garbage - imports a key from attached quoted-printable binary material - ignores body if an ascii-armored attachment is present - imports a key from attached explicitly base64-encoded binary material - updates a key - imports from attached quoted-printable ascii-armored key-material - .delete_key - returns a string as error message if input message has no content - deletes a key that distinctly matches the argument - sends error message if no argument is given - deletes multiple keys that each distinctly match one argument - deletes no key if the argument does not match GPGME::Ctx - #clean_and_classify_input with some string - #find_keys with correctly marked sub-string - #find_keys with bracketed email-address #keyimport with unusable data #clean_and_classify_input with URL + #find_keys with bracketed email-address #keyimport + #clean_and_classify_input with some string + #find_keys with prefixed fingerprint + #find_keys with correctly marked sub-string + #find_keys with un-bracketed wrong email-address + #find_keys with bracketed wrong email-address + #gpgcli returns correct data types #find_keys with un-prefixed fingerprint + #clean_and_classify_input with un-prefixed fingerprint #clean_and_classify_input with bracketed email-address + #find_keys with un-marked sub-string #clean_and_classify_input with un-bracketed email-address - #gpgcli returns correct data types #find_keys with correctly marked narrower sub-string + #find_keys without argument #clean_and_classify_input with prefixed fingerprint #find_keys with un-bracketed email-address - #find_keys with bracketed wrong email-address - #find_keys without argument - #clean_and_classify_input with un-prefixed fingerprint - #find_keys with prefixed fingerprint - #find_keys with un-marked sub-string - #find_keys with un-bracketed wrong email-address #refresh_keys + does not import non-self-signatures updates keys from the keyserver reports errors from refreshing keys - does not import non-self-signatures #keyserver_arg returns keyserver-args if a keyserver is configured returns a blank string if the keyserver-option is set to a blank value -GPGME::Key - .valid_fingerprint? - invalid fingerprints - rejects Z9C71FB38AEE22E091C78259D06350440F759BD3 as an invalid fingerprint - rejects 59C71FB38AEE22E091C78259D06350440F759BD as an invalid fingerprint - rejects 59C71FB38AEE22E091C78259D06350440F759BD3A as an invalid fingerprint - rejects Z9C71FB38AEE22E091C78259D0635044 as an invalid fingerprint - rejects Z9C71FB38AEE22E091C78259D0635044 as an invalid fingerprint - rejects 0x59C71FB38AEE22E091C78259D06350440F759B as an invalid fingerprint - valid fingerprints - accepts 59C71FB38AEE22E091C78259D06350440F759BD3 as a valid fingerprint - accepts 0x59C71FB38AEE22E091C78259D06350440F759BD3 as a valid fingerprint - accepts 59C71FB38AEE22E091C78259D0635044 as a valid fingerprint - accepts 0x59C71FB38AEE22E091C78259D0635044 as a valid fingerprint - #summary - displays the expected attributes for a key that's not capable of encryption - displays the expected basic attributes - displays the expected attributes for an expired key - displays the expected attributes for a revoked key - displays the expected attributes for an expiring key - #minimal - returns a minimal key +Schleuder::Filters::Runner + is expected to respond to #run + loading filters + loads custom filters from filters_dir and sorts them in, ignores filter not following convention + loads custom filters from filters_dir even with non-2-digit priority + loads custom filters from filters_dir and sorts them in with missing dir + loads filters from built-in filters_dir sorts them + #run + stops on a StandardError and returns error + stops on a StandardError and returns error even on headers match + stops on a StandardError and returns error even with bounces_drop_all + runs the filters status returns status code 200 -version - returns the current schleuder version if authorized - does not return the current schleuder version if not authorized - -authorization via api - allows authorized access - allows un-authorized access to /status.json - blocks un-authorized access to other URLs - -someone sends an email to a listname-dash-address - forwards the message to the admins if extension is -owner - forwards the message to the admins if extension is -bounce - sends the list's key as reply to -sendkey - forwards the message to the admins if extension is -bounce and it's a real bounce mail - -Schleuder::KeywordHandlers::Base - stores mail, list and arguments as instance variables - provides methods to register keywords - -Schleuder::Filters - .receive_from_subscribed_emailaddresses_only - does not reject a message with a subscribed address as From-header if list.receive_from_subscribed_emailaddresses_only is set - rejects a message with a non-subscribed address as From-header if list.receive_from_subscribed_emailaddresses_only is set - does not reject a message with a subscribed address as From-header with different letter case if list.receive_from_subscribed_emailaddresses_only is set - does not reject a message with a non-subscribed address as From-header if list.receive_from_subscribed_emailaddresses_only is not set - .strip_html_from_alternative_if_keywords_present - does NOT strip HTML-part from multipart/alternative-message that does NOT contain keywords - strips HTML-part from multipart/alternative-message that contains keywords - does not choke on nor change a message without Content-Type-header - .strip_html_from_alternative - strips HTML-part from multipart/alternative-message that contains ascii-armored PGP-data - does not choke on nor change a message without Content-Type-header - does NOT strip HTML-part from multipart/alternative-message that does NOT contain ascii-armored PGP-data - .fix_exchange_messages - works with a text/plain message - fixes pgp/mime-messages that were mangled by Exchange - -Schleuder::ListBuilder - creates a list-key with all required UIDs - subscribes the adminaddress and ignores the adminfingerprint if an adminkey was given - returns an error-message if given an invalid email-address - subscribes the adminaddress and respects the given adminfingerprint - returns an error-message if given an invalid email-address with a space - creates a new, valid list - creates a listdir for the list - subscribes the adminaddress and imports the adminkey - -a bounce message is received - from bounce example - KeywordHandlersRunner - rejects unknown keywords requires X-LIST-NAME - stores a keyword that was registered - does not require mandatory keywords if no keywords are present - returns an error message if keyword is configured as admin-only rejects X-LIST-NAME with mismatching argument + rejects unknown keywords + returns an error message if keyword is configured as admin-only loads additional keyword handlers + does not require mandatory keywords if no keywords are present notifies admins + stores a keyword that was registered -cli - #check_keys - warns about file system permissions if it was run as root - #refresh_keys - updates keys from the keyserver - reports errors from refreshing keys - updates keys from the keyserver for only a specific list - warns about file system permissions if it was run as root - #commands - exits with a status code of 1 in case the command is not implemented +user sends emails with different charsets + works with japanese + works with thunderbird-multi-alt-html + works with simple_utf8 + works with japanese_iso_2022 + works with ks_c_5601-1987 + works with simple_latin1 + works with japanese_attachment_long_name + works with japanese_attachment + works with signed_utf8 + works with simple_jpiso2022 + works with japanese_shift_jis + works with simple_jis -keys via api - export - does list keys with authentication - doesn't export keys without authentication - a key with broken utf8 in uid - does add key - already imported - does delete key - does get key - does list this key - delete - doesn't delete keys without authentication - does delete keys with authentication - check - doesn't check keys without authentication - does check keys with authorization - import - does list keys with authentication - doesn't import keys without authentication - list - doesn't list keys without authentication - does list keys with authentication +GPGME::Key + #minimal + returns a minimal key + #summary + displays the expected attributes for a revoked key + displays the expected attributes for an expiring key + displays the expected attributes for an expired key + displays the expected attributes for a key that's not capable of encryption + displays the expected basic attributes + .valid_fingerprint? + invalid fingerprints + rejects 59C71FB38AEE22E091C78259D06350440F759BD3A as an invalid fingerprint + rejects 0x59C71FB38AEE22E091C78259D06350440F759B as an invalid fingerprint + rejects 59C71FB38AEE22E091C78259D06350440F759BD as an invalid fingerprint + rejects Z9C71FB38AEE22E091C78259D0635044 as an invalid fingerprint + rejects Z9C71FB38AEE22E091C78259D0635044 as an invalid fingerprint + rejects Z9C71FB38AEE22E091C78259D06350440F759BD3 as an invalid fingerprint + valid fingerprints + accepts 0x59C71FB38AEE22E091C78259D0635044 as a valid fingerprint + accepts 59C71FB38AEE22E091C78259D0635044 as a valid fingerprint + accepts 59C71FB38AEE22E091C78259D06350440F759BD3 as a valid fingerprint + accepts 0x59C71FB38AEE22E091C78259D06350440F759BD3 as a valid fingerprint Schleuder::Runner after keyword parsing - falling back works also with non-ascii content falls back to default charset per RFC if none is set + falling back works also with non-ascii content #run - does not throw an error on emails with broken utf-8 - delivers a signed error message if a subscription's key is not available on a encrypted-only list + does not throw an error on encrypted but unsigned emails that contain a forwarded encrypted email does not throw an error on emails with large first mime-part - delivers a signed error message if a subscription's key is expired on a encrypted-only list injects pseudoheaders appropriately into a signed multipart/alternative-message (thunderbird+enigmail-1.9) - does not throw an error on emails that contain other gpg keywords - does not throw an error on encrypted but unsigned emails that contain a forwarded encrypted email does not throw an error on emails with an attached pgp key as application/octet-stream + delivers a signed error message if a subscription's key is expired on a encrypted-only list injects pseudoheaders appropriately into an unsigned thunderbird-multipart/alternative-message + does not throw an error on emails with broken utf-8 + delivers a signed error message if a subscription's key is not available on a encrypted-only list + does not throw an error on emails that contain other gpg keywords Quoted-Printable encoding - is handled properly in encrypted emails is handled properly in cleartext emails + is handled properly in encrypted emails is handled properly in encrypted+signed emails - mails not encrypted to the list key - handles a mail which was encrypted to an absent key and returns DecryptionFailed error - handles a mail which was encrypted to a passphrase and returns DecryptionFailed error - handles a mail containing PGP-garbage and returns DecryptionFailed error - with bounces_drop_all set to false - bounces and does not notify admins if bounces_notify_admins is set to false - bounces and notifies admins about bounces when bounces_notify_admins is set to true - with bounces_drop_all set to true - notifies admins about bounces when bounces_notify_admins is set to true - drops all bounces when bounces_notify_admins is set to false with a plain text message - does keep the Message-Id as configured - contains the open pgp header if include_openpgp_header is set to true - doesn't have unwanted headerlines from the original message - has the correct headerlines - contains the specified pseudoheaders in the correct order - does not deliver content if send_encrypted_only is set to true - does not contain the Autocrypt header if include_autocrypt_header is set to false contains the list headers if include_list_headers is set to true delivers the incoming message doesn't leak the Message-Id as configured - does not include the public_footer + does not contain the Autocrypt header if include_autocrypt_header is set to false + does not deliver content if send_encrypted_only is set to true includes the internal_footer + doesn't have unwanted headerlines from the original message + does keep the Message-Id as configured + has the correct headerlines + does not include the public_footer contains the Autocrypt header if include_autocrypt_header is set to true + contains the specified pseudoheaders in the correct order + contains the open pgp header if include_openpgp_header is set to true + mails not encrypted to the list key + handles a mail which was encrypted to a passphrase and returns DecryptionFailed error + handles a mail containing PGP-garbage and returns DecryptionFailed error + handles a mail which was encrypted to an absent key and returns DecryptionFailed error + with bounces_drop_all set to true + notifies admins about bounces when bounces_notify_admins is set to true + drops all bounces when bounces_notify_admins is set to false + with bounces_drop_all set to false + bounces and does not notify admins if bounces_notify_admins is set to false + bounces and notifies admins about bounces when bounces_notify_admins is set to true -Schleuder::LoggerNotifications - notifies admins in the clear if their key is unusable - notifies admins encryptedly if their key is usable - notifies admins of multiple text-messages and the original message - notifies admins of multiple text-messages - notifies admins of simple text-message - includes a List-Id header in notification mails sent to admins - return path - sets superadmin - sets default superadmin - -protected subject - is not leaked - recognizes keywords in mails with protected headers and empty subject - works with mutt protected headers - don't block request-messages - is included in mime-headers - is included as mime-part in body - -Schleuder::Conf - reads ERB code in config files - -user sends keyword - x-list-subscriptions without arguments - x-resend-cc-encrypted-only to 2 addresses with matching keys - x-resend-cc-encrypted-only with expired key - x-unset-fingerprint with not-subscribed email-address - x-subscribe with attributes - x-list-key with correctly prefixed email-sub-string - x-sign-this with inline text - x-get-key with invalid argument - x-resend-cc-encrypted-only with matching key - x-subscribe without attributes - x-set-fingerprint with email-address but without valid fingerprint - x-resend - x-fetch-key with fingerprint - x-fetch-key with unknown fingerprint - x-get-logfile with error-level sends empty logfile - x-unset-fingerprint with own email-address as admin but without force - x-resend with invalid recipient - x-set-fingerprint with own email-address and valid fingerprint - x-list-subscriptions with non-matching argument - x-resend-unencrypted with matching key - x-subscribe with attributes (first one 'false') and spaces-separated fingerprint - x-subscribe with attributes and spaces-separated fingerprint - x-set-fingerprint without argument - x-get-version - x-resend does not include internal_footer - x-set-fingerprint without email-address and with valid fingerprint - x-list-subscriptions without arguments but with admin-notification - x-list-subscriptions with matching argument - x-list-key with arbitrary email-sub-string - x-set-fingerprint with email-address but without fingerprint - x-set-fingerprint without email-address and with invalid fingerprint - x-resend-cc-encrypted-only to 3 addresses with one missing keys - x-sign-this with attachments - x-resend-cc to 2 addresses with one missing keys - x-resend-encrypted-only with two matching keys, one of which is expired - x-resend-encrypted-only with expired key - x-fetch-key with fingerprint of unchanged key - x-fetch-key without arguments - x-attach-listkey - x-unset-fingerprint with other email-address as non-admin - x-list-keys with two arguments - x-get-key with valid argument - x-attach-listkey from Thunderbird with protected headers - x-resend with iso-8859-1 body - x-subscribe with one attribute and spaces-separated fingerprint - x-set-fingerprint with not-subscribed email-address and valid fingerprint - x-subscribe without attributes, but with spaces-separated fingerprint - x-get-logfile with debug level sends non-empty logfile - resend returns an error about wrong arguments if email content got into the arguments due to no blank line - x-resend-cc to 2 addresses with missing keys - x-resend with admin-notification and admin has delivery disabled - x-unsubscribe with invalid argument - x-resend-cc-encrypted-only to 2 addresses with missing keys - x-list-keys with one argument - x-resend with utf-8 body and umlauts - x-fetch-key with invalid URL - x-fetch-key with unknown email-address - x-unsubscribe - x-resend-encrypted-only with matching key - x-unsubscribe without argument - x-list-keys without arguments - x-set-fingerprint with other email-address and valid fingerprint - x-resend-cc-encrypted-only to 2 addresses with one missing keys - x-unset-fingerprint without argument - x-fetch-key with URL - x-unset-fingerprint with other email-address as admin - x-subscribe without arguments - x-unset-fingerprint with own email-address as admin and force - x-set-fingerprint with other email-address and valid fingerprint as non-admin - x-subscribe with invalid arguments - x-get-version with delivery disabled - x-list-key with prefixed fingerprint - x-fetch-key with invalid input - x-set-fingerprint with own email-address and valid, spaces-separated fingerprint - does not parse keywords once the mail body started - x-get-key with empty argument - x-unsubscribe doesn't unsubscribe last admin - x-subscribe with attributes (last one 'true') and spaces-separated fingerprint - x-fetch-key with email address - x-resend with admin-notification - with broken utf8 in key - x-add-key with inline key-material - x-get-key with valid argument - x-list-keys works +user sends an encrypted message + from thunderbird being encrypted+signed-mime + from thunderbird being encrypted-inline + from thunderbird being encrypted+signed-inline + from thunderbird being encrypted-mime -running filters - .fix_exchange_messages! - accepts a valid plain-text message - accepts an invalid pgp/mime Exchange message - .max_message_size - bounces to big mails - .strip_html_from_alternative! - does NOT strip HTML-part from multipart/alternative-message that does NOT contain ascii-armored PGP-data - strips HTML-part from multipart/alternative-message that contains ascii-armored PGP-data +Schleuder::ListBuilder + returns an error-message if given an invalid email-address with a space + subscribes the adminaddress and imports the adminkey + subscribes the adminaddress and ignores the adminfingerprint if an adminkey was given + creates a list-key with all required UIDs + creates a listdir for the list + returns an error-message if given an invalid email-address + subscribes the adminaddress and respects the given adminfingerprint + creates a new, valid list Schleuder::List - is invalid if include_list_headers is blank - is invalid if bounces_notify_admins is nil - is invalid if receive_authenticated_only is nil - is expected to respond to #forward_all_incoming_to_admins - is invalid if bounces_drop_all is blank - is invalid when email is blank - is invalid if headers_to_meta contains special characters - is invalid if keep_msgid is blank - is invalid if receive_admin_only is blank - is expected to respond to #bounces_drop_all - is invalid if language is jp - is invalid if subject_prefix_out contains a linebreak + has a valid factory + is invalid if send_encrypted_only is nil + is invalid if internal_footer includes a non-printable character is invalid if bounces_drop_all is nil + is invalid if subject_prefix contains a linebreak is valid if headers_to_meta does not contain special characters + is invalid if bounces_drop_all is blank + is expected to respond to #openpgp_header_preference is expected to respond to #deliver_selfsent - is invalid when email does not contain an @ - is invalid when email is nil - is expected to respond to #headers_to_meta - is invalid if forward_all_incoming_to_admins is blank + is expected to respond to #max_message_size_kb + is expected to respond to #bounces_notify_admins + is invalid if public_footer includes a non-printable character + is invalid if keywords_admin_only contains special characters + is invalid if receive_authenticated_only is blank + is invalid if set_reply_to_to_sender is nil + is invalid if receive_admin_only is blank + is expected to respond to #keywords_admin_only is expected to respond to #log_level - is invalid if include_list_headers is blank - is expected to respond to #subject_prefix - is invalid when fingerprint is nil + is expected to respond to #keywords_admin_notify + is expected to respond to #headers_to_meta + is invalid if include_list_headers is nil + is invalid if keep_msgid is blank + is invalid if receive_authenticated_only is nil + is invalid if receive_admin_only is nil is expected to respond to #receive_signed_only - is expected to respond to #receive_from_subscribed_emailaddresses_only - is invalid if receive_signed_only is nil - is expected to respond to #fingerprint - is invalid if send_encrypted_only is nil - is expected to respond to #receive_authenticated_only - is expected to respond to #receive_admin_only - is expected to respond to #subscriptions - is invalid if bounces_drop_on_headers contains special characters - is invalid if receive_encrypted_only is blank + is invalid if max_message_size_kb is 0 + is invalid if openpgp_header_preference is foobar + is invalid if receive_from_subscribed_emailaddresses_only is nil + is invalid if bounces_notify_admins is blank is expected to respond to #email - is expected to respond to #include_list_headers - is invalid if internal_footer includes a non-printable character - is invalid if munge_from is nil + is expected to respond to #receive_encrypted_only + is expected to respond to #subject_prefix_out + is expected to respond to #subject_prefix_in + is invalid if forward_all_incoming_to_admins is blank is expected to respond to #public_footer - is invalid if subject_prefix contains a linebreak - is invalid if receive_authenticated_only is blank - is expected to respond to #bounces_notify_admins - is invalid if receive_encrypted_only is nil - is invalid if openpgp_header_preference is foobar - is expected to respond to #internal_footer - is expected to respond to #bounces_drop_on_headers - is invalid if forward_all_incoming_to_admins is nil - is expected to respond to #language + is expected to respond to #keep_msgid + is invalid if subject_prefix_out contains a linebreak + is invalid if deliver_selfsent is blank + is valid if subject_prefix_out is nil + is invalid if language is jp + is invalid if include_openpgp_header is blank + is invalid if logfiles_to_keep is 0 + is invalid when email is blank is invalid if include_list_headers is nil + is invalid if bounces_drop_on_headers contains special characters + is expected to respond to #receive_admin_only + is invalid if send_encrypted_only is blank + is expected to respond to #bounces_drop_on_headers + is expected to respond to #logfiles_to_keep + is invalid if bounces_notify_admins is nil + is invalid when fingerprint contains invalid characters + is invalid if receive_encrypted_only is blank is invalid if include_openpgp_header is nil - is invalid if include_list_headers is nil - is expected to respond to #receive_encrypted_only - is invalid when email contains a space - is valid if subject_prefix_in is nil - is valid if subject_prefix is nil - is expected to respond to #send_encrypted_only + is expected to respond to #set_reply_to_to_sender is expected to respond to #include_openpgp_header - is invalid if keywords_admin_notify contains special characters - is invalid if subject_prefix_in contains a linebreak + is expected to respond to #bounces_drop_all + exports the key with the given fingerprint + is invalid if munge_from is nil is invalid if log_level is foobar - is invalid if receive_from_subscribed_emailaddresses_only is nil - is invalid when fingerprint is blank - is expected to respond to #openpgp_header_preference - is expected to respond to #set_reply_to_to_sender - is invalid if public_footer includes a non-printable character - is invalid if include_openpgp_header is blank + is valid if keywords_admin_only does not contain special characters + is expected to respond to #internal_footer is invalid if receive_from_subscribed_emailaddresses_only is blank + is valid if subject_prefix is nil + is invalid when email is nil + is valid if keywords_admin_notify does not contain special characters is expected to respond to #munge_from - is invalid if send_encrypted_only is blank - is valid if subject_prefix_out is nil - is invalid if keep_msgid is nil - has a valid factory - is invalid if keywords_admin_only contains special characters - is expected to respond to #max_message_size_kb - is invalid if logfiles_to_keep is 0 - is expected to respond to #logfiles_to_keep - is expected to respond to #subject_prefix_out - is expected to respond to #keywords_admin_only - is expected to respond to #keep_msgid - is expected to respond to #subject_prefix_in - is invalid if bounces_notify_admins is blank - is valid if keywords_admin_only does not contain special characters - is expected to respond to #keywords_admin_notify + is expected to respond to #forward_all_incoming_to_admins + is expected to respond to #subject_prefix + is invalid if forward_all_incoming_to_admins is nil + is invalid if headers_to_meta contains special characters + is invalid if set_reply_to_to_sender is blank + is expected to respond to #fingerprint + is invalid if munge_from is blank + is invalid if include_list_headers is blank + is expected to respond to #send_encrypted_only + is expected to respond to #receive_authenticated_only is invalid if receive_signed_only is blank - is invalid if receive_admin_only is nil + is invalid when email contains a space is invalid if deliver_selfsent is nil - is invalid if munge_from is blank - is valid if keywords_admin_notify does not contain special characters - is invalid if set_reply_to_to_sender is nil - is invalid if max_message_size_kb is 0 - is invalid if deliver_selfsent is blank - is invalid if set_reply_to_to_sender is blank - exports the key with the given fingerprint - is invalid when fingerprint contains invalid characters - #check_keys - adds a message if a key expires in two weeks or less - adds a message if a key is revoked - adds a message if a key is invalid - adds a message if a key is disabled - #gpg - returns an instance of GPGME::Ctx - sets the GNUPGHOME environment variable to the listdir + is invalid when fingerprint is blank + is expected to respond to #subscriptions + is expected to respond to #include_list_headers + is invalid when fingerprint is nil + is invalid if keep_msgid is nil + is invalid if include_list_headers is blank + is invalid if subject_prefix_in contains a linebreak + is invalid when email does not contain an @ + is invalid if receive_signed_only is nil + is valid if subject_prefix_in is nil + is expected to respond to #language + is invalid if receive_encrypted_only is nil + is invalid if keywords_admin_notify contains special characters + is expected to respond to #receive_from_subscribed_emailaddresses_only #keys returns an array with the keys matching the given email address - returns an array of keys matching the given fingerprint returns an array with the keys matching the given bracketed email address it returns an array with the keys of the list + returns an array of keys matching the given fingerprint + #owner_address + adds the owner keyword to the email address + #munge_from + sets from to munged version when enabled + is disabled by default + does not munge from address when disabled + #secret_key + returns the secret key with the fingerprint of the list + #to_s + returns the email + #bounce_address + adds the bounce keyword to the email address + #logger + calls the ListLogger + #key_minimal_base64_encoded + returns the key with the fingerprint of the list if no argument is given in an Autocrypt-compatible format + does not return the key with the fingerprint in an Autocrypt-compatible format if the argument given does not correspond to a key + #export_key + exports the key with the fingerprint of the list if no argument is given + send_list_key_to_subscriptions + sends its key to all subscriptions + #send_to_subscriptions + sends the message to all subscribers but not the sender, if deliver_selfsent is false and the mail is correctly signed + sends the message to all subscribers including the sender, if deliver_selfsent is true and the mail is correctly signed + sends the message to all subscribers, in the clear if one's key is unusable, if send_encrypted_only is false + sends the message to all subscribers + sends the message to all subscribers including the sender, if deliver_selfsent is false but the mail is not correctly signed + sends the message only to subscribers with available keys if send_encrypted_only is true, and a notification to the other subscribers + sends the message only to subscribers with usable keys if send_encrypted_only is true, and a notification to the other subscribers #subscribe - subscribes and does not set the fingerprint from key material containing multiple keys - subscribes and ignores nil-values for admin and delivery_enabled + subscribes and does not set the fingerprint from key material containing no keys subscribes and sets the fingerprint from key material that contains exactly one key subscribes and ignores a given fingerprint if key material is given, too - subscribes and does not set the fingerprint from key material containing no keys - #to_s - returns the email - #key - returns the key with the fingerprint of the list + subscribes and ignores nil-values for admin and delivery_enabled + subscribes and does not set the fingerprint from key material containing multiple keys + #import_key + imports a given key + #delete_key + deletes the key with the given fingerprint + returns false if no key with the fingerprint was found + #check_keys + adds a message if a key is disabled + adds a message if a key is revoked + adds a message if a key is invalid + adds a message if a key expires in two weeks or less .by_recipient returns the list for a given address + #fetch_keys + fetches one key by fingerprint + fetches one key by email address + fetches one key by URL + does not import non-self-signatures #sendkey_address adds the sendkey keyword to the email address #set_reply_to_to_sender prefers reply_to of the sender over from when existing sets reply-to to senders from-address when enabled - does not set reply_to mail address when disabled is disabled by default - #bounce_address - adds the bounce keyword to the email address - #fetch_keys - does not import non-self-signatures - fetches one key by URL - fetches one key by fingerprint - fetches one key by email address - #logfile - returns the logfile path - #secret_key - returns the secret key with the fingerprint of the list - #fingerprint - transforms the fingerprint to upper case - removes whitespaces and 0x from the fingerprint - #delete_key - deletes the key with the given fingerprint - returns false if no key with the fingerprint was found - send_list_key_to_subscriptions - sends its key to all subscriptions - #logger - calls the ListLogger - #owner_address - adds the owner keyword to the email address + does not set reply_to mail address when disabled + #gpg + sets the GNUPGHOME environment variable to the listdir + returns an instance of GPGME::Ctx #request_address adds the request keyword to the email address - #key_minimal_base64_encoded - returns the key with the fingerprint of the list if no argument is given in an Autocrypt-compatible format - does not return the key with the fingerprint in an Autocrypt-compatible format if the argument given does not correspond to a key + #fingerprint + removes whitespaces and 0x from the fingerprint + transforms the fingerprint to upper case .configurable_attributes does not contain the attributes email and fingerprint returns an array that contains the configurable attributes + #key + returns the key with the fingerprint of the list + #logfile + returns the logfile path #admins returns subscriptions of admin users - #munge_from - sets from to munged version when enabled - is disabled by default - does not munge from address when disabled - #import_key - imports a given key - #export_key - exports the key with the fingerprint of the list if no argument is given - #send_to_subscriptions - sends the message only to subscribers with available keys if send_encrypted_only is true, and a notification to the other subscribers - sends the message to all subscribers but not the sender, if deliver_selfsent is false and the mail is correctly signed - sends the message to all subscribers - sends the message to all subscribers, in the clear if one's key is unusable, if send_encrypted_only is false - sends the message to all subscribers including the sender, if deliver_selfsent is true and the mail is correctly signed - sends the message only to subscribers with usable keys if send_encrypted_only is true, and a notification to the other subscribers - sends the message to all subscribers including the sender, if deliver_selfsent is false but the mail is not correctly signed + +version + returns the current schleuder version if authorized + does not return the current schleuder version if not authorized user sends a plain text message + from thunderbird being signed-mime from thunderbird being plain from thunderbird being signed-inline - from thunderbird being signed-mime + +keys via api + check + doesn't check keys without authentication + does check keys with authorization + delete + doesn't delete keys without authentication + does delete keys with authentication + a key with broken utf8 in uid + does add key + already imported + does list this key + does delete key + does get key + list + doesn't list keys without authentication + does list keys with authentication + export + doesn't export keys without authentication + does list keys with authentication + import + does list keys with authentication + doesn't import keys without authentication + +protected subject + works with mutt protected headers + recognizes keywords in mails with protected headers and empty subject + is included as mime-part in body + is included in mime-headers + is not leaked + don't block request-messages + +running filters + .max_message_size + bounces to big mails + .fix_exchange_messages! + accepts an invalid pgp/mime Exchange message + accepts a valid plain-text message + .strip_html_from_alternative! + strips HTML-part from multipart/alternative-message that contains ascii-armored PGP-data + does NOT strip HTML-part from multipart/alternative-message that does NOT contain ascii-armored PGP-data + +Schleuder::LoggerNotifications + notifies admins of multiple text-messages + notifies admins encryptedly if their key is usable + includes a List-Id header in notification mails sent to admins + notifies admins of multiple text-messages and the original message + notifies admins of simple text-message + notifies admins in the clear if their key is unusable + return path + sets superadmin + sets default superadmin + +lists via api + correctly finds a list by email-address that starts with a number + shows a list + creates a list + +a bounce message is received + from bounce example + +Mail::Message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_03.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_07.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_18.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_04.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_1234285532.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_1234177688.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_19.txt.eml as normal message + recognizes a sudo message with 'Auto-Submitted'-header NOT as automated message + does not misclassify normal message spec/fixtures/mails/not_bounces/tt_1234241664.txt.eml as bounce + does not misclassify bounce spec/fixtures/mails/bounces/tt_1234211357.txt.eml as normal message + adds list#internal_footer as last mime-part without changing its value + verifies an encapsulated (signed-then-encrypted) message + does not misclassify bounce spec/fixtures/mails/bounces/unknown_code_bounce_01.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_13.txt.eml as normal message + recognizes a message sent to listname-bounce@hostname as automated message + does not misclassify normal message spec/fixtures/mails/not_bounces/Bug_948982-_marked_as_pending_in_schleuder.eml as bounce + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_24.txt.eml as normal message + does not misclassify normal message spec/fixtures/mails/not_bounces/tt_1234211024.txt.eml as bounce + does not misclassify bounce spec/fixtures/mails/bounces/malformed_bounce_01.txt.eml as normal message + does not misclassify normal message spec/fixtures/mails/not_bounces/Bug_948980-_marked_as_pending_in_schleuder.eml as bounce + does not misclassify bounce spec/fixtures/mails/bounces/tt_1234210655.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_1234211932.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_25.txt.eml as normal message + does not misclassify normal message spec/fixtures/mails/not_bounces/tt_1234210666.txt.eml as bounce + recognizes a cron message with 'Auto-Submitted'-header NOT as automated message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_23.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_01.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_08.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_02.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_1234211931.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_20.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_05.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_1234211929.txt.eml as normal message + does not misclassify normal message spec/fixtures/mails/not_bounces/Bug_948981-_marked_as_pending_in_schleuder.eml as bounce + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_16.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_17.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_06.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_21.txt.eml as normal message + recognizes a Jenkins message with 'Auto-Submitted'-header NOT as automated message + doesn't change the order of mime-parts + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_22.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_10.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_11.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/undeliverable_gmail.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_1234175799.txt.eml as normal message + adds list#public_footer as last mime-part without changing its value + does not misclassify bounce spec/fixtures/mails/bounces/tt_1234285668.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_15.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_14.txt.eml as normal message + recognizes bounce message subject using the bounce_email gem + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_12_soft.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_1234241665.txt.eml as normal message + does not misclassify bounce spec/fixtures/mails/bounces/tt_bounce_09.txt.eml as normal message + .keywords + splits lines into words and downcases them in keyword arguments + reads multiple lines as keyword arguments + stops looking for keywords when a blank line that is not followed by another keyword is met + drops multiple empty lines between keywords and content + drops empty lines in keyword arguments parsing + ignores empty lines before keywords + stops looking for keywords when the first line is already email content + takes the whole rest of the body as keyword argument if blank lines are present + stops looking for keywords when already the first line is blank followed by email content + makes a pseudo header + that a line with less than 76 gets wrapped + that a multiline with less than 76 get wrapped correctly on the first line + that a multiline with less than 76 get wrapped correctly on the first line and the following lines + that multiline are getting wrapped + that single multiline are getting indented + that is getting wrapped + with empty value + without value + with key / value + #add_subject_prefix! + adds a configured subject prefix without subject + does not add a subject prefix if already present + adds a configured subject prefix + +authorization via api + allows un-authorized access to /status.json + blocks un-authorized access to other URLs + allows authorized access + +Schleuder::KeywordHandlers::KeyManagement + registers keywords + .add_key + rejects garbage + ignores arguments + imports from attached quoted-printable ascii-armored key-material + imports a key from attached acsii-armored material + imports a key from inline ascii-armored material + imports from attached quoted-printable key-material (as produced by Thunderbird 115) + imports a key from attached binary material (without specified encoding) + imports a key from attached explicitly base64-encoded binary material + updates a key + imports from an inline mix of ascii-armored key and non-key material + imports a key from attached quoted-printable binary material + imports from attached quoted-printable binary key-material (as produced by Mutt 2.0.5) + ignores body if an ascii-armored attachment is present + .delete_key + returns a string as error message if input message has no content + deletes multiple keys that each distinctly match one argument + sends error message if no argument is given + deletes no key if the argument does not match + deletes a key that distinctly matches the argument + +cli + #refresh_keys + updates keys from the keyserver for only a specific list + warns about file system permissions if it was run as root + updates keys from the keyserver + reports errors from refreshing keys + #check_keys + warns about file system permissions if it was run as root + #commands + exits with a status code of 1 in case the command is not implemented Schleuder::KeywordHandlers::SignThis + responds to the configured keyword method signs attachment (even if a body is present) signs body content if no attachments are present - responds to the configured keyword method -Finished in 6 minutes 2 seconds (files took 1.27 seconds to load) +Errors + ::DecryptionFailed shows sensible string in response to to_s() + ::MessageEmpty shows sensible string in response to to_s() + ::MessageNotFromAdmin shows sensible string in response to to_s() + ::KeyGenerationFailed shows sensible string in response to to_s() + ::LoadingListSettingsFailed shows sensible string in response to to_s() + ::KeyAdduidFailed shows sensible string in response to to_s() + ::MessageSenderNotSubscribed shows sensible string in response to to_s() + ::ListNotFound shows sensible string in response to to_s() + ::KeywordAdminOnly shows sensible string in response to to_s() + ::MessageUnauthenticated shows sensible string in response to to_s() + ::MessageTooBig shows sensible string in response to to_s() + ::TooManyKeys shows sensible string in response to to_s() + ::MessageUnsigned shows sensible string in response to to_s() + ::ListdirProblem shows sensible string in response to to_s() + ::MessageUnencrypted shows sensible string in response to to_s() + +Finished in 5 minutes 45 seconds (files took 1.27 seconds to load) 556 examples, 0 failures -Randomized with seed 5434 +Randomized with seed 11180 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1925,12 +1961,12 @@ install -p -m0644 ./man/schleuder-api-daemon.8 debian/schleuder/usr/share/man/man8/schleuder-api-daemon.8 install -m0755 -d debian/schleuder/usr/share/man/man8/ install -p -m0644 ./man/schleuder.8 debian/schleuder/usr/share/man/man8/schleuder.8 - man-recode --to-code UTF-8 --suffix .dh-new debian/schleuder/usr/share/man/man8/schleuder-api-daemon.8 man-recode --to-code UTF-8 --suffix .dh-new debian/schleuder/usr/share/man/man8/schleuder.8 - mv debian/schleuder/usr/share/man/man8/schleuder-api-daemon.8.dh-new debian/schleuder/usr/share/man/man8/schleuder-api-daemon.8 - chmod 0644 -- debian/schleuder/usr/share/man/man8/schleuder-api-daemon.8 + man-recode --to-code UTF-8 --suffix .dh-new debian/schleuder/usr/share/man/man8/schleuder-api-daemon.8 mv debian/schleuder/usr/share/man/man8/schleuder.8.dh-new debian/schleuder/usr/share/man/man8/schleuder.8 chmod 0644 -- debian/schleuder/usr/share/man/man8/schleuder.8 + mv debian/schleuder/usr/share/man/man8/schleuder-api-daemon.8.dh-new debian/schleuder/usr/share/man/man8/schleuder-api-daemon.8 + chmod 0644 -- debian/schleuder/usr/share/man/man8/schleuder-api-daemon.8 dh_installcron -O--buildsystem=ruby install -m0755 -d debian/schleuder/etc/cron.weekly install -p -m0755 debian/schleuder.cron.weekly debian/schleuder/etc/cron.weekly/schleuder @@ -2016,12 +2052,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/1140452/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/1140452/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/2959311 and its subdirectories -I: Current time: Thu Dec 5 11:36:46 -12 2024 -I: pbuilder-time-stamp: 1733441806 +I: removing directory /srv/workspace/pbuilder/1140452 and its subdirectories +I: Current time: Thu Jan 8 20:06:22 +14 2026 +I: pbuilder-time-stamp: 1767852382