免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7799 | 回复: 3
打印 上一主题 下一主题

[Mail] [原创]安装milter-limit配置postfix限制邮件账号发送量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-31 13:30 |只看该作者 |倒序浏览
安装milter-limit配置postfix限制邮件账号发送量[希望加精]

1.下载
milter-limit-0.14.tar.gz
http://www.snertsoft.com/clients/downloads.php

libsnert-1.71.6.tar.gz
http://www.snertsoft.com/clients/downloads.php

sendmail.8.14.2.tar.gz
ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.14.2.tar.gz

db-4.5.20.tar.gz
http://download.oracle.com/berkeley-db/db-4.5.20.tar.gz


2.安装
安装sendmail.8.14.2
  1. tar -zxf sendmail.8.14.2.tar.gz
  2. cd sendmail-8.14.2
  3. cd libmilter/
  4. ./Build -c
  5. ./Build install
复制代码
安装db4.5
  1. tar -zxf db-4.5.20.tar.gz
  2. cd db-4.5.20
  3. cd build_unix
  4. ../dist/configure
  5. make && make install
复制代码
安装libsnert
  1. tar -zxf milter-limit-0.14.tar.gz
  2. tar -zxf libsnert-1.71.6.tar.gz
  3. cd com/snert/src/lib
  4. ./configure && make && make install
复制代码
注以下是./configure运行完成后的结果,如果有不同,请解决依赖的问题特别是DB
  1. LibSnert/1.71.6
  2. Copyright 1996, 2009 by Anthony Howe. All rights reserved.

  3.   Platform............: FreeBSD gcc
  4.   Berkeley DB.........: 4.5 -ldb-4.5
  5.   POSIX Threads.......: yes yes
  6.   SQLite3.............: yes
  7.   Sendmail libmilter..: yes
  8.   Semaphore API.......: SYSTEMV_API
  9.   Shared Memory API...: SYSTEMV_API
  10.   CFLAGS..............: -I/usr/local/include/db45 -I/usr/home/feishu/limit/org/sqlite/include -D_THREAD_SAFE -pthread -D_REENTRANT -O2 -Wall -I${top_srcdir}/../../include
  11.   LDFLAGS.............: -L/usr/local/lib/db45 -L/usr/home/feishu/limit/org/sqlite/lib -pthread -L${top_srcdir}/../../lib
  12.   LIBS................:
复制代码
  1. make build
  2. make install
复制代码
安装milter-limit
  1. cd ../milter-limit
  2. ./configure --enable-run-user=postfix --enable-run-group=mail --enable-debug
  3. make build
  4. make install
复制代码
配置postfix
  1. echo "smtpd_milters = unix:/var/run/milter/milter-limit.socket" >> /usr/local/etc/postfix/main.cf
复制代码
启动相关服务
  1. /usr/local/etc/rc.d/postfix restart
  2. /usr/local/etc/rc.d/milter-limit.sh restart
复制代码
相关代码

生成access.db的PHP脚本代码
  1. #!/usr/local/bin/php -q
  2. <?php
  3. $access = "/etc/mail/access";
  4. $fp = fopen($access,'w+');

  5. $host ="localhost";
  6. $user = "tmail";
  7. $passwd = "tmail";
  8. $dbname = "tmail";

  9. $link = mysql_connect($host,$user,$passwd);
  10. mysql_select_db($dbname,$link);

  11. $query = "select * from tmail_users order by id desc";
  12. $rules = mysql_query($query,$link);

  13. while($rs = mysql_fetch_object($rules)){
  14. //限制账号一天发送量/d,可以限制一小时发送量/h
  15.         $limit = "milter-limit-From:".$rs->email."        ".$rs->sendnum."/1d"."\n";
  16.         if(fwrite($fp,$limit)===FALSE){
  17.                 echo "不能写入文件。请检查文件权限。";
  18.         }
  19. }
  20. system("/usr/sbin/makemap hash /etc/mail/access < /etc/mail/access");
  21. system("/usr/local/etc/rc.d/milter-limit.sh restart");
  22. ?>
复制代码
常见问题
  1. /libexec/ld-elf.so.1: Shared object "libdb-4.5.so" not found, required by "milter-limit"
  2. /libexec/ld-elf.so.1: Shared object "libdb-4.5.so" not found, required by "milter-limit
复制代码
解决方案
  1. ln -s /usr/local/BerkeleyDB.4.5/lib/libdb-4.5.so /usr/local/lib/libdb-4.5.so
复制代码
http://www.milter.info/sendmail/milter-limit/#Installation

[ 本帖最后由 scyzxp 于 2009-8-31 13:34 编辑 ]

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
2 [报告]
发表于 2009-08-31 15:45 |只看该作者
postfix还不能完整的原生支持sendmail的milter
这个方案还没有测试过

postfix还有下面一些内建的参数

smtpd_client_connection_rate_limit=5
ip地址连接的频率控制.
smtpd_client_message_rate_limit=5
客户端发送邮件的频率控制.(某种情况下smtpd_client_message_rate_limit和smtpd_client_connection_rate_limit的效果是一样.smtpd_client_connection_rate_limit是指连接到服务器25端口就开始计算,smtpd_client_message_rate_limit是发送邮件时计算.)

smtpd_client_recipient_rate_limit=10
rcpt to的频率控制,也就是说TO了多少个人.
smtpd_client_event_limit_exceptions(default: $mynetworks)
指不做频率控制检测的网络,默认是mynetworks.

论坛徽章:
0
3 [报告]
发表于 2009-08-31 17:54 |只看该作者
原帖由 ruochen 于 2009-8-31 15:45 发表
postfix还不能完整的原生支持sendmail的milter
这个方案还没有测试过

postfix还有下面一些内建的参数

smtpd_client_connection_rate_limit=5
ip地址连接的频率控制.
smtpd_client_message_rate_limit= ...



绝对可以完整的支持

论坛徽章:
0
4 [报告]
发表于 2009-09-01 08:51 |只看该作者
好东西,帮你顶个
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP