Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Initialization Configuration

The Synchronet BBS (SBBS) Initialization File (sbbs.ini) is the mother of all Synchronet v3 configuration files and is located in the ctrl directory.

Filename

The base filename of the initialization file is ctrl/sbbs.ini.

The standard host/platform variations of the initialization filenames are also supported. See .ini filenaming for details.

Defaults

Download or view the default sbbs.ini file here: sbbs.ini

Editing

When using the Synchronet-Win32 Control Panel, the contents of this file are automatically updated when any of the configuration changes are made in the File->Properties menu or the various server configuration dialogs. Windows sysops may never need to edit this file by hand.

If a sysop needs to edit the file by hand, any decent text file editor should do the job. See INI files for more details.

Sections

The contents of the file are divided into multiple named sections:

[Global]

The [Global] section contains keys whose values will serve as default values for like-named keys in other server sections in the sbbs.ini file.

The supported [Global] keys are:

Key Default Description
HostName <none> Override system hostname
Interface 0.0.0.0,:: Default local network interface(s) to listen for connections on
OutboundInterface 0 Default IPv4 network interface to perform outbound connections from
LogLevel Informational Default minimum severity of log messages to view or log-to-disk
TLSErrorLevel Emergency Maximum severity of TLS-related log messages
BindRetryCount 2 Default number of network interface/port bind retry attempts
BindRetryDelay 15 Default number of seconds to wait between bind attempts
CtrlDirectory Override default ctrl directory
TempDirectory ../temp/ Override default temporary file directory
SemFileCheckFrequency 2 Default seconds between semaphore file checks
LoginAttemptDelay 5000 Default number of milliseconds to pause after a failed login attempt
LoginAttemptThrottle 1000 Default number of milliseconds to delay a connection from a suspicious host
LoginAttemptHackThreshold 10 Default number of failed login attempts before logging attempt to hack.log
LoginAttemptTempBanThreshold 20 Default number of failed login attempts before temporarily banning IP address
LoginAttemptTempBanDuration 10M Default duration of a temporary IP address ban
LoginAttemptFilterThreshold 0 Default number of failed login attempts before auto-filtering an IP address
LoginAttemptFilterDuration 0 (Infinite) Default duration of IP address filters
LoginRequirements none Access requirements (in ARS format) for users to be allowed login
AnswerSound Default WAV file to play locally upon accepting a TCP connection
LoginSound Default WAV file to play locally upon successful user authentication
LogoutSound Default WAV file to play locally upon logout of an authenticated user
HangupSound Default WAV file to play locally upon disconnection of a TCP session
HackAttemptSound Default WAV file to play locally upon a detected hack attempt
JavaScript* Default JavaScript settings, see JavaScript for details

More details on keys follow:

HostName

Default: <none>

The public Internet DNS host name of this server.

If not set, the host name configured in SCFG->Networks->Internet E-mail->System Address will be used.

Note: The [Global] HostName setting may be overridden by a HostName value in the subsequent server sections of this file.

Interface

Default: 0.0.0.0,:: (any/all IPv4 or IPv6 interface)

The IPv4 and/or IPv6 addresses of the network interfaces to listen on for incoming TCP/IP connections.

If multiple addresses are specified, they are to be separated by commas (this is true of all the *Interface values in this file).

The address value 0 or 0.0.0.0 indicates all IPv4 interfaces. The address value :: indicates all IPv6 interfaces.

If this value is not set, any and all IPv4 and IPv6 network interfaces available will be listened to for incoming connections.

Note: Although TCP port numbers may be specified (with <address>:port syntax) in the *Interface values of the subsequent server sections of this file, the [Global] Interface value must not have any port numbers specified.

OutboundInterface

Default: 0.0.0.0 (any available IPv4 interface)

The IPv4 address of the network interface to use for outgoing TCP/IP connections.

CtrlDirectory

Default: $SBBSCTRL

