-
v0.1.4 Stable
released this
2025-09-10 20:04:19 +02:00 | 0 commits to main since this releasefurt v0.1.4 - SMTP Delivery Improvements
🚀 What's New
Fixed mail delivery spam classification - emails now reliably reach inbox instead of spam folder.
🔧 Bug Fixes
- SMTP Headers: Added missing Message-ID, MIME-Version, and Content-Transfer-Encoding headers
- Spam Score: Improved from 10.42/10.00 (reject) to 4.80/10.00 (clean delivery)
- Production Ready: Verified with mail-tester.com (10/10 score) and real-world SMTP testing
📧 Technical Details
Added required SMTP headers to prevent spam classification:
Message-ID: Generated from timestamp and domainMIME-Version: 1.0: Proper email formattingContent-Transfer-Encoding: 8bit: UTF-8 content support
🎯 Impact
Website contact forms now deliver reliably to recipient inboxes across major email providers (Gmail, Outlook, Apple Mail).
📦 Installation
curl https://smida.dragons-at-work.de/DAW/furt/releases/v0.1.4/furt-v0.1.4.tar.gz tar -xzf furt-v0.1.4.tar.gz cd furt-v0.1.4 ./install.shFull Changelog: https://smida.dragons-at-work.de/DAW/furt/compare/v0.1.3...v0.1.4
-
v0.1.3 Stable
released this
2025-09-10 16:46:13 +02:00 | 4 commits to main since this releasefurt v0.1.3 - STARTTLS Support
Release Date: 10.09.2025
Type: Bugfix ReleaseCritical Bug Fix
SMTP STARTTLS Support for Port 587
- Fixed: "Must issue a STARTTLS command first" error on port 587
- Impact: Enables deployment with Hetzner and other standard SMTP providers
- Technical: Added proper STARTTLS handshake sequence in smtp.lua
Background
furt v0.1.2 only supported direct SSL (port 465) but not STARTTLS (port 587). Most SMTP providers, including Hetzner, require STARTTLS for port 587. This prevented production deployments on common hosting infrastructure.
Technical Changes
- Enhanced
smtp.luawith STARTTLS negotiation - Added SSL socket upgrade after STARTTLS command
- Implemented second EHLO over encrypted connection
- Maintains backward compatibility with port 465
Deployment Impact
Before v0.1.3: Limited to SMTP providers supporting port 465
After v0.1.3: Compatible with standard SMTP configurations (port 587)Upgrade Notes
- Drop-in replacement for v0.1.2
- No configuration changes required
- Existing port 465 configurations continue working
- Port 587 configurations now function correctly
Files Changed
src/smtp.lua- STARTTLS implementation
Full Changelog: https://smida.dragons-at-work.de/DAW/furt/compare/v0.1.2...v0.1.3
-
v0.1.2 Stable
released this
2025-09-10 14:28:28 +02:00 | 8 commits to main since this releaseFurt API Gateway v0.1.2
Production-Ready Multi-Tenant API Gateway in Pure Lua
Furt v0.1.2 ist die erste produktionsreife Version des minimalistischen API-Gateways für digitale Souveränität. Der gesamte Code umfasst unter 1000 Zeilen Lua und ist damit vollständig nachvollziehbar und kontrollierbar.
🎯 Key Features
Multi-Tenant Architecture
- Ein Gateway, viele Websites: Jeder API-Key erhält isolierte Konfiguration
- Tenant-spezifische Mail-Konfiguration: Eigene SMTP-Server und Empfänger pro Client
- Granulare Berechtigungen: API-Key-basierte Authentifizierung mit IP-Beschränkungen
Mail Service Integration
- Formular-zu-E-Mail-Weiterleitung: Vollständige Kontaktformular-Integration
- Input-Validation: Schutz vor Spam und ungültigen Daten
- Subject-Präfixe: Tenant-spezifische E-Mail-Kennzeichnung
- Request-Tracking: Eindeutige Request-IDs für Debugging
Production Features
- Rate Limiting: Konfigurierbare Limits pro API-Key (Default: 60 RPM)
- CORS Support: Nahtlose Frontend-Integration
- Health Monitoring:
/healthEndpoint mit merkwerk-Integration - Structured Error Codes: Programmatische Fehlerbehandlung
Distribution Support
- Multi-Platform: OpenBSD, Debian, Arch Linux
- Modulares Installationssystem: 6-Phasen helper scripts
- Service Integration: systemd (Linux) und rc.d (OpenBSD)
- Reverse Proxy Ready: Apache, nginx, OpenBSD httpd, relayd
📦 Installation
Package Installation (Empfohlen)
curl -OJ https://smida.dragons-at-work.de/api/packages/DAW/generic/furt-api-gateway/0.1.2/furt-api-gateway-v0.1.2.tar.gz tar xzf furt-api-gateway-v0.1.2.tar.gz cd furt-api-gateway-v0.1.2 sudo ./install.shGit Installation
git clone https://smida.dragons-at-work.de/DAW/furt.git cd furt sudo ./install.shUpgrade von früheren Versionen
sudo ./install.sh --upgrade🔧 Quick Configuration
Minimal Setup
# Config-Pfad (abhängig vom OS) # OpenBSD: /usr/local/etc/furt/furt.conf # Linux: /etc/furt/furt.conf # API-Key erstellen api_key = "your-website-key" key_name = "your-website" permissions = "mail:send" # SMTP-Konfiguration smtp_server = "mail.example.com" smtp_port = 587 smtp_username = "noreply@example.com" smtp_password = "your-password" to_address = "contact@example.com" from_address = "noreply@example.com"Service starten
# OpenBSD doas rcctl start furt # Linux sudo systemctl start furt # Health Check curl http://localhost:7811/health🚀 API Usage
Mail senden
curl -X POST https://api.example.com/v1/mail/send \ -H "Content-Type: application/json" \ -H "X-API-Key: your-website-key" \ -d '{ "name": "John Doe", "email": "john@example.com", "subject": "Contact Request", "message": "Hello, I would like to get in touch." }'Hugo-Integration
{{< furt-contact-form api-endpoint="https://api.example.com/v1/mail/send" api-key="your-website-key" success-url="/contact/thanks/" >}}📋 Available Endpoints
Endpoint Method Auth Description /healthGET None System health check /v1/mail/sendPOST Required Mail service /auth/statusGET Required Auth verification 📚 Documentation
Vollständige API-Dokumentation verfügbar im Wiki:
- API Documentation - Vollständige API-Referenz
- Mail Service API - Detaillierte Mail-Service-Dokumentation
- Health Endpoint - Monitoring und Diagnostics
- Installation Guide - Vollständige Installationsanleitung
🔒 Security Features
- API-Key Authentication: Granulare Berechtigungen pro Client
- IP Allowlisting: Zusätzliche Sicherheit durch IP-Beschränkungen
- Input Validation: Schutz vor Injection-Attacks und Spam
- Rate Limiting: Schutz vor Missbrauch und DoS-Attacks
- Isolation: Vollständige Tenant-Trennung in Multi-Client-Setups
🛠️ Technical Details
- Language: Pure Lua 5.1 (unter 1000 Zeilen Code)
- Dependencies: Minimale externe Abhängigkeiten
- Memory Usage: Unter 10MB Speicherverbrauch
- Performance: Bis 1000+ Requests/Sekunde bei geringer CPU-Last
- Monitoring: merkwerk-Integration für präzises Version-Tracking
🔄 Migration & Compatibility
- Backward Compatible: Vollständig kompatibel mit bestehenden Konfigurationen
- Upgrade Path: Nahtlose Updates von Development-Versionen
- Config Migration: Automatische Konfigrations-Validierung und -Migration
🐛 Known Limitations
- Service Discovery: Aktuell nur integrierte Services (Service-Discovery für v0.2.x geplant)
- Configuration API: Tenant-Konfiguration nur via Config-Datei (API geplant)
- WebSocket Support: Nicht implementiert (auf Anfrage möglich)
🗺️ Roadmap
- v0.2.x: Service-Discovery für eigenständige Services (sagjan, lengan, etc.)
- v0.3.x: Configuration API für dynamische Tenant-Verwaltung
- v1.0.x: Federation zwischen Gateway-Instanzen
📞 Support
- Repository: Forgejo
- Issues: Issue Tracker
- Wiki: Documentation
- License: ISC
🏆 Production Ready
Furt v0.1.2 läuft bereits produktiv für die Dragons@Work Website und verarbeitet täglich Kontaktformular-Anfragen. Die Architektur ist bewährt, stabil und bereit für den Einsatz in kritischen Umgebungen.
Dragons@Work Digital Sovereignty Project
Building truly independent, controllable technology