Debian Package Tracker
Register | Log in
Subscribe

golang-blitiri-go-spf

SPF (Sender Policy Framework) implementation in Go

Choose email to subscribe with

general
  • source: golang-blitiri-go-spf (main)
  • version: 1.5.1-1
  • maintainer: Debian Go Packaging Team (DMD)
  • uploaders: Alberto Bertogli [DMD]
  • arch: all
  • std-ver: 4.6.1
  • VCS: Git (Browse, QA)
versions [more versions can be listed by madison] [old versions available from snapshot.debian.org]
[pool directory]
  • o-o-stable: 1.1.0-1
  • oldstable: 1.5.1-1
  • stable: 1.5.1-1
  • testing: 1.5.1-1
  • unstable: 1.5.1-1
versioned links
  • 1.1.0-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 1.5.1-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
binaries
  • golang-blitiri-go-spf-dev
action needed
A new upstream version is available: 1.6.0 high
A new upstream version 1.6.0 is available, you should consider packaging it.
Created: 2026-08-27 Last update: 2026-09-03 00:30
version in VCS is newer than in repository, is it time to upload? normal
vcswatch reports that this package seems to have a new changelog entry (version 1.6.0-1, distribution unstable) and new commits in its VCS. You should consider whether it's time to make an upload.

Here are the relevant commit messages:
commit 809092ebfdbe36fbb7f0b1b9db926f7d753200a2
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 23 20:41:54 2026 +0100

    Update changelog for release 1.6.0-1

commit d342b450681f0b7670424ddc0e02966e879cc58f
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 23 20:37:52 2026 +0100

    Remove now-unnecessary Depends (after debhelper >=14)

commit ae67da0bcbba85a4d0115221bc39a6b3e08e6f8d
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 23 20:35:06 2026 +0100

    Add upstream metadata file

commit 5b0e55cd7628f975aae866713bac4567713aaad4
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 23 20:26:11 2026 +0100

    debhelper-compat 14 and Standards-Version 4.7.4

commit 38101c2ebcc39338a5ae826e4f90259922e3b962
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 23 20:18:00 2026 +0100

    Drop Priority and Rules-Requires-Root, as per new policy

commit c56d0334141338bbcb4573d2e6f7e091e9f02815
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 23 20:12:55 2026 +0100

    debian/watch: Update to version 5

commit f815ded3fda9836dbffad67877d3afb03115aefb
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 23 19:54:45 2026 +0100

    New upstream release (1.6.0)

commit 1e8ce1ee0edee48b83a443cc28f74a394bbfe87d
Merge: 3140e26 e17a976
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 23 19:54:14 2026 +0100

    Merge tag 'upstream/1.6.0'
    
    upstream/1.6.0

commit e17a9766b452624ada6aa39506c3335cd1b2aa43
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 23 13:02:26 2026 +0100

    ptr: Make reverse DNS lookup errors fail to match
    
    Currently, when processing a ptr mechanism, if the reverse DNS lookup
    fails (with other than NXDOMAIN), then it returns temperror.
    
    However, the standard is clear that we should just fail to match
    instead:
    
    > Check all validated domain names to see if they either match the
    > <target-name> domain or are a subdomain of the <target-name> domain.
    > If any do, this mechanism matches.  If no validated domain name can
    > be found, or if none of the validated domain names match or are a
    > subdomain of the <target-name>, this mechanism fails to match.  If a
    > DNS error occurs while doing the PTR RR lookup, then this mechanism
    > fails to match.  If a DNS error occurs while doing an A RR lookup,
    > then that domain name is skipped and the search continues.
    
    https://tools.ietf.org/html/rfc7208#section-5.5
    
    This patch fixes this by making those lookup errors fail to match as
    described by the standard.

commit d2b814bc9cdd8cb89726a72e8fc3ee8fff7124be
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 23 12:46:31 2026 +0100

    test: Remove unnecessary "skip" from passing tests
    
    Some of the tests were marked as "skip", but are currently passing after
    recent changes.
    
    This patch removes the now-unnecessary "skip" lines.

commit 856e3a769363512c3a917ebdf81b240327603d8c
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sat Aug 22 17:02:26 2026 +0100

    test: Add more tests from RFC 7208
    
    The existing test suite is fairly comprehensive, and we already have
    code coverage. But going through RFC 7208, there are some corner cases
    that are not included.
    
    This patch adds more tests based on RFC 7208, including some we are
    currently not passing (either intentionally or due to bugs), which are
    marked as skipped.