Specify the location of the Synchronet ctrl directory. Since this file is normally found in the ctrl directory (e.g. by way of the SBBSCTRL environment variable) you do not normally need to set this.

TempDirectory

Default: ctrl/../temp

Override the default system “temp” directory (optional). If you do override this, do NOT use the system-wide temp dir (e.g.: /tmp or windows\temp), use a subdirectory instead. Synchronet assumes it is the only user of this directory/subdirectory for its temporary files only.

Note: The [Global] TempDirectory value may be overridden by a TempDirectory value in the subsequent server sections of this file.

SemFileCheckFrequency

Default: 2 (seconds) Minimum: 1 (seconds)

The interval, in seconds, betweeen semaphore file checks. If you want to reduce the amount of disk I/O while the BBS is idle, you can increase this value. If you set this value below 1, the BBS server threads will use the default value (2).

Note: The [Global] SemFileCheckFrequency value may be overridden by a SemFileCheckFrequency value in the subsequent server sections of this file.

BindRetryCount

Default: 2

Set the number of times an interface bind will be attempted for each port (before giving up and failing to start/restart the server). An interface/port bind is required for listening for incoming TCP/IP connections.

Increase this value if you get errors binding to ports on reloads (especially on *nix).

Note: This setting may be overridden by a BindRetryCount value in the subsequent server sections of this file.

BindRetryDelay

Default: 15 (seconds)

Delay (in seconds) between bind retries.

Note: This setting may be overridden by a BindRetryDelay value in the subsequent server sections of this file.

LogLevel

Default: Informational

Highest log level to actually log/print (ignore all higher/less-severe log entries). Supported log levels in decreasing severity (ala syslog):

Emergency, Alert, Critical, Error, Warning, Notice, Informational, Debugging

Note: This setting may be overridden by a LogLevel value in the subsequent server sections of this file.

JavaScript*

See JavaScript for details.

Note: Each [Global] JavaScript* setting may be overridden by a corresponding JavaScript* value in the subsequent server sections of this file.

LoginAttemptDelay

Default: 5000 (milliseconds)

The number of milliseconds to pause after a failed login attempt.

Note: Each [Global] LoginAttempt* setting may be overridden by a corresponding LoginAttempt* value in the subsequent server sections of this file.

LoginAttemptThrottle

Deafult: 1000 (milliseconds)

This value is multiplied by the number of consecutive unique failed login attempts and the result is the number of milliseconds to delay a connection from a suspicious host (e.g. with multiple consecutive unique failed login attempts).

LoginAttemptHackThreshold

Default: 10 (attempts)

The number of consecutive unique failed login attempts from the same host before adding entries to the hack.log file.

Set to 0 to disable automatic hack.log file entries for failed login attempts.

LoginAttemptTempBanThreshold

Default: 20 (attempts)

The number of consecutive unique failed login attempts from the same host before temporarily banning connections from that client (based o IP address).

Set to 0 to disable automatic banning.

Note: Failed logins using any of the filtered user IDs (from name.can) will automatically trigger a temporary ban.

LoginAttemptTempBanDuration

Default: 10M (10 minutes)

The length (in seconds) of a temporary IP ban based on either multiple consecutive failed login attempts or any failed login attempt using a banned user ID (from name.can).

LoginAttemptFilterThreshold

Default: 0 (attempts)

The number of consecutive unique failed login attempts from the same host before auto-filtering the host's IP address in the ip.can file.

For this auto-filtering feature to work with the Synchronet v3.16c Terminal Server (Telnet, RLogin, and SSH login attempts), the sysop must set SCFG->Nodes->Node 1->Toggle Options->Always Prompt for Password to “Yes”.

Set to 0 to disable automatic filtering of IP addresses due to failed login attempts.

LoginAttemptFilterDuration

Default: 0 (Infinite)

The length (in seconds) of a persistent IP ban.

[BBS]

See Terminal Server for more details.

