• v0.1.4 83e267a608

    v0.1.4 Stable

    michael released this 2025-09-10 20:04:19 +02:00 | 0 commits to main since this release

    furt 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 domain
    • MIME-Version: 1.0: Proper email formatting
    • Content-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.sh
    

    Full Changelog: https://smida.dragons-at-work.de/DAW/furt/compare/v0.1.3...v0.1.4

  • v0.1.3 4af068e15c

    v0.1.3 Stable

    michael released this 2025-09-10 16:46:13 +02:00 | 4 commits to main since this release

    furt v0.1.3 - STARTTLS Support

    Release Date: 10.09.2025
    Type: Bugfix Release

    Critical 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.lua with 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 9cd8f4bce0

    v0.1.2 Stable

    michael released this 2025-09-10 14:28:28 +02:00 | 8 commits to main since this release

    Furt 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: /health Endpoint 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.sh
    

    Git Installation

    git clone https://smida.dragons-at-work.de/DAW/furt.git
    cd furt
    sudo ./install.sh
    

    Upgrade 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
    /health GET None System health check
    /v1/mail/send POST Required Mail service
    /auth/status GET Required Auth verification

    📚 Documentation

    Vollständige API-Dokumentation verfügbar im Wiki:

    🔒 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

    🏆 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