• Can we send an email DIRECTLY to Usenet ng moderators using Windows Thunderbird/Betterbird?

    From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows11 on Thu Jan 29 15:20:04 2026
    From Newsgroup: news.software.readers

    Q: Can we send an email DIRECTLY to Usenet ng moderators using
    Thunderbird/Betterbird?
    A: ?

    BACKGROUND:
    I wrote my own Windows newsreader but it doesn't call Thunderbird when a
    post to a moderated group fails. Yet, looking up why, apparently most
    modern newsreaders fall back to sending email to the moderator via the MUA.
    From: Maria Sophia <mariasophia@comprehension.com>
    Newsgroups: alt.free.newsservers,news.software.readers,alt.comp.os.windows-10
    Subject: The perils of writing your own newsreader - the perils of posting to moderated newsgroups
    Date: Thu, 29 Jan 2026 14:06:28 -0500
    Message-ID: <10lgb3k$1sok$1@nnrp.usenet.blueworldhosting.com>

    But can we send an email DIRECTLY to the moderators using Thunderbird?
    Since I look things up before I ask them here, apparently we can do that.

    Tutorial: Sending a moderated Usenet post via Thunderbird / Betterbird Objective: Send an article to a moderated ng by email using Thunderbird.

    1. Open a new message
    i. In Thunderbird, click:
    ii. Write (New Message)

    2. Enable the "Newsgroups" header field (do this once)
    a. In the compose window, click the three dots (More)
    b. Choose: Customize From/To/Cc/Bcc...
    c. Check: Newsgroups
    d. Click: OK
    e. We should now see a "Newsgroups:" field in the header area

    For my Betterbird version 102.10.1-bb34 (64-bit) on Windows
    i. There is no three-dots menu
    ii. There is no "To:" dropdown
    iii. There is no "View > Headers"
    iv. Ctrl+Shift+F9 does nothing
    v. There is no gear icon to the right of the "To" line
    vi. Ctrl+L does nothing
    vii. mail.compose.other.header = Newsgroups does nothing
    etc.
    So these instructions are for Thunderbird only (therefore untested).

    3. Fill in the headers (back in Thunderbird)
    To: misc-taxes-moderated@moderators.isc.org
    Newsgroups: misc.taxes.moderated
    Subject: Methods to calculate & file USA taxes with privacy on Windows
    From: You <you@foo.com>

    4. Paste your article body
    i. In the message body area, paste the text to be posted
    ii. (no extra headers\ are needed here).

    5. Send the message
    i. Click:
    ii. Send

    What Thunderbird (apparently) adds automatically:
    A. Adds Date:
    B. Adds Message-ID:
    C. Adds MIME headers (Content-Type, etc.)
    D. Handles encoding and SMTP delivery

    What we must provide:
    A. To: misc-taxes-moderated@moderators.isc.org
    B. Newsgroups: misc.taxes.moderated
    C. Subject:
    D. From:
    E. Article body

    N.B.
    That is apparently the minimum for a valid moderated Usenet submission.
    Please advise if this ad hoc tutorial needs to be modified for your needs. Apparently there no longer is an alt.test.moderated to use to test with.

    Drat. I just tested this with Betterbird 102.10.1-bb34 (64-bit).
    None of the menus above exist in Betterbird.
    Apparently that's because Betterbird uses a Simplified Header UI.

    Apparently Betterbird 102 is optimized for email, not for news posting, and
    the developers removed the UI for adding arbitrary headers, including Newsgroups.

    Apparently Thunderbird 102 still has it but Betterbird 102 does not.

    If you know how to get it to work with Betterbird, let me know.
    If it works for you with Thunderbird, let us all know also.
    --
    Usenet is where people with vast knowledge converge to discuss ideas.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Thu Jan 29 15:27:56 2026
    From Newsgroup: news.software.readers

    Drat. I goofed in the newsgroup header line (which is entered manually).

    Correcting the newsgroup header line (which I type in manually) from:
    Newsgroups: alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows11
    Subject: Can we send an email DIRECTLY to Usenet ng moderators using Windows Thunderbird/Betterbird?
    Date: Thu, 29 Jan 2026 15:20:04 -0500
    Message-ID: <10lgfdk$1urc$1@nnrp.usenet.blueworldhosting.com>

    To:
    Newsgroups: alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11

    Full post repeated below for continuity.

    Q: Can we send an email DIRECTLY to Usenet ng moderators using TB/BB?
    A: ?

    BACKGROUND:
    I wrote my own Windows newsreader but it doesn't call Thunderbird when a
    post to a moderated group fails. Yet, looking up why, apparently most
    modern newsreaders fall back to sending email to the moderator via the MUA.
    From: Maria Sophia <mariasophia@comprehension.com>
    Newsgroups:
    alt.free.newsservers,news.software.readers,alt.comp.os.windows-10
    Subject: The perils of writing your own newsreader - the perils of posting
    to moderated newsgroups
    Date: Thu, 29 Jan 2026 14:06:28 -0500
    Message-ID: <10lgb3k$1sok$1@nnrp.usenet.blueworldhosting.com>

    But can we send an email DIRECTLY to the moderators using Thunderbird?
    Since I look things up before I ask them here, apparently we can do that.

    Tutorial: Sending a moderated Usenet post via Thunderbird / Betterbird Objective: Send an article to a moderated ng by email using Thunderbird.

    1. Open a new message
    i. In Thunderbird, click:
    ii. Write (New Message)

    2. Enable the "Newsgroups" header field (do this once)
    a. In the compose window, click the three dots (More)
    b. Choose: Customize From/To/Cc/Bcc...
    c. Check: Newsgroups
    d. Click: OK
    e. We should now see a "Newsgroups:" field in the header area

    For my Betterbird version 102.10.1-bb34 (64-bit) on Windows
    i. There is no three-dots menu
    ii. There is no "To:" dropdown
    iii. There is no "View > Headers"
    iv. Ctrl+Shift+F9 does nothing
    v. There is no gear icon to the right of the "To" line
    vi. Ctrl+L does nothing
    vii. mail.compose.other.header = Newsgroups does nothing
    etc.
    So these instructions are for Thunderbird only (therefore untested).

    3. Fill in the headers (back in Thunderbird)
    To: misc-taxes-moderated@moderators.isc.org
    Newsgroups: misc.taxes.moderated
    Subject: Methods to calculate & file USA taxes with privacy on Windows
    From: You <you@foo.com>

    Drat. I can't find an alt.test.moderated Usenet newsgroup.

    4. Paste your article body
    i. In the message body area, paste the text to be posted
    ii. (no extra headers\ are needed here).

    5. Send the message
    i. Click:
    ii. Send

    What Thunderbird (apparently) adds automatically:
    A. Adds Date:
    B. Adds Message-ID:
    C. Adds MIME headers (Content-Type, etc.)
    D. Handles encoding and SMTP delivery

    What we must provide:
    A. To: misc-taxes-moderated@moderators.isc.org
    B. Newsgroups: misc.taxes.moderated
    C. Subject:
    D. From:
    E. Article body

    N.B.
    That is apparently the minimum for a valid moderated Usenet submission.
    Please advise if this ad hoc tutorial needs to be modified for your needs. Apparently there no longer is an alt.test.moderated to use to test with.

    Drat. I just tested this with Betterbird 102.10.1-bb34 (64-bit).
    None of the menus above exist in Betterbird.
    Apparently that's because Betterbird uses a Simplified Header UI.

    Apparently Betterbird 102 is optimized for email, not for news posting, and
    the developers removed the UI for adding arbitrary headers, including Newsgroups.

    Apparently Thunderbird 102 still has it but Betterbird 102 does not.

    If you know how to get it to work with Betterbird, let me know.
    If it works for you with Thunderbird, let us all know also.
    --
    Usenet is where people with vast knowledge converge to discuss ideas.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Carlos E.R.@robin_listas@es.invalid to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Thu Jan 29 22:01:55 2026
    From Newsgroup: news.software.readers

    On 2026-01-29 21:27, Maria Sophia wrote:
    Drat. I goofed in the newsgroup header line (which is entered manually).

    Correcting the newsgroup header line (which I type in manually) from: Newsgroups: alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows11 Subject: Can we send an email DIRECTLY to Usenet ng moderators using
    Windows Thunderbird/Betterbird?
    Date: Thu, 29 Jan 2026 15:20:04 -0500
    Message-ID: <10lgfdk$1urc$1@nnrp.usenet.blueworldhosting.com>

    To:
    Newsgroups: alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11

    Full post repeated below for continuity.

    Q: Can we send an email DIRECTLY to Usenet ng moderators using TB/BB?
    A: ?

    Certainly. But you have to use an email account.

    If you are asking whether TB will send the NNTP post that has to be
    moderated, automatically to an email address, instead of to an Usenet
    group, I do not know.


    Cheers, Carlos.
    ESEfc-Efc+, EUEfc-Efc|;
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Thu Jan 29 16:42:35 2026
    From Newsgroup: news.software.readers

    Carlos E.R. wrote:
    Q: Can we send an email DIRECTLY to Usenet ng moderators using TB/BB?
    A: ?

    Certainly. But you have to use an email account.

    If you are asking whether TB will send the NNTP post that has to be moderated, automatically to an email address, instead of to an Usenet
    group, I do not know.

    Hi Carlos,

    I guess I'm confused 'cuz I've never done it, and, of course, I care about privacy so the email it's sent from must be a throwaway email but even so
    how do we insert the required NNTP-required HEADERS into that email?

    $ sendmail misc-taxes-moderated@moderators.isc.org < article.txt

    My question is in what format do we add the HEADERS into that email?
    Do we just prepend the headers as part of the body of the email?

    From: (mandatory Usenet header?)
    Newsgroups: (mandatory Usenet header?)
    Subject: (mandatory Usenet header?)
    Date: (mandatory Usenet header?)
    Message-ID: (optional perhaps?)
    Organization: (optional)
    Content-Type: (if needed)
    ...and then a blank line, followed by the article text...
    This is the body of my Usenet post.
    --
    Test sig.

    Q: Are those headers to be in the 'body' of the message to the mods?
    A: ?


    THE REST OF THIS POST IS A FAILED ATTEMPT AT ADDING SENDMAIL ON WINDOWS:

    Since sendmail doesn't exist per se on the Windows command line, I just
    looked it up, and there is apparently a way to use smtp servers.
    <https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/send-mailmessage>
    But you still need to set the SMTP server:
    smtp.mail.yahoo.com
    smtp.comcast.net
    smtp.office365.com
    mail.twc.com
    smtp.mail.att.net
    smtp.gmail.com
    etc.

    Apparently some people install a tiny local fake SMTP relay that forwards
    to a real SMTP server using a fake sendmail.exe for Windows executable.
    smtp_server=smtp.gmail.com
    smtp_port=587
    auth_username=youraccount@gmail.com
    auth_password=yourapppassword

    sendmail.exe misc-taxes-moderated@moderators.isc.org < article.txt
    <https://websistent.com/using-sendmail-on-windows/>

    Unfortunately, I can't find any reliably available, actively hosted, trustworthy download link for the classic Windows "Fake Sendmail" (sendmail.exe) that used to be bundled with PHP on Windows.

    Options might be blat, mailsend-ng, msmtp (vis msys2 or cygwin) or wsl.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Alan@nuh-uh@nope.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Thu Jan 29 14:01:24 2026
    From Newsgroup: news.software.readers

    On 2026-01-29 12:27, Maria Sophia wrote:
    Drat. I goofed in the newsgroup header line (which is entered manually).

    Riiiiiight.


    Correcting the newsgroup header line (which I type in manually) from:

    Riiiiight.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Marco Moock@mm@dorfdsl.de to news.software.readers on Fri Jan 30 08:40:45 2026
    From Newsgroup: news.software.readers

    On 29.01.2026 16:42 Uhr Maria Sophia wrote:

    I guess I'm confused 'cuz I've never done it, and, of course, I care
    about privacy so the email it's sent from must be a throwaway email
    but even so how do we insert the required NNTP-required HEADERS into
    that email?

    That is being done by the moderation software that the posts the
    message with the Approved: header to an NNTP server (that allows this
    for the moderator's account).

    $ sendmail misc-taxes-moderated@moderators.isc.org < article.txt

    My question is in what format do we add the HEADERS into that email?
    Do we just prepend the headers as part of the body of the email?

    Just add the headers to the other headers that already exist and remove
    those headers that must not be present in Netnews (the RFCs mention
    which ones).

    From: (mandatory Usenet header?)
    Newsgroups: (mandatory Usenet header?)
    Subject: (mandatory Usenet header?)
    Date: (mandatory Usenet header?)
    Message-ID: (optional perhaps?)
    Organization: (optional)
    Content-Type: (if needed)
    ...and then a blank line, followed by the article text...
    This is the body of my Usenet post.
    --
    Test sig.

    Q: Are those headers to be in the 'body' of the message to the mods?
    A: ?

    No, Body is the part after the empty line after the headers.

    Apparently some people install a tiny local fake SMTP relay that
    forwards to a real SMTP server using a fake sendmail.exe for Windows executable. smtp_server=smtp.gmail.com

    Why do you need that?
    If you want to post to a moderated group, choose a server that allows
    you to do so.

    In other cases you need a local SMTP client: Have a look at swaks.
    --
    kind regards
    Marco

    Send spam to 1769701355muell@stinkedores.dorfdsl.de

    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Mr. Man-wai Chang@toylet.toylet@gmail.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows11 on Fri Jan 30 17:42:52 2026
    From Newsgroup: news.software.readers

    On 1/30/2026 4:20 AM, Maria Sophia wrote:
    Q: Can we send an email DIRECTLY to Usenet ng moderators using
    Thunderbird/Betterbird?

    You sure that those noble moderators would reply? :)

    And is there a Usenet moderator newsgroup that guarantees a reply in public?
    --
    @~@ Simplicity is Beauty! Remain silent! Drink, Blink, Stretch!
    / v \ May the Force and farces be with you! Live long and prosper!!
    /( _ )\ https://sites.google.com/site/changmw/
    ^ ^ https://github.com/changmw/changmw
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Carlos E.R.@robin_listas@es.invalid to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Fri Jan 30 12:46:08 2026
    From Newsgroup: news.software.readers

    On 2026-01-29 22:42, Maria Sophia wrote:
    Carlos E.R. wrote:
    Q: Can we send an email DIRECTLY to Usenet ng moderators using TB/BB?
    A: ?

    Certainly. But you have to use an email account.

    If you are asking whether TB will send the NNTP post that has to be
    moderated, automatically to an email address, instead of to an Usenet
    group, I do not know.

    Hi Carlos,

    I guess I'm confused 'cuz I've never done it, and, of course, I care about privacy so the email it's sent from must be a throwaway email but even so
    how do we insert the required NNTP-required HEADERS into that email?

    No, it has to be a good email address. One that works.

    It is a subscription, the moderator has to be able to contact you on email.


    The rules will probably depend on each moderated group. I suppose they
    post them somewhere.




    $ sendmail misc-taxes-moderated@moderators.isc.org < article.txt

    My question is in what format do we add the HEADERS into that email?
    Do we just prepend the headers as part of the body of the email?
    -a From: (mandatory Usenet header?)
    -a Newsgroups: (mandatory Usenet header?)
    -a Subject: (mandatory Usenet header?)
    -a Date: (mandatory Usenet header?)
    -a Message-ID: (optional perhaps?)
    -a Organization: (optional)
    -a Content-Type: (if needed)
    -a ...and then a blank line, followed by the article text...
    -a This is the body of my Usenet post.
    -a -- -a Test sig.

    Q: Are those headers to be in the 'body' of the message to the mods?
    A: ?


    I can not answer those questions. I had no idea that sending to an
    Usenet moderated group involved sending emails.

    I would suggest google for documentation.

    ...
    --
    Cheers, Carlos.
    ESEfc-Efc+, EUEfc-Efc|;
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From J. P. Gilliver@G6JPG@255soft.uk to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Fri Jan 30 15:02:11 2026
    From Newsgroup: news.software.readers

    On 2026/1/30 11:46:8, Carlos E.R. wrote:

    []

    I can not answer those questions. I had no idea that sending to an
    Usenet moderated group involved sending emails.

    If you think about it, it has to; however, some news clients make that
    process transparent, i. e. you just go through the normal posting steps
    as you see it, and the client does the necessary. I don't know if TB is
    one such - I am not currently subscribed to any moderated 'groups.

    I think in some cases there's a sort of central clearinghouse for such
    posts, so the address details are common across many 'groups (the
    central clearinghouse then forwards the messages to the relevant
    moderator based on the 'group name); I'm not sure if 'groups _can_ opt
    out of that system, or if they have to become mailing lists or some
    other construct.


    I would suggest google for documentation.

    ...

    Probably the newsgroup "charter", but I've no idea if there's a central repository of those. It's usually included in a post not long after a
    'group's creation, but of course that may have disappeared before the
    server's retention period (or yours). Some 'groups repost their charter (sometimes with revisions, sometimes not) at intervals, such as
    annually. Not sure if those include moderator details, though.
    --
    J. P. Gilliver. UMRA: 1960/<1985 MB++G()ALIS-Ch++(p)Ar++T+H+Sh0!:`)DNAf

    And on the question of authorship, I subscribe to the view that the
    plays were not in fact written by Shakespeare but by someone of the
    same name. - Hugh Bonneville (RT 2014/10/11-17)
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Carlos E.R.@robin_listas@es.invalid to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Fri Jan 30 22:43:49 2026
    From Newsgroup: news.software.readers

    On 2026-01-30 16:02, J. P. Gilliver wrote:
    On 2026/1/30 11:46:8, Carlos E.R. wrote:

    []

    I can not answer those questions. I had no idea that sending to an
    Usenet moderated group involved sending emails.

    If you think about it, it has to; however, some news clients make that process transparent, i. e. you just go through the normal posting steps
    as you see it, and the client does the necessary. I don't know if TB is
    one such - I am not currently subscribed to any moderated 'groups.

    I think in some cases there's a sort of central clearinghouse for such
    posts, so the address details are common across many 'groups (the
    central clearinghouse then forwards the messages to the relevant
    moderator based on the 'group name); I'm not sure if 'groups _can_ opt
    out of that system, or if they have to become mailing lists or some
    other construct.


    I would suggest google for documentation.

    ...

    Probably the newsgroup "charter", but I've no idea if there's a central repository of those. It's usually included in a post not long after a 'group's creation, but of course that may have disappeared before the server's retention period (or yours). Some 'groups repost their charter (sometimes with revisions, sometimes not) at intervals, such as
    annually. Not sure if those include moderator details, though.



    Like you, I have never subscribed to a moderated group, so I have never thought about it, in decades. I simply thought that the news protocol
    would know about it and handle it "somehow". Then the moderator would
    have special software, like a moderated mailing list. Moderated groups
    in Fidonet worked differently, there was no previous approval necessary.
    If you misbehaved, you were banned.

    If it is done by actually sending an email, automatically by
    Thunderbird, TB has to know that address also automatically, and the
    address we use to join the group has to be real.

    Thus Arlen must use his real email with TB and not those scripts he
    uses, in order to post on moderated groups.
    --
    Cheers, Carlos.
    ESEfc-Efc+, EUEfc-Efc|;
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Fri Jan 30 18:29:13 2026
    From Newsgroup: news.software.readers

    Carlos E.R. wrote:
    Like you, I have never subscribed to a moderated group, so I have never thought about it, in decades. I simply thought that the news protocol
    would know about it and handle it "somehow".

    Thanks for discussing this topic which it seems most of us haven't thought much about as we rarely post to moderated newsgroups, and, for the most
    part, when we did, it just worked. So we didn't think much about 'how'.

    I think, based on my tests, that the normal process is that the news server admin decides which moderated groups he wants to peer and then he figures
    out how each moderated group wants to be notified, where, it seems, as John Gilliver noted, "in some cases there's a sort of central clearinghouse".

    I think that address might be <name-of-ng>-moderated@moderators.isc.org
    based on these tests with distinctly different results in that regard.

    This news server apparently does not carry the moderated tax newsgroup.
    But notice that it uses the "clearing house" above, plus some others.
    Taskbar > Runbox > cmd
    telnet news.blueworldhosting.com 119
    200 nnrp.usenet.blueworldhosting.com InterNetNews NNRP server INN
    2.8.0 (20250329 snapshot) ready (posting ok)
    MODE READER
    LIST ACTIVE misc.taxes
    215 Newsgroups in form "group high low status"
    misc.taxes 0000060117 0000000001 y
    .
    LIST ACTIVE misc.taxes.moderated
    215 Newsgroups in form "group high low status"
    .
    LIST MODERATORS
    215 Newsgroup moderators in form "group-pattern:submission-template"
    aioe.*:%s-newsgroup@aioe.org
    fido7.*:%s@fido7.org
    ffm.*:%s@moderators.arcornews.de
    fj.*:%s@moderators.fj-news.org
    medlux.*:%s@news.medlux.ru
    nl.*:%s@nl.news-admin.org
    perl.*:news-moderator-%s@perl.org
    relcom.*:%s@moderators.relcom.ru
    si.*:%s@arnes.si
    ukr.*:%s@sita.kiev.ua
    *:%s@moderators.isc.org
    .
    QUIT

    This news server apparently does carry the moderated tax related newsgroup.
    And notice that it also uses the "clearing house" above, plus some others.
    Taskbar > Runbox > cmd
    telnet paganini.bofh.team 119
    200 paganini.bofh.team InterNetNews NNRP server INN 2.6.4 ready
    (posting ok)
    MODE READER
    LIST ACTIVE misc.taxes
    215 Newsgroups in form "group high low status"
    misc.taxes 0000060041 0000059279 y
    .
    LIST ACTIVE misc.taxes.moderated
    215 Newsgroups in form "group high low status"
    misc.taxes.moderated 0000061574 0000002149 m
    .
    LIST MODERATORS
    215 Newsgroup moderators in form "group-pattern:submission-template"
    fido7.*:%s@fido7.ru
    ffm.*:%s@moderators.arcornews.de
    fj.*:%s@moderators.fj-news.org
    medlux.*:%s@news.medlux.ru
    nl.*:%s@nl.news-admin.org
    perl.*:news-moderator-%s@perl.org
    relcom.*:%s@moderators.relcom.ru
    si.*:%s@arnes.si
    ukr.*:%s@sita.kiev.ua
    *:%s@moderators.isc.org
    .
    QUIT

    Note that sending the article to the first server failed, but sending it to the second server seems to have not failed, but it still needs acceptance.

    I had no idea of this process as I've never set up a news server myself.
    Frank might be able to impart some insight as he was an admin in the past.
    --
    Usenet allows old friends to discuss unique topics of mutual interest.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From J. P. Gilliver@G6JPG@255soft.uk to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sat Jan 31 13:44:01 2026
    From Newsgroup: news.software.readers

    On 2026/1/30 23:29:13, Arlen wrote:
    Carlos E.R. wrote:
    Like you, I have never subscribed to a moderated group, so I have never
    thought about it, in decades. I simply thought that the news protocol
    would know about it and handle it "somehow".

    Thanks for discussing this topic which it seems most of us haven't thought much about as we rarely post to moderated newsgroups, and, for the most part, when we did, it just worked. So we didn't think much about 'how'.

    Well, it seems clear to me that posts to a moderated newsgroup have to
    be sent to the moderator first (as emails?).


    I think, based on my tests, that the normal process is that the news server admin decides which moderated groups he wants to peer and then he figures out how each moderated group wants to be notified, where, it seems, as John Gilliver noted, "in some cases there's a sort of central clearinghouse".

    It hadn't occurred to me that newsservers might do this; I had the
    impression that news clients did.


    I think that address might be <name-of-ng>-moderated@moderators.isc.org
    based on these tests with distinctly different results in that regard.

    When setting up Turnpike, some decades ago, I got the impression that
    the default for moderated 'groups _was_ some common address; the above
    rings a faint bell.

    If the _client_ does it - which would seem a more efficient way, after
    all why involve the newsserver if that can be avoided - then the list of newsgroups must contain a flag for the ones that are moderated, so that
    the client knows to treat posts to it differently. (Posts _in_ it - i.
    e. from other posters, that have already been passed by the moderator[s]
    - can be treated the same as those in any other 'group.)

    As such, moderated 'groups must have some flag in the news client. I
    have a feeling there was such an indication in Turnpike. I've just
    looked at the properties of this 'group in Thunderbird, and I can't
    _see_ a "moderated" indication that isn't ticked, but maybe it only
    appears at all on moderated ones?

    ISTR there was also some mechanism for entering a different moderator
    from the default (@moderators.isc.org) one for 'groups that had a
    moderator whose address wasn't part of that organisation. (That -
    isc.org - is probably what I was [mis?]remembering as a central
    organisation - not really a clearinghouse.)
    []
    --
    J. P. Gilliver. UMRA: 1960/<1985 MB++G()ALIS-Ch++(p)Ar++T+H+Sh0!:`)DNAf

    The motto of the Royal Society is: 'Take nobody's word for it'.
    Scepticism has value. - Brian Cox, RT 2015/3/14-20
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Adam H. Kerman@ahk@chinet.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sat Jan 31 18:02:38 2026
    From Newsgroup: news.software.readers

    J. P. Gilliver <G6JPG@255soft.uk> wrote:
    On 2026/1/30 23:29:13, Arlen wrote:

    . . .

    I think that address might be <name-of-ng>-moderated@moderators.isc.org >>based on these tests with distinctly different results in that regard.

    When setting up Turnpike, some decades ago, I got the impression that
    the default for moderated 'groups _was_ some common address; the above
    rings a faint bell.

    In olden days, every News server had to maintain a list of submission
    addresses in a moderators file. It was recognized that these addresses
    would quickly go out of date. Using a generic form of address meant that
    the moderators file could be maintained centrally, and it became yet
    another function ISC performed on behalf of the Usenet community. Why
    ISC? Specific people worked there.

    This is done for moderated newsgroups in the Big 8 and alt. It's
    performed on behalf of some "language" and regional hierarchies, but not
    all. Moderated newsgroups are not unheard of in larger regional hierarchies like uk, but they are quite rare in smaller ones. I think uk maintains
    its own central list but I don't recall specifically.

    It is possible to maintain a moderators file at a News site without
    relying upon these centrally maintained files but it would be a huge
    pain in the ass to learn all of the submission addresses as they change.

    If the _client_ does it - which would seem a more efficient way, after
    all why involve the newsserver if that can be avoided - then the list of >newsgroups must contain a flag for the ones that are moderated, so that
    the client knows to treat posts to it differently. (Posts _in_ it - i.
    e. from other posters, that have already been passed by the moderator[s]
    - can be treated the same as those in any other 'group.)

    You are speaking of treating a submission address like the submission
    address of a moderated mailing list. It can certainly be done by an
    email client.

    It's impossible for the newsreader to submit it because the newsreader
    isn't an email client. If it's done with a client that's combined of a newsreader and email client, like Thunderbird or alpine, then it's not
    using the newsreader to submit the proto article.

    As such, moderated 'groups must have some flag in the news client.

    In the For your newsgroups file line of a newgroup message sent by the hierarchy administrator or proponent of a newsgroup, the flag is the
    appended " (Moderated)". In the active file, the flag is "m". These are
    files that may be downloaded periodically from the News site by the
    newsreader. If a newsreader uses them, it's for a sanity check when
    subscribing to a newsgroup or crossposting a root article or followup.
    If the newsreader would require rudimentary SMTP functions to send the
    proto article as email. But now, the use of an invalid email address on
    From is nonstandard in email, so what are all the whiners paranoid about privacy gonna do? There is no concept of a "proto message" in email.

    Also, the Message-ID string on the References header could be lost as
    it's used for a different purpose in email. Note that the use of
    References in lieu of In-Reply-To that makes threading possible was a misunderstanding of the differences between the two headers in the early
    days of Usenet when Mail message format was adapted for News.

    This is a disadvantage to not submitting the proto article to the News
    site to gate it to email. There are plenty of others, such as the
    ignorant sending every Mail message as HTML with an alternative part,
    something that's entirely unwanted in plain text Usenet.

    I don't agree with your notion of submitting directly to the submission
    address in the newsreader. I see drawbacks but no advantages.

    Also note that the shared format was because interserver communication
    with long distance telephone charges via modems was hideously expensive
    and it allowed shared messages to be sent as a single News article, then
    a local mailing list allowed it to be delivered to mailboxes.

    I have a feeling there was such an indication in Turnpike. I've just
    looked at the properties of this 'group in Thunderbird, and I can't
    _see_ a "moderated" indication that isn't ticked, but maybe it only
    appears at all on moderated ones?

    ISTR there was also some mechanism for entering a different moderator
    from the default (@moderators.isc.org) one for 'groups that had a
    moderator whose address wasn't part of that organisation. (That -
    isc.org - is probably what I was [mis?]remembering as a central
    organisation - not really a clearinghouse.)
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sat Jan 31 13:06:02 2026
    From Newsgroup: news.software.readers

    J. P. Gilliver wrote:
    Thanks for discussing this topic which it seems most of us haven't thought >> much about as we rarely post to moderated newsgroups, and, for the most
    part, when we did, it just worked. So we didn't think much about 'how'.

    Well, it seems clear to me that posts to a moderated newsgroup have to
    be sent to the moderator first (as emails?).

    I agree. I think the flow is user > nntp server > email > moderator
    but since privacy is paramount in any discussion of Internet posting,
    I asked the following three questions moments ago on the peering ng.

    Q1: Can users email a post to a moderated newsgroup with email privacy?
    Q2: If using throwaway mail servers, what additional headers are required?
    Q3: How does "typical" moderation work when the nntp header email is bogus?

    I think, based on my tests, that the normal process is that the news server >> admin decides which moderated groups he wants to peer and then he figures >> out how each moderated group wants to be notified, where, it seems, as John >> Gilliver noted, "in some cases there's a sort of central clearinghouse".

    It hadn't occurred to me that newsservers might do this; I had the
    impression that news clients did.

    Me too! I wrote my own newsreader client which has no knowledge of
    moderation, so when I sent my post to the moderated newsgroup using Jesse's nntp server, it failed so I had assumed I didn't do the "email" right.

    I didn't realize that in most (all?) cases, the newsreader (client) doesn't treat a moderated newsgroup any differently than a non-moderated newsgroup.

    Since privacy is the whole reason for me writing my newsreader (client), at first I thought I needed to know what additional smtp-like headers I would
    have needed to add, were we all openly know and reasonably easily accept
    that most email addresses in nntp headers are bogus.

    So the question, for me, initially seemed to be how do I sent an email from
    a bogus account to a moderated newsgroup & yet to still maintain privacy.

    Note that I know how to spoof headers to smtp servers, but also note that
    this knowledge dates to the days when I set up my own SunOS smtp server.

    That was decades ago and times have (vastly) changed in terms of privacy.

    I think that address might be <name-of-ng>-moderated@moderators.isc.org
    based on these tests with distinctly different results in that regard.

    When setting up Turnpike, some decades ago, I got the impression that
    the default for moderated 'groups _was_ some common address; the above
    rings a faint bell.

    Yes. Me too that a faint bell is ringing that we "can" email to moderators. We'd need to know what kind of "headers" those moderators need though.
    And the email address.

    But the additional issue is privacy.
    So the email has to come from a real server but not look like it does.

    Yuck.

    If the _client_ does it - which would seem a more efficient way, after
    all why involve the newsserver if that can be avoided - then the list of newsgroups must contain a flag for the ones that are moderated, so that
    the client knows to treat posts to it differently. (Posts _in_ it - i.
    e. from other posters, that have already been passed by the moderator[s]
    - can be treated the same as those in any other 'group.)

    As such, moderated 'groups must have some flag in the news client. I
    have a feeling there was such an indication in Turnpike. I've just
    looked at the properties of this 'group in Thunderbird, and I can't
    _see_ a "moderated" indication that isn't ticked, but maybe it only
    appears at all on moderated ones?

    ISTR there was also some mechanism for entering a different moderator
    from the default (@moderators.isc.org) one for 'groups that had a
    moderator whose address wasn't part of that organisation. (That -
    isc.org - is probably what I was [mis?]remembering as a central
    organisation - not really a clearinghouse.)
    []

    I asked the three pointed questions above to the peering ng just now:
    Newsgroups: news.admin.peering
    Subject: How does "moderation" work with privacy in user Usenet posts?
    Date: Sat, 31 Jan 2026 12:51:31 -0500
    Message-ID: <10llff3$2qqc$1@nnrp.usenet.blueworldhosting.com>
    --
    Had I known how it works, I would have written up a tutorial instead since
    I'm a rare breed of person who delights in edifying everyone around me.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sat Jan 31 13:19:30 2026
    From Newsgroup: news.software.readers

    Adam H. Kerman wrote:
    J. P. Gilliver <G6JPG@255soft.uk> wrote:
    On 2026/1/30 23:29:13, Arlen wrote:

    . . .

    I think that address might be <name-of-ng>-moderated@moderators.isc.org >>>based on these tests with distinctly different results in that regard.

    When setting up Turnpike, some decades ago, I got the impression that
    the default for moderated 'groups _was_ some common address; the above >>rings a faint bell.

    In olden days, every News server had to maintain a list of submission addresses in a moderators file. It was recognized that these addresses
    would quickly go out of date. Using a generic form of address meant that
    the moderators file could be maintained centrally, and it became yet
    another function ISC performed on behalf of the Usenet community. Why
    ISC? Specific people worked there.

    This is done for moderated newsgroups in the Big 8 and alt. It's
    performed on behalf of some "language" and regional hierarchies, but not
    all. Moderated newsgroups are not unheard of in larger regional hierarchies like uk, but they are quite rare in smaller ones. I think uk maintains
    its own central list but I don't recall specifically.

    It is possible to maintain a moderators file at a News site without
    relying upon these centrally maintained files but it would be a huge
    pain in the ass to learn all of the submission addresses as they change.

    If the _client_ does it - which would seem a more efficient way, after
    all why involve the newsserver if that can be avoided - then the list of >>newsgroups must contain a flag for the ones that are moderated, so that
    the client knows to treat posts to it differently. (Posts _in_ it - i.
    e. from other posters, that have already been passed by the moderator[s]
    - can be treated the same as those in any other 'group.)

    You are speaking of treating a submission address like the submission
    address of a moderated mailing list. It can certainly be done by an
    email client.

    It's impossible for the newsreader to submit it because the newsreader
    isn't an email client. If it's done with a client that's combined of a newsreader and email client, like Thunderbird or alpine, then it's not
    using the newsreader to submit the proto article.

    As such, moderated 'groups must have some flag in the news client.

    In the For your newsgroups file line of a newgroup message sent by the hierarchy administrator or proponent of a newsgroup, the flag is the
    appended " (Moderated)". In the active file, the flag is "m". These are
    files that may be downloaded periodically from the News site by the newsreader. If a newsreader uses them, it's for a sanity check when subscribing to a newsgroup or crossposting a root article or followup.
    If the newsreader would require rudimentary SMTP functions to send the
    proto article as email. But now, the use of an invalid email address on
    From is nonstandard in email, so what are all the whiners paranoid about privacy gonna do? There is no concept of a "proto message" in email.

    Also, the Message-ID string on the References header could be lost as
    it's used for a different purpose in email. Note that the use of
    References in lieu of In-Reply-To that makes threading possible was a misunderstanding of the differences between the two headers in the early
    days of Usenet when Mail message format was adapted for News.

    This is a disadvantage to not submitting the proto article to the News
    site to gate it to email. There are plenty of others, such as the
    ignorant sending every Mail message as HTML with an alternative part, something that's entirely unwanted in plain text Usenet.

    I don't agree with your notion of submitting directly to the submission address in the newsreader. I see drawbacks but no advantages.

    Also note that the shared format was because interserver communication
    with long distance telephone charges via modems was hideously expensive
    and it allowed shared messages to be sent as a single News article, then
    a local mailing list allowed it to be delivered to mailboxes.

    I have a feeling there was such an indication in Turnpike. I've just
    looked at the properties of this 'group in Thunderbird, and I can't
    _see_ a "moderated" indication that isn't ticked, but maybe it only
    appears at all on moderated ones?

    ISTR there was also some mechanism for entering a different moderator
    from the default (@moderators.isc.org) one for 'groups that had a
    moderator whose address wasn't part of that organisation. (That -
    isc.org - is probably what I was [mis?]remembering as a central >>organisation - not really a clearinghouse.)

    Since privacy is everything on the Internet, I think now that the standard process each newsreader uses likely maintains the privacy change all along.

    This is the flow I'm belatedly beginning to understand better:
    user > nntp server > smtp server > moderator > acceptance > posting

    If that's the correct typical flow, and given the fact that it's publicly accepted to obfuscate identity on Usenet, since email is required in that
    flow, what smtp and nntp server does the moderator's process utilize?
    --
    Those who ridicules privacy are merely stating they don't understand it.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Adam H. Kerman@ahk@chinet.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sat Jan 31 21:48:43 2026
    From Newsgroup: news.software.readers

    Maria Sophia <pusvul@getTjewytR4so+mqe2.invalid> wrote:

    You wrote a followup to my article that commented on nothing I had
    written.

    Since privacy is everything on the Internet, I think now that the standard >process each newsreader uses likely maintains the privacy change all along.

    This is the flow I'm belatedly beginning to understand better:
    user > nntp server > smtp server > moderator > acceptance > posting

    If that's the correct typical flow, and given the fact that it's publicly >accepted to obfuscate identity on Usenet, since email is required in that >flow, what smtp and nntp server does the moderator's process utilize?

    The user did not send an email message and isn't using an SMTP server.
    His privacy in the use of SMTP to forward the proto article isn't at
    issue. The moderation process is a mail2news gateway, either manual on
    the moderator's host receiving an email message, adding the Approved
    header, then using a newsreader to send the approved article to a News
    server where it's injected. The gateway may be remote to the moderator,
    like use of the complicated WebSTUMP application.

    The moderator's News server is in the headers.

    Since the user is involved in nothing after composing the proto article,
    what the hell is the privacy concern? You keep claiming to have privacy concerns. You never state what they are.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sat Jan 31 22:38:53 2026
    From Newsgroup: news.software.readers

    Adam H. Kerman wrote:
    You wrote a followup to my article that commented on nothing I had
    written.

    Ah, but I did. Look at the sig. :)


    Since privacy is everything on the Internet, I think now that the standard >>process each newsreader uses likely maintains the privacy change all along.

    This is the flow I'm belatedly beginning to understand better:
    user > nntp server > smtp server > moderator > acceptance > posting

    If that's the correct typical flow, and given the fact that it's publicly >>accepted to obfuscate identity on Usenet, since email is required in that >>flow, what smtp and nntp server does the moderator's process utilize?

    The user did not send an email message and isn't using an SMTP server.
    His privacy in the use of SMTP to forward the proto article isn't at
    issue. The moderation process is a mail2news gateway, either manual on
    the moderator's host receiving an email message, adding the Approved
    header, then using a newsreader to send the approved article to a News
    server where it's injected. The gateway may be remote to the moderator,
    like use of the complicated WebSTUMP application.

    The moderator's News server is in the headers.

    Since the user is involved in nothing after composing the proto article,
    what the hell is the privacy concern? You keep claiming to have privacy concerns. You never state what they are.

    I'm working on understanding that which I didn't even know existed prior.
    I saw your response and that from Marco Moock on n.a.p just now also.

    While I had looked for alt.test.moderated, Marco suggests
    misc.test.moderated since alt.test.moderated doesn't seem to exist.

    Most moderated groups do not require a real or working email address.
    Usenet has a long tradition of allowing obfuscated or nonfunctional
    addresses because of spam concerns.

    Typical bogus examples:
    nobody@example.invalid
    user@nowhere.net
    name@remove-this.example.com

    Based on my googling, what moderators usually care about:
    1. The post is on topic.
    2. The post follows the group's rules.
    3. The post is not spam or abusive.
    4. The post is understandable without needing to contact the sender.

    When a real address might matter:
    1. The moderator needs clarification before approving the post.
    2. The group has a special rule requiring real identities.
    3. The post looks suspicious and the bogus address adds to that impression.

    What happens if our fake address bounces when a mod tries to contact it.
    a. The moderator may approve the post anyway.
    b. The moderator may reject it only if they needed to reach us.
    c. Apparently many moderators ignore bounces entirely.

    Hence, a bogus email address is acceptable for many moderated groups.
    But apparently a few specialized groups expect a real, reachable address.

    Moderated Usenet posting flow with bogus email address privacy -------------------------------------------------------
    Step 1: You post from your newsreader
    You compose a message and post it to a moderated newsgroup.
    Your news server sees that the group is moderated and does not inject
    the article directly into the group.

    Step 2: Your server forwards the post to the moderator
    The server sends your post, usually as email, to the moderator's
    submission address for that group.
    Your From header may contain a bogus or nonworking email address.
    This is normally acceptable and common on Usenet.

    Step 3: Moderator reviews the submission
    The moderator reads your post in their moderation queue.
    They mainly care about:
    1. Whether the post is on topic.
    2. Whether it follows the group's rules.
    3. Whether it is not spam or abusive.
    A real, working email address is usually not required.
    A bogus address is only a problem if the moderator needs to contact you
    for clarification or the group has special rules about real identities.

    Step 4: Moderator approves and reposts with an Approved header
    If the moderator decides to accept your post, they or their software
    reinject the article into Usenet.
    During this reinjection, an Approved header is added to the article.
    Example:
    Approved: moderator@example.org

    This Approved header is what tells Usenet servers that the article is authorized for that moderated group.
    The moderator's system posts from a trusted host or authenticated
    account, so servers accept the Approved article.

    Step 5: Usenet servers distribute the approved article
    Because the article now contains a valid Approved header and comes from
    a trusted injection point, Usenet servers propagate it normally.
    Your original From header, even if it contains a bogus email address,
    is usually preserved unless the moderator changes it.
    --
    The people most vehement against privacy are those who least understand it.


    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Carlos E.R.@robin_listas@es.invalid to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sun Feb 1 14:36:00 2026
    From Newsgroup: news.software.readers

    On 2026-02-01 04:38, Maria Sophia wrote:
    Adam H. Kerman wrote:


    While I had looked for alt.test.moderated, Marco suggests
    misc.test.moderated since alt.test.moderated doesn't seem to exist.
    Most moderated groups do not require a real or working email address.
    Usenet has a long tradition of allowing obfuscated or nonfunctional
    addresses because of spam concerns.

    Typical bogus examples:
    nobody@example.invalid
    user@nowhere.net
    name@remove-this.example.com

    However, nowhere.net is not a bogus address. Nor is comprehension.com
    --
    Cheers, Carlos.
    ESEfc-Efc+, EUEfc-Efc|;
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Carlos E.R.@robin_listas@es.invalid to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sun Feb 1 15:42:17 2026
    From Newsgroup: news.software.readers

    On 2026-02-01 15:21, J. P. Gilliver wrote:
    On 2026/1/31 18:2:38, Adam H. Kerman wrote:

    []

    In olden days, every News server had to maintain a list of submission
    addresses in a moderators file. It was recognized that these addresses

    OK, so the default is that news clients (for the users using them) send
    posts to moderated 'groups to the normal server rather than direct to
    the moderator(s). I did not know that. (Also see below.)

    []

    If the _client_ does it - which would seem a more efficient way, after
    all why involve the newsserver if that can be avoided - then the list of >>> newsgroups must contain a flag for the ones that are moderated, so that
    the client knows to treat posts to it differently. (Posts _in_ it - i.
    e. from other posters, that have already been passed by the moderator[s] >>> - can be treated the same as those in any other 'group.)

    You are speaking of treating a submission address like the submission
    address of a moderated mailing list. It can certainly be done by an
    email client.

    It's impossible for the newsreader to submit it because the newsreader
    isn't an email client.

    Good point, which I hadn't thought of. (I've always used combined
    software - either one that does both like Turnpike or Thunderbird, or [I think - long ago!] a suite that combined them, like modified KA9Q.)

    In Linux (and Unix), any program can submit an email. It is part of the system.

    Of course, in many home systems this method is not configured and will fail.
    --
    Cheers, Carlos.
    ESEfc-Efc+, EUEfc-Efc|;
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sun Feb 1 10:25:26 2026
    From Newsgroup: news.software.readers

    Carlos E.R. wrote:
    While I had looked for alt.test.moderated, Marco suggests
    misc.test.moderated since alt.test.moderated doesn't seem to exist.
    Most moderated groups do not require a real or working email address.
    Usenet has a long tradition of allowing obfuscated or nonfunctional
    addresses because of spam concerns.

    Typical bogus examples:
    nobody@example.invalid
    user@nowhere.net
    name@remove-this.example.com

    However, nowhere.net is not a bogus address. Nor is comprehension.com

    The point of the non-working "comprehension" was the same as when I asked
    Adam H. Kerman to look at the sig to see how I did respond to his tirades against privacy.

    I'm subtle that way about privacy.
    Think about it.
    (It's similar to why I never read from the same nntp server I post to.)
    Privacy is a billion little subtle things, just like personal hygiene is.

    Back to the topic, I think before we can figure out how to send email to a moderated newsgroup, we need to understand the Usenet moderation process.

    Here's another pass at trying to understand better how moderation works.

    1. We post our article from our newsreader to our NNTP server. The
    server receives it using the NNTP POST command. The server checks
    the group flags and sees that misc.test.moderated is moderated, so
    it does not inject the article directly into the group.

    2. Our NNTP server forwards the post to the moderator. The server sends
    the submission as email to the moderator's address for that group.
    The address is normally formed by replacing periods with hyphens and
    appending @moderators.isc.org. Note that a bogus or nonworking
    "From" address is common on Usenet and is normally acceptable.
    The domain can be real but the address is designed to not be real.

    3. The moderator reviews the submission. They read the post in their
    moderation queue and check that it is on topic, that it follows the
    group's rules, and that it is not spam or abusive. A real email
    address is usually not required. A bogus address only matters if the
    moderator needs to contact us or if the group has rules requiring
    real identities.

    4. If the moderator approves the post, they reinject it into Usenet.
    The moderator or their software adds an Approved header during this
    reinjection, for example...
    Approved: moderator@example.org
    This header tells Usenet servers that the article is authorized for
    the moderated group. The moderator's system posts from a trusted
    host or authenticated account, so servers accept the Approved
    article.

    5. Usenet servers distribute the approved article. Because it contains
    a valid Approved header and comes from a trusted injection point,
    servers propagate it normally. Our original From header, even if it
    is bogus, is usually preserved unless the moderator changes it.

    For a direct email... as far as I can tell... (which may be wrong)...

    1. We compose our article in our MUA. Instead of posting through NNTP,
    we prepare to send it as email directly to the moderator or to the
    ISC moderation relay. This method is allowed for moderated groups as
    long as we supply the correct Usenet headers.

    2. We set the To address to the group's submission address. For Big-8
    groups the standard form is the group name with periods changed to
    hyphens, plus @moderators.isc.org. Example:
    misc.test.moderated -> misc-test-moderated@moderators.isc.org

    3. We include all required Usenet headers in the email body. These
    headers must appear exactly as they would in a normal Usenet post.
    At minimum we include:
    From:
    Newsgroups:
    Subject:
    Date:
    Message-ID:
    References: (optional)
    Organization: (optional)
    User-Agent: (optional)
    We do not include a spoofed Approved header.
    That is frowned upon as it is added only by the moderator.

    4. We place a blank line after the headers. After that blank line we
    write the body of our article. The email now contains a complete
    Usenet article wrapped inside an email envelope.

    5. We send the email. Our MUA hands it to our SMTP server, which
    delivers it to the ISC moderation relay or directly to the
    moderator, depending on the address we used.

    6. The moderator receives our submission in their moderation queue. The
    moderator checks that the article is on topic, follows the group's
    rules, and is not spam or abusive. A bogus From address is normally
    acceptable unless the moderator needs to contact us.

    7. If the moderator approves the article, they reinject it into Usenet.
    Their system adds an Approved header and posts the article from a
    trusted host. Example:
    Approved: moderator@example.org

    8. Usenet servers accept the Approved article and propagate it normally
    across the network. Our original From header is usually preserved
    unless the moderator edits it.

    9. Our NNTP server eventually receives the approved article from its
    peers. It appears in the moderated group as if we had posted it
    through NNTP, even though we submitted it by email.
    --
    Had I known how it works, I would have written up a tutorial instead since
    I'm a rare breed of person who delights in edifying everyone around me.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sun Feb 1 10:46:52 2026
    From Newsgroup: news.software.readers

    Carlos E.R. wrote:
    On 2026-02-01 15:21, J. P. Gilliver wrote:
    On 2026/1/31 18:2:38, Adam H. Kerman wrote:

    []

    In olden days, every News server had to maintain a list of submission
    addresses in a moderators file. It was recognized that these addresses

    OK, so the default is that news clients (for the users using them) send
    posts to moderated 'groups to the normal server rather than direct to
    the moderator(s). I did not know that. (Also see below.)

    []

    If the _client_ does it - which would seem a more efficient way, after >>>> all why involve the newsserver if that can be avoided - then the list of >>>> newsgroups must contain a flag for the ones that are moderated, so that >>>> the client knows to treat posts to it differently. (Posts _in_ it - i. >>>> e. from other posters, that have already been passed by the moderator[s] >>>> - can be treated the same as those in any other 'group.)

    You are speaking of treating a submission address like the submission
    address of a moderated mailing list. It can certainly be done by an
    email client.

    It's impossible for the newsreader to submit it because the newsreader
    isn't an email client.

    Good point, which I hadn't thought of. (I've always used combined
    software - either one that does both like Turnpike or Thunderbird, or [I
    think - long ago!] a suite that combined them, like modified KA9Q.)

    In Linux (and Unix), any program can submit an email. It is part of the system.

    Of course, in many home systems this method is not configured and will fail.

    As Carlos noted, if you write your own newsreader, then you need to know a
    bit more about how the process works, where it's a *lot* easier on Linux
    than on Windows since "servers" in general, exist on Linux naturally.

    Since I don't post to moderated newsgroups all that often (once a decade or so), I don't know if I'll add the smtp process to my newsreader, but the concept seems simple enough.
    a. The newsreader recognizes moderated newsgroups (trailing 'm')
    b. It switches from telnet to smtp and composes the additional headers
    c. It sends off the message to the appropriate moderator email

    It's not that simple, but there are more details in this useful FAQ:

    *Usenet Big-8 Management Board - Moderated Newsgroups*
    <https://www.big-8.org/wiki/Moderated_Newsgroups>

    I'm sure we can tease thunderbird into doing this also, but then I'd have
    to integrate Thunderbird/Betterbird into my home-grown newsreader.
    --
    Had I known how it works, I would have written up a tutorial instead since
    I'm a rare breed of person who delights in edifying everyone around me.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Frank Slootweg@this@ddress.is.invalid to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sun Feb 1 15:49:33 2026
    From Newsgroup: news.software.readers

    Carlos E.R. <robin_listas@es.invalid> wrote:
    On 2026-02-01 15:21, J. P. Gilliver wrote:
    On 2026/1/31 18:2:38, Adam H. Kerman wrote:
    [...]
    It's impossible for the newsreader to submit it because the newsreader
    isn't an email client.

    Good point, which I hadn't thought of. (I've always used combined
    software - either one that does both like Turnpike or Thunderbird, or [I think - long ago!] a suite that combined them, like modified KA9Q.)

    In Linux (and Unix), any program can submit an email. It is part of the system.

    I don't know about Linux, but for 'Unix' it depends on how you define
    'Unix'. AFAIR, before Berkeley Unix' sendmail, Unix only had 'mail[x]'
    which could only send/receive e-mail to/from the same local system.
    (Yes, there was UUCP-based e-mail, but that predates Internet mail.)

    OTOH, in the very early 70s, we already used 'e-mail' before that term
    was even known and probably not even invented! :-) The world-wide
    intra-company system was called COMSYS, short for Communication System.
    In comparison, while Wikipedia doesn't give a year for UUCP-based
    e-mail, it probably came only it the late 70s and SMTP came only in
    1983, a decade after 'us'. [1] [2]

    Of course, in many home systems this method is not configured and will fail.

    On this mixed Windows/Cygwin system I use ssmtp(8), a send-only
    sendmail emulator, to send e-mail (mostly administrative e-mail from shell-scripts).

    [1] <https://en.wikipedia.org/wiki/Email#History>
    [2] <https://en.wikipedia.org/wiki/UUCP#History>
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sun Feb 1 10:53:50 2026
    From Newsgroup: news.software.readers

    Maria Sophia wrote:
    I asked the three pointed questions above to the peering ng just now:
    Newsgroups: news.admin.peering
    Subject: How does "moderation" work with privacy in user Usenet posts?
    Date: Sat, 31 Jan 2026 12:51:31 -0500
    Message-ID: <10llff3$2qqc$1@nnrp.usenet.blueworldhosting.com>

    We received excellent detailed actionable answers from the peering
    newsgroup (who, after all, are the ones who disseminated moderated
    messages).

    Approved: moderator@example.org
    This header tells Usenet servers that the article is authorized for
    the moderated group. The moderator's system posts from a trusted
    host or authenticated account, so servers accept the Approved
    article.

    You can't easily spoof that approval header (nor should you!), so this one header cannot be injected by the home-grown newsreader (and shouldn't be).

    I love it when I (finally!) understand something down to the actual details which are required to make it work from the command line in telnet/smpt!

    Thank you for all your help in figuring out how Usenet moderation works
    such that we can now add an smtp process to our home-grown newsreaders!
    --
    When you understand something like gravity, down to Einstein's thought
    process in the equations, there's a special quiet delight that ensues.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Adam H. Kerman@ahk@chinet.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sun Feb 1 17:10:43 2026
    From Newsgroup: news.software.readers

    Frank Slootweg <this@ddress.is.invalid> wrote:
    Carlos E.R. <robin_listas@es.invalid> wrote:
    On 2026-02-01 15:21, J. P. Gilliver wrote:
    On 2026/1/31 18:2:38, Adam H. Kerman wrote:

    [...]

    It's impossible for the newsreader to submit it because the newsreader >>>>isn't an email client.

    Good point, which I hadn't thought of. (I've always used combined >>>software - either one that does both like Turnpike or Thunderbird, or [I >>>think - long ago!] a suite that combined them, like modified KA9Q.)

    In Linux (and Unix), any program can submit an email. It is part of the >>system.

    I don't know about Linux, but for 'Unix' it depends on how you define
    'Unix'. AFAIR, before Berkeley Unix' sendmail, Unix only had 'mail[x]'
    which could only send/receive e-mail to/from the same local system.
    (Yes, there was UUCP-based e-mail, but that predates Internet mail.)

    I'm not quite old enough to predate Berkeley in my computer use, but
    generally, I wasn't in systems that used Berkeley-style Unix, with the exception that mbox format was a Berkeley invention that non-Berkeley
    systems tended to use.

    Non-Berkeley Unix systems that were compatible with Sys V Rel 4 like
    Unixware used mailsurr, a file one was expected to edit for email
    rewriting rules. sendmail was not native to these environments.

    I have no clue what genuine SVR4 in house at AT&T used for email.

    My first Unix compatible was Xenix, which was actually decent. What did
    we use for email transport? I cannot recall.

    . . .
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Adam H. Kerman@ahk@chinet.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sun Feb 1 17:14:05 2026
    From Newsgroup: news.software.readers

    Maria Sophia <pusvul@getTjewytR4so+mqe2.invalid> wrote:

    We received excellent detailed actionable answers from the peering
    newsgroup (who, after all, are the ones who disseminated moderated
    messages).

    Approved: moderator@example.org
    This header tells Usenet servers that the article is authorized for
    the moderated group. The moderator's system posts from a trusted
    host or authenticated account, so servers accept the Approved
    article.

    You can't easily spoof that approval header (nor should you!), so this one >header cannot be injected by the home-grown newsreader (and shouldn't be).

    It really really can be forged readily. If received from a peer, the
    forgery is unlikely to be spotted by the receiving peer. The moderator
    will notice, of course.

    . . .
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Carlos E.R.@robin_listas@es.invalid to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Sun Feb 1 21:19:19 2026
    From Newsgroup: news.software.readers

    On 2026-02-01 16:49, Frank Slootweg wrote:
    Carlos E.R. <robin_listas@es.invalid> wrote:
    On 2026-02-01 15:21, J. P. Gilliver wrote:
    On 2026/1/31 18:2:38, Adam H. Kerman wrote:
    [...]
    It's impossible for the newsreader to submit it because the newsreader >>>> isn't an email client.

    Good point, which I hadn't thought of. (I've always used combined
    software - either one that does both like Turnpike or Thunderbird, or [I >>> think - long ago!] a suite that combined them, like modified KA9Q.)

    In Linux (and Unix), any program can submit an email. It is part of the
    system.

    I don't know about Linux, but for 'Unix' it depends on how you define 'Unix'. AFAIR, before Berkeley Unix' sendmail, Unix only had 'mail[x]'
    which could only send/receive e-mail to/from the same local system.
    (Yes, there was UUCP-based e-mail, but that predates Internet mail.)

    OTOH, in the very early 70s, we already used 'e-mail' before that term
    was even known and probably not even invented! :-) The world-wide intra-company system was called COMSYS, short for Communication System.
    In comparison, while Wikipedia doesn't give a year for UUCP-based
    e-mail, it probably came only it the late 70s and SMTP came only in
    1983, a decade after 'us'. [1] [2]

    I was surprised to find out that the Unix Real Time Reliable that was
    used by the Lucent 5ESS phone switch had sendmail in it. The machine did
    not have ethernet nor internet. I doubt it had unix accounts in normal
    usage, but I assume it could have them.


    Currently, in Linux, postfix does install a small sendmail binary that
    has the minimal support so that programs can keep using the ancient method.



    Of course, in many home systems this method is not configured and will fail.

    On this mixed Windows/Cygwin system I use ssmtp(8), a send-only
    sendmail emulator, to send e-mail (mostly administrative e-mail from shell-scripts).

    [1] <https://en.wikipedia.org/wiki/Email#History>
    [2] <https://en.wikipedia.org/wiki/UUCP#History>
    --
    Cheers, Carlos.
    ESEfc-Efc+, EUEfc-Efc|;
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From =?UTF-8?Q?J=C3=B6rg_Knobloch?=@jorgk@jorgk.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows11 on Mon Feb 2 14:50:09 2026
    From Newsgroup: news.software.readers

    On 30 Jan 2026 07:20, Maria Sophia wrote:
    Apparently Betterbird 102 is optimized for email, not for news posting, and the developers removed the UI for adding arbitrary headers, including Newsgroups.
    Apparently Thunderbird 102 still has it but Betterbird 102 does not.

    We haven't removed anything. The current version is BB 140; 102 is three years old.
    --
    Viele Gr|+|fe, J||rg
    Sent with Betterbird. Simply better.
    www.betterbird.eu - www.betterbird.eu/#featuretable
    Es ist immer wieder erstaunlich: Kaum macht man's richtig, schon funktioniert's!
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Maria Sophia@mariasophia@comprehension.com to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Fri Feb 13 17:04:44 2026
    From Newsgroup: news.software.readers

    Mr +<!on wrote:
    I'm particularly interested in Usenet Newsreaders; would you please
    tell me more about yours? I've never heard of it before.

    Well, assuming (and hoping) that you're not the "sn!pe" troll, the
    fundamental point of writing my own newsreader was simply two major privacy/usability goals because I happen to know a lot about both.
    a. Full control of my privacy, and,
    b. Full control of the $EDITOR (which, for me, is gVim)

    Of the million things I do for usability and privacy, most people only know about six of them, but there are very many layers to my usability/privacy.

    People who deprecate it are simply saying that they don't understand it.
    And I don't expect them to understand usability or privacy, where, for example, almost everything I do is a single step on any platform I use.

    And, I do astonishing things for privacy that most people couldn't think of
    if you gave them a million years to ponder it, e.g., my Android contacts sqlite database is empty and yet I can do everything everyone else does.
    Newsgroups: comp.mobile.android
    Subject: FOSS Contacts app with privacy for backup & restore offline
    Date: Thu, 5 Feb 2026 18:47:39 -0500
    Message-ID: <10m3a6r$2mc6$1@nnrp.usenet.blueworldhosting.com>

    The difference is I have privacy doing it, and they don't.
    (note most "think" they have privacy but they don't understand privacy)
    Newsgroups: comp.mobile.android
    Subject: How many apps on your phone have contacts read permission?
    Date: Tue, 10 Feb 2026 16:51:26 -0500
    Message-ID: <10mg98t$pig$1@nnrp.usenet.blueworldhosting.com>

    Note people in those threads "think" their contacts are safe, but they
    don't even know what apps are reading them and what they do with them.

    As I said, privacy is a million things, of which most people know only six.
    For example, only the most respectful people have an empty contacts db.

    And nobody who cares about privacy has a mothership account on their device. Nobody ever logs into anything using their real email either, if they care about privacy, so they have ways of obfuscating the origin.

    My goals are always privacy and usability, where I probably maintain the
    most organized computer hierarchy you've ever seen in your entire life.
    <https://i.postimg.cc/fW38dhsX/android-windows-menus.jpg>

    Privacy and usability are everything, to me.
    Of the million things I do for both, most people can only do about six.

    Given those two goals, my Usenet reader is just telnet tied to stunnel tied
    to a bunch of ugly scripts and dictionaries which randomize the time zones periodically and randomize the headers at least once a year based on dictionaries culled off of Usenet over the years, so it's nothing special.

    My stunnel entry, for example, for Wolfgang's server (which I think you are using) is below, but I have a section for every nntp server I've used.
    [EternalSept]
    client = yes
    accept = 127.0.0.1:55503
    connect = news.eternal-september.org:563
    verifyChain = yes
    CAfile = ca-certs.pem
    checkHost = news.eternal-september.org
    OCSPaia = yes

    The use model is that everything shows up to me in gVim such that I don't
    even know whom I'm responding to (as I never see *any* headers) as all I
    see is the attribute in my gVim session, which is why sometimes I confuse Carlos with Chris, given they both seem to post similarly in my experience.

    Likewise, Andy and Carlos and others have noticed that I don't do any character recognition, which, in the past, has caused them issues, so I've worked closely with them in the past few months to standardize the headers
    by always adding these lines (previously my scripts tried to guess them):
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit

    Because I don't use a "real" newsreader, there is no check that the
    newsgroup line is correct since I have to type that manually when creating
    a post, and sometimes others have noticed typos in my "Newsgroups" line.

    But that's due to human error as my system isn't hardened against typos
    in the newsgroup line like most "real" newsreaders would be hardened to.

    Back to the point of this thread, I've recently hardened my use model
    against Unicode creeping in, as most of my Usenet posts are extremely well researched as I came from the finest schools in the country and worked with the most technical companies on the planet in Silicon Valley, including
    being on call for the windowless brick buildings around the world, most notably at Fort Meade back in the 90s but also in Israel & elsewhere.

    It's important to note that of the million things I know about privacy,
    most people only know six, so they consider anyone who does anything for privacy must be doing so for nefarious reasons, even as they can never
    point out a single nefarious thing that the people do.

    It's against Occam's Razor but most people are simply illogical since they don't take every fact into account when coming up with their conclusions.

    The less they know about privacy, the more they claim that anyone who cares about privacy must be doing so because they're murdering little children.

    The fact they don't murder the children doesn't stop them from deprecating that people who know privacy do a million things to maintain that privacy.

    But back to the topic at hand, where I have a Notepad++ macro which I will append to this post so that you can understand how I ran into this issue.

    Bear in mind that I correlate research from a wide variety of sources,
    which I learned when I earned my PhD back east in one of the finest schools
    in the country, so I needed this Notepad++ macro to normalize all the text, even as my editor is gVim (as Notepad++ is simply my normalizing process).

    Since everything should be a single step, I control+c from a browser, and I hit the "n" command in my taskbar to bring up Notepad (via the
    fantastically efficient Windows registry "App Paths" key) and then I
    Control+V the clipboard into Notepad++ where I control+B the fixed text
    back into the Windows Clipboard for pasting into gVim for further editing.

    Notice I could skip the "n" step by leaving the Notepad++ window open (as
    I'm all about eliminating every step) but in a Notepad Macro, apparently Scintilla won't let me kill the notepad session (although there's a key sequence for that but it's another step and I abhor extra steps).

    Anyway, here's the Notepad++ macro that fixes the HTML fragment issues.
    Notice it uses a clever trick of adding and deleting a space to do it.

    <?xml version="1.0" encoding="UTF-8" ?>
    <!-- C:\app\editor\txt\N++\shortcuts.xml for Windows Notepad++ (N++) -->
    <!-- Automatically cleans fragments, converts to ASCII & copies to clipbrd -->
    <!-- Use model: Control+V (paste) & Control+B (run the macro) -->
    <!-- v3p9 20260211 N++ was not running the macro in the order shown -->
    <!-- But it turned out any error causes an OLDER version to run. -->
    <!-- Worse, when that happens, N++ overwrites this file -->
    <!-- Worse, N++ is executing macro actions in a different order -->
    <!-- than they appear in the XML so a total rewrite is needed in v4p0 -->
    <!-- v3p8 20260211 U+2060 is driving me nuts so it's the first block now -->
    <!-- v3p7 20260211 moved U+2060 up because it's the most disruptive -->
    <!-- v3p6 20260211 U+2009 & U+200B not being converted properly -->
    <!-- v3p5 20260211 fixed U+200B failing when U+200B is between ' & s -->
    <!-- A 2nd pass was duplicated after apostrophe normalization rules -->
    <!-- v3p4 20260211 added U+275E (heavy double quote right) -->
    <!-- v3p3 20260211 added U+2009 (thin space) -->
    <!-- v3p2 20260211 added seven new conversions after running testcases -->
    <!-- U+02BE (modifier letter right half ring) -->
    <!-- U+02BF (modifier letter left half ring) -->
    <!-- U+201E (double low-9 quote) -->
    <!-- U+201F (double high-reversed-9 quote) -->
    <!-- U+275D (heavy double quote left) -->
    <!-- U+275E (heavy double quote right) -->
    <!-- U+2015 (horizontal bar) -->
    <!-- U+2009 (thin space) -->
    <!-- v3p1 20260211 reorganized into a dozen distinct categories -->
    <!-- (1) control characters: U+000F U+0001 -->
    <!-- (2) dashes & minus signs: U+2010 U+2011 U+2012 U+2212 -->
    <!-- (3) zero-width characters: U+200C U+200B U+200D U+FEFF U+2060 -->
    <!-- (4) special spaces: U+00A0 U+2007 U+202F U+200A U+2008 U+2006 -->
    <!-- (5) apostrophe-like characters:
    U+0F0C U+2018 U+2019 U+2032 U+02BC U+02B9 U+02C8 U+02EE
    U+201B U+02CB U+A78C U+FF07 -->
    <!-- (6) combining marks (remove after apostrophes):
    U+0351 U+0307 U+0331 U+0335 U+0336 U+0337 U+0338 -->
    <!-- (7) double-quote normalization: U+201C U+201D -->
    <!-- (8) dash-like & ellipsis & HTML entities:
    U+2026 &#151; U+2014 U+2013 &zwnj; -->
    <!-- (9) bullets, math symbols, diacritics:
    U+2022 U+8722 U+011F U+2009 U+00E1 U+0161 U+011B -->
    <!-- (10) miscellaneous symbols:
    U+2713 ASCII hyphen ` U+2192 U+00B0 U+00A9 U+2122 U+00AE -->
    <!-- (11) invisible operators:
    U+00AD U+2061 U+2062 U+2063 U+2064 U+180E -->
    <!-- (12) line separators: U+2028 U+2029 U+0085 -->
    <!-- v3p0 20260211 added combining marks U+0351 U+0307 U+0331 -->
    <!-- v3p1 20260211 added apostrophe-like characters U+201B U+02CB -->
    <!-- v2p9 20260211 moved U+2060 to be above apostrophe-related blocks -->
    <!-- v2p8 20260211 fixed Chromium CF_HTML paste control+A anomaly -->
    <!-- v2p7 20260211 added U+02EE modifier letter double apostrophe rule -->
    <!-- v2p6 20260211 fixed U+02C8 modifier letter vertical line) rule -->
    <!-- v2p5 20260211 fixed U+02B9 (modifier letter prime) rule -->
    <!-- v2p4 20260211 removed one of two U+000F blocks -->
    <!-- v2p3 20260211 removed two (duplicate) 1700 lines in U+0161 -->
    <!-- v2p2 20260211 fixed all zero-width blocks to replace with nothing -->
    <!-- v2p1 20260211 fixed BOM to replace with nothing -->
    <!-- v2p0 20260210 cleaned (emptied out) closing sections of the file -->
    <!-- v1p9 20260210 ported old shortcuts.xml to improve coverage -->
    <!-- Cleans Chromium pasted text & normalizes Unicode to ASCII -->
    <!-- Use model: paste (using control+v) & fix (using control+b) -->
    <!-- The macro should 1st break CF_HTML fragment mode (so Ctrl+A works) -->
    <!-- and then run the Unicode-to-ASCII cleanup on all the pasted text -->
    <!-- cutting (control+x) the result back into the Windows clipboard -->
    <!-- thereby leaving the N++ GUI empty & ready for the next paste-->

    <!--
    To break Scintilla's CF_HTML fragment mode, we need to make any edit.
    We can insert a space & then delete that space, for example.
    -->

    <!-- Scintilla engine command meanings:
    1700 = begin a new search/replace operation
    1601 = set the search string (the Unicode character to find)
    1625 = clear the replacement buffer
    1602 = set the replacement string (ASCII equivalent)
    1702 = execute Replace All
    1701 = end this search/replace block
    2001 = SCI_REPLACESEL (inserts a space)
    2326 = SCI_DELETEBACK (deletes the space)
    2013 = SCI_SELECTALL (selects everything)
    2177 = SCI_CUT (cut all)
    41001 = IDM_FILE_EXIT (close)
    -->

    <!-- When you paste from a Chromium-based app, the clipboard contains:
    CF_UNICODETEXT (plain text) & CF_HTML (HTML fragment)
    And sometimes CF_RTF where N++ prefers CF_HTML if available.

    v2p0 fixes a N++ selection issue caused by CF_HTML pastes.
    "HTML Paste Mode" prevents the "Control+A" from working.
    "HTML paste mode" inserts HTML fragment as plain text
    where Ctrl+A is disabled until the buffer is "normalized"
    (until the first edit that breaks the fragment state)
    -->

    <!-- Below is garbage that N++ adds to shortcuts.xml -->
    <NotepadPlus>
    <InternalCommands>
    <Shortcut id="43009" Ctrl="no" Alt="no" Shift="no" Key="0" />
    </InternalCommands>
    <Macros>
    <!-- Above is garbage that N++ adds to shortcuts.xml -->

    <!-- ASCII "control+b" Cleanup Macro -->
    <Macro name="ASCII" Ctrl="yes" Alt="no" Shift="no" Key="66">

    <!-- Begin Scintilla HTML-paste workaround top portion -->
    <!-- Break Chromium CF_HTML fragment mode by adding & deleting a space-->
    <Action type="0" message="2001" wParam="32" lParam="0" sParam="" />
    <Action type="0" message="2326" wParam="0" lParam="0" sParam="" />
    <!-- Select all text before running cleanup -->
    <Action type="0" message="2013" wParam="0" lParam="0" sParam="" />
    <!-- End Scintilla HTML-paste workaround top portion -->

    <!-- BEGIN CONVERSION BLOCKS -->

    <!-- U+2060 is driving me nuts so I'm making it the 1st block -->
    <!-- U+2060 must be placed above the apostrophe-related blocks -->
    <!-- Otherwise apostrophe block may skip over it -->
    <!-- U+2060 is disruptive as it must be placed above zero-width too -->
    <!-- Replace U+2060 (WORD JOINER) with nothing -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2060;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- #1. CONTROL CHARACTERS (remove first) -->
    <!-- Replace U+000F (SHIFT-OUT control character) with nothing -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x000F;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+0001 (SOH control character) with nothing -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0001;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- #2. DASHES & MINUS SIGNS (safest to remove early) -->
    <!-- Replace U+2010 (HYPHEN) with ASCII "-" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2010;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2011 (NON-BREAKING HYPHEN) with ASCII hyphen "-" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2011;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2012 (FIGURE DASH) with ASCII "-" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2012;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2212 (MINUS SIGN) with ASCII "-" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2212;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- #3. ZERO-WIDTH CHARACTERS (must be BEFORE apostrophes) -->

    <!-- Replace U+200C (ZERO WIDTH NON-JOINER) with "" (nothing) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x200C;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+200B (ZERO WIDTH SPACE) with nothing -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x200B;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+200D (ZERO WIDTH JOINER) with nothing -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x200D;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+FEFF (BOM) with nothing -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#xFEFF;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- #4. SPECIAL SPACES (convert to ASCII space) -->
    <!-- Replace U+00A0 (NO-BREAK SPACE) with ASCII space -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x00A0;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2007 (FIGURE SPACE) with ASCII space -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2007;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+202F (NARROW NO-BREAK SPACE) with ASCII space -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x202F;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+200A (HAIR SPACE) with ASCII space -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x200A;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2008 (PUNCTUATION SPACE) with ASCII space -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2008;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2006 (SIX-PER-EM SPACE) with ASCII space -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2006;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- #5. APOSTROPHE-LIKE CHARACTERS -->
    <!-- Replace U+0F0C (TIBETAN MARK DELIMITER) with ASCII apostrophe "'" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0F0C;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2018 (LEFT SINGLE QUOTE) with ASCII apostrophe "'" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2018;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2019 (RIGHT SINGLE QUOTATION) with ASCII apostrophe "'" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2019;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2032 (PRIME) with ASCII apostrophe -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2032;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+02BC (MODIFIER LETTER APOSTROPHE) with ASCII apostrophe -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x02BC;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+02B9 (MODIFIER LETTER PRIME) with ASCII apostrophe "'" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x02B9;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+02C8 (MODIFIER LETTER VERTICAL) with ASCII apostrophe "'" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x02C8;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+02EE (MODIFIER DOUBLE APOSTROPHE) with ASCII apostrophe "'" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x02EE;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- U+201B (SINGLE HIGH-REVERSED-9 QUOTATION MARK) with apostrophe "'" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x201B;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+02CB (MODIFIER LETTER GRAVE ACCENT) with ASCII apostrophe "'" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x02CB;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- This is is a duplication which is after the apostrophes -->
    <!-- When U+200B appears between two characters that were already replaced -->
    <!-- the first pass fails to remove it, so I added this duplicate -->
    <!-- Remove U+200B (ZERO-WIDTH SPACE) second pass -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x200B;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- #6. COMBINING MARKS (remove only after apostrophes are done) -->
    <!-- Remove U+0351 (COMBINING RIGHT HALF RING ABOVE) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0351;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Remove U+0307 (COMBINING DOT ABOVE) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0307;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Remove U+0331 (COMBINING MACRON BELOW) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0331;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />


    <!-- #7. DOUBLE-QUOTE NORMALIZATION -->
    <!-- Replace U+201C (LEFT DOUBLE QUOTE) with ASCII double quote " -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x201C;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam='&quot;' />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+201D (RIGHT DOUBLE QUOTE) with ASCII double quote -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x201D;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam='&quot;' />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- #8. ELLIPSIS, EM DASH, EN DASH, HTML ENTITIES -->
    <!-- Replace U+2026 (HORIZONTAL ELLIPSIS) with ASCII "..." -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2026;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="..." />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace literal &#151; (HTML entity for EM DASH) with ASCII "-" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&amp;#151;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2014 (EM DASH) with ASCII "-" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2014;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2013 (EN DASH) with ASCII "-" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2013;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace literal &zwnj; (ZERO WIDTH NON-JOINER entity) with ASCII "-" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&zwnj;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- #9. BULLETS, MATH SYMBOLS, LETTERS WITH DIACRITICS -->
    <!-- Replace U+2022 (BULLET) with ASCII "*" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2022;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&#x002A;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+8722 (MATHEMATICAL MINUS variant) with ASCII "&" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x8722;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&amp;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+011F (LATIN SMALL G WITH BREVE) with ASCII "g" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x11f;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="g" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+00E1 (LATIN SMALL A WITH ACUTE) with ASCII "a" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#xe1;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="a" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+0161 (LATIN SMALL S WITH CARON) with ASCII "s" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x161;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="s" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+011B (LATIN SMALL E WITH CARON) with ASCII "e" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x11b;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="e" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- #10. MISCELLANEOUS SYMBOLS -->
    <!-- Replace U+2713 (CHECK MARK) with ASCII space -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2713;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace ASCII hyphen "-" with ASCII hyphen "-" (normalize) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace backtick with ASCII single quote -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="`" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace Unicode Arrow (U+2192) with ASCII dash greaterthan -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2192;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="->" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace degree symbol with deg -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x00B0;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="deg" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace copyright symbol U??? with (C) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x00A9;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="(C)" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace Trademark (U+2122) with (TM) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2122;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="(TM)" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace Registered (U+00AE) with (R) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x00AE;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="(R)" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />


    <!-- #11. INVISIBLE OPERATORS (remove) -->
    <!-- Replace U+00AD (SOFT HYPHEN) with "" (remove completely) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x00AD;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2061 (FUNCTION APPLICATION) with "" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2061;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2062 (INVISIBLE TIMES) with "" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2062;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2063 (INVISIBLE SEPARATOR) with "" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2063;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2064 (INVISIBLE PLUS) with "" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2064;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+180E (MONGOLIAN VOWEL SEPARATOR) with "" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x180E;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- #12. LINE SEPARATORS -->
    <!-- Replace U+2028 (LINE SEPARATOR) with ASCII newline -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2028;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2029 (PARAGRAPH SEPARATOR) with ASCII newline -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2029;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+0085 (NEXT LINE / NEL) with ASCII newline -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0085;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+A78C (LATIN SMALL LETTER SALTILLO) with ASCII apostrophe "'" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#xA78C;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+FF07 (FULLWIDTH APOSTROPHE) with ASCII apostrophe "'" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#xFF07;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Remove U+0335 (COMBINING SHORT STROKE OVERLAY) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0335;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Remove U+0336 (COMBINING LONG STROKE OVERLAY) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0336;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Remove U+0337 (COMBINING SHORT SOLIDUS OVERLAY) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0337;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Remove U+0338 (COMBINING LONG SOLIDUS OVERLAY) -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x0338;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2043 (HYPHEN BULLET) with ASCII "-" -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2043;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+02BE (MODIFIER LETTER RIGHT HALF RING) w/ ASCII apostrophe -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x02BE;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+02BF (MODIFIER LETTER LEFT HALF RING) w/ ASCII apostrophe -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x02BF;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&apos;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+201E (DOUBLE LOW-9 QUOTATION MARK) w/ ASCII double quote -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x201E;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&quot;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+201F (DOUBLE HIGH-REVERSED-9 QUOTATION MARK) w/ dquote -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x201F;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&quot;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+275D (HEAVY DOUBLE QUOTATION MARK ORNAMENT LEFT) w/ dquote -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x275D;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&quot;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+275E (HEAVY DOUBLE QUOTATION MARK ORNAMENT RIGHT) w/ dquote -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x275E;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="&quot;" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2015 (HORIZONTAL BAR) with ASCII hyphen -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2015;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="-" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2009 (THIN SPACE) with ASCII space -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2009;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- Replace U+2009 (THIN SPACE) with ASCII space -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="&#x2009;" />
    <Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=" " />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />

    <!-- END OF CONVERSION BLOCKS -->

    <!-- Begin Scintilla HTML-paste workaround bottom portion -->
    <!-- Select all cleaned text -->
    <Action type="0" message="2013" wParam="0" lParam="0" sParam="" />

    <!-- Cut cleaned text to Windows clipboard -->
    <Action type="0" message="2177" wParam="0" lParam="0" sParam="" />
    <!-- End Scintilla HTML-paste workaround bottom portion -->

    <!-- Close N++ -->
    <Action type="2" message="41001" wParam="0" lParam="0" sParam="" />

    <!-- N++ will save shortcuts.xml automatically as it
    rewrites the file whenever shortcuts/macros/plugins change.
    Some sections are required so empty sections will be recreated.
    -->

    </Macro>
    </Macros>
    <UserDefinedCommands>
    </UserDefinedCommands>

    <PluginCommands />
    <ScintillaKeys />

    </NotepadPlus>
    --
    If something takes ten steps, you drop it in half, & half again, & then in half again, until everything you do on any computing device is one step.
    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From onion@onion@anon.invalid (=?ISO-8859-1?Q?Mr_=D6n!on?=) to alt.comp.software.thunderbird,news.software.readers,alt.comp.os.windows-11 on Fri Feb 13 22:50:52 2026
    From Newsgroup: news.software.readers

    Maria Sophia <mariasophia@comprehension.com> wrote:

    Mr +n!on wrote in:
    alt.comp.software.firefox
    comp.sys.mac.system
    alt.os.linux

    [...]

    I'm particularly interested in Usenet Newsreaders; would you please
    tell me more about yours? I've never heard of it before.


    Well, assuming (and hoping) that you're not the "sn!pe" troll, the fundamental point of writing my own newsreader was simply two major privacy/usability goals because I happen to know a lot about both.
    a. Full control of my privacy, and,
    b. Full control of the $EDITOR (which, for me, is gVim)

    [...]

    I don't understand how our conversation from alt.comp.software.firefox, comp.sys.mac.system, alt.os.linux has appeared in news.software.readers
    but, now that it's here, nsr is obviously an appropriate place for it.

    You have omitted what I wrote in my followup to that conversation;
    it was:

    =========
    There's a lot to digest in your explanation! Thank you, I've left it
    below for context. Apologies for rewrapping long lines, my 'reader
    insisted.

    I'm curious to know how it is that Paul happens to use the same 'reader
    as you do; I haven't seen seen Ratcatcher/2.0.0.25 (Windows/20130802)
    used elsewhere before.
    =========

    Would you care to comment please, Maria?
    --
    \|/
    (((-))) - Mr +n!on, NPC

    When we shake the ketchup bottle
    At first none comes and then a lot'll.
    --- Synchronet 3.21b-Linux NewsLink 1.2