免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: marion
打印 上一主题 下一主题

[Mail] RHEL4上安装基于postfix的全功能邮件服务器(全部使用目前最新源码包构建) [复制链接]

论坛徽章:
0
521 [报告]
发表于 2008-01-31 09:04 |只看该作者
安装Spam Locker

前面安装的SpamAssassin是基于"邮件内容"来进行判别的垃圾邮件过滤系统,
而Spam Locker是基于邮件"发送行为"来进行判别的垃圾邮件过滤系统。

两种模式的垃圾邮件过滤系统孰优孰劣在此不做评判,请安装者自行选择。
两个过滤系统可分别安装,也可以并存运行。

Spam Locker简称slockd,
下载地址:http://www.extmail.org/download/
Spam Locker要用到的perl模块:
Net:NS
Digest::MD5
Digest::SHA1
Digest::HMAC
Net::IP

安装步骤
解包然后将slockd-xxxx 改名并移动到/usr/local目录,
# tar -zxvf slockd-0.10.tar.gz
# mv slockd-0.10 slockd
# mv slockd /usr/local/
配置slockd:
进入/usr/local/slockd目录,编辑config/main.cf 配置文件,每个配置参数都有简短的注释,如果要修改的话,请仔细阅读注释后方可修改。
默认情况下,slockd将只监听127.0.0.1(localhost)的10030端口,公网是无法访问这一服务的,
这样做是为了安全起见,防止被其他有心人利用来做坏事。默认的日志将在标准的输出和标准错误输出(STDERR)显示。

将如下行去掉注释:
setsid  1
使之以后台的方式运行。
接下来,可以配置slockd的日志路径和pid文件路径,默认配置为:
log_file   /var/log/slockd.log
pid_file   /var/run/slockd.pid

启动slockd:
# /usr/local/slockd/slockd-init start
添加开机时自动执行
# echo "/usr/local/slockd/slockd-init start" >> /etc/rc.local

进入/usr/local/slockd/tools 目录,输入:
perl policy_sig -h localhost -p 10030 --helo FOOBAR \
--ip 192.168.0.1 --from test@foo.com --to test@bar.com
此时,程序应该返回如下错误信息:
action=504 <FOOBAR>: rejected, see http://bl.extmail.org/cgi/why?fqdn
这表示slockd初步的正常工作了。
配置MTA:
编辑/etc/postfix/main.cf
将“check_policy_service inet:127.0.0.1:10030”记录增加到smtpd_recipient_restrictions 里,
一个建议的配置如下:
########## slockd ##########
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_non_fqdn_hostname,
   reject_non_fqdn_sender,
   reject_non_fqdn_recipient,
   reject_unauth_destination,
   reject_unauth_pipelining,
   reject_invalid_hostname,
   check_policy_service inet:127.0.0.1:10030
########## slockd end ##########
配置完毕后,重新启动postfix。
注意的是,上面的配置是将slockd的查询放到最后,这也是进一步提高资源利用率的办法,
因为有部分功能postfix已实现了,所以就先由postfix检测,如果检测不到再由slockd完成。

[ 本帖最后由 柳拂风 于 2008-1-31 11:07 编辑 ]

论坛徽章:
0
522 [报告]
发表于 2008-01-31 09:11 |只看该作者
增加Chinese_rules.cf支持
Chinese_rules.cf是教育科研网的反垃圾邮件小组对大量垃圾邮件和正常邮件进行分析后得出的一个关键字/分数规则集,
用于处理中文(简体)垃圾邮件。这里我们通过如下命令增加到系统:
# wget -N -P /usr/share/spamassassin http://www.ccert.edu.cn/spam/sa/Chinese_rules.cf

运行以下调试命令以确认amavisd没有错误:
# /usr/sbin/amavisd debug
如果没有异常提示或报错退出则表示一切都正常,按ctrl+c终止。

重启amavisd服务。

也可以将获取Chinese_rules.cf 的命令添加到crond中以便更新。








2008年02月26日更改:
本人经过一段时间的使用,觉得Chinese_rules.cf 的词汇量太少了(看文件的日期两年没有更新了),对中文垃圾邮件的过滤效果不是很理想(这只是本人的感觉,实际效果请自行测试)。
现已改用另外的规则表(见附件)
将附件中的cf文件复制到/usr/share/spamassassin下,
#unzip spamassassin-rules.zip
# cd spamassassin-rules/
# cp *.cf /usr/share/spamassassin/
重启spamassassin和amavisd

