Postfix + Maildrop + ExtMail 实现过滤/自动回复/转发等
时间:2007-01-03 21:39:45
来源: 作者:whsong 点击:次 出处:技术无忧
关键字:Post
最近发布的ExtMail 测试版已包含了对maildrop较完整的支持,并支持了自动回复等高级功能。为此,现推出一个简单的小HOWTO以指引extmail新老用户如何安装,配置maildrop使之能
正确工作,实现过滤、自动回复等高级特性。
1)基本介绍
这里介绍一下整体的存储及过滤体系,从安全角度考虑,专门用一个系统用户帐户来进行邮件
存储和投递,例如新开一个uid=1000/gid=1000的叫vuser的用户来做邮件存储和投递。
其次,邮件统一存放在一个大目录里,例如/home/domains,每个域名都存放在这个大目录
之下,例如有一个用户叫test@extmail.org,则其邮件存储目录为:
home路径: /home/domains/extmail.org/test
Maildir路径: /home/domains/extmail.org/test/Maildir/
属性:/home/domains及其下面的子目录全部都为700属性,并只属于vuser用户,vgroup
用户组,(这样仅对vuser/vgroup可读写,其他用户均不可见,不可写,提高了安全性,一般
进程看不到邮件内容)
注意:
Extman管理工具默认是以/home/domains作为基础目录,extmail也同样以/home/domains
作为基础目录的。
2)安装、配置maildrop
由于maildrop 自courier-authlib发行后,就不再使用内建的数据库连接模块,而是通过authlib
来获得用户的各种信息,因此在安装maildrop前必须正确安装courier-authlib并配置好。
如果是redhat/debian等linux操作系统,下载最新maildrop软件包,里面有相应的rpm制作
文件(maildrop.spec)。可参考rpm.org的帮助制作rpm。或者参考本站postfix版块里wmd
的文档。
注意:maildrop.spec或相关spec里,注意看编译指令是否有--disable-authlib,如果有则
表明禁止了authlib支持!必须去掉,改为--enable-authlib
如果是FreeBSD类系统,则直接到/usr/ports里找到maildrop的ports,例如:
cd /usr/ports/mail/maildrop
注意: 2006-02-01修正FreeBSD安装时,没提醒增加WITH_AUTHLIB=yes,导致部分版本ports编译安装的maildrop没增加authlib支持,老出现:
Invalid user specified 错误。
打开Makefile,确保屏蔽掉:
MAILDROP_SUID=1001
MAILDROP_SGID=1003
...
MAILDROP_TRUSTED_USERS=vmail
即:
#MAILDROP_SUID=1001
#MAILDROP_SGID=1003
...
#MAILDROP_TRUSTED_USERS=vmail
然后输入:
make WITH_AUTHLIB=yes
此时会跳出对话框选择支持数据库类型,此对话框实际就是courier-authlib的。选择你需要支持
的数据库类型,例如mysql或 ldap等。然后直接选OK保存,就会自动make了。
给出一个authmysqlrc的配置内容,仅供参考:
MYSQL_SERVER localhost
MYSQL_USERNAME extmail
MYSQL_PASSWORD extmail
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD uidnumber
MYSQL_GID_FIELD gidnumber
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD homedir
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_QUOTA_FIELD quota
MYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,/
CONCAT('/home/domains/',homedir), /
CONCAT('/home/domains/',maildir), /
quota, /
name /
FROM mailbox /
WHERE username = '$(local_part)@$(domain)'
3)配置postfix
编辑main.cf,增加:
virtual_transport = maildrop:
maildrop_destination_recipient_limit = 1
记得是maildrop:(有个冒号)
其次编辑master.cf,找到定义maildrop的那行,原来默认的内容:
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
改为:
maildrop unix - n n - - pipe
flags=DRhu user=vuser argv=maildrop -w 90 -d ${recipient}
保存好配置
4)增加投递用户
很多邮件系统文档都使用postfix这个用户(一般是uid=125)作为邮件存储,在使用
系统的virtual等投递时不存在问题,如果是改为maildrop则postfix会报错。不允许
通过pipe来以user=postfix来投递。
因此从长远角度考虑(参见1),专门开一个帐户来保存邮件比较好。这里:
groupadd -r -g 1000 vgroup
useradd -u 1000 -d /home/domains -s /bin/true -g vgroup vuser
这样就增加了一个uid=1000, gid=1000的用户vuser,组属于vgroup的。
以后如果要使用suexec也不会因为uid太低而造成问题了!
保存好所有修改,重新启动postfix
5)配置extmail
修改webmail.cf,将 SYS_MFILTER_ON = 1即可。然后就可以开始测试。
6)调试
如果遇到maildrop报错,提示Invalid user *** 的,打开authdaeonrc里的DEBUG_LOGIN=2
然后重启动authdaemon,看看:
/var/log/message或/var/log/maillog里具体的情况(就是在投递出错时看) ,适合Linux系统
/var/log/debug* 或/var/log/maillog,适合BSD系统。
请记住技术无忧网 中文域名 http://www.技术无忧.com












文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面