FIDOGATE: Installation

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

# 2. Compiling and installing FIDOGATE

> 2.1 The `config.h` Header File |  | The config.h header file
> 2.2 The `config.make` Makefile Configuration |  | The config.make Makefile configuration
> 2.3 Compiling and Installing FIDOGATE |  | Compiling and installing FIDOGATE
> 2.4 Integrating FIDOGATE and the Mail/News System |  | Integrating FIDOGATE and the mail/news system
> 2.5 Testing the FIDOGATE Installation |  | Testing FIDOGATE operation
> 2.6 Connecting to FIDONET |  |

This chapter describes the FIDOGATE configuration and installation. You must also create and edit the config files to be installed in the CONFIGDIR directory, `fidogate.conf`, `areas`, `hosts`, `passwd`, `routing`, `packing`, `aliases` according to your setup (see the examples subdirectory).

The chapter on config files describes them in detail.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 2.1 The `config.h` Header File

Normally, if you want to compile a standard version of FIDOGATE on one of the supported platforms, it is not necessary to change anything in this file. Most things can be configured or overridden in `config.make` (compile-time) or `fidogate.conf` (run-time).

If you really want to edit `config.h`, here are the gory details:

`LOCAL_FTN_ADDRESSES`
  Generate "local" FTN addresses: User_Name%p.f.n.z@hostname.domain instead of User_name@p.f.n.z.domain.

`DO_BSY_FILES`
  Create Binkley-style busy files while accessing the Binkley outbound.

`NFS_SAFE_LOCK_FILES`
  Create lock / bsy files in an NFS-safe way.

`AMIGADOS_4D_OUTBOUND`
  Use AmigaDOS-style outbound file names.

`MAXMSGSIZE`
  Maximum size of FIDO messages generated by `rfc2ftn`, larger messages will be split. Alas, less than 16K seems to be the only safe setting. This is the default value.

`FTN_INVALID_DOMAIN`
  Domain address to be used for invalid FTN addresses.

`FACILITY`
  syslog facility used if `Logfile` is set to "syslog".

`CHARSET_STDFTN`
  Default charset for Fido messages.

`CHARSET_STD7BIT`
  Default charset for RFC messages with 7bit encoding.

`ALIASES_ARE_LOCAL`
  Addresses found in the `aliases` config file are rewritten so that the sender's address is the gateway.

`PASSTHRU_NETMAIL`
  Passthru operation for NetMail: if the sender of the message is an FTN address, the origin address of the resulting FTN message will be that FTN address. WARNING: enabled only if you really know what you're doing!

`PASSTHRU_ECHOMAIL`
  Passthru operation for EchoMail: X-FTN-Tearline, X-FTN-Origin, X-FTN-Seen-By, X-FTN-Path headers will be used for tear line, * Origin, SEEN-BY, ^APATH, when gating from Internet to FTN. WARNING: enabled only if you really know what you're doing!

`AI_1`
`AI_3`
`AI_5`
`AI_6`
`AI_8`
  Configuration for Andy Igoshin's patches, see `contrib/fidogate-4.3a3-ai-pl9.1/README.ai` for details. `AI_2,4,7` are now fully integrated.

System dependent configuration:

This configuration contains several groups of #define/#undef. First, the definitions for a standard POSIX UNIX, followed by #ifdef'ed definitions for SunOS, Linux, FreeBSD, Interactive UNIX, MSDOS DJGPP, NextStep, GNU-WIN32.

If you want to port FIDOGATE to a new system, please add a #ifdef'ed section similar to the already existing ones.

The gory details:

`HAS_FCNTL_LOCK`
  Define, if the system support fcntl() file locking.

`HAS_GETTIMEOFDAY`
  Define, if the system has the gettimeofday() function.

`HAS_TM_GMTOFF`
  Define, if the system has a tm_gmtoff field in struct tm.

`HAS_SYSEXITS_H`
  Define, if the system support the `sysexits.h` header file.

`HAS_TM_ZONE`
  Define, if the system has a tm_zone field in struct tm.

`HAS_STRFTIME`
  Define, if the system has the Standard-C strftime() function.