这三个规则表来源于网上,原作者是“疯狂老头”。
详见http://www.extmail.org/forum/thread-5341-1-1.html
(原规则表对垃圾词汇的打分很高,本人已对这三个表的分值做了修改,降低到原来的三分之一以下。
如果你知道spamassassin的分值是怎么回事,并希望采用原来的分值,请到上面的地址下载原文件。)



坛子为什么不能重新上传附件的?
想更新一下,变成两个附件了!汗~~

[ 本帖最后由 柳拂风 于 2008-3-7 11:49 编辑 ]

spamassassin-rules.zip

32.66 KB, 下载次数: 143

spamassassin-rules.zip

32.74 KB, 下载次数: 168

论坛徽章:
0
523 [报告]
发表于 2008-01-31 09:19 |只看该作者
增加FCGI支持

为extmail增加FCGI的支持,主要是为了获得优异的web效能,克服CGI不能应付大量访问及低效率的缺陷。
据说,FCGI的页面效率是CGI模式的十倍以上。

安装mod_fastcgi
mod_fastcgi 是针对Apache Web服务器的FCGI支持模块,
下载地址http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
# tar -zxvf mod_fastcgi-2.4.6.tar.gz
# cd mod_fastcgi-2.4.6
# cp Makefile.AP2 Makefile
# make top_dir=/usr/local/apache install

除了Apache需要FCGI的支持外,extmail也需要相应的perl-FCGI模块。
下载地址http://dries.ulyssis.org/rpm/packages/perl-FCGI/info.html
用以下命令安装:
# rpm -ivh perl-FCGI-0.67-1.2.el5.rf.i386.rpm
(请安装跟你的操作系统版本对应的安装包)

在apache的配置文件的Extmail虚拟主机部分,添加如下内容:
LoadModule fastcgi_module modules/mod_fastcgi.so
<Ifmodule mod_fastcgi.c>
FastCgiExternalServer /var/www/extsuite/extmail/dispatch.fcgi -host 127.0.0.1:8888
</Ifmodule>
同时,去掉如下行:
ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/
Alias /extmail /var/www/extsuite/extmail/html
ScriptAlias /extman/cgi/ /var/www/extsuite/extman/cgi/
Alias /extman /var/www/extsuite/extman/html

改为:
Alias /extmail/cgi/ /var/www/extsuite/extmail/dispatch.fcgi/
Alias /extmail /var/www/extsuite/extmail/html
Alias /extman/cgi/ /var/www/extsuite/extmail/dispatch.fcgi/
Alias /extman /var/www/extsuite/extman/html
<Location "/extmail/cgi">
SetHandler fastcgi-script
</Location>
<Location "/extman/cgi">
SetHandler fastcgi-script
</Location>

然后编辑/var/www/extsuite/extmail/dispatch-init文件,修改如下:
SU_UID=vmail
SU_GID=vmail
BASE=/var/www/extsuite/extmail

启动fastcgi server:
# /var/www/extsuite/extmail/dispatch-init start
如果没有意外将启动5个dispatch.fcgi守护进程.
添加自启动:
# echo "/var/www/extsuite/extmail/dispatch-init start" >> /etc/rc.d/rc.local
重启apache
# /usr/local/apache/bin/apachectl restart

[ 本帖最后由 柳拂风 于 2008-2-17 15:02 编辑 ]

论坛徽章:
0
524 [报告]
发表于 2008-01-31 09:24 |只看该作者
在楼主的帖子里发上面的东西实在是很冒昧,还请见谅。

我准备研究把postfix套装当作反垃圾邮件网关来用,研究成功的话,再发上来给大家看看。

论坛徽章:
0
525 [报告]
发表于 2008-01-31 09:29 |只看该作者

回复 #521 柳拂风 的帖子

我后续想做的工作其实就是SpamLocker,FastCGI和SMTPS、pops,只是最近没有时间一直没时间做,柳兄高义,既然已经有成果,拿出来共享这是大家风范,不必谈什么“见谅”。

回头测试一下,而后把它们加到原帖中去。到时候借用了,也请不要见怪。

论坛徽章:
0
526 [报告]
发表于 2008-02-02 10:12 |只看该作者
设置反垃圾邮件网关

将此邮件系统套装设置成一个反垃圾邮件网关来使用,为没有过滤功能的邮件系统提供过滤服务。
前提是本postfix系统主机具有公网ip或做了端口映射(总之是能直接接收来自internet的邮件),
并能访问到旧邮件系统主机。

本例如下:
一个旧邮件系统example.com,
ip=211.147.xx.xx
已作如下域名解析
mail.example.com
pop3.example.com
smtp.example.com
都指向211.147.xx.xx
并做MX记录指向mail.example.com

