Quantcast
Channel: 静思学吧 » Postfix
Viewing all articles
Browse latest Browse all 4

Postfix磁盘配额(quota)

0
0

静思学吧 - 关注Wordpress插件,SEO,博客技巧和Graphite,Puppet,RPM等运维工具。

磁盘配额(disk quota)是邮箱的一个基本功能,Postfix添加磁盘配额支持也非常简单,有多种方法,本文使用Postfix vda,对Postfix源码打补丁,让Postfix支持磁盘配额.

目前来看postfix搭建的邮件系统的话,如果要实现磁盘配额的话,使用postfix vda(http://vda.sourceforge.net/)是比较好的方案,且该软件一直在进行更新,有利于维护和跟踪.postfix vda是给Postfix打个补丁,让它支持quota.

Postfix磁盘配额安装配置步骤

1 从http://www.postfix.org/下载Postfix源码
2 从http://vda.sourceforge.net/下载和你Postfix版本相同的补丁程序
3 用如下命令释放、补丁并编译Postfix

tar -zxf postfix-2.4.3.tar.gz
gunzip postfix-2.4.3-vda-ng-r2.patch.gz
patch -p0 postfix-2.4.3-vda-ng-r2.patch

现在就可以了,编译安装postfix,现在的postfix就支持quota了.

4 编辑etc/postfix/main.cf,添加mail quota相关的内容

# ===== Mailbox Quota =====
# 以下的设置大小都是以byte为单位,即1M=1024*1024
# 设置邮件大小限制,这个选项并不是vda的选项
#message_size_limit = 10000000
# 设置默认的邮箱容量限制
virtual_mailbox_limit = 30000000
# 针对特殊用户设置邮件容量限制,默认不设置.表格格式如下:
user1@domain.com.br 2048000
user2@domain.com.br 2048000
user1@domain.net.br 5192000
virtual_mailbox_limit_maps = hash:/etc/postfix/vquota
# 这个选项默认yes,官方解释:
# If set to 'no' and if the delivered message size is smaller than
# message_size_limit (see Postfix doc for details), the quota will
# be set to virtual_mailbox_limit (see Postfix doc for details)
# So, this enables limits smaller than maximum message size.
# Default: yes
virtual_mailbox_limit_override = yes
# no限制整个maildir,yes只限制inbox,默认为no
virtual_mailbox_limit_inbox = no
# 如果使用Courier maildir++ quotas,则使用yes,默认为no
virtual_maildir_extended = no
# 加在maildir/mailbox路径后面,Courier使用这个选项,默认不设置
virtual_maildir_suffix = "Maildir/"
# yes的话使用5xx错误,no使用4xx错误,邮件还是会被放入队列
virtual_overquota_bounce = yes
# 这个选项在未设置'virtual_maildir_limit_message_maps'时,如果用户超出了限额的提示信息
virtual_maildir_limit_message = “Sorry, maximum quota reached!”
# 是否在计算限额时加上垃圾文件夹,这个选项需要virtual_trash_name配合,默认为no
virtual_trash_count = no
# 设置垃圾文件夹名称,默认值为:.Trash
virtual_trash_name = ".Trash"

postmap /etc/postfix/vquota
/etc/init.d/postfix reload

重新启一次postfix. 好啦,现在Postfix会先在用户目录下创建一个文件,叫做maildirsize,并且第一行是你在LDAP里定义的mail quota。然后呢,每收到一份mail,Postfix会在maildirsize文件里添加一条记录,说明收到几个mail,尺寸多大。当从第二行开始的记录相加超过第一行的时候,会发一封mail给sender,告诉他virtual_maildir_limit_message 定义的内容。就是下面的样子

12000000S
3843 2
15632 1
65465 1

不过如果你够聪明,你就会发现一个漏洞:刚刚我说每收到一个就会添加一条记录,那么…只加不减,不是一会儿就爆掉了吗?e-mail是POP3传送给客户端的,传送之后服务器上不再存有文件,所以,我们要修改负责POP3的Dovecot,让它每传送一封邮件给客户端之后就减掉一条记录.

我们给/etc/dovecot.conf加一点点内容,首先在plugin里加个quota

plugin {
 quota = maildir
}

然后呢,在IMAP和POP3下添加quota

protocol imap {
 mail_plugins = quota
 }protocol pop3 {
 pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
 mail_plugins = quota
}

别的地方不动,这样就告诉Dovecot我在用quota,并且是maildir方式的。

/etc/init.d/dovecot restart

之后,再收收mail看,你会发现maildirsize变成这样了

12000000S
3843 2
15632 1
-19475 -3
65465 1
-65465 -1

好啦,现在全部加起来之后,尺寸是0,正常了。

参考文章

静思学吧 - 关注Wordpress插件,SEO,博客技巧和Graphite,Puppet,RPM等运维工具。


Viewing all articles
Browse latest Browse all 4

Latest Images

Trending Articles





Latest Images