温馨提示×

Ubuntu FTP如何配置邮件通知

小樊
52
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