MailDrop基本运用
1、前提条件: 我的参照系统:FreeBSD+Qmail(Vpopmail)+MailDrop
2、如何设置: (1)、域过滤 (a)、构想:代码: 应用过滤规则 被过滤信件发送到spam 其他用户信件照常分发 不存在的用户则返回信息
(b)、配置: file:/path/to/vpopmail/domains/HOST/.qmail-default 代码: | preline /usr/local/bin/maildrop ./.filter
file:/path/to/vpopmail/domains/HOST/.filter 代码:
import EXT import HOST VPOP="| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox" VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST` logfile "/var/log/mail/maildrop/$HOST" if (/过滤规则/) { to "/home/vpopmail/domains/$HOST/spam/Maildir/." exit }
#to "$VPOP" #低于5.3.7+版本的Vpopmail的多管道存在问题,所以用以下变通方法
`test -d $VHOME/Maildir/` if( $RETURNCODE != 1 ) { to "$VHOME/Maildir/." exit } else { echo "Sorry , no this user" EXITCODE=77 exit }
(1)、单用户过滤 (a)、构想:代码: 应用过滤规则 被过滤信件发送到spam 其他信件照常分发
(b)、配置: file:/path/to/vpopmail/domains/HOST/EXT/.qmail 代码: | preline /usr/local/bin/maildrop ./.filter
file:/path/to/vpopmail/domains/HOST/EXT/.filter 代码:
import EXT import HOST VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST` logfile "/var/log/mail/maildrop/$HOST"
if (/过滤规则/) { to "/home/vpopmail/domains/$HOST/spam/Maildir/." exit }
to "$VHOME/Maildir/."
3、MailDrop的一些语句 代码: ` ... ` 执行外部程序,返回码为RETURNCODE,通常1表示不成功,其他表示成功执行
cc 转发信件
logfile MailDrop日志文件
log 记录信息
to 分发信件
echo 返回信息
xfilter 执行外部过滤程序
exit 退出过滤
import 输入环境变量
4、控制语句 (1)基本控制语句: 代码: if (表达式) #表达式格式:(表达式1) [ || (表达式2) ((表达式3)%26amp;%26amp;(表达式4)) ] { ...语句... } else { ...语句... }
(2)、操作符: 代码:
|| %26amp;%26amp; < <= > >= == != 数值比较 lt le gt ge eq ne 文本比较 | %26amp; + - * / =~ /pattern/ /pattern/ ! ~ function()
5、常用函数 代码: getaddr(string) 从字符串提取邮件地址 hasaddr(string) 在信件之中查找邮件地址 length(string) 字符串长度 substr(string,start [,count]) 从字符串去除部分字符 time 返回当前时间 tolower(string) 转换为小写 toupper(string) 转换为大写
6、MailDrop的一些变量 代码: EXITCODE 退出码,返回给qmail的处理程序 LINES 当前信件的行数 MAILDIRQUOTA 用户的Quota RETURNCODE 返回码,执行外部程序的返回码 SIZE 信件的大小
7、过滤规则: 代码: 语法:/pattern/
代码: x* 匹配任意个x
(abc)* 匹配任意个abc
x+ 匹配至少一个x
(abc)+ 匹配至少一个abc
x? 匹配至多一个x
. 匹配换行符以外的
(abc)? 匹配至多一个abc
abc!def !用于匹配模式分开的节
[abc] 字符列表匹配,匹配a或者b或者c
[^abc] 非型匹配
\x 匹配转义字符
\nnn 匹配八进制字符
[:alnum:] 任何字母和数字
[:alpha:] 任何字母
[:cntrl:] 任何控制字符
[:digit:] 任何数字
[:graph:] 任何非空字符
[:lower:] 任何小写字母
[:print:] 任何可打印字符
[:punct:] 任何标点符号
[:space:] 任何空白字符
[:upper:] 大写字母
[:wbreak:] 任何字母、数字、下划线之外的字符
[:xdigit:] 任何16进制数
代码: 要匹配特殊字符,需要在特殊字符前面添加一个反斜线。例如,\?匹配问号。匹配反斜线,使用\\。 放置^在表达式前表示匹配一行开始的部分。放置$在表达式后表示匹配一行的结尾。 在表达式的其它地方,$标记用作变量替换。要匹配$字符,需要在前面添加反斜线
特殊字符 代码: \n 换行符
\r 回车符
\t 制表符
\f 换页符
\v 垂直制表符号
更多... 8、相关连接: 注意=Vpopmail(<5.3.7+)的MailDrop域过滤的问题和解决方案
MailDrop 域过滤规则和单用户过滤规则对照
maildrop的一些基本用法
用maildrop实现域过滤规则
maildrop于subject使用base64编码 此方法可用于过滤中文
|