Verwandle Deinen Raspberry Pi in einen sicheren FTP-Server mit E-Mail-Relay
Hast Du einen Raspberry Pi, der Staub ansetzt? Egal ob es der neueste Pi 5, ein Pi 4, Pi Zero oder sogar ein älteres Modell ist – diese Anleitung zeigt Dir, wie Du ihn in einen leistungsstarken, automatisierten Dateiserver mit E-Mail-Relay-Funktion verwandelst. Perfekt für Sicherheitskameras, IoT-Geräte und mehr.
Kompatibel mit: Raspberry Pi 5, Raspberry Pi 4 Model B, Raspberry Pi 3 Model B+, Raspberry Pi 3 Model B, Raspberry Pi 2 Model B, Raspberry Pi Zero 2 W, Raspberry Pi Zero W und Raspberry Pi Zero.
Note
Diese Anleitung wurde auf einem Raspberry Pi 3 Model B mit Ubuntu Server 22.04 LTS getestet und verifiziert.
Was wir bauen
Diese Anleitung führt Dich durch die Einrichtung eines kompletten Systems, das Folgendes beinhaltet:
- Ubuntu Server 22.04 LTS: Ein stabiles, leichtgewichtiges Betriebssystem für den Pi.
- Einen sicheren FTP-Server (vsftpd): Zum sicheren Ablegen von Dateien.
- Eine Firewall (UFW) & Fail2ban: Um die bösen Buben draußen zu halten.
- Einen automatisierten Dateiverarbeiter: Ein Skript, das neue Dateien abholt, per E-Mail als Anhang versendet und anschließend aufräumt.
- E-Mail-Optionen für ältere Geräte: Zwei Ansätze für Geräte, die modernes TLS nicht unterstützen:
- Verwende Forward Email’s Legacy TLS 1.0 Ports (am einfachsten)
- Richte einen Postfix SMTP-Relay ein (funktioniert mit jedem E-Mail-Anbieter)
Bereit? Dann legen wir los.
Teil 1: Ubuntu Server auf Deinem Pi installieren
Zuerst musst Du Ubuntu Server auf dem Raspberry Pi zum Laufen bringen. Das ist dank des Raspberry Pi Imagers überraschend einfach.
Was Du brauchst
- Einen kompatiblen Raspberry Pi (siehe Liste oben)
- Eine microSD-Karte (mindestens 8GB, 16GB+ empfohlen)
- Einen Computer mit microSD-Kartenleser
- Passendes Netzteil für Dein Pi-Modell
- Internetzugang (Ethernet oder WLAN)
Note
Ältere Modelle wie der Raspberry Pi 2 oder Pi Zero sind möglicherweise langsamer, funktionieren aber für diese Einrichtung problemlos.
Das Betriebssystem flashen
-
Raspberry Pi Imager herunterladen: Lade ihn von der offiziellen Webseite herunter.
-
Betriebssystem auswählen: Im Imager wähle „CHOOSE OS“ > „Other general-purpose OS“ > „Ubuntu“.
- Für 64-Bit-Modelle (Pi 3, 4, 5, Zero 2 W) wähle „Ubuntu Server 22.04.1 LTS (64-bit)“.
- Für ältere 32-Bit-Modelle (Pi 2, Pi Zero, Pi Zero W) wähle „Ubuntu Server 22.04.1 LTS (32-bit)“.
-
Speicher auswählen: Wähle Deine microSD-Karte aus.
Warning
Dadurch wird Deine microSD-Karte komplett gelöscht. Stelle sicher, dass Du wichtige Daten gesichert hast.
- Erweiterte Optionen sind Dein Freund: Klicke auf das Zahnrad-Symbol (⚙️), um den Pi für den Headless-Betrieb einzurichten (kein Monitor oder Tastatur nötig).
- Hostname: Vergib einen Namen für Deinen Pi (z. B.
pi-server). - SSH: Aktiviere es und lege Benutzername und Passwort fest.
- WLAN: Falls Du kein Ethernet nutzt, gib Deine WLAN-Daten ein.
- Locale: Stelle Deine Zeitzone und Tastaturlayout ein.
- Hostname: Vergib einen Namen für Deinen Pi (z. B.
- Schreiben! Klicken Sie auf die Schaltfläche "WRITE" und lassen Sie den Imager seine Arbeit machen.
Hochfahren & Verbinden
Sobald der Imager fertig ist, stecken Sie die microSD-Karte in den Pi und schließen ihn an. Geben Sie ihm ein paar Minuten zum Hochfahren. Im Hintergrund wird eine erste Einrichtung durchgeführt. Finden Sie die IP-Adresse über die Admin-Seite Ihres Routers und verbinden Sie sich dann per SSH:
ssh your_username@your_pi_ip_address
Sie sind drin! Der Raspberry Pi ist nun bereit zur Konfiguration.
Teil 2: Einrichten eines sicheren FTP-Servers
Als nächstes richten Sie vsftpd (Very Secure FTP Daemon) ein, konfiguriert für maximale Sicherheit.
Installation & Konfiguration
-
vsftpd installieren:
sudo apt update sudo apt install vsftpd -y -
Backup der Konfigurationsdatei:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup -
Konfiguration bearbeiten:
sudo nano /etc/vsftpd.conf
Tip
Wenn eine Zeile auskommentiert ist (beginnt mit #), entfernen Sie das #, um sie zu aktivieren.
Nehmen Sie folgende Änderungen vor:
| Einstellung | Wert | Zweck |
|---|---|---|
anonymous_enable |
NO |
Anonymen FTP-Zugang deaktivieren |
local_enable |
YES |
Lokalen Benutzern das Einloggen erlauben |
write_enable |
YES |
Datei-Uploads erlauben |
local_umask |
022 |
Dateiberechtigungen setzen (644 für Dateien, 755 für Verzeichnisse) |
chroot_local_user |
YES |
Benutzer in ihr Home-Verzeichnis einsperren |
allow_writeable_chroot |
YES |
Uploads im chroot Jail erlauben |
-
Passiven Portbereich hinzufügen: Fügen Sie diese Zeilen ans Ende der Datei an. Dies wird für die Firewall benötigt.
pasv_enable=YES pasv_min_port=40000 pasv_max_port=50000 -
Logging aktivieren: Fügen Sie diese Zeilen hinzu, um Logging für Fail2ban zu aktivieren.
xferlog_enable=YES xferlog_file=/var/log/vsftpd.log log_ftp_protocol=YES -
Speichern und Neustarten: Drücken Sie
Ctrl+O,Enter,Ctrl+X, und starten Sie dann den Dienst neu:sudo systemctl restart vsftpd
Einen FTP-Benutzer anlegen
Erstellen Sie einen dedizierten, eingeschränkten Benutzer für den FTP-Zugang.
-
Benutzer anlegen:
sudo adduser ftpuserFolgen Sie den Eingabeaufforderungen, um ein Passwort zu setzen. Die anderen Felder (Name, Telefon, etc.) können leer bleiben.
-
Verzeichnisstruktur erstellen:
sudo mkdir -p /home/ftpuser/ftp/uploads/home/ftpuser/ftp- Haupt-FTP-Verzeichnis/home/ftpuser/ftp/uploads- Verzeichnis für hochgeladene Dateien
-
Berechtigungen setzen:
sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp sudo chmod 755 /home/ftpuser/ftp sudo chmod 755 /home/ftpuser/ftp/uploads
Teil 3: Firewall- und Brute-Force-Schutz
Sichern Sie den Pi mit UFW (Uncomplicated Firewall) und Fail2ban ab.
UFW einrichten
-
UFW installieren:
sudo apt install ufw -y -
Standardrichtlinien setzen:
sudo ufw default deny incoming sudo ufw default allow outgoing -
SSH erlauben (kritisch!):
sudo ufw allow ssh comment 'SSH access'
Warning
Erlauben Sie immer SSH, bevor Sie die Firewall aktivieren, sonst sperren Sie sich aus!
-
FTP-Ports erlauben:
sudo ufw allow 20/tcp comment 'FTP data' sudo ufw allow 21/tcp comment 'FTP control' sudo ufw allow 40000:50000/tcp comment 'FTP passive mode' -
Firewall aktivieren:
sudo ufw enable
Fail2ban einrichten
Fail2ban blockiert automatisch IP-Adressen nach wiederholten fehlgeschlagenen Login-Versuchen.
-
Fail2ban installieren:
sudo apt install fail2ban -y -
Lokale Konfiguration erstellen:
sudo nano /etc/fail2ban/jail.local -
Fügen Sie diese Konfigurationen hinzu:
[DEFAULT] bantime = 3600 findtime = 600 maxretry = 5 [sshd] enabled = true port = ssh logpath = /var/log/auth.log [vsftpd] enabled = true port = ftp,ftp-data,40000:50000 logpath = /var/log/vsftpd.log maxretry = 3 -
Restart Fail2ban:
sudo systemctl restart fail2ban
Part 4: Automated File Processing with Email Notifications
Now for the magic: a script that monitors the FTP folder, emails new files as attachments, and deletes them. There are two approaches depending on your email provider:
Option 1: Using Forward Email API (Recommended)
If you have a Forward Email account, use the Email API for the most reliable delivery.
Get Your API Key
- Log in to Forward Email
- Navigate to My Account → Security
- Scroll down to the "Developer Access" section at the bottom
- Copy your API key
Warning
Keep your API key private at all times. Never share it publicly or commit it to version control.
Note
The Enhanced Protection plan ($3/month) or higher is required for API access.
Install inotify-tools
sudo apt install inotify-tools -y
Create the Monitoring Script
sudo nano /usr/local/bin/ftp-monitor.sh
Paste this script:
#!/bin/bash
# Configuration
WATCH_DIR="/home/ftpuser/ftp/uploads"
FROM_EMAIL="noreply@yourdomain.com"
TO_EMAIL="your-email@example.com"
API_KEY="your_forward_email_api_key" # Replace with your actual API key
# Monitor for new files
inotifywait -m -e close_write --format '%w%f' "$WATCH_DIR" | while read FILEPATH
do
FILENAME=$(basename "$FILEPATH")
FOLDERNAME=$(basename "$WATCH_DIR")
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
SUBJECT="$TIMESTAMP - $FOLDERNAME - $FILENAME"
# Base64 encode the file
FILE_CONTENT=$(base64 -w 0 "$FILEPATH")
# Send email with attachment via Forward Email API
RESPONSE=$(curl -X POST https://api.forwardemail.net/v1/emails \
-u "$API_KEY:" \
-H "Content-Type: application/json" \
-d '{
"from": "'"$FROM_EMAIL"'",
"to": "'"$TO_EMAIL"'",
"subject": "'"$SUBJECT"'",
"text": "New file uploaded: '"$FILENAME"'",
"attachments": [
{
"filename": "'"$FILENAME"'",
"content": "'"$FILE_CONTENT"'",
"encoding": "base64"
}
]
}')
# Check if email was sent successfully
if echo "$RESPONSE" | grep -q '"statusCode":200'; then
echo "Email sent successfully for $FILENAME"
# Delete the file
rm -f "$FILEPATH"
echo "Deleted $FILENAME"
else
echo "Failed to send email for $FILENAME"
echo "Response: $RESPONSE"
fi
done
Make it executable:
sudo chmod +x /usr/local/bin/ftp-monitor.sh
Option 2: Using Other Email Providers
If you prefer to use Gmail, Outlook, Yahoo, or another provider, modify the script to use sendmail or msmtp instead of the Forward Email API.
Install msmtp
sudo apt install msmtp msmtp-mta -y
Configure msmtp
Create the configuration file:
sudo nano /etc/msmtprc
Add your provider's settings (example for Gmail):
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
account gmail
host smtp.gmail.com
port 587
from your-email@gmail.com
user your-email@gmail.com
password your-app-password
account default : gmail
Secure the file:
sudo chmod 600 /etc/msmtprc
Create the Alternative Monitoring Script
sudo nano /usr/local/bin/ftp-monitor.sh
Paste this script:
#!/bin/bash
# Configuration
WATCH_DIR="/home/ftpuser/ftp/uploads"
FROM_EMAIL="your-email@gmail.com"
TO_EMAIL="recipient@example.com"
# Monitor for new files
inotifywait -m -e close_write --format '%w%f' "$WATCH_DIR" | while read FILEPATH
do
FILENAME=$(basename "$FILEPATH")
FOLDERNAME=$(basename "$WATCH_DIR")
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
SUBJECT="$TIMESTAMP - $FOLDERNAME - $FILENAME"
# Send email with attachment using msmtp
(
echo "To: $TO_EMAIL"
echo "From: $FROM_EMAIL"
echo "Subject: $SUBJECT"
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/mixed; boundary=\"BOUNDARY\""
echo ""
echo "--BOUNDARY"
echo "Content-Type: text/plain; charset=utf-8"
echo ""
echo "New file uploaded: $FILENAME"
echo ""
echo "--BOUNDARY"
echo "Content-Type: application/octet-stream; name=\"$FILENAME\""
echo "Content-Transfer-Encoding: base64"
echo "Content-Disposition: attachment; filename=\"$FILENAME\""
echo ""
base64 "$FILEPATH"
echo ""
echo "--BOUNDARY--"
) | msmtp -t
# Check if email was sent successfully
if [ $? -eq 0 ]; then
echo "Email sent successfully for $FILENAME"
# Delete the file
rm -f "$FILEPATH"
echo "Deleted $FILENAME"
else
echo "Failed to send email for $FILENAME"
fi
done
Make it executable:
sudo chmod +x /usr/local/bin/ftp-monitor.sh
Erstellen eines Systemd-Dienstes
sudo nano /etc/systemd/system/ftp-monitor.service
Fügen Sie diesen Inhalt hinzu:
[Unit]
Description=FTP Upload Monitor
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/ftp-monitor.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Dienst aktivieren und starten:
sudo systemctl daemon-reload
sudo systemctl enable ftp-monitor.service
sudo systemctl start ftp-monitor.service
Status prüfen:
sudo systemctl status ftp-monitor.service
Teil 5: E-Mail-Optionen für ältere Geräte
Geräte wie FOSSCAM-Kameras unterstützen oft keine modernen TLS-Versionen. Es gibt zwei Lösungen:
Option 1: Verwenden Sie Forward Emails Legacy TLS 1.0 Ports (Empfohlen)
Wenn Sie Forward Email verwenden, ist dies die einfachste Lösung. Forward Email stellt dedizierte Legacy TLS 1.0 Ports speziell für ältere Geräte wie Kameras, Drucker, Scanner und Faxgeräte bereit.
Preise
Forward Email bietet mehrere Pläne an:
| Plan | Preis | Funktionen |
|---|---|---|
| Kostenlos | 0 $/Monat | Nur E-Mail-Weiterleitung (kein Versand) |
| Erweiterter Schutz | 3 $/Monat | SMTP-Zugang + Legacy TLS 1.0 Ports |
| Team | 9 $/Monat | Erweiterter Schutz + Team-Funktionen |
| Enterprise | 250 $/Monat | Team + unbegrenzte API-Anfragen |
Important
Der Erweiterter Schutz-Plan (3 $/Monat) oder höher ist erforderlich für SMTP-Zugang und Unterstützung der Legacy TLS 1.0 Ports.
Mehr erfahren unter Forward Email Pricing.
Passwort generieren
Bevor Sie Ihr Gerät konfigurieren, generieren Sie ein Passwort in Forward Email:
- Melden Sie sich bei Forward Email an
- Navigieren Sie zu Mein Konto → Domains → [Ihre Domain] → Aliase
- Erstellen oder wählen Sie einen Alias (z. B.
camera@yourdomain.com) - Klicken Sie neben dem Alias auf "Passwort generieren"
- Kopieren Sie das generierte Passwort – Sie benötigen es für die SMTP-Authentifizierung
Tip
Jeder Alias kann ein eigenes Passwort haben. Das ist nützlich, um nachzuverfolgen, welches Gerät welche E-Mail gesendet hat.
Gerät konfigurieren
Verwenden Sie diese Einstellungen in Ihrer Kamera, Ihrem Drucker, Scanner oder anderem älteren Gerät:
| Einstellung | Wert |
|---|---|
| SMTP-Server | smtp.forwardemail.net |
| Port (SSL/TLS) | 2455 |
| Port (STARTTLS) | 2555 (Alternative) |
| Benutzername | Ihre Alias-E-Mail (z. B. camera@yourdomain.com) |
| Passwort | Das Passwort aus "Passwort generieren" |
| Authentifizierung | Erforderlich |
| Verschlüsselung | SSL/TLS (empfohlen) oder STARTTLS |
Warning
Diese Ports verwenden das veraltete TLS 1.0 Protokoll, das bekannte Sicherheitslücken (BEAST, POODLE) aufweist. Verwenden Sie es nur, wenn Ihr Gerät kein modernes TLS 1.2+ unterstützt.
Konfigurieren Sie Ihr Gerät einfach mit diesen Einstellungen, und es sendet E-Mails direkt über Forward Email, ohne dass ein lokaler Relay-Server benötigt wird.
Weitere Details finden Sie in den Forward Email FAQ zum Legacy TLS Support.
Option 2: Einrichten eines Postfix SMTP-Relays
Wenn Sie Forward Email nicht verwenden oder eine lokale Relay-Lösung bevorzugen, richten Sie Postfix auf dem Raspberry Pi als Vermittler ein. Dies funktioniert mit jedem E-Mail-Anbieter (Gmail, Outlook, Yahoo, AOL usw.).
Postfix installieren
sudo apt update
sudo apt install postfix mailutils libsasl2-modules -y
Während der Installation:
- Wählen Sie "Internet Site"
- Geben Sie den Hostnamen Ihres Pi ein (z. B.
raspberrypi-ftp) für "System mail name"
Wählen Sie Ihren E-Mail-Anbieter
| Anbieter | SMTP-Server | Port | App-Passwort erforderlich? |
|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | Ja |
| Outlook | smtp-mail.outlook.com | 587 | Ja |
| Yahoo | smtp.mail.yahoo.com | 465 | Ja |
| AOL | smtp.aol.com | 587 | Ja |
Holen Sie sich ein app-spezifisches Passwort
Die meisten Anbieter verlangen App-Passwörter für Drittanbieter-Anwendungen. Erstellen Sie eines in den Sicherheitseinstellungen Ihres E-Mail-Anbieters:
- Gmail: Google Account Security
- Outlook: Microsoft Account Security
- Yahoo: Yahoo Account Security
- AOL: AOL Account Security
Important
Verwenden Sie niemals Ihr reguläres E-Mail-Passwort. Nutzen Sie immer ein app-spezifisches Passwort.
Konfigurieren Sie die SASL-Authentifizierung
Erstellen Sie die Passwortdatei für Ihren gewählten Anbieter. Dieses Beispiel verwendet Yahoo:
sudo mkdir -p /etc/postfix/sasl
sudo chmod 700 /etc/postfix/sasl
sudo nano /etc/postfix/sasl/sasl_passwd
Fügen Sie diese Zeile hinzu (passen Sie Server und Port für Ihren Anbieter an):
[smtp.mail.yahoo.com]:465 your_email@yahoo.com:your_app_password
Für Gmail verwenden Sie:
[smtp.gmail.com]:587 your_email@gmail.com:your_app_password
Sichern und hashen Sie die Datei:
sudo chmod 600 /etc/postfix/sasl/sasl_passwd
sudo postmap /etc/postfix/sasl/sasl_passwd
Konfigurieren Sie die E-Mail-Adressenzuordnung
Schreiben Sie lokale E-Mail-Adressen um, damit sie zu Ihrem E-Mail-Anbieter passen:
sudo mkdir -p /etc/postfix/map
sudo chmod 700 /etc/postfix/map
sudo nano /etc/postfix/map/regex_map
Fügen Sie diese Zeile hinzu (ersetzen Sie HOSTNAME durch den Hostnamen Ihres Pi und verwenden Sie Ihre E-Mail):
/.+@HOSTNAME/ your_email@provider.com
Beispiel:
/.+@raspberrypi-ftp/ john@yahoo.com
Sichern Sie die Datei:
sudo chmod 600 /etc/postfix/map/regex_map
Konfigurieren Sie die Postfix-Haupteinstellungen
Bearbeiten Sie die Hauptkonfiguration:
sudo nano /etc/postfix/main.cf
Suchen und aktualisieren Sie den Relay-Host (oder fügen Sie ihn am Ende hinzu):
relayhost = [smtp.mail.yahoo.com]:465
Fügen Sie diese Einstellungen am Ende der Datei hinzu:
# SMTP Relay Konfiguration
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt
smtp_generic_maps = regexp:/etc/postfix/map/regex_map
# Netzwerkeinstellungen
inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8 [::1]/128 192.168.1.0/24
Tip
Für Gmail (Port 587) setzen Sie smtp_tls_wrappermode = no anstelle von yes.
Warning
Aktualisieren Sie mynetworks mit Ihrem tatsächlichen Netzwerkbereich. Fügen Sie nur vertrauenswürdige Netzwerke hinzu – jedes Gerät in diesen Netzwerken kann E-Mails ohne Authentifizierung weiterleiten.
Gängige Netzwerkbereiche:
| Netzwerkbereich | IP-Adressbereich |
|---|---|
192.168.0.0/24 |
192.168.0.1 - 192.168.0.254 |
192.168.1.0/24 |
192.168.1.1 - 192.168.1.254 |
10.0.0.0/8 |
10.0.0.0 - 10.255.255.255 |
Firewall aktualisieren und neu starten
sudo ufw allow 25/tcp comment 'SMTP für lokale Geräte'
sudo systemctl restart postfix
Überprüfen Sie, ob Postfix läuft:
sudo systemctl status postfix
Testen Sie den Relay
Senden Sie eine Test-E-Mail:
echo "Test from Postfix" | mail -s "Test" your_email@provider.com
Überprüfen Sie die Logs:
sudo tail -f /var/log/mail.log
Suchen Sie nach status=sent, um den Erfolg zu bestätigen.
Konfigurieren Sie Ihr Gerät
In den Einstellungen Ihrer Kamera oder Ihres Geräts:
- SMTP-Server: Die IP-Adresse Ihres Pi (z. B.
192.168.1.100) - SMTP-Port:
25 - Authentifizierung: Keine
- Verschlüsselung: Keine (nur lokales Netzwerk)
Fehlerbehebung
Falls Probleme auftreten, prüfen Sie diese Logdateien:
FTP-Server:
sudo tail -f /var/log/vsftpd.log
Fail2ban:
sudo fail2ban-client status
sudo tail -f /var/log/fail2ban.log
Dateiüberwachung:
sudo journalctl -u ftp-monitor.service -f
Postfix-Mail:
sudo tail -f /var/log/mail.log
mailq # Mail-Warteschlange anzeigen
Abschluss
Der Raspberry Pi ist nun ein vollständiges automatisiertes System mit sicheren Datei-Uploads, automatischen E-Mail-Benachrichtigungen mit Anhängen und SMTP-Relay-Fähigkeiten für ältere Geräte. Ob mit den Legacy-TLS-Ports von Forward Email oder einem lokalen Postfix-Relay – ältere Geräte können jetzt zuverlässig E-Mails über moderne E-Mail-Anbieter senden.