====== 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: {{:ar:bloques.png|Diagrama de bloques}} 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. NOTA: Siempre podemos ejecutar todo esto con nuestro usuario de GNU/linux y el uso de root es solamente necesario para instalar los programas. 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 [[http://old.vk.pp.ru/docs/binkd/index.htm|Documentación de binkd]] que está muy bien detallada. # 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 # # 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 IMPORTANTE: Las lineas de exec pueden ser omitidas si es el caso en que luego se ejecute a mano el "crashmail toss". Tranquilamente se puede hacer desde un pequeño script de bash para automatizar y tenga el llamado del binkd, luego el crashmail para el toss 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. NOTA: Recuerden que deben estar parados sobre /home/ragnarok/fido/ donde esta el archivo binkd.cfg (sino se debe pasar el path absoluto del mismo) 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: ; 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) NOTA: Finalmente y antes de continuar con la configuración de Golded+, como resultado de la definiciones previas, deberíamos tener una estructura de directorios similar a esta: 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 [[https://github.com/golded-plus/golded-plus|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). // 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) {{:ar:captura_golded.png?400|}} ====== 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 Obviamente y como tarea para el hogar, uno se puede hacer algún script de bash que automatice estas tareas, como para ejecutar un solo comando "mágico" que se llame "./usar_fido.sh" y listo. 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: {{:ar:golded_2024-11-17_22-51.png?400|}} 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). {{:ar:golded_2024-11-17_22-55.png?400|}} Luego de ingresas esos datos, damos de nuevo //Enter// y nos abre el popup donde seleccionamos **Internal Editor** para escribir el cuerpo del mensaje: {{:ar:golded_2024-11-17_22-57.png?400|}} Ahora podemos escribir el cuerpo de nuestro mensaje: {{:ar:2024-11-17_23-02.png?400|}} 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. {{:ar:golded_2024-11-17_23-04.png?400|}} 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. 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.