igorgoroun / ftns
Server-side package for FTNW point system
Installs: 24
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 0
Open Issues: 1
Type:project
pkg:composer/igorgoroun/ftns
Requires
- php: ^5.5|^7.0
 - doctrine/dbal: *
 - psr/log: ^1.0
 - symfony/console: ^3.1
 - symfony/finder: ^3.1
 - symfony/process: ^3.1
 - symfony/yaml: ^3.1
 
This package is not auto-updated.
Last update: 2025-10-26 00:56:56 UTC
README
Серверная часть фидоноды ftns/ftnw, её задачи и функции таковы:
- Прием сообщений от ifmail/ifnews и помещение их в спулы.
 - Тоссинг rfc-0822/rfc-1036 спуленых сообщений и раскидывание их классическим поинтам и в базу для ббс-поинтов.
 - Сканирование эхо- и нетмыла в базе и помещение в спулы тоссера.
 - Роутинг мыла (пока заплатка, в разработке).
 - Подписка (отписка) на эхи у аплинков.
 - Areafix - общий для классических и ббс-поинтов.
 - Синхронизация поинтов между базой ftnw и конфигом ftns.
 - Синхронизация эх узла между конфигом ftns и базой ftnw.
 - Синхронизация подписок поинтов между конфигом ftns и базой ftnw.
 
Замена ifmail на встроенный тоссер FTS-0001 пакетов планируется, но позже.
Установка
Вся установка делается с помощью composer, сначала создаем директорию там, где на нужно:
mkdir ftns && cd ftns
Загружаем файлы:
composer require igorgoroun/ftns
Выполняем пост-инсталляционный скрипт:
cd vendor/igorgoroun/ftns/ && composer run-script post-install-cmd
Настройка
Теперь возвращаемся в корень, туда скопировалась директория etc/, основной файл ftns и маленький bash-скрипт ftns-toss.
etc/ftns.yml
Главный конфиг-файл, правим согласно нашим потребностям.
ftns-toss
Shell-скрипт проверяющий наличие сообщений в спуле нетмейла и эхомейла и запускающий соответсвующий тоссер. Путь к спул-директории нетмыла:
NM_DIR="/var/spool/ftn/netmailspool/"
Путь к спул-директории эхомыла:
EM_DIR="/var/spool/ftn/echospool/"
Полный абсолютный путь с файлу ftns:
FTNS_PATH=“/opt/ftns/ftns"
Команды ftns
./ftns list - список доступных команд.
Для каждой команды можно получить подсказку, например:
./ftns help echomail:post
Echomail
./ftns echomail:spool - принимает на STDIN сообщение от ifnews и складывает в echomail_spool.
./ftns echomail:toss - тоссит сообщения в echomail_spool и раскладыает их поинтам.
./ftns echomail:scan - смотрит новые сообщения в БД и складывает их для тоссера в echomail_spool.
./ftns echomail:subscribe Point_IFAddr Area1 Area2 … - Подписывает поинта на эхи. Point_IFAddr в формате p34.f4.n466.z2.fidonet.org.
./ftns echomail:newarea Uplink_IFAddr Area1 Area2 … - Подписаться у аплинка на эху и внести её в конфиг. Uplink_IFAddr в формате f55.n466.z2.fidonet.org.
./ftns echomail:post -s “Subject” -m “Message” -t “Tearline” -o “Origin” ECHOAREA - Отправить сообщение в эху
Netmail
./ftns netmail:spool -f From_RFC -t To_RFC  - принимает от ifmail на STDIN сообщения и складывает их в netmail_spool
./ftns netmail:toss - тоссит сообщения в netmail_spool и раскладыает их поинтам.
./ftns netmail:scan - смотрит новые нетмейл-сообщения в БД и складывает их для тоссера в netmail_spool.
Sync
./ftns sync:points - Синхронизирует поинтов в ftns с конфиг-файлом ftns.
./ftns sync:subscr - Синхронизирует подписки поинтов между ftns и ftnw.
./ftns sync:areas - Синхронизирует список доступных эх между ftns и ftnw.
Настройки ifmail
Покажу только нюансы связанные с ftns.
Areas
У меня только одна запись в файле, этого достаточно:
* * world
config
Важные две настройки - отвязка от классической связки ifmail+sendmail+innd:
sendmail /var/www/fidonews-server/ftns netmail:spool --from=$F --to=$T
rnews /var/www/fidonews-server/ftns echomail:spool
Остальные настройки - на ваше усмотрение, там фактически ничего больше нет важного, кроме данных сисопа.
Настройки binkd
Ftns генерирует файл points.inc с паролями поинтов в директории конфигов binkd, у меня это /etc/binkd, так что этот файл должен быть создан и доступен для записи.
В конфиг binkd должна быть добавлена команда для подключения файла:
include /etc/binkd/points.inc
crontab
Как и что запускать - дело ваше, у меня все скрипты работают по крону, примерно вот так:
*/1 * * * * ftn /usr/lib/ifmail/ifpack 2>&1
*/1 * * * * ftn /usr/lib/ifmail/ifunpack 2>&1
*/1 * * * * ftn /usr/bin/php /var/www/fidonews-server/ftns netmail:scan 2>&1
*/3 * * * * ftn /usr/bin/php /var/www/fidonews-server/ftns echomail:scan 2>&1
*/2 * * * * ftn /var/www/fidonews-server/ftns-toss 2>&1
*/10 * * * * ftn /usr/bin/php /var/www/fidonews-server/ftns sync:subscr 2>&1
*/10 * * * * ftn /usr/bin/php /var/www/fidonews-server/ftns sync:points 2>&1
0 0 * * * ftn /usr/bin/php /var/www/fidonews-server/ftns echomail:post r46.alive -m "Ping" -s "Alive" 2>&1