====== SBBSecho - FidoNet Tosser ======
 
Synchronet's FidoNet EchoMail Program

===== Introduction =====
SBBSecho is an FTN echomail program (tosser/scanner) for Synchronet BBS version 2.0 and higher. SBBSecho is not a [[resource:FidoNet mailer]] (you'll still need [[resource:fidonet_mailer|one of those]], e.g. [[module:BinkIT]]).

As of SBBSecho v2.30 (Nov-2015), SBBSecho will also export FTN NetMail from the Synchronet mail base (''data/mail'' message base) to FTS-1 (''*.msg'') files.
  * This feature allows the gating of SMTP (Internet e-mail) to FTN netmail by sending email to "**//name//@p//<point>//.f//<node>//.n//<net>//.z//<zone>//.fidonet**" or "**//name//@f//<node>//.n//<net>//.z//<zone>//.fidonet**". The [[server:Mail|Synchronet Mail Server]] rev 1.588 (Nov-24-2015) or later will accept email addressed in this manner and save the messages in the mail base as FidoNet netmail, when addressed to a local BBS user name or alias.
  * This feature allows FidoNet netmail to be sent using JavaScript methods (e.g. via the [[server:web|Synchronet Web Server]]) as well as [[util:smbutil]] and [[module:postmsg]].

In 2016, SBBSecho was overhauled and christened //version 3//. The documentation here is in the process of being updated to reflect all the changes in SBBSecho version 3. For more details about SBBSecho version 3, see [[#Version 3]].

===== Terminology =====

The terminology used with FidoNet networking technology can be as confusing as it is particular. In our [[ref:FidoNet Glossary]] we attempt to define some terms we will be using through-out this article to describe the features and functions of SBBSecho. If you come across a term you aren't familiar with, please check the [[ref:FidoNet Glossary]].
 
===== Install =====

SBBSecho and its configuration program, EchoCfg, come with Synchronet BBS software (i.e. their executables can be found in your Synchronet ''[[dir:exec]]'' directory). So the program itself usually requires no special installation steps of its own.

Things you should have before you proceed:
  - Your hub/uplink's FidoNet address
  - Your hub/uplink's Internet hostname or IP address
  - Your own FidoNet address (use ''<//zone//>:<//net//>/9999'' if you have not yet been assigned a FidoNet address)
  - Your hub-agreed-upon BinkP session password
  - Your hub-agreed-upon packet password (optional)
  - Your hub-agreed-upon AreaFix password (optional)
  - An //EchoList// file for the network (e.g. ''BACKBONE.NA'')

==== Message Group ==== 

Create a message group called "FidoNet" (or whatever is most appropriate for the network) in [[util:SCFG]]->Message Areas:
  ╔══════════════════════════════════════════════════════════╗
  ║                       FidoNet Group                      ║
  ╠══════════════════════════════════════════════════════════╣
  ║ │Long Name                  FidoNet                      ║
  ║ │Short Name                 FidoNet                      ║
  ║ │Internal Code Prefix       FIDONET_                     ║
  ║ │Access Requirements                                     ║
  ║ │Sort Group by Sub-board    Index Position               ║
  ║ │Clone Options                                           ║
  ║ │Export Areas...                                         ║
  ║ │Import Areas...                                         ║
  ║ │Message Sub-boards...                                   ║
  ╚══════════════════════════════════════════════════════════╝
  

==== EchoList ====

Now, import a list of the public message areas ("echoes") from the network's standard EchoList (e.g. FidoNet's ''BACKBONE.NA'' file) into your new message group using the Message Group "Import Areas..." option in [[util:SCFG]]:
  ╔═════════════════════════════════════════╗
  ║         Import Area File Format         ║
  ╠═════════════════════════════════════════╣
  ║ │subs.txt        Synchronet Sub-boards  ║
  ║ │control.dat     QWK Conference List    ║
  ║ │areas.bbs       Generic Area File      ║
  ║ │areas.bbs       SBBSecho Area File     ║
  ->│backbone.na     FidoNet EchoList      <-
  ║ │badareas.lst    SBBSecho Bad Area List ║
  ╚═════════════════════════════════════════╝

An alternative method is to instead subscribe/link to the echoes (on your hub/uplink) you wish to carry on your BBS (e.g. via AreaFix request netmail message) and then as SBBSecho attempts to import received packets, it will add unknown areas to your ''[[dir:data]]/badareas.lst'' file. Import that file (''badareas.lst'') into SCFG->Message Areas->FidoNet. SBBSecho will automatically remove "known" areas from the ''badareas.lst'' file after they've been added to SCFG. You will lose some received EchoMail messages using this scheme.
===== Area File =====

By default, SBBSecho will try to open an //Area File// (by default, ''[[dir:data]]/areas.bbs'').

The Area File can be used to associate FidoNet EchoTags with sub-boards configured in [[util:SCFG]]->Message Areas. You can also specify downlinks and pass-through areas in an Area File, if need be.

The Area File is optional, not strictly needed, when you have the "Automatically Add New Subs to Area List" option enabled and set to "List Only" in [[util:EchoCfg]]->EchoMail Settings. To successfully operate **without** an Area File, you must have your hub configured in [[util:EchoCfg]]->Linked Nodes with its "Uplink for Message Groups" setting set to the //short name// of the message group you created for this network in [[util:SCFG]]->Message Areas.

You **will** need an Area File if you are to have any downlinks (nodes for which you are //their// hub to the network).

[[util:SCFG]] can also export a group of message areas (sub-boards) to an SBBSecho-compatible Area File (in either ''areas.bbs'' or ''areas.ini'' format) using the Message Group "Export Areas..." option:
  ╔═══════════════════════════════════════╗
  ║        Export Area File Format        ║
  ╠═══════════════════════════════════════╣
  ║ │subs.txt       Synchronet Sub-boards ║
  ->│areas.bbs      SBBSecho Area File   <-
  ->│areas.ini      SBBSecho Area File   <-
  ║ │backbone.na    FidoNet EchoList      ║
  ║ │newsgroup.lst  USENET Newsgroup List ║
  ╚═══════════════════════════════════════╝

If the ''AutoAddSubs'' feature is enabled, sub-boards configured in SCFG->Message Areas may be //automatically// added to your Area File when the network hub (your uplink) has be configured in EchoCfg->Linked Nodes and the "Group Hub" setting for that link set to the name of the corresponding message group in SCFG->Message Areas. This Auto-Add procedure happens during SBBSecho initialization and is not dependent upon receiving any echomail messages for the configured message areas.

==== Format ====

Two area file formats are supported by SBBSecho (pick one):   
  * areas.bbs - historic/legacy style, one echo/area per line  
  * areas.ini - more modern style, one echo/area per [section] 

=== areas.bbs ===

Each line of the SBBSecho Area File (e.g. ''areas.bbs'') represents an EchoMail message //area// in the following format:
  CODE TAG LINK [LINK] [...]

Where each field is separated by white-space (space or tab characters) and the fields are:

== CODE ==
The ''CODE'' field is the internal code of the sub-board.

Internal codes consist of a combination of the Message Group's "code prefix" and the Sub-board's "code suffix". The full internal code may be as long as 16 characters and may not contain white-space or any invalid filename characters.

= Pass-through Areas =
Any unrecognized internal codes are considered //pass-through// (not imported into your BBS's message areas). Using "''P''" for the internal code of pass-through areas will prevent warnings from being logged about the internal code not being found in your BBS's message base configuration (i.e. in ''[[util:SCFG]]''->Message Areas).

== TAG ==
The ''TAG'' field is the FTN area tag (or echo tag) as shown in your FTN network's agreed upon echo list file (e.g. ''BACKBONE.NA'' for the FidoNet North American backbone). Area tags may not contain white-space characters.

**Long Tags**\\
Although standard FidoNet echo tags (AKA "area tag") may be as long as 35 characters, Synchronet's Sub-board //short names// are limited to a length of 25 characters. As of July 28, 2018, Synchronet v3.17a will import (e.g. from a ''BACKBONE.NA'' file) echo tags longer than 25 characters into the "Newsgroup" name of the sub-board. Each sub-board's "Newsgroup" name can accommodate a length of up to 63 characters (no spaces). Likewise, when exporting message areas from SCFG or SBBSecho (e.g. to an ''areas.bbs'' file), if a "Newsgroup" name is defined for a message area, it will be used for the exported echo tag of that exported area.

**Bad Echo Area**\\
If an area's ''TAG'' field value is a ''*'' (asterisk), then the area will be considered a "bad echo" area and will receive all messages for areas not otherwise specified in this file (sort of a 'catch-all' bin for 'unknown' areas). You can have **only one** "bad echo" area configured in your Area File. To //re-toss// (move) messages from the "bad echo" area into newly added or linked sub-boards, run SBBSecho with the ''-r'' command-line option. 

== LINK ==
Each ''LINK'' field is an FTN address which you wish to import mail from and export mail to. At the very least, your uplink's (hub's) address should be listed here. Your address should **NOT** be listed here. If multiple link fields are specified, you should specify the full 3D or 4D address for each. Links can be remotely added or removed from the Area File by authenticated Nodes using AreaFix.

=== Example ===

<file>
FIDO_SBBS	SYNCHRONET	1:3615/50
FIDO_SYNCDATA	SYNCDATA	1:3615/50
FIDO_SYNC_SYS	SYNC_SYSOPS	1:3615/50
</file>

The amount of spacing (white-space characters including horizontal tabs and spaces) between each element in the line is not important. Each line may be up to 1024 characters in length.

**Note**:
  * Only the code and tag fields are required                            
  * The code and tag fields are case in-sensitive                        
  * The link fields must be 2D, 3D, or 4D FidoNet-style node addresses   
  * The '[' and ']' characters are not part of the link syntax           
  * Lines beginning with a semicolon (;) are ignored (i.e. comments)     
  * Leading white-space characters are ignored                           
  * Blank lines are ignored                                              
  * A tag value of '*' indicates a bad echo (unknown) area               
  * A code value of 'P' indicates a pass-through message area            
  * This file may be import/exported to/from your Message Areas in SCFG  
  * This file may be remotely modified by authorized nodes using AreaMgr 

=== areas.ini ===

<file areas.ini>
[tag]                                                                  
sub = code                                                             
links = link [link ...]                                                
pass-through = true or false (default: false)                          
</file>
                                                                       
Example ''areas.ini'' Area Section:                                        
                                                                       
   [BBS_CARNIVAL]                                                      
   sub = FIDO_BBS_CARN                                                 
   links = 1:218/700                                                   
                                                                       
**Note**:                                                              
  * Each area definition begins with the [tag] line (the '[' and ']' characters are required)                           
  * The code and tag values are case in-sensitive                       
  * The link values must be 2D, 3D, or 4D FidoNet-style node addresses  
  * The '[' and ']' characters are not part of the link syntax          
  * Lines beginning with a semicolon (;) are ignored (i.e. comments)    
  * Leading white-space characters are ignored                          
  * Blank lines are ignored                                               
  * A tag value (section name) of '*' indicates a bad echo (unknown) area 
  * This file may be import/exported to/from your Message Areas in SCFG   
  * This file may be remotely modified by authorized nodes using AreaMgr  

===== Configure =====
 
In order to set up SBBSecho for your system you must:
  - Configure your fundamental FTN settings (e.g. system address) in [[util:SCFG]]->Networks->FidoNet.
  - Use the ''[[util:EchoCfg]]'' utility (highly recommended) or edit your ''[[dir:ctrl]]/sbbsecho.ini'' configuration (text) file by hand

==== SCFG ====

The fundamental FTN-related system settings are configured via [[SCFG]]->Networks->FidoNet EchoMail and NetMail:
  ╔══════════════════════════════════════════════════════════╗
  ║               FidoNet EchoMail and NetMail               ║
  ╠══════════════════════════════════════════════════════════╣
  ║ │System Addresses                                        ║
  ║ │Default Origin Line                                     ║
  ║ │NetMail Semaphore          %jfidoout.now                ║
  ║ │EchoMail Semaphore         %jfidoout.now                ║
  ║ │NetMail Directory          ../fido/netmail/             ║
  ║ │Allow Sending of NetMail   Yes                          ║
  ║ │Allow File Attachments     No                           ║
  ║ │Send NetMail Using Alias   No                           ║
  ║ │NetMail Defaults to Crash  No                           ║
  ║ │NetMail Defaults to Direct No                           ║
  ║ │NetMail Defaults to Hold   No                           ║
  ║ │Kill NetMail After Sent    Yes                          ║
  ║ │Cost to Send NetMail       0                            ║
  ╚══════════════════════════════════════════════════════════╝

The settings from this SCFG menu used by SBBSecho include:

  * System Addresses (Main and AKAs)
  * NetMail Directory
  * Default Origin Line

At the minimum, you will need to configure your //Main// FTN System Address here.

=== System Addresses ===
Set your main/primary FidoNet address and AKAs (secondary/othernet FTN addresses) here. If you only have a temporary address, set your //Main// address to that value.

Only 3D (zone:net/node) and 4D (zone:net/node.point) addresses are supported in this setting.

=== NetMail Directory ===
This is the path to a directory on your local system where both inbound and outbound FTN NetMail will be stored. The only files placed in this directory should be FTN [[ref:fidonet_files#stored_message|Stored Messages]] (''*.msg'' format).

Synchronet can create ''*.msg'' files in this directory when sending NetMail from the terminal server.

SBBSecho will create ''*.msg'' files in this directory when creating NetMail messages (e.g. auto-responding to ''PING'' or ''AreaFix'' requests, notices to the //Area Manager//, or exporting NetMail from the "mail" msgbase) or unpacking NetMail from inbound [[ref:fidonet_files#packet|Packets]]. SBBSecho will discover ''*.msg'' files in this directory when Packing outbound NetMail, importing into the "mail" msgbase, or handling AreaFix and PING requests.

The other NetMail-related settings on this [[util:SCFG]] menu affect only FidoNet NetMail messages created by users of the Synchronet [[:server:Terminal]] Server; they are not used by SBBSecho.

=== Default Origin Line ===
Standard FTN EchoMail messages contain a terminating ''* Origin'' line. The default Origin Line, or at least the portion between the ''* Origin'' prefix and your system's address in parenthesis, is configured here. You do not have to enter an Origin Line here, but it is customary to enter the name, hostname or IP address and/or phone number of your BBS here. SBBSecho will use the text in this setting as the default Origin Line to append to outbound EchoMail messages (posted locally or gated from other network technologies).

It is possible to over-ride this default Origin Line for specific message areas (sub-boards), if so desired by the sysop.

=== Inbound File Directory ===
Older versions of SCFG (e.g. v3.16) contained this FidoNet setting which was used to specify the directory where non-secure inbound FidoNet files would be received by your FTN mailer. SBBSecho v2 used this setting, however Synchronet itself did not, so it was deprecated with SBBSecho v3  (replaced with the ''Non-secure Inbound Directory'' setting in EchoCfg/''[[config:sbbsecho.ini]]'' and removed from future versions of [[SCFG]]).


==== EchoCfg ====

The SBBSecho Config program (''echocfg'') is the program used to configure all the SBBSecho-specific settings saved exclusively in the SBBSecho configuration file (''[[config:sbbsecho.ini]]'').

=== Command-line Syntax ===

Multiple configuration files can be used (but isn't usually required) for
multi-mailer systems. The default SBBSecho configuration filename is ''sbbsecho.ini''
and located in your Synchronet ''[[dir:ctrl]]'' directory. You can override this default by specifying
the name and location of the configuration file on the ''sbbsecho'' and ''echocfg''
command lines if desired.

If you do not specify a configuration file, ''echocfg'' and ''sbbsecho'' will use ''[[dir:ctrl]]/sbbsecho.ini'' by default (the ''[[dir:ctrl]]'' directory being read from the ''SBBSCTRL'' system environment variable).

<code>
usage: echocfg [path/to/sbbsecho.ini] [options]

options:

-c  =  force color mode
-m  =  force monochrome mode
-e# =  set escape delay to #msec
-iX =  set interface mode to X (default=auto) where X is one of:
       W = Win32 native mode
       A = ANSI mode
       D = standard input/output/door mode
-v# =  set video mode to # (default=auto)
-l# =  set screen lines to # (default=auto-detect)
</code>


Upon running ''[[util:echocfg]]'' you will be brought to the main menu of the configuration
program. The path and filename of the configuration file being modified will
appear at the top of the menu. Following are screen captures of available menus
within the configuration program and an explanation of the options contained on
each of them. Using the //Help// option of the program (e.g. hitting the F1 key)
can provide helpful context-sensitive text to the user (you).

  ╔═════════════════════════╗
  ║    Configure FidoNet    ║
  ╠═════════════════════════╣
  ║ │Global Settings...     ║
  ║ │Linked Nodes...        ║
  ║ │Archive Types...       ║
  ║ │NetMail Settings...    ║
  ║ │EchoMail Settings...   ║
  ║ │Paths and Filenames... ║
  ║ │Domains...             ║
  ║ │EchoLists...           ║
  ╚═════════════════════════╝
  

=== Saving Changes ===
When any unsaved changes have been made to the configuration, an additional option appears allowing you to save the changes to the configuration file:
  ║ │Save Changes to sbbsecho.ini ║
  ╚═══════════════════════════════╝

Additionally, when exiting (via ESC key or mouse-click on the close glyph), SBBSecho will prompt you if you wish to save the unsaved changes to the configuration file:
  ╔══════════════════╗
  ║ Save Config File ║
  ╠══════════════════╣
  ║ │Yes             ║
  ║ │No              ║
  ╚══════════════════╝
EchoCfg will normally automatically make a backup of an existing configuration file before over-writing it. For example, ''[[dir:ctrl]]/sbbsecho.0.ini'' will be the most recently backed-up version of ''sbbsecho.ini''. This feature can be disabled if so desired by setting ''Config File Backups'' to ''0''.

=== Global Settings ===
  ╔═══════════════════════════════════════════════════╗
  ║                  Global Settings                  ║
  ╠═══════════════════════════════════════════════════╣
  ║ │Mailer Type                    Binkley/FLO       ║
  ║ │Log Level                      Debugging         ║
  ║ │Log Timestamp Format           %m/%d/%y %H:%M:%S ║
  ║ │Strict Packet Passwords        Enabled           ║
  ║ │Config File Backups            10                ║
  ║ │Minimum Free Disk Space        10G bytes         ║
  ║ │Strip Incoming Soft CRs        No                ║
  ║ │Strip Outgoing Line Feeds      No                ║
  ║ │Use Outboxes for Mail Files    Yes               ║
  ║ │BSY Mutex File Timeout         12 hours          ║
  ║ │BSO Lock Attempt Delay         10 seconds        ║
  ║ │BSO Lock Attempt Limit         60                ║
  ║ │BinkP Capabilities                               ║
  ║ │BinkP Sysop Name               Your Name         ║
  ║ │BinkP Authentication           Plain or CRAM-MD5 ║
  ║ │BinkP Encryption               Supported         ║
  ╚═══════════════════════════════════════════════════╝
=== Mailer Type ===
Mailer Type should normally be set to ''Binkley/FLO'' to enable SBBSecho's  
"Binkley-Style Outbound" operating mode (a.k.a. BSO or FLO mode).   
If you are using an Attach, ArcMail, or FrontDoor style FidoNet     
mailer, then set this setting to ArcMail/Attach, but know that most 
modern FidoNet mailers are Binkley-Style and therefore that mode of 
operation in SBBSecho is more widely tested and supported.          

Selecting this menu item will toggle between the mailer types supported
by SBBSecho, either ArcMail/Attach-style mailers or (the preferred) Binkley/FLO-style mailers.  Choose the one that matches your FTN
mailer type (e.g. [[module:BinkIT]] is a Binkley/FLO-style mailer).

== Log Level ==
The //Log Level// menu option will allow you to determine the minimum severity of log entries that will be written to your SBBSecho log file (e.g. ''[[dir:data]]/sbbsecho.log''):

  ╔════════════════╗
  ║    Log Level   ║
  ╠════════════════╣
  ║ │Emergency     ║
  ║ │Alert         ║
  ║ │Critical      ║
  ║ │Error         ║
  ║ │Warning       ║
  ║ │Notice        ║
  ║ │Informational ║
  ║ │Debugging     ║
  ╚════════════════╝

Log Level should normally be set to ''Informational'' but if you're         
experiencing problems with SBBSecho and would like more verbose log 
output, set this to ''Debugging''. If you want less verbose logging,    
set to higher-severity levels to reduce the number of log messages. 

== Log Timestamp Format ==
Log Timestmap Format defines the format of the date/time-stamps added  
along with each log message to the log file (e.g. ''sbbsecho.log'').   
The timestamp format is defined using standard C ''[[custom:strftime]]'' notation.
The default format is: ''%Y-%m-%d %H:%M:%S''.           
For SBBSecho v2 timestamp format, use ''%m/%d/%y %H:%M:%S''.            

== Strict Packet Passwords ==
Strict Packet Passwords, when enabled, requires that Packet Passwords  
must match the password for the linked-node from which the packet  
was received, even if that linked-node has no password configured. 
If you wish to revert to the SBBSecho v2 behavior with less strict 
enforcement of matching packet passwords, disable this option.     
Default: Enabled                                                   

== BSY Mutex File Timeout ==
BSY Mutex File Timeout determines the maximum age of an existing      
mutex file (*.bsy) before SBBSecho will act as though the mutex   
file was not present.  This setting applies to the global         
sbbsecho.bsy file as well as the BSO lock (*.bsy) files for       
individual nodes.                                                 
Default: 12 hours                                                 

== BSO Lock Attempt Delay ==                                                                      
BSO Lock Attempt Delay determines the amount of time between BSO      
node lock attempts (via *.bsy files in the relevant outbound      
directory).                                                       
Default: 10 seconds                                               

== BSO Lock Attempt Limit ==                                                                      
BSO Lock Attempt Limit determines the maximum number of BSO node lock 
attempts before SBBSecho will give-up and move on to another node 
to process mail.  This value multiplied by the BSO Lock Attempt   
Delay should be much less than the BSY Mutex File Timeout value.  
Default: 60 attempts                                              

== Config File Backups == 
Config File Backups determines the number of automatic backups of your 
SBBSecho configuration file (e.g. ''sbbsecho.ini'') that will be       
maintained by SBBSecho Config and SBBSecho AreaFix.                

== BinkP Capabilities ==
Set this value if you need to override the the text in the BinkP ''M_NUL NDL'' line, from the default of "115200,TCP,BINKP".

== BinkP Sysop Name ==
Set this value if you'd like to over-ride the BinkP Sysop Name (''ZYZ'') value (e.g. to send the sysop's real name, rather than alias).

=== Linked Nodes ===
This menu item allows you to add, remove, and configure nodes that you
will be sending mail to and accepting mail from.  Selecting this option will bring you to
a sub-menu which will look similar to the following:

  ╔══════════════╗
  ║ Linked Nodes ║
  ╠══════════════╣
  ║ │            ║
  ╚══════════════╝

At the ''Linked Nodes...'' sub-menu, pressing the INSert key will allow you to
add a new node, pressing the DELete key will remove the currently
highlighted node. A //Node// here does not necessarily identify a single FidoNet node, but can also be used to identify a group of nodes by using the ''ALL'' wildcard (indicating that a node configuration will be used for *all* nodes with a specific zone or zone:net).

**Note:**\\
The hexadecimal numbers in parentheses are provided as an aide when correlating FidoNet files and BSO directories with node numbers.   
  ╔══════════════════════════════════════════════════╗
  ║                   Linked Nodes                   ║
  ╠══════════════════════════════════════════════════╣
  ║ │ALL                          Everyone           ║
  ║ │21:ALL           (.015)      fsxNet             ║
  ║ │1:218/700        (00da02bc)  Kurt Weiske        ║
  ║ │3:712/848        (02c80350)  Scott Little       ║
  ║ │2:280/464        (011801d0)  Wilfred van Velzen ║
  ║ │1:124/5016       (007c1398)  Nigel Reed         ║
  ║ │1:153/757        (009902f5)  Al                 ║
  ║ │1:320/219        (014000db)                     ║
  ║ │1:320/119        (01400077)                     ║
  ║ │21:1/100         (00010064)  Paul Hayton (Avon) ║
  ║ │                                                ║
  ╚══════════════════════════════════════════════════╝

Pressing ENTER on a currently
highlighted node will allow you to edit the settings for that particular
node from a menu like the following (note that the node number you are
editing appears at the top of the window):

  ╔═════════════════════════════════════════════╗
  ║           Linked Node - 1:218/700           ║
  ╠═════════════════════════════════════════════╣
  ║ │Address                        1:218/700   ║
  ║ │Domain                         fidonet     ║
  ║ │Name                           Kurt Weiske ║
  ║ │Comment                                    ║
  ║ │Archive Type                   ZIP         ║
  ║ │Packet Type                    2+          ║
  ║ │Packet Password                            ║
  ║ │Session Password                           ║
  ║ │TIC File Password                          ║
  ║ │AreaFix Support                Yes         ║
  ║ │AreaFix Password                           ║
  ║ │EchoList Keys                              ║
  ║ │Status                         Normal      ║
  ║ │Direct                         No          ║
  ║ │Passive                        No          ║
  ║ │Send Notify List               No          ║
  ║ │Uplink for Message Groups      FidoNet     ║
  ║ │Local Address (AKA)            Best Match  ║
  ║ │Route To                       Disabled    ║
  ║ │Inbox Directory                            ║
  ║ │Outbox Directory                           ║
  ║ │BinkP Settings...                          ║
  ╚═════════════════════════════════════════════╝

== Address ==
This is the address of the node you are editing, selecting it
will allow you to change this to a different address. Using
the "ALL" wildcard in place of one of the address components
will allow you to configure settings for all nodes that meet
that specification (e.g. all nodes in zone 1 can be specified
as ''1:ALL'' or all nodes in zone 1, net 103 can be specified
as ''1:103/ALL'').

== Comment ==
Comment is a note to yourself about this node. Setting this to the  
user or sysop name corresponding with the configured node can be
a helpful reminder to yourself later.                           

== Archive Type ==
Archive Type is the name of an archive type corresponding with one of  
your configured archive types or 'None'.  This archive type will   
be used when creating EchoMail bundles or if None, raw/uncompressed
EchoMail packets will be sent to this node.                        

This setting may be managed by the node using AreaFix requests.    

Selecting this option will allow you
to choose from a menu of currently configured archive types,
like the following:

  ╔══════════════╗
  ║ Archive Type ║
  ╠══════════════╣
  ║ │ZIP         ║
  ║ │ARC         ║
  ║ │LZH         ║
  ║ │ARJ         ║
  ║ │PAK         ║
  ║ │SQZ         ║
  ║ │ZOO         ║
  ║ │None        ║
  ╚══════════════╝

Selecting "None" will specify that this node is to receive
uncompressed/raw packets (no bundles).

**Note about Archive Software:**

Command-line versions of common archive programs can be found at [[http://www.digitaldistortionbbs.com/miscFilesForDL/Win32CmdLineCompressionTools.zip|Digital Distortions]] along with setup instructions [[http://web.archive.org/web/20170127105607/http://digitaldistortionbbs.com/SyncArcGuide.html|here]]. One thing to note is that the latest release of ARJ is v3.20 and it complains about being outdated. An open source version is available [[http://arj.sourceforge.net/|here]]. It's been tested at Split Infinity and appears to be a seamless fit.


== Packet Type ==
This is the type of [[ref:fidonet packets]] that will be used when creating mail
packets for this node. The default packet type used by SBBSecho
is 2+.	If you are a "point" address (e.g. ''1:100/100**.1**'') you
should use either a type 2+, 2e, or 2.2 packet since type 2 packets
do not support point numbers. Selecting this option will allow
you to choose from a menu of currently supported packet types:
  ╔═════════════╗
  ║ Packet Type ║
  ╠═════════════╣
  ║ │2+         ║
  ║ │2e         ║
  ║ │2.2        ║
  ║ │2          ║
  ╚═════════════╝

== Packet Password ==
Packet Password is an optional password that may be added to outbound   
packets for this node.  Incoming packet passwords are compared with 
this password value.  If this password is blank/empty and ''Strict    
Packet Passwords'' are enabled, then incoming packets from this node  
must also have no password.  Packet passwords are case insensitive. 
This setting may be managed by the node using AreaFix requests.     

== Session Password ==
When using [[module:BinkIT]] as your mailer, this setting will determine the BinkP session password used when communicating with this linked node.

== TIC File Password ==
TIC File Password is an optional password that may be configured here 
(and in your sbbsecho.ini file) for use by ticket.js when creating
or authenticating .TIC files.                                     
This setting may be managed by the node using AreaFix requests.   

== AreaFix Support ==
Remote area management (via AreaFix requests from this linked node) may be enabled (set to Yes) or disabled (set to No) using this menu option.

== AreaFix Password ==
AreaFix passwords (AKA AreaManager passwords) are required to be included in the //Subject// line of received AreaFix/AreaManager requests (NetMail messages).
AreaFix Passwords are case insensitive and cannot contain spaces.                         
This setting may be managed by the node using AreaFix requests. 

== EchoList Keys ==
When echo lists have been defined (from the
'EchoLists...' sub-menu) these keys determine
which EchoLists can be used by this node when processing Area Manager add requests.

== Status ==
This option determines the netmail status that will be set
when SBBSecho sends out an areafix message or a file attach.
Selecting this option toggles between None, Crash, and Hold
status.

== Direct ==
When set to ''Yes'' this option will add a Direct kludge line
to messages that SBBSecho sends out (or create DLO/DUT files
for FLO mailers).

== Passive ==
Setting this option to 'Yes' will prevent messages from being
sent to this node without the need for altering the Area
File.  This is useful for temporarily shutting off the messages
to this node.  This option can be toggled on and off remotely
via an area manager request.

== Send Notify List ==
This determines whether or not this node is sent a Notify List
when using that command line option in SBBSecho.
A Notify List is a netmail sent to the system operator of the
node showing options set for the node as well as connected
areas.

== Uplink for Message Groups ==
Uplink for Message Groups is an optional list of Message Groups (short 
names) for which this node is a hub/uplink for your system.  This  
setting is used in combination with the Auto Add Sub-boards feature
to auto-link hubs with the newly added areas in your Area File.    

== Route To ==
When configured for Binkley/FLO-style mailers, this option allows any mail sent to nodes matching this node entry's address (including the ''ALL'' wildcard matches), to be routed to a different address (e.g. your uplink/hub's address). This option is particularly useful for routed NetMail.

Attach-style mailers have their own routing configuration and that is why this option is not available in ''echocfg'' when configured for FrontDoor/Attach-style mailers.

== Inbox Directory ==
Inbox Directory is only used in BSO operating mode and is an optional
alternate directory to search for incoming files from this node
(e.g. used in combination with BinkD's ''ibox'' setting).

Note: [[module:BinkIT]] does **not support** inboxes at this time.

== Outbox Directory ==
Outbox Directory is only used in BSO operating mode and is an optional
alternate directory to place outbound files for this node (e.g. used
in combination with BinkD's ''obox'' setting).

Note: [[module:BinkIT]] has //experimental support// for outboxes at this time.

== BinkP Settings ==

BinkP Settings are settings specific to BinkP/BinkIT mailer operation.

  ╔═════════════════════════════════════╗
  ║       1:218/700 BinkP Settings      ║
  ╠═════════════════════════════════════╣
  ║ │Host                               ║
  ║ │Port                 24554         ║
  ║ │Poll                 Yes           ║
  ║ │Authentication       CRAM-MD5 Only ║
  ║ │Encryption           Supported     ║
  ║ │Source Address                     ║
  ╚═════════════════════════════════════╝

**Host** defines the TCP/IP address or host name with which to connect for sessions with this linked node.  If the host is not set, then a DNS-based look-up will be attempted (e.g. the IP address for 1:103/705 would be looked-up via host name f705.n103.z1.binkp.net). Nodelist-based look-ups are also supported.                         
                                                                        
**Port** defines the TCP port used by this linked node for BinkP sessions. The default BinkP TCP port is 24554.                                
                                                                        
**Poll** defines whether or not to periodically poll this linked node.

**Authentication** determines what types of authentication will be supported during both inbound and outbound sessions with this linked node. The supported BinkP-auth methods are //Plain-Password// and //CRAM-MD5//.
                                                                        
**Encryption** determines whether unencrypted data transfers will be supported or required when communicating with this linked node. With this setting set to ''Required'', only BinkD-style-encrypted BinkP sessions will be supported. //CRAM-MD5// authentication must be used when encrypting BinkP sessions.
                                                                        
**Source** Address allows you to override the source FTN address used with outgoing BinkP mailer sessions with this linked node. Normally, this setting is left blank (not set).                     

=== Archive Types ===

This option allows you to add or remove archive programs from SBBSecho.
Selecting this option will bring you to the following menu:
  ╔═══════════════╗
  ║ Archive Types ║
  ╠═══════════════╣
  ║ │ZIP          ║
  ║ │ARC          ║
  ║ │LZH          ║
  ║ │ARJ          ║
  ║ │PAK          ║
  ║ │SQZ          ║
  ║ │ZOO          ║
  ║ │             ║
  ╚═══════════════╝

At the Archive Programs... sub-menu, pressing the INSert key will allow
you to add a new archive program. Pressing the DELete key will remove
the currently highlighted archive program. And pressing ENTER on the
currently highlighted archive program will allow you to edit the
options for that particular program from a menu like the following (note
that the name of the archive program you are editing appears at the top
of the window):

  ╔═══════════════════════════════════════════════════════╗
  ║                   Archive Type - ZIP                  ║
  ╠═══════════════════════════════════════════════════════╣
  ║ │Archive Type                   ZIP                   ║
  ║ │Signature                      504B                  ║
  ║ │Signature Offset               0                     ║
  ║ │Pack Command Line              %@zip -jD %f %s       ║
  ║ │Unpack Command Line            %@unzip -ojC %f -d %s ║
  ╚═══════════════════════════════════════════════════════╝

== Archive Type ==
This is the identifying name of the archive file type. Usually this name
corresponds with the common file extension or suffix denoting this type 
of archive file (e.g. zip, arc, etc.).                                  

This is the name that will be used to reference this particular
archiving program.  This is also the name that should be used
by nodes using areamanger to change their compression type
remotely.

== Signature ==
This is the identifying signature of the archive file format (in      
hexadecimal notation).  This signature is used in combination with the
Archive Signature Offset for the automatic detection of proper archive
program to extract (unarchive) inbound EchoMail bundle files.         

== Signature Offset ==
This is the byte-offset of the identifying signature of the archive file
format.  This offset is used in combination with the Archive Signature  
for the automatic detection of proper archive program to extract        
(unarchive) inbound EchoMail bundle files.                              

== Pack Command Line ==
This is the command-line to execute to create an archive file of the   
selected type.  The following command-line specifiers may be used for  
dynamic variable replacement:                                          

^ Specifier ^ Description ^
| ''%f'' | The path/filename of the archive file to be created              |
| ''%s'' | The path/filename of the file(s) to be added to the archive      |
| ''%!'' | The Synchronet exec directory                                    |
| ''%@'' | The Synchronet exec directory only for non-Unix systems          |
| ''%.'' | Blank for Unix systems, '.exe' otherwise                         |
| ''%?'' | The current platform description (e.g. 'linux', 'win32')         |
| ''%j'' | The Synchronet data directory                                    |
| ''%k'' | The Synchronet ctrl directory                                    |
| ''%o'' | The configured system operator name                              |
| ''%q'' | The configured system QWK-ID                                     |
| ''%g'' | The configured temporary file directory                          |

== Unpack Command Line ==
This is the command-line to execute to extract an archive file of the
selected type.
The ''%f'' command line specifier will
expand to the name of the archive file, the '%s' command
line specifier will expand to the path where the file is to
be extracted to.


=== NetMail Settings ===

  ╔════════════════════════════════════════════════╗
  ║                NetMail Settings                ║
  ╠════════════════════════════════════════════════╣
  ║ │Sysop Aliases                           SYSOP ║
  ║ │Default Recipient                             ║
  ║ │Fuzzy Zone Operation                    No    ║
  ║ │Kill/Ignore Empty NetMail Messages      No    ║
  ║ │Delete Processed NetMail                Yes   ║
  ║ │Ignore NetMail Destination Address      No    ║
  ║ │Ignore NetMail 'Sent' Attribute         No    ║
  ║ │Ignore NetMail 'KillSent' Attribute     No    ║
  ║ │Ignore NetMail 'Received' Attribute     No    ║
  ║ │Ignore NetMail 'Local' Attribute        No    ║
  ║ │Maximum Age of Imported NetMail         None  ║
  ╚════════════════════════════════════════════════╝
== Fuzzy Zone Operation ==
Some mail programs do not create netmail messages with zone
information (INTL kludge line) or may only do so when sending
between zones. This is a problem for systems that receive
netmail for multiple addresses with different zones (AKAs with
different zone numbers). Setting this option to "Yes" allows
SBBSecho to guess what the correct originating and destination
zone is based on the net and node portions of the destination
address in netmail message.

=== EchoMail Settings ===
  ╔═════════════════════════════════════════════════════════╗
  ║                    EchoMail Settings                    ║
  ╠═════════════════════════════════════════════════════════╣
  ║ │Area Manager                                 SYSOP     ║
  ║ │Maximum Packet Size                          292K      ║
  ║ │Maximum Bundle Size                          292K      ║
  ║ │Secure Operation                             Yes       ║
  ║ │Notify Users of Received EchoMail            Yes       ║
  ║ │Convert Existing Tear Lines                  No        ║
  ║ │Automatically Add New Subs to Area List      List/File ║
  ║ │Allow Nodes to Add Areas from Area File      Yes       ║
  ║ │Maximum Backups to Maintain of Area File     100       ║
  ║ │Circular Path Detection                      Enabled   ║
  ║ │Relay Filtered Messages                      No        ║
  ║ │Outbound Bundle Attachments                  Delete    ║
  ║ │Zone Blind SEEN-BY and PATH Lines            Zones 1-4 ║
  ║ │Maximum Age of Imported EchoMail             60 days   ║
  ╚═════════════════════════════════════════════════════════╝

== Area Manager ==
This is the name or alias of the BBS user where notification of AreaFix
failures should be sent (default: ''SYSOP'').  AreaFix failures include nodes sending AreaFix requests which are not
configured for AreaFix operation, nodes using incorrect AreaFix passwords, and
the like.  Setting this option to a blank string will disable the notification feature.

== Maximum Packet Size ==
This menu item allows you to set the maximum size of each outgoing
echomail packet.

== Maximum Bundle Size ==
Mail packets are normally packed into what are called "bundles" (unless
a node is set up to receive uncompressed mail packets).  This menu item
allows you to specify the maximum size of each outgoing mail bundle.

== Secure Operation ==
Secure Operation tells SBBSecho to check the Area File (e.g. ''areas.bbs'') to insure that the packet origin (FTN //address//) of each inbound EchoMail message is already linked to the EchoMail //area// where the message was posted. Messages denied import due to this setting are logged as a ''Security violation''. This setting defaults to ''No''.                                        

== Allow Nodes to Add Areas from Area File ==
When set to ''Yes'', SBBSecho will allow nodes to add areas
(via area manager) which are listed in your Area File, overriding any EchoList //Required Keys//.
When set to ''No'', SBBSecho will only allow nodes to add areas
from any additionally configured EchoLists which they have
access to.

As of SBBSecho v3.28, this option will be automatically disabled, with a logged warning, when //any// EchoLists have been configured with //Required Keys//. This is done to prevent the accidental leakage of access to protected echoes once added to the Area File.

== Zone Blind SEEN-BY and PATH Lines ==
Zone Blind SEEN-BY and PATH Lines when Enabled will cause SBBSecho to assume that node numbers are not duplicated across zones and that a net/node combination in either of these Kludge lines should be used to identify a spcific node regardless of which zone that node is located in (thus breaking the rules of FidoNet 3D addressing).

If you are having trouble with FidoNet echomail crossing Zone boundaries which does not add all the SEEN-BY and PATH nodes, then enable this option with the limit of "4".

=== Paths and Filenames ===
This menu item allows you to configure the paths and filenames which are
used by SBBSecho.  Selecting this option will bring you to the
following sub-menu:

  ╔═══════════════════════════════════════════════════════╗
  ║                  Paths and Filenames                  ║
  ╠═══════════════════════════════════════════════════════╣
  ║ │Non-secure Inbound Directory   ../fido/nonsecure     ║
  ║ │Secure Inbound Directory       ../fido/inbound       ║
  ║ │Outbound Directory             ../fido/outbound/     ║
  ║ │Area File                      ../data/areas.bbs     ║
  ║ │Bad Area File                  ../data/badareas.lst  ║
  ║ │Log File                       ../data/sbbsecho.log  ║
  ║ │Echo Statistics File           ../data/echostats.ini ║
  ║ │Temporary File Directory       ../temp/sbbsecho      ║
  ║ │Outgoing Semaphore File        ../data/binkout.now   ║
  ╚═══════════════════════════════════════════════════════╝

== Non-secure Inbound Directory ==
This is the path where your FTN mailer stores, and where SBBSecho will
look for, incoming files (potentially including message bundles and   
packets) from unauthenticated (non-secure) mailer sessions.           
                                                                      
Default value is ''../fido/nonsecure''.                                 

== Secure Inbound Directory ==
This is the path where your FTN mailer stores, and where SBBSecho will
look for, incoming message bundles and packets for Secure (password   
protected) sessions.                                                  
                                                                      
Default value is ''../fido/inbound''.                                     


== Outbound Directory ==
This is the path where your FTN mailer will look for, and where SBBSecho
will place, outgoing message bundles and packets.                       
                                                                        
In Binkley-Style Outbound mode, this serves as the base directory       
name for special foreign zone and point destination nodes as well.      

Default value is ''../fido/outbound''.                                      

== Area File ==
This is the path of the file SBBSecho will use as your primary      
list of FidoNet-style message areas.  This file is only required    
to exist if you need SBBSecho to support Area Manager operations.   
                                                                    
Two area file formats are supported by SBBSecho (pick one):         
  * areas.bbs - historic/legacy style, one echo/area per line        
  * areas.ini - more modern style, one echo/area per [section]       
                                                                    
== Bad Area File ==

This is the path of the file SBBSecho will use to record the names     
(echo tags) and descriptions of FTN message areas (echoes) that your   
system has received EchoMail for, but does not carry locally. The      
default path/filename is ''[[dir:data]]/badareas.lst''.                         
                                                                       
Notes:                                                               

  * The descriptions of the areas will only be included if the corresponding echo tags can be located in one of your configured EchoLists.
  * The format of the file is the same as BACKBONE.NA and suitable for importing into a Synchronet Message Group using SCFG.               
  * SBBSecho will automatically sort and maintain this list, removing areas if they are added to your configuration (SCFG->Message Areas) and your Area File.                                                 

== Log File ==
This is the path of the file SBBSecho will use to log information each
time it is run (default is ''../data/sbbsecho.log''). 

== Echo Statistics File ==
This is the path of the file SBBSecho will use to track statistics for
EchoMail message areas (default is ''../data/echostats.ini'').            

== Temporary File Directory ==
                                                                      
This is the directory where SBBSecho will store temporary files that  
it creates and uses during its run-time (default is ''../temp/sbbsecho'').

== Outgoing Semaphore File ==
                                                                        
This is an optional file to create/touch whenever there are new outbound
files created or updated by SBBSecho.  If you're using [[module:BinkIt]] as your mailer, then this should normally be set to ''../data/binkout.now''.

=== Domains ===

Here you can configure the so-called "5th dimension" of FidoNet addresses, //"domains"//, here.

These are the domain->zone mapping that //used// to be configured via the file: ''ftn_domains.ini'' (but is now configured in ''sbbsecho.ini'' and this utility).

  ╔══════════════════════╗
  ║        Domains       ║
  ╠══════════════════════╣
  ║ │fidonet   binkp.net ║
  ║ │fsxnet              ║
  ║ │                    ║
  ╚══════════════════════╝

Selecting a node to configure will display a dialog like the following:
  ╔══════════════════════════════════════════════════════╗
  ║                   Domain - fidonet                   ║
  ╠══════════════════════════════════════════════════════╣
  ║ │Name                           fidonet              ║
  ║ │Zones                          1,2,3,4,5,6          ║
  ║ │DNS Suffix                     binkp.net            ║
  ║ │Outbound Root                  ../fido/outbound/    ║
  ║ │NodeList                                            ║
  ╚══════════════════════════════════════════════════════╝

=== EchoLists ===
This menu item allows you to add and remove additional echo lists which
can be used by SBBSecho for area manager add requests.	Normally these
will be used in addition to your AREAS.BBS file.  If you have the
toggle option 'Allow Nodes to Add Areas from Area File' set to
'No', you MUST create at least one additional echo list if you wish
to allow other nodes to add areas via area manager requests.

Selecting this item will bring you to a sub-menu listing any
additional echo lists you currently have defined:

  ╔═══════════════════════╗
  ║       EchoLists       ║
  ╠═══════════════════════╣
  ║ │c:\binkd\backbone.na ║
  ║ │                     ║
  ╚═══════════════════════╝

Pressing the INSert key will allow you to add a new echo list, pressing
the DELete key will remove the currently highlighted echo list, and
pressing ENTER on the currently highlighted echo list will allow you to
edit information about that list:

  ╔══════════════════════════════════════════════════════╗
  ║                EchoList - backbone.na                ║
  ╠══════════════════════════════════════════════════════╣
  ║ │EchoList Path/Name             c:\binkd\backbone.na ║
  ║ │Hub Address                    None                 ║
  ║ │Forward Password               None                 ║
  ║ │Forward Requests               No                   ║
  ║ │AreaFix Keys                                        ║
  ╚══════════════════════════════════════════════════════╝

== EchoList Path/Name ==
This is the full path and filename of the echo list you are
defining.  This list should contain the areatag names of areas,
one per line, with any comments separated from the areatag by
at least one space.

== Hub Address ==
This is the address of the hub of the conferences contained
in this list.  If an area is remotely added from this list
(using Areafix) this address is automatically added to the
Area File.

== Forward Password ==
This is the area manager password to use when forwarding
requests.

== Forward Requests ==
Setting this option to 'Yes' will cause SBBSecho to send a
request to the Hub Address specified to turn on an area from
this list.  This happens when users remotely add areas using
AreaFix and is not necessary if you are already receiving the
conferences in this list.

== AreaFix Keys ==
These are the keys required for a node to be able to gain
access to this particular echo list.  These keys are then given
to chosen nodes in the 'Linked Nodes...' sub-menu.
Selecting this option will bring you to a sub-menu where you
may add and remove keys for this EchoList.

===== Running SBBSecho =====
SBBSecho is designed to run only when needed (e.g. when there are new inbound or outbound messages to process). It should normally be able to perform its duties and exit without error in a matter of seconds (or possibly minutes if there is a lot of mail to process).

==== Environment Variable ====
SBBSecho requires that the system ''[[config:env#SBBSCTRL]]'' environment variable be set correctly before it may be executed. When SBBSecho is executed from the Synchronet Terminal Server's Event Thread (e.g. due to ''FIDOIN'' or ''FIDOOUT'' timed events), this environment variable will always be set correctly, automatically.

==== Instances ====

SBBSecho is designed to run only one instance at a time. A mutual-exclusion file (''[[dir:ctrl]]/sbbsecho.bsy'') is used to insure that multiple instances of SBBSecho are not allowed to execute concurrently. If SBBSecho crashes or is externally-killed without being able to clean up after itself, it's possible this mutex file will be left behind and prevent SBBSecho from running normally for quite some time (depending on the configuration value of ''BSY Mutex File Timeout'').

If you get the following error message (on the console and/or the log file) and you can confirm that SBBSecho is not actually running, you can safely delete the mutex file to allow SBBSecho to again run normally:
  Mutex file exists (/sbbs/ctrl/sbbsecho.bsy): SBBSecho appears to be already running

==== Errorlevel ====

When SBBSecho executes without error, it returns an errorlevel of ''0'' to the calling process. A non-zero errorlevel indicates a severe error condition and the SBBSecho log file (e.g. ''[[dir:data]]/sbbsecho.log'') should be consulted for further details about the error. The only possible errorlevels returned by SBBSecho are 0 (no error) and 1 (some severe error).

==== Console Output ====
While SBBSecho will send text to the local console when run, it may spew a lot of text at a rapid pace and then exit faster than a human can reasonably interpret was happened and what was displayed to them. For this reason, it is best to monitor the SBBSecho log file (e.g. ''[[dir:data]]/sbbsecho.log'') instead, using ''tail -f'' or something similar.

All of the important console messages go to the log file as well.

SBBSecho v3 does not monitor the local keyboard for input, a Ctrl-C/Break handler is installed so that it should exit gracefully if someone were to hit a local Ctrl-C/Break key combination.

==== Command Line ====
Although you //can// just run SBBSecho (e.g. ''sbbsecho.exe'') with no command-line options, each and every time, and it'll probably do what you need it to do... for optimal performance, we suggest you use the following command lines (e.g. configured in [[util:SCFG]]->External Programs->Timed Events) to limit SBBSecho to performing only the tasks it needs to do based on the type of //event// that has been triggered:
For importing netmail and echomail (e.g. ''FIDOIN'' timed event):
  sbbsecho -ce
For exporting netmail and echomail (e.g. ''FIDOOUT'' timed event):
  sbbsecho -ni

=== Command Line Syntax ==
<code>
usage: sbbsecho [cfg_file] [-options] [sub_code] [address]

where: cfg_file is the filename of config file (default is ctrl/sbbsecho.ini)
       sub_code is the internal code for a sub-board (default is ALL subs)
       address is the FTN node/link to export for (default is ALL links)

sbbsecho, by default, will:

 * Process packets (*.pkt) from all inbound directories (-p to disable)
 * Process netmail (*.msg) files and import netmail messages (-n to disable)
 * Delete netmail messages/files after importing them (-d to disable)
 * Import and forward packetized echomail messages (-i to disable)
 * Export local netmail messages from SMB to *.msg (-c to disable)
 * Export echomail messages from selected and linked sub(s) (-e to disable)
 * Load echomail export pointers before exporting (-m to disable)
 * Store echomail export pointers after exporting (-t to disable)
 * Packetize outbound netmail as req'd for BSO/FLO operation (-q to disable)

sbbsecho, by default, will NOT:

 * Export echomail previously imported from FTN (-h to enable)
 * Update echomail export pointers without exporting messages (-u to enable)
 * Import echomail (re-toss) from the 'bad echo' sub-board (-r to enable)
 * Generate AreaFix netmail reports/notifications for links (-g to enable)
 * Display the parsed area file (e.g. AREAS.BBS) for debugging (-a to enable)
 * Prompt for key-press upon exit (-@ to enable)
 * Prompt for key-press upon abnormal exit (-w to enable)
</code>

**NOTE:**
The command-line options changed considerably between SBBSecho version 2 and version 3.
Some of the removed options became settings in the ''sbbsecho.ini'' file while others
were just removed for lack of need. To be sure to not break compatibility with existing
Synchronet/SBBSecho configurations (e.g. ''FIDOIN'' and ''FIDOOUT'' timed event command-lines),
the removed legacy command-line options are just silently ignored by SBBSecho v3.

===== Area Manager Commands =====
 
Remote area manager, or AreaFix, commands are used by linked nodes in order to
turn echo areas off and on, list currently connected areas, and more.
The following text is from the file ''[[https://gitlab.synchro.net/main/sbbs/-/raw/master/exec/areamgr.hlp|areamgr.hlp]]'' which, after installation of
SBBSecho, should be located in your Synchronet ''[[dir:exec]]'' directory. This file lists the
area manager commands available to the linked nodes which have been configured using
the ''[[util:echocfg]]'' program:
<file>
Address all Area Management requests to 'AreaFix' (without quotes).
Your Area Manager password goes in the message subject followed optionally
by -R, -L, or -Q for Rescan, List, or Query functions, respectively.

In the body of the message, one or more:

<areatag>             Connect a message area (echo)
-<areatag>            Disconnect an area
%HELP                 Request this message
%LIST                 Request a list of areas (tags) available to you
%QUERY                Request a list of areas to which you are connected
%UNLINKED             Request a list of areas to which you are not connected
%COMPRESSION <type>   Change the compression type (e.g. ARC, ARJ, LZH, ZIP)
%PASSWORD <password>  Change your Area Manager password
%PKTPWD <password>    Set or change your Packet password
%TICPWD <password>    Set or change your TIC File password
%RESCAN               Request a rescan of all connected areas
%RESCAN <areatag>     Request a rescan of a single connected area
%ECHOSTATS <areatag>  Request statistics (import/export details) of an area
%ACTIVE               Reconnect (resume) all temporarily disconnected areas
%PASSIVE              Temporarily disconnect (pause) all connected areas
%NOTIFY <ON | OFF>    Turn periodic Notification Messages ON or OFF
%FROM <address>       Remote/proxy Area Management, must be the first command
%+ALL                 Connect all available areas
%-ALL                 Disconnect all areas
[---]                 Everything below the tear line is ignored

NOTE: A compression type of NONE is also supported for uncompressed packets.
</file>

===== Version 3 =====

SBBSecho version 3 development began in 2016 using SBBSecho version 2 (originally written by [[person:King Drafus]] and maintained/updated by [[person:Digital Man]]) as a starting point. Although not a complete rewrite, it contains enough substantial/fundamental changes and backward-incompatibilities and enhancements that a new major version number (3) was justified.

==== Changes in Version 3 ====

The most major changes introduced in v3.0 are:

  - New configuration file format (''sbbsecho.cfg'' replaced with ''[[config:sbbsecho.ini]]'')
  - Support for FileBoxes (BinkD-style inbox and outbox, configured per linked-node)
  - Much better organized and user-friendly ''[[util:echocfg]]'' (e.g. lots of context-sensitive help available)
  - Attach/ArcMail style mailer support has been deprecated (untested, unlikely to work) in favor of Binkley/FLO type mailers
  - "Additional EchoList" 4-char "flags" are now 25-char "keys" and much easier to deal with
  - Far fewer command-line options, more settings in EchoCfg
  - Multiple sysop aliases supported (for receiving netmail)
  - Mutual-exclusion-lock file (ctrl/sbbsecho.bsy) to prevent accidental concurrent invocations of SBBSecho
  - Maximum msg age configurable for NetMail and EchoMail (separately)
  - Better security for inbound packets (strict packet password enforcement, enabled by default)
  - All temporary files (e.g. packets in process) are created in an SBBSecho-specific temporary file directory
  - More comprehensive log output; the log file output is more of a priority than the console output now
  - Packet Type-2e (FSC-39.4) support
  - Bad message area file (e.g. ''[[dir:data]]/badareas.lst'') creation and maintenance
  - Echo Statistics files (e.g. ''[[dir:data]]/echostats.ini'') creation and maintenance
  - Auto-backups of Area File and configuration (''sbbsecho.ini'') file upon any changes made by EchoCfg or SBBSecho AreaFix
  - Automatic addition of newly added Sub-boards (in specific message groups) to the Area File
  - Optional re-toss of ''bad echo'' mail into newly linked Sub-boards

==== Upgrading to Version 3 ====

To upgrade a Synchronet system that was using SBBSecho v2 to now use SBBSecho v3, all you should need to do is run ''jsexec sbbsecho_upgrade.js'' in your Synchronet ''[[dir:exec]]'' directory. This will handle the conversion of your existing ''sbbsecho.cfg'' file to the new ''[[config:sbbsecho.ini]]'' file. If for some reason you want to revert to using SBBSecho v2 again, you should be able to just rename ''sbbsecho.cfg.old'' to ''sbbsecho.cfg'' and run v2 of ''sbbsecho'' and ''echocfg'' again.

Version 2 ''sbbsecho.cfg'' options which are not automatically migrated for v3 ''sbbsecho.ini'':

  * NOTIFY
  * LOG
  * NOCIRCULARFWD

**Note**:
If you want to retain the old (less secure) v2 packet password policy, then set ''StrictPacketPasswords = false'' in your ''[[config:sbbsecho.ini]]'' file.

**Note**:
In SBBSecho v2, if you did not have an ''INBOUND'' directory specified in your ''sbbsecho.cfg'' file (specifying a location for non-secured inbound files), SBBSecho v2 would use the path specified in [[util:SCFG]]->Networks->FidoNet->Inbound File Directory. That configuration setting (stored in the file ''[[dir:ctrl]]/msgs.cnf'') was not used by Synchronet for any other purpose and has now been removed from SCFG (v3.17). When ''sbbsecho_upgrade.js'' converts your ''sbbsecho.cfg'' file to ''sbbsecho.ini'', if you don't have an ''INBOUND'' directory specified, it will need to make a //best guess// as to the proper //non-secure// inbound directory and that's what will be saved in your new ''[[dir:ctrl]]/[[config:sbbsecho.ini]]'' file. You may want to double-check that this setting is correct.

**Note**:
If you have multiple SBBSecho v2 configuration file(s) (e.g. ''othernet.cfg''), you can upgrade them to the new v3 ''.ini'' format by passing the old and new filenames on the ''sbbsecho_upgrade.js'' command-line, e.g. ''jsexec sbbsecho_upgrade.js othernet.cfg othernet.ini''.

==== Migrating Command-lines to Version 3 ====

Although the old import and export SBBSecho command-lines (e.g. pre-configured for the ''FIDOIN'' and ''FIDOOUT'' timed events in [[util:SCFG]]->External Programs->Timed Events) will continue to work, some of the old command-line options are now ignored or serve a different purpose in version 3:

^ Option ^ Version 2                                      ^ Version 3 ^
|''-l''  | enable logging to disk                         | logging is now //always// enabled |
|''-f''  | packetize netmail                              | default behavior; use the new ''-q'' option to disable |
|''-j''  | ignore received bit on netmail                 | enabled via ''[[config:sbbsecho.ini]]'' -> ''IgnoreNetmailRecvAttr'' |
|''-a''  | export ASCII characters only                   | use the sub-board toggle option in [[util:SCFG]] |
|''-y''  | import netmail for unknown users to sysop      | configured via ''[[config:sbbsecho.ini]]'' -> ''DefaultRecipient'' |
|''-o''  | import netmail regardless of destination address | configured via ''[[config:sbbsecho.ini]]'' -> ''IgnoreNetmailDestAddr'' |
|''-s''  | import private echomail (strip private status)   | deprecated |
|''-!''  | notify users of received echomail                | configured via ''[[config:sbbsecho.ini]]'' -> ''EchomailNotify'' |
|''-x''  | do not delete packets after import               | configured via ''[[config:sbbsecho.ini]]'' -> ''DeletePackets'' |
|''-r''  | create report of import totals                   | re-toss bad echo area into newly linked sub-boards |
|''-b''  | import locally created netmail too               | configured via ''[[config:sbbsecho.ini]]'' -> ''IgnoreNetmailLocalAttr'' |
|''-=''  | change existing tear lines to ===                | configured via ''[[config:sbbsecho.ini]]'' -> ''ConvertTearLines'' |

The command-line ​options ​that actually changed meaning in version 3 are: 
  * ''​-a''​ which is now used to log the parsed Area File (e.g. AREAS.BBS) for debugging purposes 
  * ''​-r''​ which is now used to re-toss the bad echo area into newly linked sub-boards

Run ''sbbsecho -?'' to get a list of the current set of supported command-line options and their meaning.

==== Log Output Changes in Version 3 ==== 

The log file (default: ''[[dir:data]]/sbbsecho.log'') is now created/updated always whereas in version 2, the log file was only written if the ''-l'' option (now deprecated) was passed to SBBSecho. As in version 2, the log filename can be configured (now in ''[[config:sbbsecho.ini]]->LogFile'').

In version 2, the logging of specific SBBSecho operations could be enabled/disabled via ''sbbsecho.cfg''->''LOG'' or ''echofg''->Log Options. In version 3, the sysop only has control over the logging verbosity/severity (via ''[[config:sbbsecho.ini]]''->''LogLevel''). For example, to log only errors, set the LogLevel to "Errors".

=== Version 3 Time-stamp Format ===
The log file time-stamp format changed in Version 3 to ''YYYY-MM-DD HH:MM:SS''. If you wish to use the version 2 time-stamp format, set
''[[config:sbbsecho.ini]]'' -> ''LogTimeFormat'' to ''"%m/%d/%y %H:%M:%S"''.


{{tag>fidonet}}

===== See Also =====
  * [[:config:sbbsecho.ini]] file
  * [[:config:areas.bbs]] file
  * [[:util:SCFG:]] utility
  * [[:network:fidonet|What is FidoNet?]]
  * [[:howto:fidonet|Join FidoNet]]
  * [[:util:|Utilities]]
