Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6962334
  • 博文数量: 637
  • 博客积分: 10265
  • 博客等级: 上将
  • 技术积分: 6165
  • 用 户 组: 普通用户
  • 注册时间: 2004-12-12 22:00
文章分类

全部博文(637)

文章存档

2011年(1)

2010年(1)

2009年(3)

2008年(12)

2007年(44)

2006年(156)

2005年(419)

2004年(1)

分类:

2005-12-03 01:47:36

目的: 搭建单独的SMTP外发服务器,从正常的邮件服务器中独立出来
要求:关闭Openrelay,没有经过身份验证不能使用smtp服务器发送邮件(本域也免谈)
状态: 以前工作进展程度,SMTP+身份验证正常工作,没有身份验证不能发送邮件给域内或域外用户。(通过把$mydestination $relay_domains设置成空实现的),存在问题,当用户发送给本域用户时,无法立即发现用户是否实际存在。需要等待一段时间后才能收到smtp的退信。

改进要求: 如果用户发邮件给本域不存在用户,系统立即提示用户不存在,且不通过验证不能发送邮件给任何人,包括域内用户。

改进方法:

    增加relay_recipient_maps,但是这个工作需要依赖于relay_domains,对于邮件系统的默认配置,如果存在 relay_domains,那么系统将会自动接受relay_domains的邮件,无论用户是否提供身份验证信息。

修改方法:
因为我的系统使用了mysql,FC4默认的postfix还不支持postfix,所以要重新编译,在互联网上逛,发现这个编译方法很方便,延续了我系统使用rpm包的习惯:
rpm -ivh postfix-2.1.6-1.src.rpm

cd /usr/src/redhat/SOURCES

bash

export POSTFIX_MYSQL_REDHAT=1
export POSTFIX_SASL=2
export POSTFIX_TLS=1

sh make-postfix.spec

exit

cd /usr/src/redhat/SPECS

rpmbuild -ba postfix.spec

cd /usr/src/redhat/RPMS/i386
这样就搞定了,呵呵

在/etc/postfix/main.cf中增加:

==============
relay_domains =  mysql:/etc/postfix/mysql-relay.cf
relay_recipient_maps = mysql:/etc/postfix/mysql-user.cf, mysql:/etc/postfix/mysql-virtual.cf
==============
上面两行关于mysql的配置,根据系统的不同,略有不同, mysql-relay.cf主要是查找 那些域名是属于 域内的(发往自己邮件服务器的)
mysql-user.cf mysql-virtual.cf 这两个文件是user表,其实就是 自己邮件服务器上的所有邮件地址列表。
修改:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_recipient, reject

最后增加一个 reject,我找了好久,最后发现增加一个 reject 就实现我的要求了,具体说明参见postfix的说明。

PS: 用过postfix后,就会不知不觉的放弃其他MTA,至少我是这样的。
阅读(2805) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~