====== SBBSecho (FidoNet EchoMail Program) Configuration ======

''[[dir:ctrl]]/sbbsecho.ini'' is the default configuration filename used by [[util:SBBSecho]] version 3, [[module:BinkIT]] version 2, and [[module:TickIT]] version 1. While other configuration filenames may be passed-to and used-by SBBSecho, the format must be the same [[ini_files|.ini format]] and only one configuration file may be used per invocation of SBBSecho.

The current default ''sbbsecho.ini'' file can be downloaded from [[howto:Git]] [[https://gitlab.synchro.net/main/sbbs/-/raw/master/ctrl/sbbsecho.ini?inline=false|here]].


===== Editing =====

You can edit the ''sbbsecho.ini'' file by hand using any text editor or, preferably, using the Synchronet [[:util:EchoCfg]] utility.

When editing the ''sbbsecho.ini'' file by hand, it is recommended to first make a backup copy of the file.

===== Reference =====

All of the supported [[ini_files|.ini]] sections and keys are documented here.

==== Root Section ====

Most of the SBBSecho configuration settings are defined in the //Root Section// of the ''sbbsecho.ini'' file.

=== General/Global settings ===

^ Key                     ^ Default Value             ^ Description ^
| ''Inbound''             | ''../fido/nonsecure''     | Directory where SBBSecho will look for non-secured inbound files |
| ''SecureInbound''       | ''../fido/inbound''       | Directory where SBBSecho will look for secured inbound files |
| ''Outbound''            | ''../fido/outbound''      | Directory where SBBSecho will place outbound files |
| ''AreaFile''            |                           | File where SBBSecho will load FTN-attached message areas from |
| ''BadAreaFile''         | ''../data/badareas.lst''  | File where SBBSecho will write the names/tags of unlinked areas for which it has received echomail |
| ''LogFile''             | ''../data/sbbsecho.log''  | Log filename |
| ''LogTimeFormat''       | ''%Y-%m-%d %H:%M:%S''     | Time-stamp format used in the log file |
| ''TempDirectory''       | ''../temp/sbbsecho''      | Directory where SBBSecho will create temporary/in-process files |
| ''OutgoingSemaphore''   |                           | Semaphore file SBBSecho will touch when creating outbound files |
| ''LogLevel''            | ''Informational''         | Minimum severity of log messages written to the log file |
| ''StripLineFeeds''        | ''false''               | Strip line-feed (ASCII 10) characters from exported messages |
| ''StripSoftCRs''          | ''true''                | Strip soft carriage-return (0x8D) characters from imported messages |
| ''BinkleyStyleOutbound''  | ''true''                | Mailer is BSO/FLO style (rather than ArcMail/Attach style) |  
| ''BsyTimeout''            | ''12 hours''            | Time-out duration when attempting to lock ''.bsy'' files |
| ''BsoLockAttempts''       | ''60''                  | Number of attempts to lock a BSO for a node |
| ''BsoLockDelay''          | ''10 seconds''          | Delay between BSO lock attempts |
| ''StrictPacketPasswords'' | ''true''                | Packets with passwords must match the corresponding configured/linked node password |
| ''umask''                 | ''077''                 | File creation mode (for *nix only) |
| ''AreaFileBackups''       | ''100''                 | Number of Area File backups to maintain (for Area Manager modifications) |
| ''CfgFileBackups''        | ''100''                 | Number of configuration file backups to maintain (for Area Manager or EchoCfg modifications)|
| ''MaxLogSize''            | ''10M''                 | Maximum size (in bytes) of each SBBSecho log file (0 = no limit) |
| ''MaxLogsKept''           | ''10''                  | Maximum number of SBBSecho log files to keep |               
| ''MinFreeDiskSpace''      | ''10M''                 | Minimum amount of available disk space required for SBBSecho to operate |
| ''UseOutboxes''           | ''true''                | If a linked-node has an outbox value specified, place outbound files for that node in it |
| ''AutoUTF8''              | ''true''                | Automatically detect UTF-8-encoded incoming messages and mark them accordingly |

=== EchoMail-related settings ===

^ Key                              ^ Default Value  ^ Description ^
| ''BundleSize''                   | ''250K''       | Outgoing bundles (archives), maximum file size |
| ''PacketSize''                   | ''250K''       | Outgoing packets (''*.pkt''), maximum file size |
| ''CheckPathsForDupes''           | ''true''       | Check PATH kludge lines for circular messages |
| ''SecureEchomail''               | ''false''      | Only import EchoMail from linked nodes |
| ''EchomailNotify''               | ''true''       | Send telegrams to BBS users when EchoMail is received for them |
| ''ConvertTearLines''             | ''false''      | Convert any tear lines (''---'') existing in the message text to ''==='' |
| ''TruncateBundles''              | ''false''      | Truncate rather than delete outbound bundles after being sent |
| ''ZoneBlind''                    | ''false''      | Assume that node numbers are not duplicated across zones (set to ''true'' with a Threshold of ''4'' for "FidoWeb" operation) |
| ''ZoneBlindThreshold''           | ''65535''      | Zone numbers less than this will be considered //blind// (all part of the same node number "namespace") |
| ''AreaAddFromEcholistsOnly''     | ''false''      | Allow echoes to be AreaFix-added from Additional EchoLists only (not Area File) |
| ''AutoAddSubs''                  | ''true''       | Automatically add new Sub-boards within linked Message Groups to the run-time Area List |
| ''AutoAddToAreaFile''            | ''true''       | Automatically add new Sub-boards within linked Message Groups to the on-disk Area File |
| ''MaxEchomailAge''               | ''60 days''    | Age limit (in days) of EchoMail messages that may be imported (0 = no limit) |
| ''RelayFilteredMsgs''            | ''false''      | Messages that are filtered (e.g. due to age) will be relayed to downlinks |
| ''AreaManager''                  | ''SYSOP''      | BBS user name or alias to notify (via email) of AreaFix activities and errors |
| ''EchoStats''                    | ''../data/echostats.ini'' | Path/filename of EchoMail Statistics ("EchoStats") database |
| ''RequireLinkedNodeCfg''         | ''true''       | Require that area-linked nodes (in the area file) are configured as linked-nodes |

=== NetMail-related settings ===

^ Key                              ^ Default Value ^ Description ^
| ''DefaultRecipient''             |               | Name of the user account you wish to receive inbound NetMail messages that have been addressed to an unrecognized user name or alias |
| ''SysopAliasList''               | ''SYSOP''     | Comma-separated list of names by which the sysop (user #1) may receive NetMail messages |
| ''FuzzyNetmailZones''            | ''false''     | Use local AKAs to determine source zone information when missing |
| ''IgnoreNetmailDestAddr''        | ''false''     | Treat all NetMail as though it is destined for one of your systems's FTN addresses |
| ''IgnoreNetmailSentAttr''        | ''false''     | Export NetMail messages even when their 'Sent' attribute flag is set |
| ''IgnoreNetmailKillAttr''        | ''false''     | Do not delete exported NetMail messages even when their 'Kill' attribute flag is set |
| ''IgnoreNetmailRecvAttr''        | ''false''     | Import NetMail messages even when their 'Received' attribute flag is set |
| ''IgnoreNetmailLocalAttr''       | ''false''     | Import NetMail messages even when their 'Local' attribute flag is set |
| ''KillEmptyNetmail''             | ''true''      | Discard (not import or export) NetMail messages without any body |
| ''DeleteNetmail''                | ''true''      | Delete **all** NetMail messages/files after they have been sent or imported |
| ''DeletePackets''                | ''true''      | Delete packets after they've been imported |
| ''MaxNetmailAge''                | ''0''         | Age limit (in days) of NetMail messages that may be imported (0 = no limit) |

==== BinkP Section ====

The ''[BinkP]'' section is used for BinkP-specific global settings (i.e. used exclusively by [[module:BinkIT]] version 2):

^ Key           ^ Default Value ^ Description ^
| Capabilities  | <blank>       | If set, changes the text in the ''M_NUL NDL'' line from the default of “115200,TCP,BINKP” |
| Sysop         | <blank>       | If set, over-rides the sysop name (''ZYZ'') value (e.g. to send the sysop's real name instead of alias) |
| PlainAuthOnly | ''false''     | If set to ''true'', disables CRAM-MD5 authentication and encryption support for all inbound and outbound sessions (e.g. for trouble-shooting purposes) |
| PlainTextOnly | ''false''     | If set to ''true'', disables encryption support for all inbound and outbound sessions (when set to ''false'', requires that //PlainAuthOnly// is also set to ''false'') |
==== Archive Sections ====

Archivers are used to extract packets from received bundles and create bundles of outgoing packets. Archivers are configured in the Archive Sections of the ''sbbsecho.ini'' file (separately from any archivers configured in Synchronet/[[util:SCFG]]).

Each Archive Section has a prefix of "''archive:''" and the name of the archive type (e.g. "ZIP") following the prefix.

^ Key                              ^ Default Value ^ Description ^
| ''SigOffset''                    | ''0''         | Signature offset (in bytes) |
| ''Sig''                          |               | Signature (in hexadecimal) |
| ''Pack''                         |               | Archive creation (pack) command-line (with Synchronet command-line specifiers) |
| ''Unpack''                       |               | Archive extraction (unpack) command-line (with Synchronet command-line specifiers) |

Example:

<file>
[archive:ZIP]
        SigOffset = 0
        Sig = 504B
        Pack = %@zip -jD %f %s
        Unpack = %@unzip -ojC %f -d %s
</file>
==== Node Sections ====

Each Linked-Node Section has a prefix of "''node:''" with the FTN address of the node following the prefix.

^ Key            ^ Default Value ^ Description ^
| ''PacketType'' | ''2+''        | Type of packets to generate for this node (2+, 2e, 2.2, or 2) |
| ''PacketPwd''  |               | Password used in password-protected packets |
| ''SessionPwd'' |               | Password used for BinkP (BinkIT) sessions with this linked node |
| ''AreaFixPwd'' |               | Password required for AreaFix/AreaMgr operations |
| ''TicFilePwd'' |               | Password required for TIC files (used by ''[[module:tickit]].js'') |
| ''Name''       |               | Name of this linked-node's operator (e.g. real name or alias), auto-set when receiving Area Manager requests |
| ''Comment''    |               | Personal comment about this node (any text useful to you) |
| ''Inbox''      |               | Optional filebox for incoming files (correlates with BinkD's ''ibox'' setting, [[module:BinkIT]] does **not support** inboxes) |
| ''Outbox''     |               | Optional filebox for outgoing files (correlates with BinkD's ''obox'' setting, [[module:BinkIT]] has //experimental support// for outboxes) |
| ''Keys''       |               | List of keys (comma-separated) which enable AreaFix access to one or more Additional EchoLists |
| ''Notify''     | ''false''     | Notify via NetMail of node's current AreaFix settings whenever SBBSecho is run with the '`-g`' option |
| ''Passive''    | ''false''     | Temporarily disable the packing and sending of EchoMail for this node |
| ''Direct''     | ''false''     | Connect to this node directly (whenever possible) when sending mail to this node |
| ''Status''     | ''Normal''    | Default mode for sending mail to this node: Normal, Hold (wait for pickup) or Crash (immediate) |
| ''Archive''    | ''None''      | Name of a configured archive type or "None" |
| ''Route''      |               | FTN address (e.g. of a hub) to route all EchoMail and NetMail destined for this node's address |
| ''LocalAddress'' |             | Optional local system address (AKA) to use when sending packets to this node                   |
| ''GroupHub''   |               | List of Message Groups (comma-separated) for which this linked node is your system's uplink (hub) |
| ''BinkpHost''  |               | Host name or IP address of this link's BinkP mailer (optional) |
| ''BinkpPort''  | ''24554''    | TCP port number of this link's BinkP mailer |
| ''BinkpPoll''  | ''false''    | Poll this link (e.g. as part of the ''BINKPOLL'' timed event) for incoming mail |
| ''BinkpAllowPlainAuth'' | ''false''| Allow plain-password (in addition to CRAM-MD5) when authenticating with this linked node |
| ''BinkpPlainAuthOnly''  | ''false''| //Only// support plain-password authentication when connecting (outbound) with this linked node |
| ''BinkpAllowPlainText'' | ''true'' | Allow plain-text (unencrypted) communication with this linked node |
| ''BinkpSourceAddress''  |          | Use an alternative FTN address as the source address when communicating with this node via BinkP |
| ''BinkpTLS''            | ''false''| Use implicit TLS for outbound encrypted connections with this linked node |

**NOTE:**
The wildcard ''ALL'' may replace one or more fields of the configured node's FTN address. Configured node's with wildcard addresses cannot have an Inbox our Outbox set.

=== Example ===
<code ini>
[node:1:218/700]
        Comment = My Hub
        AreafixPwd =
        PacketPwd =
        PacketType = 2+
        Archive = ZIP
        Inbox =
        Outbox =
        Passive = false
        Direct = false
        Notify = false
        Keys =
        Status = Normal
[node:1:ALL]
        Comment = Everyone in FidoNet Zone 1
        AreafixPwd =
        PacketPwd =
        PacketType = 2+
        Archive = ZIP
        Inbox =
        Outbox =
        Passive = false
        Direct = false
        Notify = false
        Keys =
        Status = Normal
        Route = 1:218/700        
</code>

=== BinkP Session-Security ===

The evolution of the BinkIT/BinkP session-security related settings has lead to a potentially confusing array of 3 interrelated Boolean options with only 4 valid combinations of values. Here is a table to explain these valid combinations and their impact on the security and interoperability of BinkP sessions with the linked-node:

^ Security Level ^ BinkpPlainAuthOnly ^ BinkpAllowPlainAuth ^ BinkpAllowPlainText ^ Notes ^
| Minimum        | ''true''           | ''true''            | ''true''            | Passwords and message packets will always be sent as clear-text (maximum interoperability) |
| Normal         | ''false''          | ''true''            | ''true''            | Passwords //may// be obscured via CRAM-MD5 authentication |
| Enhanced       | ''false''          | ''false''           | ''true''            | Passwords //must// be obscured via CRAM-MD5 authentication |
| Maximum        | ''false''          | ''false''           | ''false''           | Passwords and message packets //must// be obscured or encrypted ((using the BinkD method of session encryption)) |

In general, the lower the security setting, the higher the level of insured compatibility with other BinkP mailers. When debugging authentication (password) issues, it might be a good idea to use the minimum level of security and increase the security level incrementally once you have the minimum level of secured-session working with the linked-node.

Also note: authentication is performed by the //answering// BinkP node (server/service), so while one security level may work okay for outgoing connections to a linked-node, its possible that there could be problems (incompatibilities) with incoming connections from that same linked-node. It's a good idea to test both incoming and outgoing connections with a linked-node before increasing the BinkP session security level.


==== Robot Sections ====

Each NetMail Robot Section has a prefix of "''robot:''" with the name of the robot (e.g. ''filefix'') following the prefix. Received NetMail addressed to the name of a robot will be stored in your ''[[dir:data]]/mail'' base and expected to be acted-upon by a robot that is triggered when its associated semaphore file is touched. [[module:TickFix]] is an example of a NetMail robot.

^ Key             ^ Description ^
| ''SemFile''     | The path and filename of a semaphore file to be //touched// by SBBSecho when a NetMail is received for the robot |
| ''attr''        | NetMail attribute flags to set (usually specific in hexadecimal notation with a ''0x'' prefix), ''0x20'' (In-Transit) is recommended |
| ''UsesMSG''     | This robot uses stored messages in *.msg files, export message to a msg file instead of importing (defaults to ''no'', added in v3.31) |
==== Domain Sections ====

Each FTN Domain Section has a prefix of "''domain:''" with the name of the domain (e.g. ''fidonet'', ''fsxnet'') following the prefix.

^ Key             ^ Description ^
| ''Zones''       | List of zone numbers (comma-separated) associated with this domain |
| ''DNSSuffix''   | Optional suffix used for DNS-based IP address look-ups of nodes in this domain (e.g. ''f//<node>//.n//<net>//.z//<zone>//.//<suffix>//'') |
| ''NodeList''    | Optional nodelist path/filename to use for hostname/IP address look-ups for this domain |
| ''OutboundRoot''| Optional alternate outbound root directory to use for this domain |

**Note:**\\
FTN domains //used// to be configured in the now-deprecated ''[[dir:ctrl]]/ftn_domains.ini'' file.

==== EchoList Sections ====

Each Additional EchoList Section has a prefix of "''echolist:''" with the path/filename of the EchoList following the prefix.

^ Key            ^ Default Value ^ Description ^
| ''Keys''       |               | List of keys (comma-separated) which enable Linked Node AreaFix access to this EchoList |
| ''Hub''        |               | The FTN address of hub which provides the areas in this EchoList |
| ''Fwd''        | ''false''     | Forward AreaFix requests to hub of this EchoList? |
| ''Pwd''        |               | AreaFix password to include in AreaFix requests forwarded to the hub of this EchoList |

==== Semfile Sections ====


Each Additional Semfile Section has a prefix of "''semfile:''" with the filename wildcard to match following the prefix. If it matches, it touches the semaphore file named in the "''SemFile''" key.

^ Key            ^ Default Value ^ Description ^
| ''SemFile''    |               | semaphore file to touch when a matching file is received |

===== See Also =====
  * [[:config:|config index]]
  * [[:util:SBBSecho]] FidoNet EchoMail program (tosser/scanner)
  * [[:util:echocfg]] SBBSecho Configuration utility
  * [[:module:BinkIT]] FidoNet/BINKP mailer


{{tag>configuration echomail fidonet ftn netmail email messaging ini}}