commit 112b78dccc733f1dbc8c8489685af1484d09588e
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sat Aug 22 10:21:16 2026 +0100

    ci: Update versions of actions/checkout and actions/setup-go
    
    The versions of actions/checkout and actions/setup-go we use are
    deprecated and may stop working in the future.
    
    This patch updates them to the latest, and also set explicit permissions
    to read-only.

commit 5c91a7f1fe51ce590e634da6a1a9f0bce2b8ba3c
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sat Aug 22 10:06:41 2026 +0100

    git: Rename stable branch to "main"
    
    These days `main` is more common, and I find it more intuitive.

commit 774fb1b68a08d8444e600bde83cec41e5c3a1d27
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Fri Aug 21 22:50:01 2026 +0100

    a, mx: Reject malformed fields without domain
    
    Fields like "a:" or "mx:/24" are malformed, but currently we accept them
    with the current domain. This is fairly harmless in general but can
    cause interoperability problems, and checkers to return wrongly positive
    results.
    
    This patch fixes the bug by explicitly rejecting those kinds of
    malformed fields.

commit a2c34380020b65b39520a2decd74aed0713ccd26
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Fri Aug 21 22:29:50 2026 +0100

    Improve redirect= and exp= case-insensitive handling
    
    The redirect= and exp= modifiers should be identified in a
    case-insensitive way; however, we handle this inconsistently, and that
    can lead to some cases where a duplicated modifier is accepted instead
    of rejected.
    
    This patch corrects that by using ascii-case-insensitive comparisons for
    identifying the known modifiers.
    
    This is extremely unlikely to appear in practice, but still it's worth
    adjusting the implementation to match the standard.

commit 1e7306a69cb5e297e1b13aed95426a6209a9de07
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Fri Aug 21 22:01:56 2026 +0100

    Ignore unrecognized modifiers
    
    Currently, if we see any unrecognized modifiers, we return permerror.
    
    This is against the standard, which says they should be ignored:
    
    > Unrecognized modifiers MUST be ignored no matter where, or how often,
    > they appear in a record.  This allows implementations conforming to
    > this document to gracefully handle records with modifiers that are
    > defined in other specifications.
    
    https://tools.ietf.org/html/rfc7208#section-6
    
    So this patch explicitly identifies unrecognized modifiers, and ignores
    them.
    
    While this is rare in the wild, some places may still be using the
    pre-standard "ra=", "rp=" and "rr=" modifiers.
    
    Existing standard tests cover this scenario, but unfortunately were
    incorrectly marked as skipped a long time ago. This patch also removes
    the skip, incorporating the tests.

commit 2868f0bfddcd7e785526155486bb06469418a45b
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Tue Aug 18 00:09:56 2026 +0100

    macro: Reject invalid and non-terminated macros
    
    Currently in the macro parsing we accept (and ignore) invalid macro
    characters, and also accept non-terminated macros.
    
    To fix both bugs, and make the parser more standards-compliant, this
    patch makes the code more strict in those checks.
    
    In addition to the pre-existing tests, the regexp was cross-checked
    against RFC 7208, to make sure we are not going to accidentally reject a
    valid macro.

commit 0ae099826d2645f5e4eaf2274d521fe1158afe47
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Mon Aug 17 22:48:19 2026 +0100

    ptr: Fix subdomain checking
    
    As per RFC, for ptr matches we want to check the domain is the same, or
    a subdomain. From https://tools.ietf.org/html/rfc7208#section-5.5:
    
    > Check all validated domain names to see if they either match the
    >  <target-name> domain or are a subdomain of the <target-name> domain.
    >  If any do, this mechanism matches.  If no validated domain name can
    >  be found, or if none of the validated domain names match or are a
    >  subdomain of the <target-name>, this mechanism fails to match.
    
    Today we check this with a plain suffix comparison, so the match can
    happen in the middle of a label: "notexample.com" is accepted as a match
    for "ptr:example.com". This is a bug, and can cause incorrect passes.
    
    This patch fixes the problem by using a new isSubdomain helper.
    
    To implement isSubdomain, we have to do ASCII-only case-insensitive
    comparison, due to dubtleties around DNS case-sensitivity rules, and the
    possibility of non-ASCII data in the names.

