1. 21 Jan, 2021 1 commit
    • Rob Swindell's avatar
      Support single-part MIME-encoded messages in SMBLIB · c90ba307
      Rob Swindell authored
      This involved the removal of the content-transfer-decoding feature of the SMTP mail server since we need single-part MIME-attached file contents to be stored in their original encoded form (e.g. base64-encoded) and not in binary, for the message body text (where NULs aren't allowed, CR/LF is appended, etc).
      I accidentally made this change to smbtxt.c in the new_file_base branch and then copied over here, so there's some unrelated innocuous changes (comment header, removal of SMBCALL) that hopefully won't cause a merge conflict later.
      I don't actually receive single-part MIME attached files, so depending on others (e.g. Nelgin and Dream Master) to test for me.
  2. 18 Jan, 2021 1 commit
    • Rob Swindell's avatar
      Safe string handling with config-load error messages · 99dbeb14
      Rob Swindell authored
      We were just trusting that the error strings would be shorter than 256 (usually), but since we're including paths and strerror() results, we really have no control over the length of the error strings. So enforce some healthy boundaries. This could explain the crashes that Divarin of Mutiny is seeing with SCFG on WinXP or maybe it was the truncsp(strerror()) stuff that was just removed as well. We'll see...
  3. 30 Dec, 2020 1 commit
    • Rob Swindell's avatar
      Connection and logon linked lists need re-init for every recycle · b5d19603
      Rob Swindell authored
      Each list mutex is destroyed in the call to listFree() in cleanup(). Without a call to listInit(), the mutex is not recreated and thus the lists are no longer mutex-protected after a recycle. No negative consequences were observed from this issue, but a potential issue it is (was).
  4. 27 Dec, 2020 1 commit
    • Rob Swindell's avatar
      Don't allow forwarding-netmail loops · 48627415
      Rob Swindell authored
      Leave it to new users to do weird stuff and define a mail-forward loop. Outsmart them and don't allow forwarding when the destination is a local address (QWKnet, FidoNet, or Internet).
  5. 13 Dec, 2020 1 commit
  6. 24 Nov, 2020 1 commit
    • Rob Swindell's avatar
      Stop pretending to configure the JavaScript Context stack · c0cd8686
      Rob Swindell authored
      The argument to JS_NewContext that we were allowing to be configured was not the contest stack size, but rather:
      "The size, in bytes, of each "stack chunk". This is a memory management tuning parameter which most users should not adjust. 8192 is a good default value." - per Mozilla.
      So we're just going to use the suggested default, hard-coded.
  7. 21 Nov, 2020 2 commits
    • Rob Swindell's avatar
      Better FTN netmail gating support · 22faceee
      Rob Swindell authored
      Revert the previous change to the mailsrvr (don't try to parse the MS Outlook singled-quoted names in to/from header fields).
      Instead, use the new matchusername() to perform a liberal name match against the name portion of the destination email address and if it matches, go ahead and use the quoted-name field. Otherwise, use the name portion of the destination address as the TO field for the FTN netmail message.
    • Rob Swindell's avatar
      The Received/trace header should contain the forward-path for "for" · 24021e05
      Rob Swindell authored
      instead of the potentially-alias'd delivery address. The angle-brackets
      (now included) appear to be standards-compliant.
  8. 20 Nov, 2020 2 commits
  9. 19 Nov, 2020 1 commit
  10. 07 Nov, 2020 1 commit
    • Rob Swindell's avatar
      Fix sendmail bug introduced in 6851910b. · 3aacaa64
      Rob Swindell authored
      The "MAIL FROM" command argument must always be enclosed in angle-brackets. Some mail servers (e.g. gmail, aol) would reject messages not delivered in this manner, e.g.:
      mx-aol.mail.gm0.yahoodns.net replied with:
      "501 Syntax error in parameters or arguments tnmpmscs"
      instead of the expected reply:
      "250 ..."
      gmail-smtp-in.l.google.com replied with:
      "555 5.5.2 Syntax error. o6si11103060plk.317 - gsmtp"
      instead of the expected reply:
      "250 ..."
  11. 06 Nov, 2020 1 commit
    • Rob Swindell's avatar
      Replace ctype.h function calls with new MSVC-safe XPDEV macros · 8a7b7308
      Rob Swindell authored
      I'm fed-up with MSVC assertions in ctype functions (e.g. isdigit, isprint, isspace, etc.) when called with out-of-range (e.g. negative) values.
      This problem only affects MSVC debug builds, but if you run them (like I do), these things are like little time bombs that can drive you crazy (knocking your board out of service).
      The new macros names are bit more descriptive as well.
  12. 05 Nov, 2020 1 commit
    • Rob Swindell's avatar
      Detect and reject forged "from" fields in submitted msg headers · ba8d544c
      Rob Swindell authored
      For non-authenticated SMTP clients, if the "From:" header field contains a "name" which appears to be an email address (i.e. it has an '@' in it), and that address does not match the *actual* address in the "From:" field, reject the mail with an error message about the forged/mismatched address.
  13. 26 Oct, 2020 2 commits
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      Use a mutex to serial message saving among multiple clients/threads · 8cea25da
      Rob Swindell authored
      This work-around shouldn't be necessary, but at least on my Linux/Samba setup, when GitLab sends out notification emails to subscribers and creates 4+ simultaneous SMTP connections and sends email messages, sometimes (often) it ends up with a lock-timeout on the mail base. The file locking should handle the contention fine, but somehow I end up in scenarios where savemsg() takes 30 seconds to complete (the configured SMB lock-timeout is 30 seconds, likely not a coincidence) - and this causes other clients to timeout trying to lock the base. Just use a sharead-mutex here instead as a work-around. The wait time is indefinite, might want to consider using a timed-wait instead.
  14. 25 Oct, 2020 1 commit
  15. 24 Oct, 2020 1 commit
    • Rob Swindell's avatar
      More log message overhaul. POP3 CAPA cmd support in transaction state. · 816ea9ed
      Rob Swindell authored
      Log the IP address first in most log messages.
      Condense white-space in log messages to a single space.
      Log the server IP address of incoming connections.
      (more) Intelligent email address enclosure in angle-brackets.
      Better duplicate address comparison (just for log message).
      Fix wrong order of lprintf arguments in !UNKNOWN USER log message (new bug).
  16. 23 Oct, 2020 4 commits
  17. 22 Oct, 2020 1 commit
  18. 21 Oct, 2020 3 commits
  19. 13 Sep, 2020 4 commits
  20. 07 Sep, 2020 1 commit
    • Rob Swindell's avatar
      Fix observed race-condition resulting in the HOSTNAME @-code being blank. · dee21ed6
      Rob Swindell authored
      Eliminate the hack in each server where it will over-write startup host_name
      (with the configured Internet email address), if it's blank. This hack was
      subject to a race condition where the parent app (e.g. sbbsctrl.exe) would
      clear or re-initialize the host_name after the sever threads had initialized.
      Instead, just use a function which will return either the startup->host_name
      or (fallback to) scfg.inet_addr.
  21. 30 Aug, 2020 1 commit
    • Rob Swindell's avatar
      Only over-ride (lower the severity) of the cryptlib log msg for a single case · 20393557
      Rob Swindell authored
      Add another "get cryptlib error string" (at least, that's what I assume GCES
      stands for) that allows the log level to be specified, rather than derived
      from Cryptlib thinks the log level should be. Do this rather than adding one
      (lowering the severity) of every cryptlib log message as I did in the previous
      commit to this file.
  22. 29 Aug, 2020 1 commit
  23. 16 Aug, 2020 1 commit
  24. 08 Aug, 2020 1 commit
    • rswindell's avatar
      The problem: the sysop (me) is not notified of critical errors (e.g.... · 5899a303
      rswindell authored
      The problem: the sysop (me) is not notified of critical errors (e.g. synchro.net zone file problems) in a timely manner.
      Part of the solution: notify a configured user (e.g. user #1) via short-message/telegram and email/netmail logged-errors when messages of a configured severity (e.g. "Critical") are logged.
      The second part of the solution (coming next) will be allowing timed events to log a message of a configurable severity logged when the event fails (returns a non-zero error level to sbbs).
      I'm saving the error-notification-user-number and log-severity as part of the node.cnf file because:
      - that's where the validation user number is already set
      - I can conceive of a large system were certain node ranges (different instances of sbbs) might want different operators to be notified of logged-errors
      This also means I eliminated all the legacy com port/modem stuff from the end of the node.cnf file. None of that is used in sbbs v3.
      Also included in this commit are improvements around logging:
      - reduce the severity of UDP recvfrom failures in services
      - a more detailed log message when the mail server successfully delivers an email (via SMTP) - easier to answer the question: was that email you/they sent delivered successfully?
  25. 20 Jul, 2020 1 commit
  26. 02 Jun, 2020 2 commits
  27. 01 Jun, 2020 1 commit
  28. 14 May, 2020 1 commit
    • rswindell's avatar
      No longer dynamically allocate compiled access requirment (AR) strings for configuration items. · 110cc8ac
      rswindell authored
      SCFG for Win32 is linked against a load_cfg lib that builds withOUT SCFG defined, so these compiled AR elements were allocated and then many SCFG operations (e.g. copy/paste, create new) would copy the allocated ARs to another configuration and then be subjected to double-free upon exit/clean-up (resulting in exception or crash).
      Just get rid of this cruft and some other related RAM-byte-saving hold-overs from the MS-DOS days.