Guía para punto con binkd + crashmail + golded en GNU/Linux
La intensión de esta guía, es ayudar a tener un sistema de un punto para Fido (también puede ser un nodo, la única diferencia básicamente es la dirección FTN, pero a efectos prácticos es lo mismo) Este sistema en conjunto, debería poder enviar/recibir netmails y áreas de echomails usando golded como editor, crashmail como tosser y binkd como mailer.
Este es un esquema de como seria el funcionamiento:
No es la idea ver opción por opción en detalle de los programas, para ello se debe recurrir a la documentación de cada uno de ellos respectivamente.
El escenario de ejemplo que voy a mostrar es creado en Debian GNU/Linux version 12 [bookworm] (para otros OS's seguramente se deben considerar usar los paths y los programas correspondientes).
Vamos a usar esas configuraciones como ejemplo:
Configuración | valor |
---|---|
Nuestra dirección FTN del punto | 4:902/26.10 |
Dirección de nuestro uplink/boss donde conectaremos | 4:902/26 |
Host del uplink/boss | bbs.docksud.com.ar |
Puerto del binkd (estándar) | 24554 |
Raíz de nuestros archivos | /home/ragnarok/fido |
Configuración de binkd
Binkd se puede instalar vía apt al menos en los repos de debian (a la fecha debian 12) yo uso ese y anda bien, salvo que se encuentren con algún bug o alguna funcionalidad mas nueva que necesiten, se deberán bajar el source y compilarlo.
Pero no creo que sea necesario.
Por defecto binkd busca las configuraciones en /etc/binkd/binkd.cfg ( por ejemplo, si lo instalan desde los repos), también puede que corra como servicio (el cual ahora no lo vamos a usar y para mejor de los casos, lo deshabilitan vía systemctl).
Porque nosotros vamos a crear el archivo de config y vamos a poner todos dentro de un directorio en nuestro home así no tenemos problemas de permisos y esas cosas al ejecutar como root o un usuario de servicio. Así se facilita para quienes no están muy experimentados con GNU/Linux.
El path del directorio que vamos a usar por ejemplo es /home/ragnarok/fido/
Este es el contenido del archivo /home/ragnarok/fido/binkd.cfg. Voy a comentar algunas de las opciones que me parece que ameritan, el resto la pueden ver desde la Documentación de binkd que está muy bien detallada.
- /home/ragnarok/fido/binkd.cfg
# Opciones de logging para depurar log binkd.log loglevel 4 # Definimos el directorio de salida donde se van a alojar los paquetes en cola para enviar a nuestro upplink/boss # El numero 4 corresponde a la zona que trabajamos # A esta altura solo con el domino fidonet alcanzaría, pero por costumbre dejo los otro alias comunes domain fidonet /home/ragnarok/fido/out 4 domain fido alias-for fidonet domain fidonet.org alias-for fidonet domain fidonet.net alias-for fidonet # Dirección de nuestro sistema de punto address 4:902/26.10@fidonet # Datos para identificar nuestros sistema sysname "Fernando Toledo punto 10" location "Dock Sud, Bs As Argentina" sysop "Ragnarok" # Opciones generales (ver docu de binkd para mas detalles de cada una) nodeinfo 115200,TCP,BINKP conlog 4 try 10 hold 10m send-if-pwd percents printq backresolv pid-file binkd.pid minfree 2048 minfree-nonsecure 2048 kill-dup-partial-files kill-old-partial-files 1d kill-old-bsy 12h prescan # Directorio de entrada de binkd, acá llegaran los paquetes que recibimos y luego el tosser(Crashmail) debe procesarlos desde ahí inbound /home/ragnarok/fido/in # El //directorio de entrada no seguro// es por si hacemos la conexión contra nuestro uplink/boss pero probablemente no estén bien definidas las credenciales o la autenticación # Con lo cual binkd puede aceptar los paquetes entrantes, pero no confiar el ellos. De esta forma, esos paquetes quedan acá y luego debemos # evaluar que hacer con ellos inbound-nonsecure /home/ragnarok/fido/in.nosecure # Programa que se ejecuta al recibir archivos .tic (en este caso tinytic) va a procesar esos archivo y según la configuración # va a moverlos a algun directorio que le indicamos exec "/home/ragnarok/fido/tinytic -c /home/ragnarok/fido/tinytic.cfg" *.tic # Acá indicamos que al llegar archivo de paquetes, se lance el crashmail para procesarlos exec "crashmail settings /home/ragnarok/crashmail.prefs toss nosecurity" *.pkt # Dirección del nodo de nuestro uplink/boss para enviar y recibir los paquetes # El formato es: # node <dirección del uplink> <hostname de internet> <contraseña> # # Los fileboxes están asociados a un nodo se pueden usar para organizar la cola de entrada y salida. Así se puede separar por nodo y no se mezclan # Es útil para cuando se tienen varios nodos, aunque este no seria nuestro caso node 4:902/26@fidonet bbs.docksud.com.ar 123456 filebox /home/ragnarok/fido/filebox
Hasta acá, si todas las configuraciones son correctas, seria posible hacer un llamado hacia el uplink. Usamos: -p para hacer el poll y salir cuando termina -P 4:902/26 es el numero del nodo del uplink/boss binkd.cfg el nombre de archivo de configuración de binkd.
Entonces ejecutamos:
/usr/sbin/binkd -p -P 4:902/26 binkd.cfg
Podemos ver el log en la consola donde indica que se autenticó bien
01:43 [26325] BEGIN, binkd/1.1a-115/Linux -p -P 4:902/26 binkd.cfg 01:43 [26325] creating a poll for 4:902/26@fidonet (`d' flavour) 01:43 [26325] clientmgr started $ -d 4:902/26@fidonet + 01:43 [26326] call to 4:902/26@fidonet 01:43 [26326] trying bbs.docksud.com.ar [186.123.101.23]... 01:43 [26326] connected + 01:43 [26326] outgoing session with bbs.docksud.com.ar:24554 [186.123.101.23] - 01:43 [26326] OPT CRAM-MD5-2134123123412341231234 CRYPT + 01:43 [26326] Remote requests MD mode + 01:43 [26326] Remote requests CRYPT mode - 01:43 [26326] SYS Dock Sud BBS - 01:43 [26326] ZYZ Ragnarok - 01:43 [26326] LOC Dock Sud, Bs As, Argentina - 01:43 [26326] NDL 115200,TCP,BINKP - 01:43 [26326] TIME Sun Nov 17 2024 01:43:47 GMT-0300 - 01:43 [26326] VER BinkIT/2.41,JSBinkP/4,sbbs3.20a/Linux binkp/1.1 + 01:43 [26326] addr: 4:902/26@fidonet + 01:43 [26326] addr: 666:1/1@latinet (n/a or busy) + 01:43 [26326] addr: 21:2/151@fsxnet (n/a or busy) + 01:43 [26326] addr: 618:500/45@micronet (n/a or busy) + 01:43 [26326] addr: 46:10/182@agoranet (n/a or busy) + 01:43 [26326] addr: 39:943/0@amiganet (n/a or busy) + 01:43 [26326] addr: 39:943/1@amiganet (n/a or busy) + 01:43 [26326] addr: 954:895/37@hobbynet (n/a or busy) + 01:43 [26326] addr: 15:1/1@zudaka (n/a or busy) + 01:43 [26326] addr: 15:1/0@zudaka (n/a or busy) + 01:43 [26326] addr: 15:0/0@zudaka (n/a or busy) + 01:43 [26326] addr: 4:0/0@fidonet + 01:43 [26326] addr: 4:90/0@fidonet + 01:43 [26326] addr: 4:900/0@fidonet + 01:43 [26326] addr: 4:902/0@fidonet + 01:43 [26326] pwd protected session (MD5) - 01:43 [26326] session in CRYPT mode + 01:43 [26326] done (to 4:902/26@fidonet, OK, S/R: 0/0 (0/0 bytes)) 01:43 [26326] session closed, quitting... 01:43 [26325] rc(26326)=0 01:43 [26325] the queue is empty, quitting...
Configuración de Crashmail
Crashmail es el Tosser, es el programa que se encarga de procesar los archivos de paquetes que llegaron a la entrada del binkd y guardar los mensajes en las diferentes áreas, echomail y netmail.
Es importante tener en cuenta que al guardar las áreas se debe elegir el formato de base de datos de las mismas, en la versión que tengo soporta MSG y JAM.
El formato Standard MSG (FTS-1) genera un archivo por mensaje en el filesystem, 1.msg, 2.msg etc..
El formato JAM utiliza un par de archivos uno para guardar los manejes, otro de indice, etc.
Elegir uno u otro es a gusto, semejante a usar MailDir o Mbox para los clientes de correo de internet, cada uno tiene sus pro y contras.
El JAM seria mas “optimo” porque es mas rápido abrir una base en un solo archivo, pero tiene la contra de que si se corrompe ese archivo se pueden perder todos los mensajes.
En cambio, el MSG es mas costoso porque se tiene que abrir y cerrar cada archivo para cada mensajes, pero la buenas es que si se rompe 1 archivo a lo sumo se pierde un mensaje.
Como no manejo un gran volumen de mensajes, hoy el costo de almacenamiento no es tanto y velocidad de los equipos es suficiente, yo elegí en este caso usar el formato MSG.
Aparte creo que algún momento, con las bases JAM tuve bastantes problemas (posiblemente por algún bug de la época) en el cual se rompían constantemente y había que andar lidiando con utilidades para corregirlas/reindexarlas etc.
La versión que tengo instalada es de apt también (a la fecha de escribir esta guía con debian 12):
$ crashmail version This is CrashMail II version 1.7 Operating system: Linux Compilation date: Feb 14 2023 Compilation time: 15:28:58 Available messagebase formats: MSG Standard *.msg messagebase as specified in FTS-1 JAM JAM Messagebase Available nodelist formats: CMNL CrashMail nodelist index V7+ Version 7+ format
En principio, crashmail va cumplir dos tareas:
SCAN: Va a buscar si escribimos mensaje en las áreas y los va a empaquetar para enviarlos a la cola de salida de binkd.
TOSS: Procesa los paquetes que entraron al binkd y los guarda en sus respectivas áreas como comentaba anteriormente.
EXPORT: Esta tarea toma las áreas que están configuradas en crashmail y general el archivo “areas.golded”. Este archivo luego se hace un “include” en la config de golded así levanta toda la bases de mensajes.
El archivo de configuración de crashmail lo vamos a guardar también dentro de /home/ragnarok/fido, es bastante mas extenso que binkd y tiene muchas opciones que también están autodocumentadas en los archivos de ejemplo que vienen en /usr/share/doc/crashmail
Igualmente voy a poner algunos comentarios de las opciones que son necesarias:
- /home/ragnarok/fido/crashmail.prefs
; Datos de nuestro punto SYSOP "Fernando Toledo" AKA 4:902/26.10 DOMAIN "FidoNet" DEFAULTZONE 4 ; Base de duplicados, crashmail detecta duplicados ; y los elimina antes de cargarlos en las bases de las áreas DUPEFILE "/home/ragnarok/fido/crashmail/crash.dupes" 200 DUPEMODE KILL ; Paths de entrada y de salida de paquetes mismo que binkd INBOUND "/home/ragnarok/fido/in/" OUTBOUND "/home/ragnarok/fido/out" ; Directorios temporales, estadísticas, logs etc TEMPDIR "/home/ragnarok/fido/crashmail/tmp" CREATEPKTDIR "/home/ragnarok/fido/crashmail/tmp" PACKETDIR "/home/ragnarok/fido/crashmail/packets" STATSFILE "/home/ragnarok/fido/crashmail/crash.stats" LOGFILE "/home/ragnarok/fido/crashmail/crash.log" ; Opciones varias (ver docu de crashmail) LOGLEVEL 6 LOOPMODE LOG+BAD MAXPKTSIZE 50 MAXBUNDLESIZE 100 FORCEINTL ANSWERRECEIPT ANSWERAUDIT CHECKSEENBY PATH3D IMPORTSEENBY WEEKDAYNAMING ADDTID ALLOWKILLSENT MSG_HIGHWATER JAM_HIGHWATER JAM_LINK JAM_QUICKLINK JAM_MAXOPEN 5 ; Grupos de áreas. Uno puede agrupar las áreas, por ejemplo ; si se usaran varias redes en el mismo sistema, se podría ; crear un grupo para cada una de ellas GROUPNAME D "Dock Sud" GROUPNAME L "Local" DEFAULTGROUP D ; Definiciones de los empaquetadores (en este caso para .zip) PACKER "ZIP" "zip -D %a %f" "unzip %a" "PK" ; Acá indicamos que para el nodo de nuestro uplink/boss empaquete los mensajes ; con un password definido (que se acuerda con el sysop de ese uplink/boss) NODE 4:902/26 "ZIP" "123456" PACKNETMAIL AUTOADD ; Definimos el ruteo que para salir a las otras ; zonas debemos enviar a traves de nuestro uplink/boss ROUTE "1:*/*.*" "4:902/26.0" 4:902/26.10 ROUTE "2:*/*.*" "4:902/26.0" 4:902/26.10 ROUTE "3:*/*.*" "4:902/26.0" 4:902/26.10 ROUTE "4:*/*.*" "4:902/26.0" 4:902/26.10 ; Definición del area por defecto, a modo de plantilla todas las areas nuevas se ; crearían dentro del path especificado y con el formato MSG AREA "DEFAULT_D" 4:902/26.10 MSG "/home/ragnarok/fido/areas/echo/fido/%a" GROUP D ; Definimos un area para los netmails NETMAIL "Netmail-fido" 4:902/26.10 MSG "/home/ragnarok/fido/areas/netmail-fido" GROUP N ; Definición del un area de "bad echos" que es por si hay alguno problema con ellos AREA "Bad-fido" 4:902/26.10 MSG "/home/ragnarok/fido/areas/bad-fido" GROUP N ; Definiciones de areas echomail. A medida que vamos recibiendo echos, este ; archivo se va modificando y se van agregando (append) las definiciones de las ; areas de forma automática. ; Se debe agregar en AREA: ; - el nombre del area (o tambien lalamdo TAG de fidonet) ; - nuestra direccion FTN quien recibe los mensajes ; - el formato de la base de mensajes (MSG) ; - el path destino de la base de mansaje ; Luego se agrega los EXPORTS. Cuando enviamos un mensaje a un area y hacemos crashmail SCAN, se ; encargará de genera los paquees para esos destinos (para ese caso, nuestro uplink/boss) ; Asi como tambien la DESCRIPCION o el GRUPO para luego en el golded por ver las areas ; agrupadas si lo desean AREA "ZONA4.GENERAL" 4:902/26.10 MSG "/home/ragnarok/fido/areas/echo/fido/ZONA4_GENERAL" EXPORT %4:902/26.0 GROUP D AREA "REGION90" 4:902/26.10 MSG "/home/ragnarok/fido/areas/echo/fido/REGION90" EXPORT %4:902/26.0 GROUP D AREA "ESP.PRUEBAS" 4:902/26.10 MSG "/home/ragnarok/fido/areas/echo/fido/ESP_PRUEBAS" DESCRIPTION "Area de pruebas ESP.PRUEBAS" EXPORT %4:902/26.0 GROUP D
Toss
Teniendo esa configuracion podriamos hacer un TOSS para procesar paquetes que llegaron al binkd ejecutando:
crashmail settings crashmail.prefs toss nosecurity
Entonces, podemos ver que un paquete fue procesado y que se recibió 1 mensaje al área netmail-fido:
CrashMail II 1.7 started successfully! Packets will be tossed without security checks Tossing files in /home/ragnarok/fido/in/... Tossing 8tb3ktle.pkt (1K) from 4:902/26.0 (17-Nov-24 01:45:57) / pw, 4d Is in HandleMessage() Area Netmail-fido -- 1 messages Total -> Read messages: 1 Written messages: 0 Imported -> Imported messages: 1 Routed netmails: 0 Bad -> Bad messages: 0 Duplicate messages: 0
Scan
Podemos hacer un scan para ver si hay mensajes que se deben enviar:
crashmail settings crashmail.prefs scan
CrashMail II 1.7 started successfully! Scanning all areas for messages to export Found area Netmail-fido Scanning area Netmail-fido Found area Bad-fido Scanning area Bad-fido Found area DEFAULT_D Skipping area because it has no messagebase or area type is not echomail or netmail.. Found area ZONA4.GENERAL Scanning area ZONA4.GENERAL Found area REGION90 Scanning area REGION90 Found area ESP.PRUEBAS Scanning area ESP.PRUEBAS No messages exported Scanning for orphan files Scanning for old packets Scanning for new files to pack CrashMail end
Export
crashexport crashmail.prefs areas.golded golded
Tener en cuenta que el comando es crashexport y no produce ninguna salida si no hay error como todo comando en GNU/Linux.
Pero podemos ver el archivo generado:
cat areas.golded
; Generated by CrashExport 1.7 ; Sun Nov 17 17:21:54 2024 AREADEF Netmail-fido "" 0 NET FTS1 /home/ragnarok/fido/areas/netmail-fido 4:902/26.10 (Loc Pvt) AREADEF Bad-fido "" 0 ECHO FTS1 /home/ragnarok/fido/areas/bad-fido 4:902/26.10 (Loc) AREADEF ZONA4.GENERAL "" D ECHO FTS1 /home/ragnarok/fido/areas/echo/fido/ZONA4_GENERAL 4:902/26.10 (Loc) AREADEF REGION90 "" D ECHO FTS1 /home/ragnarok/fido/areas/echo/fido/REGION90 4:902/26.10 (Loc) AREADEF ESP.PRUEBAS "" D ECHO FTS1 /home/ragnarok/fido/areas/echo/fido/ESP_PRUEBAS 4:902/26.10 (Loc)
fido/ ├── areas │ ├── bad-fido │ ├── echo │ │ └── fido │ │ ├── ESP_PRUEBAS │ │ ├── REGION90 │ │ └── ZONA4_GENERAL │ └── netmail-fido ├── crashmail │ ├── packets │ └── tmp ├── filebox ├── in └── out
Configuración de Golded+
Configurar golded lleva un poco mas de esfuerzo pero no es imposible. Inclusive si uno tiene errores de configracion he notado que golded ( al menos en GNU/Linux) no genera un error en la consola, si no que, simplemente se ejecuta y no hace nada.
Por eso me parece que tener un archivo de ejemplo funcional ayuda bastante sobre todo al inicio.
Compilar e Instalar
En primer lugar, lo mas probable es que se tenga que bajar el source desde Github y compilarlo. Al menos en debian12 no esta vía repositorios.
Si bien se escapa un poco de esta guía, los pasos a seguir son los siguientes:
Clonar el repo desde github:
git clone https://github.com/golded-plus/golded-plus
Entrar al directorio golded3 dentro del clonado:
cd golded-plus cd golded3
Generar el archivo mygolded.h a partir del que viene de ejemplo:
cp mygolded.__h mygolded.h
Editar las primeras lineas del archivo mygolded.h (entre la 13 y la 20), donde se debe poner tu nombre tu direccion de FTN y un email de internet:
#undef __GVER_VENDOR_NAME__ #define __GVER_VENDOR_NAME__ "Put in your full name here" #undef __GVER_VENDOR_FIDO__ #define __GVER_VENDOR_FIDO__ "your Fidonet-AKA" #undef __GVER_VENDOR_EMAIL__ #define __GVER_VENDOR_EMAIL__ "your email@address"
Por ejemplo:
#undef __GVER_VENDOR_NAME__ #define __GVER_VENDOR_NAME__ "Fernando Toledo" #undef __GVER_VENDOR_FIDO__ #define __GVER_VENDOR_FIDO__ "4:902/26.10" #undef __GVER_VENDOR_EMAIL__ #define __GVER_VENDOR_EMAIL__ "ragnarok@docksud.com.ar"
Volver a la raiz del repositorio (golded-plus):
cd ..
Crear un dictorio build para cmake:
mkdir build
Generar el build y compilar:
cd build cmake ..
-- The C compiler identification is GNU 12.2.0 -- The CXX compiler identification is GNU 12.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Looking for snprintf -- Looking for snprintf - found -- Looking for vsnprintf -- Looking for vsnprintf - found -- Looking for stdarg.h -- Looking for stdarg.h - found -- Looking for string.h -- Looking for string.h - found -- Looking for malloc.h -- Looking for malloc.h - found -- Looking for time.h -- Looking for time.h - found -- Looking for errno.h -- Looking for errno.h - found -- Looking for fcntl.h -- Looking for fcntl.h - found -- Looking for io.h -- Looking for io.h - found -- Looking for unistd.h -- Looking for unistd.h - found -- Looking for 4 include files stdarg.h, ..., string.h -- Looking for 4 include files stdarg.h, ..., string.h - found -- Looking for include files time.h, sys/time.h -- Looking for include files time.h, sys/time.h - found -- Found Curses: /usr/lib/x86_64-linux-gnu/libcurses.so -- Configuring done -- Generating done -- Build files have been written to: /home/ragnarok/src/ftoledo/golded-plus/build
make
[ 1%] Building CXX object goldlib/hunspell/CMakeFiles/hunspell.dir/affentry.cxx.o [ 1%] Building CXX object goldlib/hunspell/CMakeFiles/hunspell.dir/affixmgr.cxx.o [ 2%] Building CXX object goldlib/hunspell/CMakeFiles/hunspell.dir/csutil.cxx.o [ 2%] Building CXX object goldlib/hunspell/CMakeFiles/hunspell.dir/filemgr.cxx.o [ 2%] Building CXX object goldlib/hunspell/CMakeFiles/hunspell.dir/hashmgr.cxx.o [ 3%] Building CXX object goldlib/hunspell/CMakeFiles/hunspell.dir/hunspell.cxx.o [ 3%] Building CXX object goldlib/hunspell/CMakeFiles/hunspell.dir/hunzip.cxx.o [ 4%] Building CXX object goldlib/hunspell/CMakeFiles/hunspell.dir/phonet.cxx.o [ 4%] Building CXX object goldlib/hunspell/CMakeFiles/hunspell.dir/replist.cxx.o [ 4%] Building CXX object goldlib/hunspell/CMakeFiles/hunspell.dir/suggestmgr.cxx.o [ 5%] Linking CXX static library libhunspell.a [ 5%] Built target hunspell [ 5%] Building CXX object goldlib/gall/CMakeFiles/gall.dir/gbmh.cpp.o [ 5%] Building CXX object goldlib/gall/CMakeFiles/gall.dir/gcharset.cpp.o [....] [ 97%] Building CXX object golded3/CMakeFiles/golded.dir/gmarea.cpp.o [ 98%] Building CXX object golded3/CMakeFiles/golded.dir/gehtml.cpp.o [ 98%] Building CXX object golded3/CMakeFiles/golded.dir/golded3.cpp.o [ 98%] Linking CXX executable golded /usr/bin/ld: ../goldlib/uulib/libuulib.a(uunconc.cpp.o): en la función `UUDecode(_uulist*)': uunconc.cpp:(.text+0x3686): aviso: the use of `tempnam' is dangerous, better use `mkstemp' /usr/bin/ld: CMakeFiles/golded.dir/gedoit.cpp.o: en la función `WriteMsgs(GMsg*)': gedoit.cpp:(.text+0xae3): aviso: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp' [ 98%] Built target golded [ 99%] Building CXX object goldnode/CMakeFiles/goldnode.dir/goldnode.cpp.o [ 99%] Building CXX object goldnode/CMakeFiles/goldnode.dir/__/golded3/golded3.cpp.o [ 99%] Linking CXX executable goldnode /usr/bin/ld: ../goldlib/gall/libgall.a(gfilutl1.cpp.o): en la función `TestLockPath(char const*)': gfilutl1.cpp:(.text+0x85c): aviso: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp' [ 99%] Built target goldnode [ 99%] Building CXX object rddt/CMakeFiles/rddt.dir/rddt.cpp.o [ 99%] Building CXX object rddt/CMakeFiles/rddt.dir/__/golded3/golded3.cpp.o [100%] Linking CXX executable rddt /usr/bin/ld: ../goldlib/gall/libgall.a(gfilutl1.cpp.o): en la función `TestLockPath(char const*)': gfilutl1.cpp:(.text+0x85c): aviso: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp' [100%] Built target rddt
Si compiló todo bien, lo instalamos (Como root o por ejemplo usando sudo):
sudo make install
[ 5%] Built target hunspell [ 30%] Built target gall [ 48%] Built target gcfg [ 55%] Built target gcui [ 56%] Built target smblib [ 72%] Built target gmb3 [ 76%] Built target uulib [ 98%] Built target golded [ 99%] Built target goldnode [100%] Built target rddt Install the project... -- Install configuration: "" -- Installing: /usr/local/bin/golded -- Installing: /usr/local/bin/goldnode -- Installing: /usr/local/bin/rddt -- Installing: /usr/local/share/doc/golded-plus/copying -- Installing: /usr/local/share/doc/golded-plus/copying.lib -- Installing: /usr/local/share/man/man1/golded.1 -- Installing: /usr/local/share/man/man1/goldnode.1 -- Installing: /usr/local/share/man/man1/rddt.1 -- Up-to-date: /usr/local/share/doc/golded-plus/cfgs -- Installing: /usr/local/share/doc/golded-plus/cfgs/File_id.diz -- Up-to-date: /usr/local/share/doc/golded-plus/cfgs/template -- Installing: /usr/local/share/doc/golded-plus/cfgs/template/golded.tpl -- Installing: /usr/local/share/doc/golded-plus/cfgs/template/email.tpl -- Installing: /usr/local/share/doc/golded-plus/cfgs/template/default.tpl [.....] -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/charsets.cfg -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/goldlang.ger -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/goldkeys.cfg -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/goldlang.ru2 -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/goldlang.ru3 -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/aliasru.cfg -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/gedlngdk.cfg -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/gedlngus.cfg -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/gedcolor.cfg -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/goldhelp.rus -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/goldlang.nl -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/goldlang.it -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/goldlang.sv -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/gedlngit.cfg -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/goldkeys.rus -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/advanced.cfg -- Installing: /usr/local/share/doc/golded-plus/cfgs/config/goldlang.rus
Configuración inicial
Una vez compilado e instalado, generamos el archivo /home/ragnarok/fido/golded.cfg (tambien por compatibilidad toma el archivo si termina con la extension .conf).
- /home/ragnarok/fido/golded.cfg
// Datos de nuestro punto username Fernando Toledo address 4:902/26.10 // incluir el archivo de areas que genera crashexport include areas.golded // includes de paths de archivos de config de la instalacion // tengan en cuenta que por defecto se instala en /usr/local // y si estos includes no estan el golded no inicia include /usr/local/share/doc/golded-plus/cfgs/colorset/gedcol02.cfg xlatpath /usr/local/share/doc/golded-plus/cfgs/charset include /usr/local/share/doc/golded-plus/cfgs/config/charsets.cfg // algunas configs para converir los charsets // posiblemente alguien en fido me paso estas opciones // y veo bien las tildes y demas caracters xlatimport ibmpc xlatcharset ibmpc latin-1 ibm_iso.chs xlatcharset latin-1 ibmpc iso_ibm.chs xlatcharset latin-1 latin-1 iso_iso.chs xlatcharset ibmpc ibmpc ibm_ibm.chs // configuracion de los paths para los nodelists NODEPATH /home/ragnarok/fido/filebox/nodelist/ NODEPATHFD /home/ragnarok/fido/filebox/nodelist/ NODEPATHIM /home/ragnarok/fido/filebox/nodelist/ NODEPATHV7 /home/ragnarok/fido/filebox/nodelist/ NODELIST NODELIST.099 NODELISTWARN yes // Mostrar las lineas ocultas de los mensajes (kludges desconocidos). VIEWHIDDEN YES // Mostrar kludges conocidos. (Los que estan definidos e incluidos en la opción KLUDGE). VIEWKLUDGE YES // Iniciar con la vista de listado de mensajes. MSGLISTFIRST yes // otras opciones comunes, (ver docu de golded) areascan * ADDRESSBOOKADD ALWAYS MSGLISTFAST YEs MSGLISTHEADER yes showdeleted no ; opciones para ver agrupadas las areas segun la letra de grupo ; que nos exporta el crashmail al archivo areas.golded AREALISTSORT G AREASEP !N "Grupo Netmails" N Net AREASEP !D "Grupo de Echomails" D Echo
Si todo está ok deberíamos poder ejecutar el comando golded (siempre parados sobre nuestro directorio raiz de fido, según el ejemplo en /home/ragnarok/fido)
Operación y Uso
Bien, se supone que hasta este momento tendríamos el sistema funcional.
Es muy importante verificar las rutas y las configuraciones, porque es algo común que sucede de poner mal un path o una opción, y el sistema completo falla y no se sabe por donde viene el inconveniente.
También es preciso entender como interactuan cada uno y en que momento trabaja. Porque entender el flujo de paquetes y procesos nos va a facilitar al momento de solucionar el problema y poder aislarlo donde ocurre.
El orden de los pasos serian:
- Ejecutar binkd para que llame a nuestros uplink/boss y nos traiga paquetes
- Ejecutar crashmail toss para procesar los paquetes recibidos y enviarlas a las bases de datos de las áreas
- Usar crashexport para generar el archivo de áreas de golded
- Abrir golded para leer o escribir mensajes algunos mensajes
- Ejecutar crashmail scan para generar paquetes con mensajes para enviar
- Ejecutar binkd nuevamente para enviar los paquetes generados
Los comandos a modo de ejemplo son:
/usr/sbin/binkd -p -P 4:902/26 binkd.cfg crashmail settings crashmail.prefs toss crashexport crashmail.prefs areas.golded golded golded crashmail settings crashmail.prefs scan /usr/sbin/binkd -p -P 4:902/26 binkd.cfg
Al ejecutar golded, de acuerdo a nuestra configuración, arranca con la vista de áreas, si seleccionamos una y le damos Enter, vamos a ver el listado de mensajes:
Para crear un nuevo mensaje se usa la tecla E (enter message)
Acá nos van a aparecer los campos para que ingresemos para quien va dirigido el mensaje (To:) y el asunto (Subj:). Así como también atributos que podamos asignarle al mensaje (Privado, Crash, Direct..etc ver docu de Golded para detalles de cada uno).
Luego de ingresas esos datos, damos de nuevo Enter y nos abre el popup donde seleccionamos Internal Editor para escribir el cuerpo del mensaje:
Ahora podemos escribir el cuerpo de nuestro mensaje:
Una vez que terminamos tocamos F2 para que abra el popup y confirmar el envío seleccionando “Yes, it's great stuff”. De esta forma el mensaje queda marcado para ser enviado y volveremos a la vista de mensajes.
Saliendo ahora de golded, vamos a enviar los mensajes, haciendo el scan y luego llamando a binkd:
crashmail settings crashmaik.prefs scan
CrashMail II 1.7 started successfully! Scanning all areas for messages to export Found area DEFAULT_D Skipping area because it has no messagebase or area type is not echomail or netmail.. Found area Netmail-fido Scanning area Netmail-fido Found area Bad-fido Scanning area Bad-fido Found area ZONA4.GENERAL Scanning area ZONA4.GENERAL Found area REGION90 Scanning area REGION90 Found area ESP.PRUEBAS Scanning area ESP.PRUEBAS Inspecting message 802 Exporting message #802 from "Fernando Toledo" to "All" in ESP.PRUEBAS Is in HandleMessage() 1 message exported Scanning for orphan files Scanning for old packets Scanning for new files to pack Packing 3aa1aa00.pkt for 4:902/26.0 with ZIP adding: home/ragnarok/fido/crashmail/tmp/3aa1aa00.pkt (deflated 46%) Updating hwm for area ESP.PRUEBAS, old = 801, new = 802 CrashMail end
Ahí pudimos ver que hay un mensaje en cola y que se genero el paquete. Este quedará el el directorio de salida de binkd. Entonces ahora lo ejecutamos:
/usr/sbin/binkd -p -P 4:902/26 binkd.cfg
23:13 [51544] BEGIN, binkd/1.1a-115/Linux -p -P 4:902/26 binkd.cfg 23:13 [51544] creating a poll for 4:902/26@fidonet (`d' flavour) 23:13 [51544] clientmgr started $ -d 4:902/26@fidonet + 23:13 [51545] call to 4:902/26@fidonet 23:13 [51545] trying bbs.docksud.com.ar [186.123.101.23]... 23:13 [51545] connected + 23:13 [51545] outgoing session with bbs.docksud.com.ar:24554 [186.123.101.23] - 23:13 [51545] OPT CRAM-MD5-341234123412312312341234 CRYPT + 23:13 [51545] Remote requests MD mode + 23:13 [51545] Remote requests CRYPT mode - 23:13 [51545] SYS Dock Sud BBS - 23:13 [51545] ZYZ Ragnarok - 23:13 [51545] LOC Dock Sud, Bs As, Argentina - 23:13 [51545] NDL 115200,TCP,BINKP - 23:13 [51545] TIME Sun Nov 17 2024 23:13:12 GMT-0300 - 23:13 [51545] VER BinkIT/2.41,JSBinkP/4,sbbs3.20a/Linux binkp/1.1 + 23:13 [51545] addr: 4:902/26@fidonet + 23:13 [51545] addr: 666:1/1@latinet (n/a or busy) + 23:13 [51545] addr: 21:2/151@fsxnet (n/a or busy) + 23:13 [51545] addr: 618:500/45@micronet (n/a or busy) + 23:13 [51545] addr: 46:10/182@agoranet (n/a or busy) + 23:13 [51545] addr: 39:943/0@amiganet (n/a or busy) + 23:13 [51545] addr: 39:943/1@amiganet (n/a or busy) + 23:13 [51545] addr: 954:895/37@hobbynet (n/a or busy) + 23:13 [51545] addr: 15:1/1@zudaka (n/a or busy) + 23:13 [51545] addr: 15:1/0@zudaka (n/a or busy) + 23:13 [51545] addr: 15:0/0@zudaka (n/a or busy) + 23:13 [51545] addr: 4:0/0@fidonet + 23:13 [51545] addr: 4:90/0@fidonet + 23:13 [51545] addr: 4:900/0@fidonet + 23:13 [51545] addr: 4:902/0@fidonet + 23:13 [51545] pwd protected session (MD5) - 23:13 [51545] session in CRYPT mode + 23:13 [51545] sending /home/ragnarok/fido/crashmail/packets/66405b2a.su0 as 66405b2a.su0 (609) + 23:13 [51545] sent: /home/ragnarok/fido/crashmail/packets/66405b2a.su0 (609, 609.00 CPS, 4:902/26@fidonet) + 23:13 [51545] done (to 4:902/26@fidonet, OK, S/R: 1/0 (609/0 bytes)) - 23:13 [51545] rc=0 23:13 [51545] session closed, quitting... 23:13 [51544] rc(51545)=0 23:13 [51544] the queue is empty, quitting...
De esa manera, el menaje ha sido enviado.
Tips y problemas comunes
Proceso de los paquetes
Hay algo que no supe ajustar correctamente aun. Es que desde el binkd.cfg uno pone las lineas de exec para directamente se haga el toss ni bien llegan los paquetes.
Eso nos ahorraría de ejecutar crashmail toss luego del binkd.
Por ejemplo:
exec "crashmail settings /home/ragnarok/fido/crashmail.prefs toss nosecurity" *.pkt
Esto se dispara si vienen archivos .pkt. Pero el tema es que también nos llegan bundles (que son comprimidos de paquetes) como por ejemplo ftg12hg2.M01.
En este caso el toss a eso no se hace, porque primero se deberían “descomprimir” por así decirlo los bundles.
Posiblemente tengo que investigar mejor de como hacer una linea de exec que sirva para todo (o quizás tengan que ser varias, ya lo veré).
Así que mientras tanto, lo solucioné con un script de bash que luego del binkd, recorre los archivos de su inbound y por cada uno hace un crashmail tossfile.
Para la opción de tossfile de crashmail, uno debe pasar como parámetro el nombre de archivo que quiere procesar.
- poll.sh
cd /home/ragnarok/fido while [ 1 ] do crashmail settings crashmail.prefs scan toss crashexport crashmail.prefs areas.golded golded /usr/sbin/binkd -p -P 4:902/26 binkd.cfg for b in `find "$(pwd)/in" -type f` do crashmail settings crashmail.prefs tossfile $b done for a in `seq 1 5` do echo "Sleep $a de 5" sleep 1m done done
Lo que hago es, abro una terminal y ejecuto poll.sh, esto queda en un loop infinito (hasta que lo corte con CTRL+c) que cada 5 minutos que básicamente “envía y recibe” todo el tiempo. Luego abro otra terminal con el golded y ahí leo o escribo mensajes normalmente. Y en definitiva, cuando termino, corto el proceso del poll.sh. Ese seria mi “workflow” para usar el sistema
Se que es un poco redundante y que posiblemente no sea la opción más óptima, pero es la que me sirve por ahora.
El golded no hace nada / no abre
A golded le falta, que si tiene algún error en su config, envíe un buen mensaje con error de salida a la consola (ideal seria al stderr), para uno saber problema hay.
Un ejemplo es que si no están incluídas las opciones de caracteres, xlats y demas, cuando ejecutan el comando golded no hace nada de nada.
Por lo tanto, asegúrense de tener estas lineas configuradas en su golded.cfg
include /usr/local/share/doc/golded-plus/cfgs/colorset/gedcol02.cfg xlatpath /usr/local/share/doc/golded-plus/cfgs/charset include /usr/local/share/doc/golded-plus/cfgs/config/charsets.cfg
Calculo que esto dependera del build o versión de golded, pero al menos el que compilo desde el git “oficial” se las tengo que agregar al archivo de configuración.