【小蜗牛清新之作
】
![](https://i-blog.csdnimg.cn/blog_migrate/b413768ccfb6a8fc27d7b686f1812703.png)
procmail是sendmail使用的本地邮件投递代理(MDA),在/etc/mail/sendmail.mc里有以下两行配置:
FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
MAILER(procmail)dnl
FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
MAILER(procmail)dnl
经sendmail接收处理的本地邮件,都交给procmail来投递。RHEL5系统procmail投递时默认使用mbox邮件存储格式,用户邮件以单个文件的形式存储在/var/mail/username 文件里,username用实际的系统用户名代替。
如果想实现效率更高的maildir格式,不是去修改sendmail配置,而是去配置procmail。
procmail根据自己配置、规则来对邮件进行过滤、分发等处理。每个系统用户可以在其home目录下建立自己的.procmailrc文件来对自己的邮件进行相应的处理,但也可以由系统管理员建立一个全局的/etc/procmailrc配置文件来对所有过来的邮件统一处理,当然,二者可以并存,procmail先执行用户的规则,最后才执行系统的全局规则。
procmail的功能非常强大,这里只是举个例子说明如何实现maildir格式,并支持多域名分发处理。我们只需要在/etc/procmailrc文件里加入以下的过滤规则就可以了:
[root@pps etc]# cat /etc/procmailrc
:0:
* ^TO.*@hoho.com
{
DEFAULT=/home/Mail/hoho.com/$LOGNAME/Maildir /
}
:0:
* ^TO.*@hoho.com
{
DEFAULT=/home/Mail/hoho.com/$LOGNAME/Maildir /
}
:0:
* ^TO.root@*
{
DEFAULT=/home/Mail/root/Maildir /
}
* ^TO.root@*
{
DEFAULT=/home/Mail/root/Maildir /
}
【注意】
想要使用maildir格式,只需要在邮件存储目录最后加上一个斜杠"/"即可。
我在上面示例配置里建立了3条规则:
(1)使得发给hoho.com域名的邮件,都投递存放在/home/Mail/hoho.com域名目录下相应的用户名目录里的maildir结构。
(2)使得发给honology.com域名的邮件,都投递存放在/home/Mail/honology.com域名目录下相应的用户名目录里的maildir结构。
(3)使得发给root的邮件,都投递存放在/home/Mail/root用户目录里的maildir结构。
因为我存放邮件的目录是非标准目录,因此需要合理的设置目录访问权限,一般需要允许mail组用户具有写权限,还得事先建立好域名目录和用户名目录,如下所示:
[root@pps home]# ls -ld Mail/
drwxrwxr-x 5 root mail 4096 04-06 10:35 Mail/
[root@pps home]# cd Mail/
[root@pps Mail]# ls -ld *
drwxrwxr-x 5 root mail 4096 04-06 10:35 hoho.com
drwxrwxr-x 3 root mail 4096 04-06 10:29 honology.com
drwx------ 3 root root 4096 04-06 10:36 root
[root@pps Mail]# cd hoho.com/
[root@pps hoho.com]# ls -ld *
drwxrwxr-x 3 root mail 4096 04-06 09:52 hoho
drwxrwxr-x 2 root mail 4096 04-06 09:49 snail
drwxrwxr-x 3 root mail 4096 04-06 11:20 zhaozh
drwxrwxr-x 5 root mail 4096 04-06 10:35 Mail/
[root@pps home]# cd Mail/
[root@pps Mail]# ls -ld *
drwxrwxr-x 5 root mail 4096 04-06 10:35 hoho.com
drwxrwxr-x 3 root mail 4096 04-06 10:29 honology.com
drwx------ 3 root root 4096 04-06 10:36 root
[root@pps Mail]# cd hoho.com/
[root@pps hoho.com]# ls -ld *
drwxrwxr-x 3 root mail 4096 04-06 09:52 hoho
drwxrwxr-x 2 root mail 4096 04-06 09:49 snail
drwxrwxr-x 3 root mail 4096 04-06 11:20 zhaozh
其实procmail投递邮件时,具备相应的接收用户的权限以及mail用户组的权限。管理员只需要建立到以用户名为目录并设置好权限即可,下面为procmail自动创建的(需要上述设置的相关权限):
[root@pps hoho]# ls -ld *
drwx------ 5 hoho mail 4096 04-06 09:52 Maildir
[root@pps hoho]# cd Maildir
[root@pps Maildir]# ls -ld *
drwx------ 2 hoho mail 4096 04-06 09:52 cur
drwx------ 2 hoho mail 4096 04-06 10:32 new
drwx------ 2 hoho mail 4096 04-06 10:27 tmp
drwx------ 5 hoho mail 4096 04-06 09:52 Maildir
[root@pps hoho]# cd Maildir
[root@pps Maildir]# ls -ld *
drwx------ 2 hoho mail 4096 04-06 09:52 cur
drwx------ 2 hoho mail 4096 04-06 10:32 new
drwx------ 2 hoho mail 4096 04-06 10:27 tmp
当然,如果/home/Mail目录具有777权限,则管理员就不必费心去建立域名以及用户了。当一封邮件投递过来发现当前的用户目录及其子目录并不存在,则procmail会建立相应的用户邮件目录结构。
------------------------------------------------------------------------------------------
赵小蜗牛
QQ: 755721501
在不断奉献中谋求生存发展、打造自己的优秀品质,用人性最本质最动人的一面“营销”自己!
转载于:https://blog.51cto.com/snailwarrior/146970