`HAS_TZNAME`
  Define, if the system has `extern char *tzname[2]`.

`HAS_STRCASECMP`
  Define, if the system has the `strcasecmp()` and `strncasecmp()` functions.

`HAS_STRICMP`
  Define, if the system has the `stricmp()` and `strnicmp()` functions.

`HAS_STERROR`
  Define, if the system has the `strerror()` function.

`DO_BINARY`
  Define, if files must be opened in binary mode.

`DO_DOSIFY`
  Define, if filenames must be converted to DOS, OS2-style `\`.

`RECEIVED_BY_MAILER`
  Define, if extra Received lines are inserted by the mail system, currently only used for NeXT.

`HAS_SYSLOG`
  Define, if syslogd and the library function `syslog()`, `vsyslog()` are suppored.

`HAS_SNPRINTF`
  Define, if `snprintf()` and `vsnprintf()` are supported.

`HAS_HARDLINKS`
  Define, if the system supports file systems with hard links and the library function `link()`.

`HAS_POSIX_REGEX`
  Define, if the system supports the POSIX regex functions regcomp(), regexec() etc.

Define only one of `HAS_TM_ZONE`, `HAS_STRFTIME`, `HAS_TZNAME`, and also only one of `HAS_STRCASECMP`, `HAS_STRICMP`.

THE FOLLOWING DEFINES SHOULD REALLY BE LEFT AS IS!!!

`MSGID_FIDONET_DOMAIN`
  Default domain for standard FIDO addresses (zone 1--6). Used for Message-IDs only, so DO NOT CHANGE.

`PACKET_MODE`
`BSY_MODE`
`FLO_MODE`
`DATA_MODE`
`DIR_MODE`
`CONF_MODE`
  Permissions for files processed by FIDOGATE.

`FTN_RFC_HEADERS`
  RFC headers recognized at the beginning of FTN messages.

`RFC_LVL_1_HEADERS`
  RFC headers put into FTN messages for RFC level 1.

`R_MODE`
`W_MODE`
`A_MODE`
`RP_MODE`
`WP_MODE`
`AP_MODE`
  Modes (`fopen()`) for opening files.

`DATE_LOG`
`DATE_DEFAULT`
`DATE_NEWS`
`DATE_MAIL`
`DATE_FROM`
`DATE_FTS_0002`
`DATE_TICK_PATH`
`DATE_VIA`
`DATE_SPLIT`
  Date format strings.

`PRODUCT_CODE`
  FIDO product code used by `rfc2ftn`.

`MAXADDRESS`
  Maximum number of `Address` and `Zone` statements in `config` file.

`MAXDOSDRIVE`
  Maximum number of `DosDrive` statements in `config` file.

`MAXPATH`
  Maximum length of a pathname in FIDOGATE.

`MAXINETADDR`
  Maximum length of the address part of an Internet address in FIDOGATE.

`MAXUSERNAME`
  Maximum length of the user name part of an Internet address in FIDOGATE.

`MAXOPENFILES`
  Maximum number of packet files concurrently opened by tosser programs. The maximum possible value is operating system and configuration dependent, see UNIX ulimits.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 2.2 The `config.make` Makefile Configuration

This file is included in all FIDOGATE Makefiles.

A special convention is used for defining FIDOGATE configuration macros: macro name starting with `DEFAULT_` are used by the compilation process to automatically generate C code.

`DEFAULT_V_option`
  Creates a Makefile macro definition, substitutes <option> in shell and perl scripts, creates a compile-time C `#define DEFAULT_`option in `paths.h`, a run-time configuration option option in `fidogate.conf`, and makes FIDOGATE evaluate the environment variable `FIDOGATE_`option.

`DEFAULT_F_option`
  Creates a Makefile macro definition, substitutes <option> in shell and perl scripts, creates a compile-time C `#define DEFAULT_`option in `paths.h`. No run-time override!

`DEFAULT_A_option`
  Creates a %X abbreviation (can be used at the start of file names) for option.

Be very carefull not to remove any of the FIDOGATE standard macros and don't touch the standard abbreviations in this file!!!

