免费注册 查看新帖 |

Chinaunix

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

[Mail] sendmail初探milter,很强大!强烈建议使用Sendmail [复制链接]

论坛徽章:
4
IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-10-09 06:20:00操作系统版块每日发帖之星
日期:2015-10-20 06:20:00IT运维版块每日发帖之星
日期:2015-11-03 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-30 16:51 |只看该作者 |倒序浏览
本帖最后由 3645636 于 2010-07-30 18:45 编辑

之前一直在使用postfix,也尝过qmail,一段时间内被postfix精密的配置参数所吸引,还有qmail的简略、实用,但大为恼火的是,Amavisd-new,MailScanner均不支持qmail,Qmail差不多已经名存实忙了!接着又试用了Sendmail,起初被网上妖魔化的议论所迷惑,什么漏洞百出,哪个着实吓退一批人的"配置文件",其实也没有哪么玄乎!openbsd、freebsd、RHEL、Centos缺省的MTA都是sendmail,如果真的哪么差劲,为什么这些著名的Unix/Linux都要缺省去安装sendmail包!milter的概念最早出现在sendmail,还有DKIM,postfix也随后加入了milter支持,但不是原生态的,很多milter插件需要sendmail libmilter函数库。也就是说,postfix要使用milter插件,必须要安装有sendmail,比喻milter-limit。
  postfix配置简单明了,第三方插件也很多,Anti-Spam、Anti-Virus……  sendmail都支持这些,遗憾的是sendmail暂不支持DovecotSASL
  
这些我使用的milter有milter-limit、milter-clamc、spamass-milter
  1. milter-clamc去搭配Clamav查杀病毒
复制代码
  1. spamass-milter去呼叫Spamassassin探测垃圾邮件!
复制代码
  1. milter-limit可以控制用户的发信频率,比喻每五分钟一封
复制代码
使用系统自带的rpm安装,包括sendmail-devel,sendmail-cf等一并安装上
  1. #yum install sendmail* cyrus-sasl* cyrus-imapd
