Ubuntu FTP配置郵件通知(以vsftpd為例)
首先安裝vsftpd(FTP服務器)和mailutils(郵件發送工具),mailutils提供了mail命令用于發送郵件:
sudo apt update
sudo apt install vsftpd mailutils
編輯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+O→Enter→Ctrl+X),然后重啟vsftpd服務使配置生效:
sudo systemctl restart vsftpd
mailutils依賴SMTP服務器發送郵件,需配置Postfix(Ubuntu默認郵件傳輸代理)。運行以下命令啟動Postfix配置向導:
sudo dpkg-reconfigure postfix
在向導中選擇:
Internet Site(互聯網站點);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
使用mail命令發送測試郵件,確認郵件功能正常:
echo "This is a test email from Ubuntu FTP server." | mail -s "FTP Mail Test" your_email@example.com
將your_email@example.com替換為你的實際郵箱地址。檢查該郵箱是否收到測試郵件(可能需要等待幾分鐘,或查看垃圾郵件箱)。
編輯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時,向指定郵箱發送包含用戶名和登錄時間的郵件。
編輯/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自動生成,包含登錄信息)。
使用FTP客戶端(如ftp命令或FileZilla)登錄FTP服務器,輸入用戶名和密碼。登錄成功后,檢查你的郵箱是否收到通知郵件(主題通常為“FTP Login Notification”)。
/var/log/vsftpd.log)或Postfix日志(/var/log/mail.log)定位問題;/home/ftpuser的權限為755,避免777)。