`DEFAULT_V_CONFIGDIR`
  Directory for config files.

`DEFAULT_V_LIBDIR`
  Directory for FIDOGATE's internal programs.

`DEFAULT_V_BINDIR`
  Directory for user programs and scripts.

`DEFAULT_V_LOGDIR`
  Directory for log files.

`DEFAULT_V_VARDIR`
  Directory for `areas.bbs`, `history`.

`DEFAULT_V_LOCKDIR`
  Directory for lock files.

`DEFAULT_V_SPOOLDIR`
  Internal spool directory (temporary files).

`DEFAULT_V_BTBASEDIR`
  BinkleyTerm-style outbound base directory. This is the base directory, not the actual zone outbound directory.

`DEFAULT_V_INBOUND`
  BinkleyTerm-style inbound directory.

`DEFAULT_V_PINBOUND`
  BinkleyTerm-style protected inbound directory.

`DEFAULT_V_UUINBOUND`
  BinkleyTerm-style inbound directory for the `recvuu` script.

`DEFAULT_V_FTPINBOUND`
  BinkleyTerm-style FTP inbound directory.

`DEFAULT_V_ACL`
  Access control list for AI patches (not used for standard FIDOGATE distribution).

`DEFAULT_V_ALIASES`
  Configuration file for aliases.

`DEFAULT_V_AREAS`
  Configuration file for areas/newsgroups gateway.

`DEFAULT_V_HOSTS`
  Configuration file for registered hosts.

`DEFAULT_V_PASSWD`
  Configuration file for passwords.

`DEFAULT_V_PACKING`
  Configuration file for ArcMail packer (`ftnpack`).

`DEFAULT_V_ROUTING`
  Configuration file for NetMail/EchoMail routing (`ftntoss`, `ftnroute`).

`DEFAULT_V_HISTORY`
  MSGID history file for dupe check.

`DEFAULT_V_LOGFILE`
  Default log file.

`DEFAULT_V_CHARSETMAP`
  Character set mapping table.

`DEFAULT_F_NEWSETCDIR`
  INN directory: config files

`DEFAULT_F_NEWSVARDIR`
  INN directory: active, history files.

`DEFAULT_F_NEWSLIBDIR`
  INN directory: scripts.

`DEFAULT_F_NEWSSPOOLDIR`
  INN directory: news spool.

`DEFAULT_F_IFMAILDIR`
  Ifcico/ifmail directory.

`DEFAULT_F_CONFIG_GATE`
`DEFAULT_F_CONFIG_MAIN`
`DEFAULT_F_CONFIG_FFX`
  FIDOGATE main configuration file `fidogate.conf`.

`DEFAULT_F_SEQ_MAIL`
`DEFAULT_F_SEQ_NEWS`
`DEFAULT_F_SEQ_MSGID`
`DEFAULT_F_SEQ_PKT`
`DEFAULT_F_SEQ_SPLIT`
`DEFAULT_F_SEQ_FF`
`DEFAULT_F_SEQ_TOSS`
`DEFAULT_F_SEQ_PACK`
`DEFAULT_F_SEQ_TICK`
  Sequencer files.

`DEFAULT_F_LOCK_HISTORY`
  Lock file for history access.

`DEFAULT_F_OUTRFC_MAIL`
`DEFAULT_F_OUTRFC_NEWS`
`DEFAULT_F_OUTPKT`
`DEFAULT_F_OUTPKT_MAIL`
`DEFAULT_F_TOSS_TOSS`
`DEFAULT_F_TOSS_ROUTE`
`DEFAULT_F_TOSS_PACK`
`DEFAULT_F_TOSS_BAD`
`DEFAULT_F_OUTPKT_NEWS`
  Internal spool directories (temporary files). If these directories are different from the default ones, the commands for the `install-dirs` target of `Makefile` must be changed as well.

`DEFAULT_F_TICK_HOLD = %B/tick`
  Outbound hold directory for TIC files.

