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)。