Hello everybody!
PyGate - Python FidoNet-NNTP Gateway, has been released to the public.
PyGate is a Python-based gateway system that bridges FidoNet echomail and NNTP newsgroups, allowing seamless message exchange between the two networks.
Version: 1.5.2
Author: Stephen Walsh
Contact:
vk3heg@gmail.com | FidoNet 3:633/280 | FSXNet 21:1/195 | Amiganet 39:901/280
Based on: SoupGate by Tom Torfs
Features
Core Functionality
Bidirectional Gateway: Messages flow seamlessly between FidoNet and NNTP
Flexible Deployment Modes: Full gateway mode or client-only mode
Area Mapping: Flexible mapping between FidoNet areas and NNTP newsgroups
Message Hold System: Manual review and approval of messages
Spam Filtering: Advanced regex-based filtering with built-in patterns
Netmail Notifications: Automatic notifications for held messages
Areafix Support: Dynamic area management via netmail with wildcard protection
Character Set Handling: Proper encoding conversion per FTS standards
Advanced Features
Message Deduplication: Prevents duplicate messages
Cross-posting Control: Configurable limits on cross-posted messages
Timezone Support: Proper timezone handling (TZUTC)
Message Threading: Preserves reply chains and references
Administrative Panel: Admin panel interface for message review of held messages, filter management, newsrc management, newsgroups list viewing.
Requirements
Python 3.7 or higher
NNTP server access
FidoNet mailer (binkd recommended)
Required Python packages:
configparser
pathlib
logging
datetime
uuid
json
paramiko (for SSH/remote ctlinnd on Windows deployments)
psutil (for automation script process management)
Deployment Modes
PyGate supports two deployment modes:
Full Gateway Mode (Default)
In this mode, PyGate manages both the NNTP connection and the server configuration:
Updates local newsrc file when areas are added/removed
Executes ctlinnd commands to create/remove newsgroups on NNTP server
Requires server administrative privileges or SSH access
Best for deployments where PyGate runs on or manages the news server
[Gateway]
client_mode = false # or omit this line (false is default)
Client-Only Mode
In this mode, PyGate operates as a standard NNTP client without server management:
Updates local newsrc file when areas are added/removed
Does NOT execute ctlinnd commands
Assumes newsgroups already exist on the remote NNTP server
Does not require server administrative privileges
Best for connecting to external/remote news servers you don't control
[Gateway]
client_mode = true
When to use client-only mode:
Connecting to a remote news server you don't administer
Using a commercial or third-party news provider
Testing PyGate without affecting server configuration
Security-restricted environments where ctlinnd access is unavailable
Note: In client-only mode, areafix operations will still update your local newsrc file, but you must ensure the corresponding newsgroups exist on the NNTP
server before subscribing to them.
Message Hold System
The hold system allows manual review of messages before they are gated, providing control over message flow. When areas are remapped to fidonet echomail
areas. This is mainly to protect fidonet from usenet spam.
Configuration
Enable holding in pygate.cfg:
[Arearemap]
Hold = yes
notify_sysop = yes
How It Works
Message Evaluation: Each message is checked against area mappings
Hold Decision: Messages in mapped areas are held for review
Notification: Netmail sent to sysop (once per hour maximum)
Review Process: Admin reviews messages via admin panel
Action: Messages are approved, rejected, or archived
Notification System
When messages are held:
Netmail sent to sysop at linked_address
Rate Limited: Maximum one notification per hour
Comprehensive: Lists all areas with pending messages
Tracking: State saved in hold/notifications.json
https://github.com/vk3heg/pygate
Vorlon
--- GoldED+/LNX 1.1.5-b20250409
* Origin: Dragon's Lair ---:- dragon.vk3heg.net -:--- Prt: 6800 (3:633/280)