`DEFAULT_A_CONFIGDIR`
`DEFAULT_A_LIBDIR`
`DEFAULT_A_BINDIR`
`DEFAULT_A_LOGDIR`
`DEFAULT_A_VARDIR`
`DEFAULT_A_LOCKDIR`
`DEFAULT_A_SPOOLDIR`
`DEFAULT_A_BTBASEDIR`
`DEFAULT_A_INBOUND`
`DEFAULT_A_PINBOUND`
`DEFAULT_A_UUINBOUND`
  Abbreviations for configured directories.

`PERL`
  Full path name of perl executable.

`SENDMAIL_CF_DIR`
  Directory where the sendmail m4 configuration files are installed (`/usr/lib/sendmail-cf` on RedHat Linux systems).

`INFODIR`
  Directory for installing info documentation files.

`HTMLDIR`
  Directory for installing HTML documentation files.

`HTMLLOGDIR`
  Directory for installing CGI files.

`M4`
  m4 macro processor (for compiling sendmail cf files).

`OWNER`
  Owner of FIDOGATE files.

`GROUP`
  Group of FIDOGATE files.

`PERM_PROG`
  Permissions for installing programs.

`PERM_DATA`
  Permissions for installing data files.

`PERM_SETUID`
  Permissions for installing setuid `OWNER` programs.

`PERM_DIR`
  Permissions for installing directories.

`CC`
  C compiler.

`YACC`
  `yacc` or a clone like `bison -y`.

`AR`
  `ar` monkey ... (@!#$%&... ouch!) ... librarian.

`RANLIB`
  Library utitility, if needed.

`DEBUG`
  Optimize or debugging flags for compiling.

`INCLUDE`
  C include (-I) options.

`CFLAGS`
  Flags for compiling FIDOGATE.

`LFLAGS`
  Flags for linking FIDOGATE.

`LIBS`
  Libraries for linking FIDOGATE, including the FIDOGATE library `libfidogate.a`.

`INSTALL`
  Install program.

``
  Set to `.exe` for MSDOS, OS2, Win32.

`INSTALL_PROG`
  Install command for installing programs.

`INSTALL_DATA`
  Install command for installing data files.

`INSTALL_SETUID`
  Install command for installing setuid programs.

`INSTALL_DIR`
  Install command for installing directories.

`PREFIX`
  Extra prefix directory for `make install`.

`LIB`
  Name of the FIDOGATE library.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 2.3 Compiling and Installing FIDOGATE

Compile the beast by entering

    make depend
    make

Alternatively an optimized version can be compiled with

    make DEBUG=-O2

If everything works, you must create the necessary directories:

    make install-dirs

Then install all FIDOGATE programs:

    make install

Next you must create the configuration files in (default) `/etc/fidogate`. Have a look at the various configuration in directory `examples/` and use them to build your own configuration.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 2.4 Integrating FIDOGATE and the Mail/News System

`scripts/inn`
  Scripts for INN.

`scripts/cnews`
  Scripts for CNews.

`sendmail/cf`
  Sendmail V8 configuration files (m4) and example .mc files for FIDOGATE: Fido.DE domain gateway morannon, orodruin, point setup.

Much more concise instructions should be here!!! ;-)

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 2.5 Testing the FIDOGATE Installation

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 2.5.1 `Tosser`

...

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 2.5.2 `Gateway`

...

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 2.6 Connecting to FIDONET

FIDOGATE does NOT include a FIDO mailer, so you have to transfer FIDO mail to and from the UNIX system by some other means.

If you want everything running on the UNIX system, you need a FIDO mailer for UNIX. Currently, this choice is limited to

- BinkleyTerm
- ifcico
- BinkD

I don't know what the current state of BinkleyTerm for Unix/Linux is, but ifcico and BinkD are working very well for me. See the FIDOGATE home page at `http://www.fido.de/fidogate/` for links.

Another solution is a separate PC running DOS or OS/2 and BinkleyTerm as a mailer. The Fido.DE gateway currently comprises a LINUX PC for the gateway/tosser and Samba server, and an OS/2 PC running BinkleyTerm for the analog phone and ISDN lines. The BinkleyTerm outbound is kept on the LINUX server, so the OS/2 PC and the gateway have access to it.

[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated by Martin Junius on August, 26 2004 using texi2html