Server-side system for FTNW
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
etc
src
.gitignore
LICENSE
README.md
composer.json
ftns
ftns-toss

README.md

FTNS - server side system for FTNW & ifmail & binkd

Серверная часть фидоноды 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