Postfix + Maildrop + ExtMail 实现过滤/自动回复/转发等

时间:2007-01-04 11: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系统。

文章评论

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