问题描述:
在系统安装完毕后,通常我们只需按照缺省配置启动sendmail邮件服务就可以用mail,outlook,foxmail等常用工具收发邮件了。
简单操作如下:
# startsrc -s sendmail -a "-bd -q30m" (启动邮件服务后台进程)
# vi /etc/inetd.conf, (uncomment the line)
pop3 stream tcp nowait root /usr/sbin/pop3d pop3d
# refresh -s inted (刷新超级守护进程,允许pop3客户端连接)
但其缺省配置存在一个隐患就是,它允许任何主机将其作为邮件传输代理。也就是说,如果有人恶意地将其smart relay 指向我们的邮件服务器,然后再发送大量的垃圾邮件请求,那么必然造成我们邮件服务器的性能下降,无法响应正常用户的服务请求,甚至导致系统瘫痪。
解决方案:
AIX系统为我们提供了灵活的方式去修改sendmail的特性以实现其强大丰富的功能,下面我们举例说明其中的anti-relay功能。
首先我们要确认系统中存在下列文件集: bos.adt.base & bos.net.tcp.adt
AIX 将产生定制sendmail配置文件的工具和宏放在
/usr/samples/tcpip/sendmail/cf
具体操作步骤如下:
#cd /usr/samples/tcpip/sendmail/cf
这里有我们需要的文件aix433.mc. 它包含我们需要定制的sendmail特性
#cp aix433.mc norelay.mc 创建它的一份拷贝
#vi norelay.mc
divert(0)dnl
OSTYPE(aix43)dnl
FEATURE(genericstable)dnl
FEATURE(mailertable)dnl
FEATURE(virtusertable)dnl
FEATURE(domaintable)dnl
FEATURE(allmasquerade)dnl
FEATURE(promiscuous_relay)dnl
FEATURE(accept_unresolvable_domains)dnl
FEATURE(accept_unqualified_senders)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(uucp)
编辑修改后如下:
#more norelay.mc
divert(0)dnl
OSTYPE(aix433)dnl
FEATURE(allmasquerade)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(uucp)
注意:
在norelay.mc中,注释是不起作用的,所以不需要的feature 一定要删除,否则在生成sendmail配置文件时会出错。
如果你还需要生成包含其他特性的sendmail.cf可以参考http://www.sendmail.org/m4/features.html
下面我们要创建sendmail.cf
#cd /usr/samples/tcpip/sendmail/cf
#m4 ../m4/cf.m4 norelay.mc > ourmail.cf
#mv /etc/sendmail.cf /etc/sendmail.cf.orig 备份原始文件
#mv ourmail.cf /etc/sendmail.cf 使用新的配置文件
#vi /etc/mail/relay-domains (写入允许relay的主机列表)
entry1...
entry2...
entry3...
举例如果你希望rshelp.com的domain中的所有主机和某台ip地址是10.100.100.1的服务器可以relay邮件那么你的配置文件看起来应该是这样。
#more /etc/mail/relay-domains.
rshelp.com
10.100.100.1
现在我们可以刷新sendmail服务进程,以使新生成的配置文件生效。
#refresh -s sendmail
我们可以查看sendmail邮件服务的状态
| #lssrc -s sendmail | |||
| Subsystem | Group | PID | Status |
| sendmail | 5424 | active | |
如果邮件服务没有启动,我们需要手工运行:#startsrc -s sendmail -a "-bd -q30m"
测试:
如果我们在10.100.100.1用outlook通过sendmail服务器(10.100.100.5)发送邮件时没有问题。但如果我们在10.100.100.2上用outlook通过sendmail服务器(10.100.100.5)发送邮件时有如下报错:(因为其ip或domain没有在sendmail邮件服务器的配置文件/etc/mail/relay-domains中声明。

如果需要让以10.100.100网段的所有主机都可以发送邮件,只需修改
/etc/mail/relay-domains 为 #more /etc/mail/relay-domains.
rshelp.com
10.100.100
然后刷新sendmail进程即可
#refresh -s sendmail
重新发送

注意事项:
此配置过程是以AIX 4.3.3为例,如果你的系统是AIX 5L,应灵活应用并注意其区别
例如 5.1 的配置文件是/etc/mail/sendmail.cf & /etc/mail/aliases, 但4.3.3的配置是/etc/sendmail.cf & /etc/aliases.