הפוך את ה-Raspberry Pi שלך לשרת FTP מאובטח עם העברת אימייל
יש לך Raspberry Pi שמאגר אבק? בין אם זה ה-Pi 5 האחרון, Pi 4, Pi Zero, או אפילו דגם ישן יותר, המדריך הזה יראה לך איך להפוך אותו לשרת קבצים חזק ואוטומטי עם יכולות העברת אימייל. מושלם למצלמות אבטחה, מכשירי IoT, ועוד.
תואם עם: 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, ו-Raspberry Pi Zero.
Note
מדריך זה נבדק ואומת על Raspberry Pi 3 Model B עם Ubuntu Server 22.04 LTS.
מה אנחנו בונים
המדריך הזה ילווה אותך בהקמת מערכת מלאה שכוללת:
- Ubuntu Server 22.04 LTS: מערכת הפעלה יציבה וקלה ל-Pi.
- שרת FTP מאובטח (vsftpd): להורדת קבצים בצורה מאובטחת.
- חומת אש (UFW) ו-Fail2ban: כדי לשמור על הפורצים בחוץ.
- מעבד קבצים אוטומטי: סקריפט שתופס קבצים חדשים, שולח אותם באימייל כקבצים מצורפים, ואז מנקה אחריו.
- אפשרויות אימייל למכשירים ישנים: שתי גישות למכשירים שלא תומכים ב-TLS מודרני:
- שימוש ביציאות TLS 1.0 הישנות של Forward Email (הכי פשוט)
- הקמת שרת SMTP Relay עם Postfix (עובד עם כל ספק אימייל)
מוכנים? בואו נתחיל.
חלק 1: התקנת Ubuntu Server על ה-Pi שלך
קודם כל, התקן את Ubuntu Server על ה-Raspberry Pi. זה קל להפתיע בזכות Raspberry Pi Imager.
מה תצטרך
- כל Raspberry Pi תואם (ראה רשימה למעלה)
- כרטיס microSD (מינימום 8GB, מומלץ 16GB ומעלה)
- מחשב עם קורא כרטיסי microSD
- ספק כוח מתאים לדגם ה-Pi שלך
- חיבור אינטרנט (Ethernet או Wi-Fi)
Note
דגמים ישנים כמו Raspberry Pi 2 או Pi Zero עשויים להיות איטיים יותר אך יעבדו טוב עם ההתקנה הזו.
התקנת מערכת ההפעלה
-
הורד את Raspberry Pi Imager: הורד אותו מה-אתר הרשמי.
-
בחר את מערכת ההפעלה: באימגר, בחר "CHOOSE OS" > "Other general-purpose OS" > "Ubuntu".
- לדגמים 64 ביט (Pi 3, 4, 5, Zero 2 W), בחר "Ubuntu Server 22.04.1 LTS (64-bit)".
- לדגמים ישנים 32 ביט (Pi 2, Pi Zero, Pi Zero W), בחר "Ubuntu Server 22.04.1 LTS (32-bit)".
-
בחר את האחסון שלך: בחר את כרטיס ה-microSD שלך.
Warning
פעולה זו תמחק את כל תוכן כרטיס ה-microSD. ודא שגיבית כל דבר חשוב.
- אפשרויות מתקדמות הן החברים שלך: לחץ על סמל הגלגל שיניים (⚙️) כדי להגדיר את ה-Pi במצב ללא ראש (headless) – ללא צורך במוניטור או מקלדת.
- Hostname: תן ל-Pi שלך שם (למשל,
pi-server). - SSH: הפעל אותו והגדר שם משתמש וסיסמה.
- Wi-Fi: אם אינך משתמש ב-Ethernet, הזן את פרטי ה-Wi-Fi שלך.
- Locale: הגדר את אזור הזמן ופריסת המקלדת שלך.
- Hostname: תן ל-Pi שלך שם (למשל,
- כתוב! לחץ על כפתור "WRITE" ותן למכשיר התמונה לעשות את שלו.
אתחול וחיבור
כאשר המכשיר סיים, הכנס את כרטיס ה-microSD ל-Pi וחבר אותו לחשמל. המתן כמה דקות לאתחול. הוא מבצע הגדרות ראשוניות ברקע. מצא את כתובת ה-IP שלו בדף הניהול של הנתב שלך, ואז התחבר דרך SSH:
ssh your_username@your_pi_ip_address
אתה בפנים! ה-Raspberry Pi מוכן כעת להגדרה.
חלק 2: הקמת שרת FTP מאובטח
לאחר מכן, התקן את vsftpd (Very Secure FTP Daemon), מוגדר לביטחון מקסימלי.
התקנה והגדרה
-
התקן את vsftpd:
sudo apt update sudo apt install vsftpd -y -
גבה את קובץ ההגדרות:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup -
ערוך את ההגדרות:
sudo nano /etc/vsftpd.conf
Tip
אם שורה מנותבת (מתחילה ב-#), הסר את ה-# כדי לבטל את ההערה.
בצע את השינויים הבאים:
| הגדרה | ערך | מטרה |
|---|---|---|
anonymous_enable |
NO |
השבתת גישה אנונימית ל-FTP |
local_enable |
YES |
אפשר למשתמשים מקומיים להתחבר |
write_enable |
YES |
אפשר העלאת קבצים |
local_umask |
022 |
הגדרת הרשאות קבצים (644 לקבצים, 755 לתיקיות) |
chroot_local_user |
YES |
כליאת משתמשים לתיקיית הבית שלהם |
allow_writeable_chroot |
YES |
אפשר העלאות בתוך כליאת ה-chroot |
-
הוסף טווח פורטים פסיביים: הוסף את השורות הבאות בסוף הקובץ. זה נדרש לחומת האש.
pasv_enable=YES pasv_min_port=40000 pasv_max_port=50000 -
הפעלת רישום: הוסף את השורות הבאות כדי להפעיל רישום עבור Fail2ban.
xferlog_enable=YES xferlog_file=/var/log/vsftpd.log log_ftp_protocol=YES -
שמור והפעל מחדש: לחץ
Ctrl+O,Enter,Ctrl+X, ואז הפעל מחדש את השירות:sudo systemctl restart vsftpd
יצירת משתמש FTP
צור משתמש ייעודי ומוגבל לגישה ל-FTP.
-
צור את המשתמש:
sudo adduser ftpuserעקוב אחר ההנחיות כדי להגדיר סיסמה. שדות אחרים (שם, טלפון וכו') ניתן להשאיר ריקים.
-
צור את מבנה התיקיות:
sudo mkdir -p /home/ftpuser/ftp/uploads/home/ftpuser/ftp- תיקיית ה-FTP הראשית/home/ftpuser/ftp/uploads- המקום שבו יועלו הקבצים
-
הגדר הרשאות:
sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp sudo chmod 755 /home/ftpuser/ftp sudo chmod 755 /home/ftpuser/ftp/uploads
חלק 3: חומת אש והגנה מפני התקפות כוח גס
אבטח את ה-Pi עם UFW (חומת אש פשוטה) ו-Fail2ban.
הגדרת UFW
-
התקן את UFW:
sudo apt install ufw -y -
הגדר מדיניות ברירת מחדל:
sudo ufw default deny incoming sudo ufw default allow outgoing -
אפשר SSH (קריטי!):
sudo ufw allow ssh comment 'SSH access'
Warning
תמיד אפשר SSH לפני הפעלת חומת האש, אחרת תינעל מחוץ למערכת!
-
אפשר פורטי FTP:
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' -
הפעל את חומת האש:
sudo ufw enable
הגדרת Fail2ban
Fail2ban חוסם אוטומטית כתובות IP לאחר ניסיונות כניסה כושלים חוזרים.
-
התקן את Fail2ban:
sudo apt install fail2ban -y -
צור קובץ הגדרות מקומי:
sudo nano /etc/fail2ban/jail.local -
הוסף את ההגדרות הבאות:
[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
הפוך את זה לביצועי:
sudo chmod +x /usr/local/bin/ftp-monitor.sh
צור שירות Systemd
sudo nano /etc/systemd/system/ftp-monitor.service
הוסף את התוכן הבא:
[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
הפעל והפעל את השירות:
sudo systemctl daemon-reload
sudo systemctl enable ftp-monitor.service
sudo systemctl start ftp-monitor.service
בדוק את הסטטוס:
sudo systemctl status ftp-monitor.service
חלק 5: אפשרויות דוא"ל למכשירים ישנים
מכשירים כמו מצלמות FOSSCAM לעיתים לא תומכים בגרסאות TLS מודרניות. יש שתי פתרונות:
אפשרות 1: השתמש ביציאות TLS 1.0 ישנות של Forward Email (מומלץ)
אם אתה משתמש ב-Forward Email, זו הפתרון הקל ביותר. Forward Email מספק יציאות TLS 1.0 ישנות ייעודיות במיוחד למכשירים ישנים כמו מצלמות, מדפסות, סורקים ומכונות פקס.
תמחור
Forward Email מציע מספר תוכניות:
| תוכנית | מחיר | תכונות |
|---|---|---|
| חינם | $0/חודש | העברת דוא"ל בלבד (ללא שליחה) |
| הגנה משופרת | $3/חודש | גישה ל-SMTP + יציאות TLS 1.0 ישנות |
| צוות | $9/חודש | הגנה משופרת + תכונות צוות |
| ארגוני | $250/חודש | צוות + בקשות API בלתי מוגבלות |
Important
נדרשת תוכנית הגנה משופרת ($3/חודש) או גבוהה יותר לגישה ל-SMTP ותמיכה ביציאות TLS 1.0 ישנות.
למידע נוסף ב-תמחור Forward Email.
צור את הסיסמה שלך
לפני הגדרת המכשיר שלך, צור סיסמה ב-Forward Email:
- התחבר ל-Forward Email
- עבור אל החשבון שלי → דומיינים → [הדומיין שלך] → כינויים
- צור או בחר כינוי (למשל,
camera@yourdomain.com) - לחץ על "צור סיסמה" ליד הכינוי
- העתק את הסיסמה שנוצרה - תשתמש בה לאימות SMTP
Tip
לכל כינוי יכולה להיות סיסמה משלו. זה שימושי למעקב איזה מכשיר שלח איזה דוא"ל.
הגדר את המכשיר שלך
השתמש בהגדרות אלו במצלמה, מדפסת, סורק או מכשיר ישן אחר:
| הגדרה | ערך |
|---|---|
| שרת SMTP | smtp.forwardemail.net |
| יציאה (SSL/TLS) | 2455 |
| יציאה (STARTTLS) | 2555 (אלטרנטיבי) |
| שם משתמש | דוא"ל הכינוי שלך (למשל, camera@yourdomain.com) |
| סיסמה | הסיסמה מ-"צור סיסמה" |
| אימות | נדרש |
| הצפנה | SSL/TLS (מומלץ) או STARTTLS |
Warning
יציאות אלו משתמשות בפרוטוקול TLS 1.0 מיושן עם פגיעויות אבטחה ידועות (BEAST, POODLE). השתמש רק אם המכשיר שלך אינו תומך ב-TLS מודרני 1.2+.
פשוט הגדר את המכשיר עם ההגדרות הללו והוא ישלח דוא"ל ישירות דרך Forward Email ללא צורך בשרת ריליי מקומי.
למידע נוסף, ראה את שאלות נפוצות של Forward Email על תמיכה ב-TLS ישן.
אפשרות 2: הגדר ריליי SMTP עם Postfix
אם אינך משתמש ב-Forward Email, או מעדיף פתרון ריליי מקומי, הגדר את Postfix על ה-Raspberry Pi לפעול כמתווך. זה עובד עם כל ספק דוא"ל (Gmail, Outlook, Yahoo, AOL וכו').
התקן את Postfix
sudo apt update
sudo apt install postfix mailutils libsasl2-modules -y
בעת ההתקנה:
- בחר "אתר אינטרנט"
- הזן את שם המארח של ה-Pi שלך (למשל,
raspberrypi-ftp) עבור "System mail name"
בחר את ספק הדואר האלקטרוני שלך
| ספק | שרת SMTP | פורט | דרוש סיסמת אפליקציה? |
|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | כן |
| Outlook | smtp-mail.outlook.com | 587 | כן |
| Yahoo | smtp.mail.yahoo.com | 465 | כן |
| AOL | smtp.aol.com | 587 | כן |
קבל סיסמת אפליקציה ספציפית
רוב הספקים דורשים סיסמאות אפליקציה עבור יישומים צד שלישי. צור אחת מהגדרות האבטחה של ספק הדואר שלך:
- Gmail: אבטחת חשבון Google
- Outlook: אבטחת חשבון Microsoft
- Yahoo: אבטחת חשבון Yahoo
- AOL: אבטחת חשבון AOL
Important
לעולם אל תשתמש בסיסמת הדואר הרגילה שלך. תמיד השתמש בסיסמת אפליקציה ספציפית.
הגדר אימות SASL
צור את קובץ הסיסמה עבור הספק שבחרת. בדוגמה זו משתמשים ב-Yahoo:
sudo mkdir -p /etc/postfix/sasl
sudo chmod 700 /etc/postfix/sasl
sudo nano /etc/postfix/sasl/sasl_passwd
הוסף שורה זו (התאם את השרת והפורט לספק שלך):
[smtp.mail.yahoo.com]:465 your_email@yahoo.com:your_app_password
עבור Gmail, השתמש ב:
[smtp.gmail.com]:587 your_email@gmail.com:your_app_password
אבטח ו-hash את הקובץ:
sudo chmod 600 /etc/postfix/sasl/sasl_passwd
sudo postmap /etc/postfix/sasl/sasl_passwd
הגדר מיפוי כתובות דואר אלקטרוני
שנה כתובות דואר אלקטרוני מקומיות כך שיתאימו לספק הדואר שלך:
sudo mkdir -p /etc/postfix/map
sudo chmod 700 /etc/postfix/map
sudo nano /etc/postfix/map/regex_map
הוסף שורה זו (החלף את HOSTNAME בשם המארח של ה-Pi שלך והשתמש בדואר האלקטרוני שלך):
/.+@HOSTNAME/ your_email@provider.com
דוגמה:
/.+@raspberrypi-ftp/ john@yahoo.com
אבטח את הקובץ:
sudo chmod 600 /etc/postfix/map/regex_map
הגדר את ההגדרות הראשיות של Postfix
ערוך את הקובץ הראשי:
sudo nano /etc/postfix/main.cf
מצא ועדכן את ה-relay host (או הוסף בסוף):
relayhost = [smtp.mail.yahoo.com]:465
הוסף את ההגדרות הבאות בסוף הקובץ:
# הגדרת SMTP Relay
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
# הגדרות רשת
inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8 [::1]/128 192.168.1.0/24
Tip
עבור Gmail (פורט 587), הגדר smtp_tls_wrappermode = no במקום yes.
Warning
עדכן את mynetworks עם טווח הרשת האמיתי שלך. הוסף רק רשתות מהימנות - כל מכשיר ברשתות אלו יכול להעביר דואר ללא אימות.
טווחי רשת נפוצים:
| טווח רשת | טווח כתובות IP |
|---|---|
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 |
עדכן את חומת האש והפעל מחדש
sudo ufw allow 25/tcp comment 'SMTP for local devices'
sudo systemctl restart postfix
אמת ש-Postfix פועל:
sudo systemctl status postfix
בדוק את ה-Relay
שלח דואר בדיקה:
echo "Test from Postfix" | mail -s "Test" your_email@provider.com
בדוק את הלוגים:
sudo tail -f /var/log/mail.log
חפש status=sent לאישור הצלחה.
הגדר את המכשיר שלך
בהגדרות המצלמה או המכשיר שלך:
- שרת SMTP: כתובת ה-IP של ה-Pi שלך (למשל,
192.168.1.100) - פורט SMTP:
25 - אימות: ללא
- הצפנה: ללא (רק ברשת מקומית)
פתרון בעיות
אם מתעוררות בעיות, בדוק את קבצי הלוג הבאים:
שרת FTP:
sudo tail -f /var/log/vsftpd.log
Fail2ban:
sudo fail2ban-client status
sudo tail -f /var/log/fail2ban.log
מוניטור קבצים:
sudo journalctl -u ftp-monitor.service -f
דואר Postfix:
sudo tail -f /var/log/mail.log
mailq # הצג תור דואר
סיום
ה-Raspberry Pi הוא כעת מערכת אוטומטית מלאה עם העלאות קבצים מאובטחות, התראות דואר אלקטרוני אוטומטיות עם קבצים מצורפים, ויכולות העברת SMTP למכשירים ישנים. בין אם משתמשים בפורטים TLS ישנים של Forward Email או במעביר Postfix מקומי, מכשירים ישנים יכולים כעת לשלוח דואר אלקטרוני באופן אמין דרך ספקי דואר מודרניים.