在Xlight FTP服务器中设置电子邮件通知
Xlight FTP服务器中, 系统管理员可以设置电子邮件通知, 这样当某些事件如, "文件上传" 或 "硬盘空间不足" 发生时, 他可以收到电子邮件通知.
在这个教学里, 我们将教你如何设置电子邮件通知. 注意: 只有专业版本的Xlight FTP服务器有这个功能, 用户在30-天试用期也可以试用这个功能.
1. 你必须到虚拟服务器的设置里,启用电子邮件通知功能, 如下图所示.
2. 然后你需要设置 SMTP 服务器用于发送通知的电子邮件. 我们这里用Gmail为例. 因为Gmail的SMTP服务器需要TLS 加密连接, 你需要选择选项"使用SSL/TLS连接"并使用端口465. 对于大部分公司内部的邮件服务器,标准的SMTP端口25总是被支持,SSL/TLS的端口465不一定被支持。 所以对公司内部的邮件服务器来说,SSL/TLS连接不是必须的,甚至不能使用。
3. 你必须选择电子邮件通知配置文件. 这个文件用来配置那些事件能够触发FTP服务器发送电子邮件通知. 电子邮件通知配置文件是文本文件, 它存放关于你能够接受电子邮件通知的事件. 你可以用记事本编辑这个文件.
4. 你还需要设置SMTP用户认证以及默认的电子邮件设置. 设置SMTP用户认证, 你需要在邮件服务器有一个有效的账户, 如下图所示.
Xlight FTP服务器的邮件通知支持7个事件. 下面的表格是支持事件的列表.
电子邮件通知支持的事件
事件名字 | 事件描述 |
---|---|
OnFileUpload | 事件在用户上传文件后被触发. |
OnFileDownload | 事件在用户下载文件后被触发. |
OnFileDelete | 事件在用户删除文件后被触发. |
OnDiskSpaceLow | 事件在硬盘空间不足时被触发. |
OnLogin | 事件在用户成功登录后被触发. |
OnLogout | 事件在用户登出后被触发. |
OnWanIPChange | 事件在服务器启动后,广域网IP发生改变时被触发. |
如果你想要接受到电子邮件通知, 你需要将事件类型放在电子邮件通知配置文件中. 你可以使用参数进一步限制电子邮件通知被发送的条件. 下图是一个电子邮件通知配置文件的例子,其中包含了5个事件.
在虚拟服务器当一个用户上传,下载,删除一个文件或硬盘空间被定期检查后,这些动作都会导致FTP服务器检查,预先加载到内存里的邮件通知配置文件. 服务器使用当前的动作对照并检查在电子邮件通知配置文件中的每一行事件和条件. 如果其中一行能够通过这个检查, 一封电子邮件将被发出. 当找到匹配的一行以后, Xlight FTP服务器将不会继续检查下面的行. 配置文件中行的顺序会影响电子邮件通知. 你最好将比较特别的条件放在靠近上面的行,比较同样的条件放在靠近下面的行.
配置文件中的每一行是从左到右检查. 在上面的图里, OnFileUpload是第一行里的事件. 参数 $file 设置文件的类型. $file 有两个值 *.exe 和 *.bat. 当用户上传文件的后缀是 *.exe 或 *.bat, 它将既满足 OnFileUpload事件和文件类型的条件. 用户的上传行为然后检查参数$dir. $dir参数限制了上传目录是虚拟路径 /public 或是它的子目录.
如果上面所有的条件都满足, 一封电子邮件将被发出通知一个文件后缀是*.exe 或 *.bat 被上传到虚拟路径 /public 或是它的子目录中.
第一行中的 $email_file 参数不是条件. 它用来指定一个文件,这个文件用于定制电子邮件的内容. 如果你不使用 $email_file 参数, Xlight FTP服务器会生成默认的电子邮件内容. 在 $email_file 指定的文件中, 你可以为将要受到邮件的人使用其他 TO, CC 和 BCC 地址. 这将替代电子邮件设置里默认的TO地址.
邮件通知配置文件事例.
例子 1. 当硬盘C的剩余空间少于100 MB, 或硬盘D的剩余空间少于200 MB时发送电子邮件通知.
OnDiskSpaceLow $disk_space=C(100),D(200)
Example 2. 当被上传的文件大小超过2000 MB时发送电子邮件通知.
OnFileUpload $file_size>2000
Example 3. 当用户名是test的用户上传后缀是 gif, jpg, 或 png的文件后电子邮件通知.
OnFileUpload $file=*.gif,*.jpg,*.png; $user=test
Example 4. 当用户上传文件名包含被禁止关键字如sex, porn的文件后发送电子邮件通知.
OnFileUpload $file=*sex*,*porn*;
Example 5. 当用户登出时,发送电子邮件通知的条件时他至少需要上传一个文件.
OnLogout $up_files>0;
Example 6. 当用户"tester"登录时发送电子邮件通知.
OnLogin $user=tester;
Example 7. 除了匿名用户"anonymous"之外,其他用户登录时会发送电子邮件通知.
OnLogin $user=×; $exclude_user=anonymous;
下面是邮件通知配置文件支持的参数.
邮件通知配置文件支持的参数
参数名 | 允许多值 | UNIX shell 类型的通配符 | 值描述 |
---|---|---|---|
$file | 是 | 是 | 文件名. |
$dir | 是 | 是 | 事件发生的目录. 目录可以是FTP虚拟目录的形式如"/public"或DOS目录的形式如"C:\test". 使用通配符来包含子目录. 例如, 包含"C:\test"的子目录, 你可以写成"C:\test\*". |
$user | 是 | 是 | 用户名. |
$group | 是 | 是 | 用户组名. |
$exclude_file | 是 | 是 | 不触发事件的文件名. |
$exclude_dir | 是 | 是 | 不触发事件的目录名. |
$exclude_user | 是 | 是 | 不触发事件的用户名. |
$exclude_group | 是 | 是 | 不触发事件的组名. |
$file_size | 否 | 否 | 以MB计算最少的文件大小. 例如如果你希望OnFileUpload事件在上传文件大小超过1000M时被触发, 你可以写成$file_size>1000. 这个参数不支持多值. |
$down_files | No | No | 用户已下载的文件数目. 例如,如果你想在用户登出时,当他下载超过10个文件触发OnLogout事件,你可以写成$down_files>=10. 这个参数不支持多值. |
$up_files | No | No | 用户已下载的文件数目. 例如,如果你想在用户登出时,当他上传超过1个文件触发OnLogout事件,你可以写成$up_files>=1. 这个参数不支持多值. |
$disk_space | 是 | 否 | 触发硬盘空间不足警告的条件. 它以硬盘盘符开始,括号内包含以MB计算的最低剩余磁盘空间. 例如, 当你想在硬盘E的空间低于500MB时接收到邮件通知,你可以写成E(500). 当设置这个参数后, Xlight FTP服务器将会每隔30分钟检查设置的磁盘的剩余空间. 因此如果你当前的剩余磁盘空间在设置的门限之上, 但不明原因你收到了磁盘空间低的警告邮件. 请检查你是否运行计划任务(例如备份), 并导致临时降低剩余磁盘空间低于设置的门限. |
$email_file | 否 | 否 | 这个文件用来定制当事件被触发时的电子邮件内容. 你可以放很多TO, CC 和 BCC 地址在这个文件内. 它们将替代电子邮件设置里默认的TO地址. 这个文件内TO, CC 和 BCC的地址数目没有限制. 但是你使用的SMTP服务器可能有这方面限制. 另外电子邮件内容的文件大小被限制为16K. 另外一个有用的技巧是这个文件只是在发送邮件之前被Xlight FTP服务器读取. 如果你动态生成邮件内容,这个特性会很有用. 例如,如果你有一个晚上运行的代码编译工作,这个编译会生成日志. 当编译完成后,在上传日志文件到FTP服务器之前, 你可以用脚本写入一个电子邮件文件,包括编译的结果, 邮件接受者的地址. 在上传编译日志之前上传这个文件到FTP服务器. 这样人们在早晨就会接受到电子邮件,通知他们晚上编译的结果,以及日志的位置. |
某些参数允许多个值. 多个值之间用逗号","分割. 对于有多个值的参数,值之间的关系是或者. 例如$user = a*, c* 的意思是用户的登录名以字符a 或者 b 开始. 如果一行包含多个参数,所有条件必须满足才能触发事件. 对于这行里没有出现的参数,它们的条件自动满足.
$email_file参数里设置的电子邮件文件的内容
下图是$email_file指定的一个电子邮件文件的内容示例. 以字符%开始的字符串是变量, 它们将在电子邮件发送前被替换为实际的内容.
注意: 在电子邮件头内不能有任何空行. 电子邮件头和邮件内容之间只用一个空行分开. 在电子邮件内容中, 允许空行数没有限制,如下图所示.
下面是电子邮件文件支持的变量. 请注意区别: 电子邮件文件的变量以字符%开始, 但是邮件通知配置文件的参数以字符$开始.
电子邮件文件支持的变量
变量名 | 值描述 |
---|---|
%filename | 将被替换为被上传,下载或删除的文件名. |
%down_filelist | 最后100个被下载的文件列表. 文件名之间用逗号隔开. |
%up_filelist | 最后100个被上传的文件列表. 文件名之间用逗号隔开. |
%file_size | 将被替换为被上传,下载或删除的文件大小(比特). |
%file_size_mb | 将被替换为被上传,下载或删除的文件大小(MB). |
%downfiles | 将被替换为被用户已下载的文件数目. |
%upfiles | 将被替换为被用户已上传的文件数目. |
%totaldown | 将被替换为被用户已下载流量. |
%totalup | 将被替换为被用户已上传流量. |
%username | 将被替换为上传,下载或删除文件的用户名. |
%password | 将被替换为上传,下载或删除文件的用户的密码. |
%groupname | 将被替换为上传,下载或删除文件的用户组名. |
%virtual_path | 将被替换为文件被上传,下载或删除所在位置的虚拟路径. |
%real_path | 将被替换为文件被上传,下载或删除所在位置的DOS路径. |
%client_ip | 将被替换为上传,下载或删除文件的用户IP地址. |
%server_ip | 将被替换为上传,下载或删除文件的虚拟服务器的IP地址. |
%server_port | 将被替换为上传,下载或删除文件的虚拟服务器的端口地址. |
%weekday | 将被替换为当前星期. |
%date | 将被替换为当前日期. |
%time | 将被替换为当前时间. |
%rfc822_date | 将被替换为RFC 822日期的格式. 它用来支持电子邮件的DATE邮件头. |
%diskfree<> | 将被替换为剩余磁盘空间. 例如, %diskfree<C> 将显示 C:\ 盘剩余磁盘空间. 它只在OnDiskSpaceLow事件触发时工作. |
%wan_ip | 将被替换为广域网IP地址. 这个变量必须和OnWanIPChange事件一起使用. |