Package: b4
Version: 0.6.2-1
Severity: normal

Hello,

for me the following b4 command reproducibly fails:

        $ b4 am yo82s5mc6ha8m...@google.com
        Looking up https://lore.kernel.org/r/YO82s5MC6HA8mL2Q%40google.com
        Grabbing thread from lore.kernel.org/linux-input
        Analyzing 5 messages in the thread
        ---
        Thread incomplete, attempting to backfill
        Grabbing thread from lore.kernel.org/alsa-devel
        Grabbing thread from lore.kernel.org/dmaengine
        Grabbing thread from lore.kernel.org/kvm
        Loaded 1 messages from https://lore.kernel.org/kvm/
        Grabbing thread from lore.kernel.org/linux-acpi
        Grabbing thread from lore.kernel.org/linux-arm-kernel
        Server returned an error: 404
        Grabbing thread from lore.kernel.org/linux-arm-msm
        Grabbing thread from lore.kernel.org/linux-cxl
        Grabbing thread from lore.kernel.org/linux-fpga
        Grabbing thread from lore.kernel.org/linux-hyperv
        Grabbing thread from lore.kernel.org/linux-i2c
        Grabbing thread from lore.kernel.org/linux-i3c
        Server returned an error: 404
        Grabbing thread from lore.kernel.org/lkml
        Loaded 4 messages from https://lore.kernel.org/lkml/
        Successfully backfilled missing patches
        ---
        Writing 
./v4_20210713_u_kleine_koenig_bus_make_remove_callback_return_void.mbx
          ✔ [PATCH v4 1/5] PCI: endpoint: Make struct pci_epf_driver::remove 
return void
          ✔ [PATCH v4 2/5] s390/cio: Make struct css_driver::remove return void
          ✔ [PATCH v4 3/5] s390/ccwgroup: Drop if with an always false condition
          ✔ [PATCH v4 4/5] s390/scm: Make struct scm_driver::remove return void
          ✔ [PATCH v4 5/5] bus: Make remove callback return void
            + Acked-by: Dmitry Torokhov <dmitry.torok...@gmail.com> (✓ 
DKIM/gmail.com)
            + Acked-by: Geert Uytterhoeven <ge...@linux-m68k.org>
            + Acked-by: Sudeep Holla <sudeep.ho...@arm.com>
        Traceback (most recent call last):
          File "/usr/bin/b4", line 33, in <module>
            sys.exit(load_entry_point('b4==0.6.2', 'console_scripts', 'b4')())
          File "/usr/lib/python3/dist-packages/b4/command.py", line 213, in cmd
            cmdargs.func(cmdargs)
          File "/usr/lib/python3/dist-packages/b4/command.py", line 40, in 
cmd_am
            b4.mbox.main(cmdargs)
          File "/usr/lib/python3/dist-packages/b4/mbox.py", line 538, in main
            mbox_to_am(threadfile, cmdargs)
          File "/usr/lib/python3/dist-packages/b4/mbox.py", line 114, in 
mbox_to_am
            am_mbx = lser.save_am_mbox(mbx, noaddtrailers=cmdargs.noaddtrailers,
          File "/usr/lib/python3/dist-packages/b4/__init__.py", line 565, in 
save_am_mbox
            msg = lmsg.get_am_message(add_trailers=add_trailers, 
trailer_order=trailer_order, copyccs=copyccs)
          File "/usr/lib/python3/dist-packages/b4/__init__.py", line 1400, in 
get_am_message
            self.fix_trailers(trailer_order=trailer_order, copyccs=copyccs)
          File "/usr/lib/python3/dist-packages/b4/__init__.py", line 1361, in 
fix_trailers
            attsig = LoreAttestationSignatureDKIM(fmsg.msg)  # noqa
          File "/usr/lib/python3/dist-packages/b4/__init__.py", line 1707, in 
__init__
            res = dkim.verify(self.msg.as_bytes(), dnsfunc=dkim_get_txt)
          File "/usr/lib/python3/dist-packages/dkim/__init__.py", line 1352, in 
verify
            return d.verify(dnsfunc=dnsfunc)
          File "/usr/lib/python3/dist-packages/dkim/__init__.py", line 940, in 
verify
            return self.verify_sig(sig, include_headers, sigheaders[idx], 
dnsfunc)
          File "/usr/lib/python3/dist-packages/dkim/__init__.py", line 773, in 
verify_sig
            self.pk, self.keysize, self.ktag, self.seqtlsrpt = 
load_pk_from_dns(name,
          File "/usr/lib/python3/dist-packages/dkim/__init__.py", line 481, in 
load_pk_from_dns
            s = dnsfunc(name, timeout=timeout)
          File "/usr/lib/python3/dist-packages/b4/__init__.py", line 2452, in 
dkim_get_txt
            a = _resolver.resolve(lookup, dns.rdatatype.TXT, 
raise_on_no_answer=False, lifetime=timeout, search=True)
          File "/usr/lib/python3/dist-packages/dns/resolver.py", line 1043, in 
resolve
            timeout = self._compute_timeout(start, lifetime)
          File "/usr/lib/python3/dist-packages/dns/resolver.py", line 950, in 
_compute_timeout
            raise Timeout(timeout=duration)
        dns.exception.Timeout: The DNS operation timed out after 
5.001782417297363 seconds

I wiresharked the DNS traffic and found out that my provider's DNS
server doesn't reply "big" queries without edns:

        $ dig +noedns fm3._domainkey.messagingengine.com TXT
        ;; Truncated, retrying in TCP mode.
        ;; communications error to 192.168.80.1#53: end of file


        ; <<>> DiG 9.16.15-Debian <<>> +noedns 
fm3._domainkey.messagingengine.com TXT
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 21882
        ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
        ;; WARNING: recursion requested but not available

        ;; QUESTION SECTION:
        ;fm3._domainkey.messagingengine.com. IN TXT

        ;; Query time: 7 msec
        ;; SERVER: fdb0:5279:7365:8000::1#53(fdb0:5279:7365:8000::1)
        ;; WHEN: Sun Jul 18 22:17:15 CEST 2021
        ;; MSG SIZE  rcvd: 52

If I query one of the public DNS servers (like 1.1.1.1 or 8.8.8.8), or
if I use an edns query (i.e. drop +noedns) or if I query one of the ipv6
servers of my provider I get a proper answer.

If I understood correctly using edns is the only way to properly get
replies bigger than 512 bytes, so it doesn't seem unreasonable to use
edns for TXT records?!

Best regards
Uwe

-- System Information:
Debian Release: 11.0
  APT prefers testing-debug
  APT policy: (700, 'testing-debug'), (700, 'stable-updates'), (700, 
'testing'), (700, 'stable'), (600, 'unstable'), (500, 'unstable-debug'), (500, 
'stable-debug'), (500, 'oldstable'), (499, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, armhf, arm64

Kernel: Linux 5.10.0-6-amd64 (SMP w/4 CPU threads)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages b4 depends on:
ii  python3            3.9.2-3
ii  python3-dkim       1.0.5-1
ii  python3-dnspython  2.0.0-1
ii  python3-requests   2.25.1+dfsg-2

b4 recommends no packages.

b4 suggests no packages.

-- no debconf information

Reply via email to