commit 991f9bdde46b13b219065fb8d6a4d7ce9215b892
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Mon Aug 17 22:08:40 2026 +0100

    ptr: Validate names against the IP being checked
    
    When evaluating a `ptr`, we should check that the IP being checked is
    among the ones returned, as per RFC 7208 section 5.5:
    
    > For each record returned, validate the domain name by looking up its
    > IP addresses. [...] If <ip> is among the returned IP addresses, then
    > that domain name  is validated.
    
    Today, the forward resolution only checks that the name resolves to
    something, not that it includes the IP we are checking. That is a bug
    and can allow some checks to pass incorrectly.
    
    This patch fixes the bug by only adding a name to the list to check if
    one of the addresses it resolves to is the IP being checked.  None of
    the current tests cover this case (that's how the bug snuck in), so this
    patch also adds explicits tests for it.
    
    Note the behaviour was cross-checked against libspf2 and pyspf, and both
    libraries implement it correctly.

commit 7a83916d6b64d8ef0baf3f2b12432b3eed594f49
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Mon Aug 17 21:27:03 2026 +0100

    Update the code to use modern Go features/functions
    
    Now that the minimum supported Go version is 1.25, this patch updates
    the code to make use of some new features and functions to improve
    readability.
    
    There are no functional changes.
    
    The Result values are now const instead of var, so callers can no longer
    reassign them. Note this means "&spf.Pass" and assignments to it (and friends)
    no longer compile. But neither are expected in this context, and a review of
    all known users found no instances of problematic usage.

commit 245e1de25f72e84bd569f3bc9f35efe00ff50b12
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Mon Aug 17 21:06:43 2026 +0100

    test: Remove internal/dnstest package
    
    The internal/dnstest package was needed only due to a limitation in the
    previous fuzz testing harness.
    
    In modern tooling, the fuzz tests can make use of other test helpers, so
    this patch removes the internal package and moves its code to a normal
    test file.

commit 3110cbeb516a12d62ed526f930a0a009590dca6f
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Mon Aug 17 20:47:29 2026 +0100

    test: Update and fix fuzz tests to modern tooling
    
    This patch updates the fuzz tests to modern tooling (after the bump in
    minimum Go version to 1.25), and also fix a bug that was causing the
    record not to be fully evaluated.
    
    As part of this, the fuzzing can now exercise a lot more code, and the
    corpus has been updated accordingly, after a 10m run.
    
    Current coverage of the fuzzing corpus (measured with
    `go test -run=Fuzz -cover`) is 87.2%.

commit 687a1f11e95cef5b2bdc07a00e8ab70a6941ea88
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Mon Aug 17 20:41:12 2026 +0100

    go: Bump minimum supported version to 1.25
    
    This commit bumps the minimum supported Go version to 1.25.
    
    Go 1.25 was released 2025-08-12, a year ago by now, and a lot of changes
    have happened since the previous minimum of 1.15.
    
    This is in preparation for some upcoming changes, e.g. update the fuzz
    testing to modern tooling.

commit 541dee7040ae1f0ba690e25ec1767ab79e9eb4b1
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Mon Aug 17 20:05:48 2026 +0100

    Validate IP addresses given to Check functions
    
    The IP address passed to the Check functions must be valid, otherwise
    the library can't properly do an SPF check.
    
    If they're not valid, they can cause a panic in some evaluations. To
    protect against this (unlikely) scenario, this patch adds some checks.
    
    Now, if an invalid IP is given, the Check functions return an error.

commit 36663db334c24069e5ea0d348a6e57cfb6287dfd
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 16 14:50:32 2026 +0100

    doc: Remove now-defunct Go Report Card from the README
    
    The Go Report Card website has been closed down, remove references to it
    from the README file.

commit c7ffeee93a59b68a6f1d280e860b076cbb4ca93e
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 16 14:32:51 2026 +0100

    ptr: Fix DNS count check on repeated terms
    
    Each "ptr" term counts against the lookup limit, even if we already have
    the names from a previous one and don't need to query DNS again: the RFC
    limits the number of terms that cause DNS lookups, not the number of
    queries we end up making:
    
    > The following terms cause DNS queries: the "include", "a", "mx",
    > "ptr", and "exists" mechanisms, and the "redirect" modifier.  SPF
    > implementations MUST limit the total number of those terms to 10
    > during SPF evaluation, to avoid unreasonable load on the DNS.  If this
    > limit is exceeded, the implementation MUST return "permerror".
    
    https://tools.ietf.org/html/rfc7208#section-4.6.4
    
    Today, we resolve each address only once per appeareance (so `ptr:a.com
    ptr:a.com` does only one actual DNS lookup), but we only count it once
    for the purpose of DNS counting limits, which is technically incorrect.
    
    This patch fixes the problem by counting each `ptr` term, regardless of
    whether a DNS lookup was actually needed.
    
    This is similar to what was done in commit
    5a188ab835d1e8da402a8c6966a57dcd9dd81354 for the `mx` term.

commit 42e35196b3997a40337fed3c1fe37b8cd8e43c21
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 16 14:16:50 2026 +0100

    Fix DNS void lookup limit checks
    
    The RFC text for "void lookups" is:
    
    > As described at the end of Section 11.1, there may be cases where it
    > is useful to limit the number of "terms" for which DNS queries return
    > either a positive answer (RCODE 0) with an answer count of 0, or a
    > "Name Error" (RCODE 3) answer.  These are sometimes collectively
    > referred to as "void lookups".  SPF implementations SHOULD limit
    > "void lookups" to two.  An implementation MAY choose to make such a
    > limit configurable.  In this case, a default of two is RECOMMENDED.
    > Exceeding the limit produces a "permerror" result.
    
    https://datatracker.ietf.org/doc/html/rfc7208#section-4.6.4
    
    Today, we count void lookups as they happen, but only check the limit
    when moving on to the next term. If there is no next term, the excess
    goes unnoticed: a record ending in a void lookup that goes over the
    limit is evaluated to the end, and returns neutral instead of permerror.
    
    The same happens across an "include": the recursive check returns
    neutral, so the include is treated as not matching, instead of making
    the evaluation return permerror.
    
    The DNS lookup limit had the same problem, and was fixed in commit
    8f601a66eb0d7ddb3b976950a42c3c92047891d8. This patch does the equivalent
    for the void lookup counter: check the limit in countVoidLookup, right
    after incrementing it, and stop the evaluation there.
    
    Note that unlike the lookup limit, we can only tell a lookup was void
    after doing it, so the check has to happen after the lookup and not
    before it.

commit e1c8fc685fa67b85bde8577b92e36db2c16b2834
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Aug 16 13:26:10 2026 +0100

    test: Add YAML test for DNS lookup limits
    
    This patch adds a YAML test for the behaviour around DNS lookup limits,
    which were fixed in commit 8f601a66eb0d7ddb3b976950a42c3c92047891d8.

commit 8f601a66eb0d7ddb3b976950a42c3c92047891d8
Author: Christian Joergensen <christian@technobabble.dk>
Date:   Sat Aug 8 22:23:27 2026 -0400

    Fix off-by-one counting for DNS record lookups
    
    The DNS record lookup limiting has an off-by-one error, and also has some
    incorrect logic because of doing the check centrally (instead of before a lookup).
    
    This patch fixes those problems by doing the check in a helper function, and
    using it before a DNS lookup on the appropriate locations.
    
    Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
      Adjusted commit message.

commit 3c0f83d66579c39a38dd3adcabc0007a883997a0
Author: tobiloba ogundiyan <apprentice_py@icloud.com>
Date:   Thu Mar 27 08:26:07 2025 +0000

    test: Group IP address vars into a single block
    
    This commit groups related IP test address variables into a single block
    for improved readability and consistency, and to match the coding style
    from the rest of the codebase. No functional changes.
    
    From https://github.com/albertito/spf/pull/10.
    
    Amended-by: Alberto Bertogli <albertito@blitiri.com.ar>
      Adjusted commit message.

commit 3731c77a3e96a57212e32af95c22e37368df0807
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Wed Jul 5 17:35:06 2023 +0100

    doc: Minor wording and formatting updates
    
    This patch removes the list of supported mechanisms and modifiers, which
    is unnecessary since we accept all of them, and does a gofmt -s pass to
    update some of the other comments to the current standard style.

commit 6140b4090e9e7150741ff4c254866f154af0bb57
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sun Nov 20 11:30:51 2022 +0000

    ci: Use GitHub actions instead of GitLab CI
    
    I'm running against the GitLab CI usage limits, and unfortunately that
    causes the pipelines to error out, instead of pausing/not running them.
    Those false negatives are confusing and misleading.
    
    Move the CI to GitHub actions for now, which has much higher usage
    limits.

commit 3140e26091f8630a1052df5a0b759193d056cf92
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Sat Sep 3 12:10:13 2022 +0100

    debian/watch: Update to use upstream's git

commit 231cd74e89f2e06e5723a2902cd8b2212500a83a
Author: Alberto Bertogli <albertito@blitiri.com.ar>
Date:   Mon Aug 8 17:09:38 2022 +0100

    test: Update fuzz tests to Go's standard toolchain
    
    The fuzz tests were written before Go added fuzzing support to its
    standard toolchain, in Go 1.18.
    
    This patch updates them to the standard toolchain.
    
    Note that a tag must still be specified manually in order to run them,
    because the minimum supported Go version (1.15) does not have fuzzing
    support, and we don't want tests to fail because of it.
    
    Once our minimum supported version is >= 1.18, we will enable them by
    default.


https://salsa.debian.org/api/v4/projects/go-team%2Fpackages%2Fgolang-blitiri-go-spf API request failed: 401 Unauthorized at /srv/qa.debian.org/data/vcswatch/vcswatch line 410.
Created: 2022-09-03 Last update: 2026-09-01 13:33
Standards version of the package is outdated. wishlist
The package should be updated to follow the last version of Debian Policy (Standards-Version 4.7.4 instead of 4.6.1).
Created: 2022-12-17 Last update: 2026-03-31 15:01
news
[rss feed]
  • [2022-09-05] golang-blitiri-go-spf 1.5.1-1 MIGRATED to testing (Debian testing watch)
  • [2022-09-04] Accepted golang-blitiri-go-spf 1.5.1-1 (source) into unstable (Alberto Bertogli) (signed by: Nilesh Patra)
  • [2022-07-01] golang-blitiri-go-spf 1.4.0-1 MIGRATED to testing (Debian testing watch)
  • [2022-07-01] golang-blitiri-go-spf 1.4.0-1 MIGRATED to testing (Debian testing watch)
  • [2022-06-28] Accepted golang-blitiri-go-spf 1.4.0-1 (source) into unstable (Alberto Bertogli) (signed by: Shengjing Zhu)
  • [2021-11-23] golang-blitiri-go-spf 1.3.0-1 MIGRATED to testing (Debian testing watch)
  • [2021-11-20] Accepted golang-blitiri-go-spf 1.3.0-1 (source) into unstable (Alberto Bertogli) (signed by: Shengjing Zhu)
  • [2020-07-02] golang-blitiri-go-spf 1.1.0-1 MIGRATED to testing (Debian testing watch)
  • [2020-06-29] Accepted golang-blitiri-go-spf 1.1.0-1 (source) into unstable (Alberto Bertogli) (signed by: Martina Ferrari)
  • [2019-10-27] golang-blitiri-go-spf 0.0+git20191018.0.a683815-1 MIGRATED to testing (Debian testing watch)
  • [2019-10-25] Accepted golang-blitiri-go-spf 0.0+git20191018.0.a683815-1 (source) into unstable (Alberto Bertogli) (signed by: Martín Ferrari)
  • [2017-09-24] golang-blitiri-go-spf 0.0+git20170821.0.33aa985-1 MIGRATED to testing (Debian testing watch)
  • [2017-09-17] Accepted golang-blitiri-go-spf 0.0+git20170821.0.33aa985-1 (source all) into unstable, unstable (Alberto Bertogli) (signed by: Martín Ferrari)
bugs [bug history graph]
  • all: 0
links
  • homepage
  • lintian
  • buildd: logs, reproducibility
  • popcon
  • browse source code
  • other distros
  • debci
ubuntu Ubuntu logo [Information about Ubuntu for Debian Developers]
  • version: 1.5.1-1

Debian Package Tracker — Copyright 2013-2025 The Distro Tracker Developers
Report problems to the tracker.debian.org pseudo-package in the Debian BTS.
Documentation — Bugs — Git Repository — Contributing