In addition to the keys listed in the [Global] section, the [BBS] section can contain the following keys with the specified default values:

AutoStart

Default: true

Automatically startup the Terminal Server when Synchronet starts up.

TelnetInterface

Default: value of [Global] Interface

The IPv4 and/or IPv6 addresses of the network interfaces to listen on for incoming Telnet connections on (0 for any IPv4 interface, and :: for any IPv6 interface)).

TelnetPort

Default: 23

The TCP port number on which to listen for incoming Telnet connections.

RLoginInterface

Default: value of [Global] Interface

The IPv4 and/or IPv6 addresses of the network interfaces to listen on for incoming RLogin connections on (0 for any interface).

RLoginPort

Default: 513

The TCP port number on which to listen for incoming RLogin connections.

SSHInterface

Default: value of [Global] Interface

The IPv4 and/or IPv6 address of the network interfaces to listen for incoming Secure Shell (SSH) connections on (0 for any interface).

SSHPort

Default: 22

The TCP port number on which to listen for incoming Secure Shell (SSH) connections.

SSHConnectTimeout

Default: 10 (seconds)

The maximum amount of time allowed for a SecureShell (SSH) connection negotiation to complete.

SSHErrorLevel

Default: 4 (warning)

The maximum severity of SSH-related log messages. SSH-related log messages of higher severity (i.e. lower numeric level) will be capped at this severity level.

Pet40Port

Default: 64

If a connection is made to the Terminal server, via any supported protocol, on this TCP port number, the terminal will be assumed to be a 40-column CBM/PETSCII (non-ANSI) terminal (e.g. Commodore 64). Setting this port number does not cause the server to listen on this port, so if you desire to support CBM/PETSCII terminal-connections, you will also need to add this port number to the TelnetInterface list (for example).

Pet80Port

Default: 128

If a connection is made to the Terminal server, via any supported protocol, on this TCP port number, the terminal will be assumed to be an 80-column CBM/PETSCII (non-ANSI) terminal (e.g. Commodore 128). Setting this port number does not cause the server to listen on this port, so if you desire to support CBM/PETSCII terminal-connections, you will also need to add this port number to the TelnetInterface list (for example).

OutboundInterface

Default: 0.0.0.0 (any available IPv4 interface)

The IPv4 address of the network interface to use for outgoing TCP/IP connections (i.e. for Telnet and RLogin gateway connections).

FirstNode

Default: 1

The number of the first terminal server node serviced by this instance of Synchronet. The minimum value for this settings is 1 and the maximum is 255.

Normally, this value should be left at 1. If the sysop wanted to run multiple instances of Synchronet, all sharing the same directory tree and data files, then multiple sbbs.ini files would be used (with host-unique filenaming) and unique (non-overlapping) node ranges specified with the FirstNode and LastNode values in each.

LastNode

Default: 4

The number of the last terminal server node serviced by this instance of Synchronet. The minimum value for this settings is 1 and the maximum is 255. If this setting's value is higher than the total number of nodes configured for the BBS (i.e. in SCFG->Nodes), then it will be automatically adjusted at run time during Terminal Server startup with a logged notice:

Specified last_node (x) > sys_nodes (y), auto-corrected

MaxConcurrentConnections

Default: 0

If set to a non-zero number, this will limit the number of concurrent connections to the Terminal Server from a common host/client IP address. Exempt hosts are not connection-limited by this setting. This setting was added in Synchronet v3.17.

OutbufHighwaterMark

Default: 0 or 1024 (bytes)

OutbufDrainTimeout

Default: 10 (milliseconds)

SemFileCheckFrequency

Default: value of [Global] SemFileCheckFrequency

TempDirectory

Default: value of [Global] TempDirectory

HostName

Default: value of [Global] HostName

ExternalTermANSI

Default: pc3 (Linux) or cons25 (FreeBSD)

When the BBS is running on a *nix-like OS, this value determines the value of the TERM environment variable that will be set when invoking interactive external programs for users with terminals supporting ANSI.

ExternalTermDumb

Default: dumb

When the BBS is running on a *nix-like OS, this value determines the value of the TERM environment variable that will be set when invoking interactive external programs for users with terminals that do not support ANSI.

UseDOSemu

Default: false (new sysops with default file) or true (missing from file/existing sysops)

This will enable DOSEmu support for running DOS-based external programs. When you first install Synchronet, you will need to “opt in” by setting this to true in order to use DOSEmu.

DOSemuPath

Default: /usr/bin/dosemu.bin (Linux) or /usr/local/bin/doscmd (FreeBSD)

When the BBS is running on a *nix-like OS, this value determines the default path of the DOS emulator to be executed when a non-native program (e.g. 16-bit MS-DOS door game) will be invoked by the BBS.

DOSemuConfPath

Default: dosemu.conf

This specifies where DOSEmu should look for the conf file. If you only specify a filename, it will look in the ctrl dir.

The order of using conf file locations is:

  1. It will look in the startup dir of the external program
  2. It will use this path from sbbs.ini (if configured)
  3. It use /etc/dosemu/dosemu.conf
  4. It will use /etc/dosemu.conf

AnswerSound

Default: none

Path to a WAVE file to played (locally) when accepting incoming connections. Only supported on Windows.

HangupSound

Default: none

Path to a WAVE file to be played (locally) when terminating connections. Only supported on Windows.

Options

Default: XTRN_MINIMIZED

Recommended: XTRN_MINIMIZED | ALLOW_RLOGIN | ALLOW_SSH

Supported options, separated by the pipe (|) symbol:

Option Description
XTRN_MINIMIZED External program windows are automatically minimized (Windows)
AUTO_LOGON Enable automatic login based on IP address for V-exempt users (not recommended)
DEBUG_TELNET Log Telnet commands and responses (with Debug log-level messages)
ALLOW_SSH Enable the Secure Shell (SSH) protocol for incoming connections
ALLOW_SFTP Enable SSH File Transfers (SFTP)
ALLOW_RLOGIN Enable the RLogin protocol for incoming connections
NO_QWK_EVENTS Disable QWK networking events
NO_NEWDAY_EVENTS Disable daily events from running in this instance of Synchronet
NO_EVENTS Disable the Events thread (all timed events)
NO_TELNET Disable Telnet support
NO_TELNET_GA Disable periodic transmissions of the Telnet “Go Ahead” command (Telnet only)
NO_HOST_LOOKUP Do not attempt hostname look-ups on incoming connections (log IP addresses only)
NO_SPY_SOCKETS Disable node spying (on *nix)
NO_DOS Disable 16-bit DOS Program support (eliminate the potential for modal error dialogs in 64-bit editions of Windows)
NO_RECYCLE Disable the ability for the terminal server to be recycled
GET_IDENT Use the IDENT protocol on incoming connections

[FTP]

See FTP Server for more details.

[Mail]

See Mail Server for more details.

[Web]

See Web Server for more details.

[Services]

Key Default Description
iniFileName services.ini Configuration file in the ctrl directory that contains list of supported services
Interfaces Global Network interfaces to bind/listen
JavaScript* Global JavaScript operating parameters
LoginAttempt* Global Hack attempt counter-measure configuration
HostName Global Public host name
TempDirectory Global Temporary file directory
SemFileCheckFrequency Global Frequency (interval) in seconds between semaphore file checks
AnswerSound WAV file to play upon answering an incoming connection
HangupSound WAV file to play upon client disconnection
BindRetryCount Global Maximum of number of network interface bind retries
BindRetryDelay Global Seconds between bind retry attempts
LogLevel Global Minimum severity of log messages to be logged
Options NO_HOST_LOOKUP Option flags to apply to all services by default

See Services and services.ini for more details.

[UNIX]

See Configuring UNIX for more details.

See Also