__                 _ _                _
  / _| ___   ___   __| | |__   __ _ _ __| | __
 | |_ / _ \ / _ \ / _` | '_ \ / _` | '__| |/ /
 |  _| (_) | (_) | (_| | |_) | (_| | |  |   <
 |_|  \___/ \___/ \__,_|_.__/ \__,_|_|  |_|\_\

A personal BBS  ·  Missoula, Montana  ·  formerly NaClCON BBS

Connect from your terminal: telnet naclconbbs.net 23  |  ssh naclconbbs.net -p 2222

  • exec/load/salib.js

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sat Jun 27 03:03:33 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/c4b60eea8f3ae6a35b927131
    Modified Files:
    exec/load/salib.js
    Log Message:
    salib.js: send spamd message from a single read, not file_size()+sendfile()

    The Content-length announced to spamd was computed from file_size() while
    the body was delivered separately via sendfile() -- two operations on the
    same temp file. When that file lives on a soft network mount (e.g. a CIFS loopback), a stat and a later send can disagree under load: the body short-reads while the size call already returned the full length, so spamd rejects the message with "Content-Length mismatch ... protocol error 76"
    and spamc.js passes it through unscanned.

    Read the file once into memory and derive Content-length from the bytes actually sent, so the two can never disagree (a short read just scans a
    shorter message rather than erroring). spamc.js already caps message size,
    so reading into memory is bounded.

    Surfaced after enabling mailproc ProcessDNSBL processing tripled the
    volume flowing through spamc.js.

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

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