因系统较老,没有垃圾邮件过滤功能,上面又有大量用户,不方便更换系统,
而购买商业反垃圾邮件网关又价格昂贵,拟使用本postfix系统来为其作垃圾邮件过滤。

旧邮件系统无须作任何更改,所有操作都是针对本postfix系统的。

新建域名解析mailgw.example.com,使其指向本postfix系统主机ip,
并修改原MX记录,使其指向mailgw.example.com

修改本postfix系统的配置:
# vi /etc/postfix/main.cf
在后面加入两行
relay_domains = example.com
transport_maps = hash:/etc/postfix/transport_maps

新建文件
# vi /etc/postfix/transport_maps
加入一行
example.com  relay:[211.147.xx.xx]

生成db文件:
# /usr/local/postfix/sbin/postmap /etc/postfix/transport_maps
查看确认db文件已生成:
# ls -l /etc/postfix/transport_maps.db
-rw-r--r-- 1 root root 12288 02-01 14:45 /etc/postfix/transport_maps.db

重启postfix,
使用第三方邮件系统(比如网易邮箱)发送邮件到user@example.com进行测试,
查看/var/log/maillog,
成功的话可以看到如下信息:
Feb  1 17:25:43 vtest postfix/smtp[9330]: 81CAC458400: to=<user@example.com>, relay=211.147.xx.xx[211.147.xx.xx]:25, delay=0.41, delays=0.26/0.03/0.08/0.05, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 3F57846098D)
Feb  1 17:25:43 vtest postfix/qmgr[9319]: 81CAC458400: removed

表明发往user@example.com的邮件已经被转发到211.147.xx.xx上了。
登陆旧邮件系统进行查收。

注:此邮件网关仅对来自internet的邮件进行过滤,而用户日常收发邮件仍然直接使用旧的系统,这样做对旧邮件系统几乎没有影响。
(参考资料:《POSTFIX权威指南》第九章)

论坛徽章:
0
527 [报告]
发表于 2008-02-02 10:34 |只看该作者
配置DNS缓存

发送邮件时,系统必须到DNS服务器上进行查询,如果自己有DNS服务器或者DNS缓存,会大大加快域名查询速度。
这里安装的是djbdns,如果你装有bind的话,就不要装这个了。
进入本安装包install-djbdns-rpm目录(见附件),运行install.sh安装,
注:install.sh最后两行的ip地址是广西电信的DNS服务器地址,运行前请修改为你所在区域的dns服务器地址。
(你也可以自己去下载djbdns的源码来编译安装,下载地址及安装教程 http://cr.yp.to/djbdns.html,这个貌似很麻烦~~)

启动
# /etc/init.d/djbdns start
启动正常的话会在53端口监听
验证djbdns是否起作用:
# dig www.163.com (别的网站域名也可以)
再执行一次上述命令,应该能感觉到第二次运行时的响应速度明显比第一次快。

刷新DNS缓存:
有时候互联网上的DNS记录已经发生改变了,而你的DNS缓存还是旧的,可用如下命令来刷新
# /usr/bin/svc -t /service/dnscache
你也可以将上述命令写个脚本添加到crontab进行定期刷新:
# vi /root/flush_dns.sh
添加下行
/usr/bin/svc -t /service/dnscache
# chmod 755 /root/flush_dns.sh
# crontab -e
添加下行
1 1 * * * /root/flush_dns.sh


(这个本不应属于postfix邮件服务器的一部分的,加进来只是为了方便一点。如果你的邮件数量不是很多的话,作DNS缓存的意义不大;如果你经常往外大量群发邮件,就比较有用了。)

install-djbdns-rpm.tar.gz

156.59 KB, 下载次数: 145

djbdns的rpm安装包

论坛徽章:
0
528 [报告]
发表于 2008-02-02 10:48 |只看该作者
坛子里很冷清了啊
大家都放假回家过年了吧
在此给各位拜个年先~

论坛徽章:
0
529 [报告]
发表于 2008-02-02 12:12 |只看该作者
年底了,太忙了,

好久没来了,

没想到来了这么多高人!

继续学习!

论坛徽章:
0
530 [报告]
发表于 2008-02-02 12:17 |只看该作者

回复 #506 falalala 的帖子

第一个命令是指定以postfix的身份用来登录的,结果显然是给定的密码或者是用户身份错误而无法登录。

第二个命令类同第一个,不过密码要是用引号引起来可能会更好些。

第三个就是个错误的使用方法。

楼上解释过,看来咱们两个出现了同样的错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP