• docs/v322_new.md exec/loa

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sunday, June 07, 2026 18:41:00
    https://gitlab.synchro.net/main/sbbs/-/commit/6033e9d61dad951da5d36309
    Modified Files:
    docs/v322_new.md exec/load/binkp.js
    Log Message:
    BinkIT: don't record successful binkp/1.1 callouts as failures

    The JSBinkP session loop only breaks out on *receiving* a final M_EOB,
    but in binkp/1.1's two-M_EOB handshake the completed state is usually
    reached by *sending* the last EOB. After sending it, the peer closes
    the connection, and the next loop iteration attempts one more M_EOB on
    the now-closed socket; that send fails and (since b795cf6a3d) marked the
    whole session as failed -- even though all files had already been sent
    and acknowledged. binkit.js then wrote "[callout failure]" to data/binkstats.ini with the sent file(s) listed.

    binkp/1.0 peers (Mystic, mbcico) exchange a single M_EOB each and break immediately on receipt, so they were recorded correctly; the bug hit
    binkp/1.1 peers (Synchronet/BinkIT, binkd) -- the vast majority of
    sessions -- producing huge "failed_callouts" counts despite mail
    flowing fine. Reported in DOVE-Net's sync_sysops by Khronos and Gamgee.

    Fix: a failed closing M_EOB send is benign once our sent files have all
    been acknowledged (pending_ack empty); break the loop without failing
    the session in that case. Only fail when files remain unacknowledged.
    The on-wire behavior is unchanged. Bumped JSBinkP revision to 6 so the
    fix is identifiable via the vers= field in binkstats.ini.

    Validated with a two-process TCP loopback harness: binkp/1.1 callout
    flips from false to true (file transferred either way); binkp/1.0 and
    no-files polls unchanged; a peer that drops mid-transfer still fails.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Friday, June 26, 2026 01:24:00
    https://gitlab.synchro.net/main/sbbs/-/commit/c00526fb8f7f91aa16e28eee
    Modified Files:
    docs/v322_new.md exec/load/salib.js exec/spamc.js
    Log Message:
    spamc.js/salib.js: let SpamAssassin see the originating relay IP

    Enable the synthetic Received-header injection (set msg.hello_name from
    the mailproc hello_name global) so spamd can identify the connecting
    client and run sender-IP DNSBLs (Spamhaus, etc.) and SPF -- previously
    every message scored with NO_RELAYS/NO_RECEIVED, neutering those checks.

    Strip the synthetic Received from the re-written message so the stored
    mail doesn't duplicate the Received the mail server adds at delivery
    (the duplicate that caused this to be disabled in f886a41 / only-3-strip). Strip it on its own: SA consumes the injected Return-Path, so a combined
    match never hit.

    Validated live: NO_RELAYS/NO_RECEIVED gone, SPF_PASS + RCVD_IN_* now
    firing, stored messages carry exactly one Received header.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
    (cherry picked from commit 567c45486b2cb958d70a2fabe2bd9f29e2c8ade0)

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net