免费注册 查看新帖 |

Chinaunix

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

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

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

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

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

回复 #521 柳拂风 的帖子

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

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

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

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

好久没来了,

没想到来了这么多高人!

继续学习!

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

回复 #506 falalala 的帖子

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

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

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

楼上解释过,看来咱们两个出现了同样的错误。

论坛徽章:
0
529 [报告]
发表于 2008-02-13 09:13 |只看该作者
忽然发现,
这里边没用到php呀,装它干嘛呢?

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

请教大大们一个问题啊!!smtpd.conf中%u的值是怎么取的?

在sasl认证这块我的变量取值是错的,不知道怎么回事.配置文件如下:
=====================
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: plain login
sql_engine: mysql
sql_hostnames: localhost
sql_user: postfix
sql_passwd: postfix
sql_database: postfix
sql_select: SELECT password FROM mailbox WHERE username='%u@%r' and domain='%r' and active='1'
=======================
因为sasl认证总是不能成功,查询日志message是 无法查询到结果.
Feb 13 21:29:25 hirain sshd(pam_unix)[4488]: session opened for user root by root(uid=0)
Feb 13 21:30:02 hirain postfix/smtpd[4372]: sql plugin: no result found
Feb 13 21:30:02 hirain postfix/smtpd[4372]: sql plugin: no result found

查看mysql查询日志.配置文件中username='%u@%r' 的取值是错的.

080213 22:23:15     243 Connect     postfix@localhost on postfix
                    243 Quit
                    244 Connect     postfix@localhost on postfix
                    244 Quit
                    245 Connect     postfix@localhost on postfix
                    245 Query       START TRANSACTION
                    245 Query       SELECT password FROM mailbox WHERE username='hyang.com@domain.com' and domain='domain.com' and active='1'
                    245 Query       SELECT password FROM mailbox WHERE username='hyang.com@domain.com' and domain='domain.com' and active='1'
                    245 Query       COMMIT
                    245 Quit
================================
我要认证邮件是hyang@domain.com但是查询时用户名 %u 取值 成了 "hyang.com" 了. mysql数据库中是没问题的.
我就是想知道smtpd.conf中的 %u [被获取或存储属性的用户的用户名].这个用户名应该是 hyang 才对,不知道它是怎么取值的?我应该改什么?
是否能够支持表达式,把后边的.com去掉,  但是官方主业上说只支持4各变量:  %u  %r  %p  %v,没有其它的了..
我该怎么办,谁来救救我啊!!!!!!!!!!!!!!!!!


[ 本帖最后由 yh81521 于 2008-2-14 11:34 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP