• binkd FAQ [3/4]

    From binkd Team@2:5020/1042 to All on Sat Mar 28 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Feb 15 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Feb 22 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Feb 29 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Mar 7 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Mar 14 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Mar 21 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Apr 4 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Apr 11 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Apr 18 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Apr 25 01:15:06 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat May 2 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat May 9 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat May 16 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat May 23 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat May 30 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Jun 6 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Jun 13 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Jun 20 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Jun 27 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Jul 4 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Jul 18 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Jul 25 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Aug 1 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Aug 8 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Aug 15 01:15:06 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Aug 22 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Aug 29 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Sep 5 01:15:06 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Sep 12 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Sep 19 01:15:04 2020
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    The good general manual on composing bugreport was written by Sajmon
    --- hpt/lnx 1.9.0-cur 21-02-18
    * Origin: Moscow, Russia (2:5020/1042)
  • From binkd Team@2:5020/1042 to All on Sat Sep 9 22:15:04 2023
    work with 5D and it creates the bundles in fidonet.00b then you should
    write this way:

    domain fidonet c:\\ftn\\outbound\\fidonet 2
    domain omeganet c:\\ftn\\outbound\\fidonet 2
    address 2:5070/222@fidonet 11:58/6@omeganet

    It is obligatory to configure all your addresses with domains. The
    outbound directory and the path should be the same everywhere (4D tosser considers all addresses to belong to one domain).

    ----------------------------------------------------------------------------


    23. How Does "domain ... alias-for ..." In The Configuration File Work?

    An alias is taken into consideration when the remote site address is analyzed.

    Example:
    domain fidonet.org alias-for fidonet

    'fidonet.org' in the remote site address will be changed to 'fidonet' and address 1:2/[email protected] will be dealt with as 1:2/3.4@fidonet.


    ----------------------------------------------------------------------------


    24. What Does "send: TCP/IP error (-10000)" Mean and How To Cure It?

    There are two bugs here, one of them had been fixed before a branch for binkd 0.9.5-stable was created.

    1. The fact is that the error number was not stored in a pair of places
    in binkd code but it became apparent nowhere except the Windows version. It showed there because unlike others the MS Visual C run-time library does
    not correspond to the standard. 'errno' and 'h_errno' are macros in MSVC
    RTL and they expand to system calls which in the end call GetLastError().
    And the variable errno to which the function returns its value is cleared
    to zero at every successful system call. Thus errno is cleared at
    successful file open (according to the C standard errno should not change
    if there were no more errors). The influence of the bug is fixed in binkd:

    2003/04/28 07:30:16 gul
    * Bugfix: Log() changes TCPERRNO

    2. A Winsock bug: select() always returns successful for a non-blocked socket. The influence of this and other Winsock bugs is partially fixed:

    2003/06/06 16:27:44 gul
    * Workaround winsock bug - giveup CPU when sending file
    2003/08/11 08:41:55 gul
    * workaround winsock bug (patch by Alexander Reznikov)
    2003/08/24 00:29:31 hbrew
    * win9x-select-workaround fix, thanks to Pavel Gulchouck)

    At the high log level many messages of the 'data transfer would block'
    type and debug info on select() execution is still logged. It does not influence a regular work mode. It could be fixed but Pavel decided not to complicate the code.

    ----------------------------------------------------------------------------


    25. Argus (Radius) and binkd: Argus Error "Aborting due to carrier loss"

    A session between binkd and Radius (or Argus, it does not matter) is aborted "due to carrier loss" when traffic encryption is enabled in Radius. Moreover the connection at the binkd side is aborted due to the remote side initiative ("Connection reset by peer").

    Log from the Radius side:
    30-Aug-2003 22:24:31 Encrypted (2:463/375) session
    30-Aug-2003 22:24:32 Aborting due to carrier loss
    30-Aug-2003 22:24:32 Session aborted
    30-Aug-2003 22:24:32 End

    The reason is that Argus authors implemented an encryption method of
    their own which is not implemented in binkd. It would be OK but Argus (and Radius together with it) does not keep compatibility with binkp protocol:
    the encryption is enabled unconditionally without checking if the remote
    side supports it. Such a glaring contradiction to the specification is inadmissible but alas... The way out is to disable encryption in Argus for every link using binkd.

    The correct mailer behaviour should be as follows:
    - if encryption is not mandatory then proceed with the nonencrypted session;
    - if encryption is set mandatory in the mailer configuration then it
    should inform the remote of aborting the session, for example in such a way:
    M_ERR "DES encription required"


    ----------------------------------------------------------------------------


    26. The Outbound Name Has a Comment Char and binkd Doesn't See It

    If binkd is configured in a working system where Bink/+ is used and the outbound path contains "#" character which is a comment character for binkd
    the character should be escaped by a backslash in the binkd configuration
    file for binkd to interpret it correctly.

    domain fidonet c:\\fido\\\#out
    inbound-nonsecure c:\\fido\\unsec\#in
    inbound c:\\fido\\\#in

    It is not necessary to escape the character in the version 1.0 starting with the snapshot 1.0a-317 because the beginning of a comment in the middle
    of a line is now the sequence of either a space and the pound character
    (" #") or a tab and the pound character. See the examples below.

    There is no comment:
    temp-inbound c:\\fido\\temp#this_is_not_a_comment_but_a_directory_name

    There are comments here:
    inbound c:\\fido\\in # this is a comment since there is a space before "#"
    # This whole line is a comment.


    ----------------------------------------------------------------------------


    27. Is There a Possibility to Start an Application On an Event From binkd?

    If time events are discussed then no, there is not and there will never
    be. There are diverse schedulers for controlling such events and they are included in the distribution packages of modern operating systems.

    As to an event of receiving a file it is implemented long ago (starting with the version 0.9). See tokens "exec" and "flag" in the configuration
    file.


    ----------------------------------------------------------------------------


    28. What Is the Difference Between binkd/w32 and binkd/w9x?

    binkd/w32 is a traditional version of binkd and a console application. binkd/w9x is a GUI Win32 application creating temporary console windows in
    case of necessity. If one starts binkd/w32 in the existing console window
    (for example, in the command.com or cmd.exe window) it will work in the
    same window. Unlike it binkd/w9x immediately transfers control to the
    calling task.

    The development of binkd/w9x was necessitated by several significant differencies between Windows 95/98/Me and Windows NT/2000/XP/2003.

    In the first place console is implemented differently. The main
    difference: Windows 9x console does not react to shutdown and close window signals thus a working binkd/w32 cannot stop correctly when the window is closed or the system shutdown (or reboot) is performed.

    In the second place the principles of performing a service differ in different branches of Windows.

    As a result binkd 1.0a/w32 can work as a service only in Windows NT/2000/XP/2003 and binkd 1.0a/w9x as a service only in Windows 95/98/Me.
    It is planned to support Windows NT service in binkd/w9x. A correct support
    of working as a service under Windows 9x is impossible for binkd/w32
    because of the described console features in the systems.


    ----------------------------------------------------------------------------


    29. I Miss a Chat in binkd And I Want To Synchronize Time!

    You may use talk, icq or irc (or even Gadu-Gadu) for chatting. If you
    can start binkd then all the programs mentioned here and many other ones
    may use the same channel. You may chat as much as you like.

    And there are special utilities for synchronizing time via IP, for
    example ntpdate. Unlike mailers such utilities take time from the precise
    time servers.


    ----------------------------------------------------------------------------


    30. binkd Receives an Incoming Call Only After an Outgoing One.

    Such a behaviour was observed for binkd/w32 working as a service on a computer with McAfee Firewall installed. The firewall starts after binkd start-up, does not detect any binkd activity and does not allow to
    establish a connection. Thus one must ensure that binkd starts after
    firewall has started.

    The possible decisions: give up using binkd as an independent Windows
    NT service and start it from another service or start it as a usual program
    or stop using such a firewall.


    ----------------------------------------------------------------------------


    31. "start_file_transfer: ECHO is off.: No such file or directory" Error.

    One may see the following in the log file:
    ? 10 Sep 20:37:23 [1664] start_file_transfer: ECHO is on.: No such file
    or directory

    Such a situation may occur when you have created a poll with the command
    echo >> 12345678.ilo

    The above mentioned line in the log file is the message from the echo command on its current status of the output to the screen. See question 32
    on how to correctly create a poll. See also question 09.


    ----------------------------------------------------------------------------


    32. How to Create a Poll Correctly.

    To create a poll in BSO one should create an empty file NNNNMMMM.ilo, NNNNMMMM.clo, NNNNMMMM.dlo or NNNNMMMM.flo. The filename consists of the hexadecimal net number (first 4 characters), the hexadecimal node number
    (the characters from 5 to 8), the dot, the flavor attribute character
    (i = immediate, c = crash, d = direct, f = normal) and two characters "lo".

    Certainly you should not create the file, if it already exists. Moreover you should not overwrite it to avoid losing your mail.

    The most universal command (it works under DOS, Windows, OS/2, UNIX
    clones, CP/M and many others) is

    cd . >>NNNNMMMM.flo

    Such a command also works under DOS, Windows, OS/2:

    type nul >>NNNNMMMM.flo

    You may choose one of the following commands for UNIX clones:

    touch NNNNMMMM.flo
    echo -n "" >>NNNNMMMM.flo
    >>NNNNMMMM.flo
    cat /dev/null >>NNNNMMMM.flo


    ----------------------------------------------------------------------------


    33. What Does the Number in Brackets in the Log Mean?

    It is either PID (Process ID) in the multiprocess binkd versions (for example, in the versions for UNIX-like OS), or TID (Thread ID) in the multithreaded binkd versions (for example, in Windows versions).
    The process (or the thread) number simplifies the log analysis: it
    allows picking out messages from one binkd process (or thread). In
    particular, it allows separating the messages from the different sessions.


    ----------------------------------------------------------------------------


    34. How to Configure binkd for sending outgoing mail?

    You should configure your netmail packer in such a way that your mail
    is packed to BSO (Binkley Style Outbound) packets. If you have not used
    such a program before then you should install it. In some modem mailers the possibility of packing netmail to BSO has been provided by their developers (for example, in T-Mail starting with the version 2500).
    See also the answer to question 18.


    ----------------------------------------------------------------------------


    35. What for Does One Need the "share" Directive in the Configuration File?

    Shared AKA is used for sending netmail to one of the alternative routes
    and is your protection for the case when your netmail link goes down. In
    the sample configuration file

    share 2:999/999 2:5020/52 2:5020/238

    the uplinks are 2:5020/52 and 2:5020/238 with the shared AKA 2:999/999
    added. Then you configure packing netmail to 2:999/999 and binkd will send
    it to one of the two uplinks, the session with which will occur earlier.
    If there is no connection to 2:5020/52 the netmail will go to 2:5020/238.
    If there is no connection to 2:5020/238 it will go to 2:5020/52. The
    package addressee 2:999/999 will be replaced by the real one and the
    package password will be set to the one of the real link.
    Shared AKA is implemented in binkd 1.0 and above.


    ----------------------------------------------------------------------------


    36. What for Does One Need the "ftrans" Directive in the Configuration File?

    It is necessary for placing binkd and your tosser at different computers
    in the net, when outbound resides at a net drive and the paths to it are different. Moreover the tosser may run on a computer with FAT and the paths
    of the d:\long\path\to type, and binkd may run on a UNIX machine with paths
    of the /mnt/samba/wincomp1/path/to type.


    ----------------------------------------------------------------------------


    37. Why binkd in Windows Works As a Service With Admin Rights Only?

    Information security manuals advise running each service with rights of a separate user. But if one tries to do it for binkd, it will result in an error and to get the correct result one has to change some settings. It is easier to take binkd version 1.0-499 or later, where the rights needed for running binkd are minimized. If you are using binkd 0.9.x, some additional tweaks are necessary.
    First of all only administrator can install and start a Windows service. One may use Group Policy to give a user rights to install, start, stop and uninstall a service. One may also use for that subinacl.exe utility which may be downloaded from here: http://www.microsoft.com/en-us/download/details.aspx?id=23510
    Secondly, when binkd 0.9.x works as a service, it needs a right to write
    to the registry branch HKLM\\SYSTEM\\CurrentControlSet\\Services\\binkd-service\\parameters
    (if you have chosen a special service name at the binkd service installation, the chosen name with removed spaces will be there instead of "binkd-service").
    So you may install the service using an administrative account and after that you may edit the service settings in the System Services snap-in: set a user (for example, 'fido') and a password. For binkd 0.9.x you also have to allow editing the registry branch to 'fido' user. This can be done with the help of registry editor or the above mentioned subinacl.exe.
    To allow a user 'username' to start and stop binkd service with the name 'binkd-service' one may use the command:

    subinacl /service binkd-service /grant=username=TO

    For more details see http://support.microsoft.com/kb/288129/en-us and http://tinyurl.com/kqnbpfu


    ----------------------------------------------------------------------------


    38. Will Anybody Make Nodelist Support in binkd After All?

    binkd is a daemon in which binkp protocol is implemented. It performs this function only. It has no netmail scanning (AMA), chat, areafix and other Fidonet thingies. Actually it can be used outside of Fidonet for batch file transfer.
    It is enough versatile to satisfy users' wants and wishes without necessity to patch the source code and to rebuild binaries. Settings are defined in a text configuration file and when it is not enough, Perl hooks can be used. In fact it is a part of the configuration written in Perl. In such a way one may, for example, store links and password information in MySQL or LDAP and perform many other tricks.
    Retrieving addresses from the nodelist is one of such functions which may naturally be realized using Perl hooks. If some changes in the nodelist format happen, it is not necessary to issue a new binkd version and update binkd at all nodes. It is enough to change the Perl nodelist parsing function (i.e. in fact in configuration file) leaving binkd binary the same.
    If on the other hand there is a solid reason to parse the nodelist using binkd itself (for instance, if your binkd works in a laundry washer which has no Perl and using DDN is undesirable for some reason), and if someone sends along a patch for parsing nodelist inside binkd, then with high probability
    the patch will be applied and binkd will support nodelist natively.


    ----------------------------------------------------------------------------


    39. Does binkd Support non-ASCII Domain Names?

    Yes, it does. In Windows such a domain name may be used directly in binkd configuration file. In Linux and OS X it should be translated to Punycode beforehand.


    ----------------------------------------------------------------------------


    A1. I Have Found a Bug in binkd!

    Try to refresh your binkd version (it is possible that the bug has
    already been fixed). If it did not help please write to developers:

    [email protected]
    Pavel Gulchouck 2:463/68

    Mailing list [email protected]

    In your message please describe in detail the situation when the error happens. Please do not forget to mention your binkd version and to cite a
    piece of detailed log (loglevel more than 5).
    --- hpt/lnx 1.9 2023-02-09
    * Origin: Moscow, Russia (2:5020/1042)