复制代码
当然你也可以不让sendmail呼叫哪么多milter,使用Amavisd-new或MailScanner,配置都非常简单明了!但amavisd-new搭配sendmail的话,要使用amaivsd-new-milter!
缺省的Sendmail只监听本地的回环地址,无法发挥他的功效,需要修改一下sendmail.mc,配置文件集中在/etc/mail/目录,注意我们使用了lmtp来投递,注释掉procmail相关的配置行。procmail也可以去调用Spamassassin
  1. define(`confAUTH_OPTIONS', `A')dnl
  2. TRUST_AUTH_MECH(`LOGIN PLAIN')dnl
  3. define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
  4. define(`confLOCAL_MAILER', `cyrusv2')dnl
  5. define(`CYRUSV2_MAILER_ARGS', `FILE /var/lib/imap/socket/lmtp')dnl
  6. DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
  7. dnl MAILER(procmail)dnl
  8. MAILER(cyrusv2)dnl
复制代码
修改/usr/lib/sasl2/Sendmail.conf,内容如下:
  1. pwcheck_method:saslauthd
复制代码
修改/etc/sysconfig/saslauthd,验证方式为shadow
  1. MECH=shadow
复制代码
确保/etc/cyrus.conf文件存在以下内容,sendmail会使用lmtp来投递邮件,默认启用了pop3 imap pop3ssl imapssl,如果需要就打开,不需要注释掉即可.
  1. lmtpunix      cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1
复制代码
/etc/imapd.conf内容如下
  1. configdirectory: /var/lib/imap
  2. partition-default: /var/spool/imap
  3. admins: cyrus root
  4. sievedir: /var/lib/imap/sieve
  5. sendmail: /usr/sbin/sendmail
  6. hashimapspool: true
  7. sasl_pwcheck_method: saslauthd
  8. sasl_mech_list: PLAIN LOGIN
  9. #tls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
  10. #tls_key_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
  11. #tls_ca_file: /etc/pki/tls/certs/ca-bundle.crt
  12. allowanonymouslogin: no
复制代码
启动相应的服务
#service cyrud-imapd start
#service sendmail start
#service saslauthd start

观察sendmail是否启用了sasl验证.
  1. [root@mail mail]# telnet localhost 25
  2. Trying 127.0.0.1...
  3. Connected to localhost.localdomain (127.0.0.1).
  4. Escape character is '^]'.
  5. 220 mail.jazz.com ESMTP Sendmail 8.13.8/8.13.8; Thu, 29 Jul 2010 15:13:40 +0800
  6. ehlo localhost
  7. 250-mail.jazz.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
  8. 250-ENHANCEDSTATUSCODES
  9. 250-PIPELINING
  10. 250-8BITMIME
  11. 250-SIZE
  12. 250-DSN
  13. 250-ETRN
  14. [color=RoyalBlue]250-AUTH LOGIN PLAIN[/color]
  15. 250-DELIVERBY
  16. 250 HELP
复制代码
使用任意的MUA进行发信和收信测试


现在安装spamassassin、clamav、milter-limit
可以使用rpm,或源码,我使用了源码
spamassassin安装,perl Makefile.pl make  make install,也可以使用yum install spamassassin,方便起见,编译clamav时注意有个milter模块,但我并没有使用clamav自带的milter,而是使用milter-clamc

我只简要的记录一下安装milter-limit,milter-clamc模块!
下载地址:http://www.milter.info/  需要要同时下载libsnert
libsnert-1.73.17     milter-clamc-0.6.20      milter-limit 0.14.86
  1. tar zxf libsnert-1.73.17.tar.gz
  2. tar zxf milter-limit-0.14.tar.gz
  3. tar zxf milter-clamc-0.6.tar.gz
  4. cd com/snert/src/lib/
  5. ./configure
  6. make build
  7. cd ../milter-limit      #编译milter-limit
  8. ./configure
  9. make build
  10. make install
  11. cd ../milter-clamc   #编译milter-clamc
  12. ./configure
  13. make build
  14. make install
复制代码
编译安装spamass-milter,拿来它来呼叫spamassassin
  1. tar zxf spamass-milter-0.3.1.tar.gz
  2. cd spamass-milter-0.3.1
  3. ./configure
  4. make
  5. make install
  6. cp contrib/spamass-milter-redhat.rc /etc/init.d/spamass-milter   
  7. chmod a+x /etc/init.d/spamass-milter
复制代码
#这个角本需要修改一下,只需要改一下/spamass-milter的实际路径即可

clamav用源码或rpm都可以,注意这里并没有使用clamav的milter,而是使用了第三方的milter来呼叫clamav,因为支持tag,你自己安装之后便知道哪个好用。
  1. ##启动spamassassin
  2. ##启动clamd
  3. ##启动spamass-milter
  4. ##启动milter-limit
  5. ##启动milter-clamc
  6. [root@mail spamass-milter-0.3.1]# /etc/init.d/spamd start
  7. 启动 spamd:                                         [确定]
  8. [root@mail spamass-milter-0.3.1]# /etc/init.d/clamd start
  9. Starting Clam AntiVirus Daemon:                               [确定]
  10. [root@mail spamass-milter-0.3.1]# /etc/init.d/spamass-milter start
  11. Starting spamass-milter:                                            [确定]
  12. [root@mail spamass-milter-0.3.1]# /etc/init.d/milter-limit start
  13. Starting milter-limit                                                    [  OK  ]
  14. 启动milter-clamc我们需要单独加入一些参数,稍后你就明白,当然,你使用源码自带的角本也没问题,但后果是如果发现病毒文件,整封信件就删除了,这里的policy=tag,也就是给染毒的信件打上标记,标记的名称是**Virus**,会加入发信主题,也就是**Vrius** Subject,而Clamav自带的milter却将邮件删除,没这么多选项!policy的其它参数请参考文档。
  15. [root@mail spamass-milter-0.3.1]# /usr/local/sbin/milter-clamc \
  16. policy=tag \         
  17. subject-tag=[**Virus**] \
  18. run-group=milter \
  19. run-user=milter
复制代码
查看所有相关的进程是否启动
[root@mail spamass-milter-0.3.1]# ps -A|grep milter
31865 ?        00:00:00 spamass-milter
31893 ?        00:00:00 milter-limit
31970 ?        00:00:00 milter-clamc
[root@mail spamass-milter-0.3.1]# ps -A|grep spamd
31806 ?        00:00:01 spamd
31807 ?        00:00:00 spamd
31808 ?        00:00:00 spamd
[root@mail spamass-milter-0.3.1]# ps -A|grep clamd
31841 ?        00:00:03 clamd
[root@mail spamass-milter-0.3.1]# ps -A|grep lmtp
31913 ?        00:00:00 lmtpd

[root@mail spamass-milter-0.3.1]# ps -A|grep sendmail
26629 ?        00:00:00 sendmail
26637 ?        00:00:00 sendmail

[root@mail spamass-milter-0.3.1]# ps -A|grep imapd
1560 ?        00:00:00 imapd
1567 ?        00:00:00 imapd
1613 ?        00:00:00 imapd
1614 ?        00:00:00 imapd
1615 ?        00:00:00 imapd
26997 ?        00:00:00 imapd
27012 ?        00:00:00 imapd
27013 ?        00:00:00 imapd
27014 ?        00:00:00 imapd
31974 ?        00:00:00 imapd
31975 ?        00:00:00 imapd
31976 ?        00:00:00 imapd

现在相应的milter 已经安装完毕,只需要找到socket的位置即可,

#调用spamassassin的milter
[root@mail ~]# ls /var/run/spamass.sock
/var/run/spamass.sock

#调用clamav的milter
[root@mail ~]# ls /var/run/milter/milter-clamc.socket
/var/run/milter/milter-clamc.socket

#控制发信频率的milter
[root@mail ~]# ls /var/run/milter/milter-limit.socket
/var/run/milter/milter-limit.socket

现在只需要将这些milter的相关信息写出sendmail.mc即可!
  1. vi /etc/mail/sendmail.mc
  2. INPUT_MAIL_FILTER(`milter-clamc',`S=unix:/var/run/milter/milter-clamc.socket, T=C:20s;S:20s;R:20s;E:5m')dnl
  3. INPUT_MAIL_FILTER(`milter-limit',`S=unix:/var/run/milter/milter-limit.socket, T=C:10s;S:10s;R:10s;E:10s')dnl
  4. INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl
  5. define(`confINPUT_MAIL_FILTERS', `milter-limit,milter-clamc,spamassassin')dnl
复制代码
测试,首先用垃圾邮件代码进行测试!

接下来我们看一下邮件的源码:


使用病毒邮件进行测试

查看邮件源码


接下来,我们再测试milter-limit
控制用户地址是192.168.0.1 每一分钟只能发信一封信件
  1. vi /etc/mail/access
  2. #Add
  3. milter-limit-Connect:192.168.0.1        1/1m
  4. cd /etc/mail
  5. make restart
复制代码
一分钟之内发多封信件将拒绝,只能等于或小于1

论坛徽章:
0
2 [报告]
发表于 2010-08-01 13:30 |只看该作者
推荐 使用 Extmail   一个全功能的邮件系统, 自己架设演示地址:http://xoop.3322.org:500
1、AMP ---apache(web服务) 、mysql(数据库)、php(非必需) 的简称
2、postfix --mta 邮件系统核心
3、courier-authlib--一个为courier-imap,maildrop,sasl2 提供用户信息的后台 进程序
4、courier-imap --提供pop3,pop3s,imap,imaps 服务的程序
5、amavisd-new --提供内容过滤
6、clamav -- 著名的杀毒软件
7、extmail --一个著名的webmail程序
8、extman --与extmail集成的后台管理程序
9、slockd --一个基于smtp阶段的反垃圾邮件程

论坛徽章:
0
3 [报告]
发表于 2010-08-02 11:02 |只看该作者
推荐 使用 Extmail   一个全功能的邮件系统, 自己架设演示地址:
1、AMP ---apache(web服务) 、mysq ...
jmsliao 发表于 2010-08-01 13:30


你这个网址打不开

论坛徽章:
0
4 [报告]
发表于 2010-08-02 12:54 |只看该作者
LZ强人,正好在学习sendmail

论坛徽章:
0
5 [报告]
发表于 2010-08-02 14:07 |只看该作者
因为使用动态域名绑定IP, 所以可能有时候不太稳定, 不知道为什么最近Adsl 频繁的更换IP 租约时间越来越短?  还有我是使用开放默认的http 80端口时 被Adsl 给屏蔽了,所以只能改了端口 500

论坛徽章:
0
6 [报告]
发表于 2010-08-04 15:31 |只看该作者
因为使用动态域名绑定IP, 所以可能有时候不太稳定, 不知道为什么最近Adsl 频繁的更换IP 租约时间越来越短 ...
jmsliao 发表于 2010-08-02 14:07



    很多ip段的80都被绿掉了。
不仅仅是adsl,。。

论坛徽章:
0
7 [报告]
发表于 2010-08-04 15:32 |只看该作者
lz属于传说中的顶级管理员了

挺前辈讲, 能看懂sendmail配置文件的人就是管理员做到头了

论坛徽章:
4
IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-10-09 06:20:00操作系统版块每日发帖之星
日期:2015-10-20 06:20:00IT运维版块每日发帖之星
日期:2015-11-03 06:20:00
8 [报告]
发表于 2010-08-05 12:04 |只看该作者
回复 7# Puer_Tea


    过奖了,sendmail其实不难配置,就是文档少了点

论坛徽章:
4
IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-10-09 06:20:00操作系统版块每日发帖之星
日期:2015-10-20 06:20:00IT运维版块每日发帖之星
日期:2015-11-03 06:20:00
9 [报告]
发表于 2014-06-20 18:43 |只看该作者
:wink::wink::wink::wink::wink:

论坛徽章:
0
10 [报告]
发表于 2014-12-11 11:13 |只看该作者
LZ 这是用哪个Linux,搭建的sendmail
用这个乳峰,把公司邮箱管倒了怎么办?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP