溫馨提示×

Ubuntu FTP如何配置郵件通知

小樊
50
2025-10-04 17:20:20
欄目: 智能運維

Ubuntu FTP配置郵件通知(以vsftpd為例)

1. 安裝必要軟件

首先安裝vsftpd(FTP服務器)和mailutils(郵件發送工具),mailutils提供了mail命令用于發送郵件:

sudo apt update
sudo apt install vsftpd mailutils

2. 配置vsftpd基礎參數

編輯vsftpd的主配置文件/etc/vsftpd.conf,確保以下核心參數設置正確(用于啟用本地用戶登錄、限制用戶權限等):

sudo nano /etc/vsftpd.conf

修改或添加以下內容:

listen=YES
anonymous_enable=NO       # 禁止匿名登錄
local_enable=YES          # 允許本地用戶登錄
write_enable=YES          # 允許上傳文件
chroot_local_user=YES     # 將用戶限制在自己的家目錄
allow_writeable_chroot=YES # 允許家目錄可寫(避免權限問題)

保存并退出(Ctrl+OEnterCtrl+X),然后重啟vsftpd服務使配置生效:

sudo systemctl restart vsftpd

3. 配置SMTP郵件發送功能

mailutils依賴SMTP服務器發送郵件,需配置Postfix(Ubuntu默認郵件傳輸代理)。運行以下命令啟動Postfix配置向導:

sudo dpkg-reconfigure postfix

在向導中選擇:

  • General type of mail configuration: 選Internet Site(互聯網站點);
  • System mail name: 輸入你的域名(如example.com,若沒有可填服務器IP或localhost)。

配置完成后,編輯Postfix的主配置文件/etc/postfix/main.cf,確保以下參數正確(用于指定郵件服務器地址和協議):

sudo nano /etc/postfix/main.cf

修改或添加:

myhostname = your_hostname.example.com  # 替換為你的服務器主機名
mydomain = example.com                  # 替換為你的域名
myorigin = $mydomain
inet_interfaces = all                   # 監聽所有網絡接口
mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost
relayhost = [smtp.yourdomain.com]:587   # 替換為你的SMTP服務器地址(如Gmail的smtp.gmail.com)
inet_protocols = ipv4                   # 使用IPv4協議

保存并退出,重啟Postfix服務:

sudo systemctl restart postfix

4. 測試郵件發送功能

使用mail命令發送測試郵件,確認郵件功能正常:

echo "This is a test email from Ubuntu FTP server." | mail -s "FTP Mail Test" your_email@example.com

your_email@example.com替換為你的實際郵箱地址。檢查該郵箱是否收到測試郵件(可能需要等待幾分鐘,或查看垃圾郵件箱)。

5. 配置FTP登錄觸發郵件通知

方法一:通過vsftpd內置腳本(簡單場景)

編輯vsftpd配置文件/etc/vsftpd.conf,添加以下參數(指定登錄成功后執行的腳本路徑):

sudo nano /etc/vsftpd.conf

添加:

login_notify_script=/usr/local/bin/ftp_notify.sh  # 登錄成功后執行的腳本

保存并退出,重啟vsftpd服務:

sudo systemctl restart vsftpd

創建通知腳本/usr/local/bin/ftp_notify.sh,并賦予執行權限:

sudo nano /usr/local/bin/ftp_notify.sh

腳本內容(替換your_email@example.com為你的郵箱地址):

#!/bin/bash
EMAIL="your_email@example.com"
SUBJECT="FTP Login Notification"
MESSAGE="User $1 logged in to FTP server at $(date '+%Y-%m-%d %H:%M:%S')"
echo -e "$MESSAGE" | mail -s "$SUBJECT" "$EMAIL"

賦予執行權限:

sudo chmod +x /usr/local/bin/ftp_notify.sh

說明:此腳本會在用戶成功登錄FTP時,向指定郵箱發送包含用戶名和登錄時間的郵件。

方法二:通過vsftpd的mail_enable參數(自動郵件)

編輯/etc/vsftpd.conf,啟用郵件通知功能:

sudo nano /etc/vsftpd.conf

添加或修改以下參數(用于自動發送登錄/登出通知):

mail_enable=YES
smtp_enable=YES
smtp_port=587           # SMTP端口(如Gmail用587,其他服務器可能用25)
smtp_host=smtp.yourdomain.com  # SMTP服務器地址
smtp_auth=YES           # 啟用SMTP認證
smtp_user=your_email@example.com  # SMTP用戶名(你的郵箱)
smtp_password=your_email_password  # SMTP密碼(或應用專用密碼,如Gmail需開啟兩步驗證后生成)

保存并退出,重啟vsftpd服務:

sudo systemctl restart vsftpd

說明:此方法無需額外腳本,vsftpd會在用戶登錄/登出時自動發送郵件(郵件內容由vsftpd自動生成,包含登錄信息)。

6. 測試郵件通知功能

使用FTP客戶端(如ftp命令或FileZilla)登錄FTP服務器,輸入用戶名和密碼。登錄成功后,檢查你的郵箱是否收到通知郵件(主題通常為“FTP Login Notification”)。

注意事項

  • SMTP安全:若使用Gmail等第三方SMTP服務器,需開啟“允許不夠安全的應用”或生成“應用專用密碼”(因Gmail已禁用普通密碼登錄);
  • 防火墻設置:確保服務器防火墻允許FTP(端口21)和SMTP(端口25/587)流量通過;
  • 日志排查:若未收到郵件,可查看vsftpd日志(/var/log/vsftpd.log)或Postfix日志(/var/log/mail.log)定位問題;
  • 權限問題:確保FTP用戶的家目錄權限正確(如/home/ftpuser的權限為755,避免777)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女