简介:本文旨在介绍如何利用Linux服务器上的sendmail构建中小型企业的邮件服务器。
我们假定该企业采用专线接入Internet,有两台Linux服务器(Redhat6.1)
一台作为防火墙直接接入Chinanet,是通向Internet的唯一出入口,同时也作为
DNS/SMTP服务器,且申请了域名domain.com,由该防火墙服务器(DNS服务器)
对域domain.com进行解析。另一台邮件服务器是在内部网段运行,完全与外部
世界无关。作为内部局域网上用户的收/发邮件服务器。
地址:假定防火墙Linux服务器的永久外部地址为a.b.c.d(eth0),内部网卡地址
192.168.11.5(eth1),机器名为firewall.domain.com,内部的邮件服务器地址为
192.168.11.1,机器名为mail.domain.com,且注册域时填写的主机名为
dns.domain.com(a.b.c.d).
思路:先配置DNS服务器,用来解析@domain.com的域名,并指明MX记录到内部邮件
主机mail.domain.com.把这台防火墙仅作为mailrelay主机,任何从外部
世界发往@domain.com域的邮件均由它处理且relay到内部邮件主机,仅接受
@domain.com后缀的邮件进入,这样阻止了spammer发送垃圾邮件。
在内部邮件服务器上,配置Sendmail的DS部分为firewall.domain.com,任何
发往非内部员工的邮件直接送往firewall.domain.com,且设置domain.com为
本地域,任何发往@domain.com域的邮件被内部别名处理并送往内部各用户的
邮件缓冲池中。
旅行用户的考虑:
若公司员工出差在外需从公司的服务器接收邮件,一种方法是直接拨当地ISP,
然后设置接收邮件服务器为mail.domain.com,但要求mail.domain.com在外地
被解析成防火墙的外部永久地址,这样再在防火墙上设置plug-gw代理,代理
任何到防火墙外部地址的110端口的请求到内部192.168.11.1的110端口。
另一种方法,也可以再建一服务器为Linux拨入服务器,直接拨到公司来接收
邮件。
重点:Sendmail的各项配置及相关设置
一:防火墙上的Sendmail配置:
我们采用RedhatLinux6.1加Sendmail8.9.3作为操作环境:
安装操作系统和防火墙的配置略,建议采用3c905b或者Intelpro100的网卡,先配置DNS。
设置/etc/named.conf象这样:
============
zone"."{
typehint;
file"named.ca";
};
zone"0.0.127.in-addr.arpa"{
notifyno;
typemaster;
file"127.0.0";
};
zone"11.168.192.in-addr.arpa"{
notifyno;
typemaster;
file"192.168.11";
};
zone"domain.com"{
notifyno;
typemaster;
file"domain.com";
};
文件192.168.11象下面这样:
@INSOAdns.domain.com.root.mail.domain.com.(
1999092201864003600360000086400)
NSdns.domain.com.
1PTRmail.domain.com.
5PTRfirewall.domain.com.
文件domain.com象下面这样:
@INSOAdns.domain.com.root.mail.domain.com.(
1999120401864003600360000086400)
NSdns.domain.com.
Aa.b.c.d
MX10mail.domain.com.
firewallAa.b.c.d
mailAa.b.c.d
dnsAa.b.c.d
加下面的行到/etc/hosts
192.168.11.1mail.domain.commail
192.168.11.5firewall.domain.comfirewall
============
下面配置Sendmail,首先要先创建一个用来生成/etc/sendmail.cf的sendmail.mc文件,
在Redhat安装的过程中有一个默认地redhat.mc在/usr/lib/sendmail-cf/cf目录下。
我们修改为如下:
===========
divert(-1)
dnlThisisthemacroconfigfileusedtogeneratethe/etc/sendmail.cf
dnlfile.Ifyoumodifytheifileyouwillhavetoregeneratethe
dnl/etc/sendmail.cfbyrunningthismacroconfigthroughthem4
dnlpreprocessor:
dnl
dnlm4/etc/sendmail.mc>/etc/sendmail.cf
dnl
dnlYouwillneedtohavethesendmail-cfpackageinstalledforthisto
dnlwork.
include(`../m4/cf.m4')
define(`confDEF_USER_ID',``8:12'')
OSTYPE(`linux')
undefine(`UUCP_RELAY')
undefine(`BITNET_RELAY')
define(`confAUTO_REBUILD')
define(`confTO_CONNECT',`1m')
define(`confTRY_NULL_MX_LIST',true)
define(`confDONT_PROBE_INTERFACES',true)
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
define(`ALIAS_FILE',`/etc/mail/aliases')
FEATURE(`smrsh',`/usr/sbin/smrsh')
FEATURE(`mailertable',`hash-o/etc/mail/mailertable')
FEATURE(`virtusertable',`hash-o/etc/mail/virtusertable')
FEATURE(`domaintable',`hash-o/etc/mail/domaintable')
FEATURE(redirect)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(`access_db')
FEATURE(`blacklist_recipients')
dnlWestronglyrecommendtocommentthisoneoutifyouwanttoprotect
dnlyourselffromspam.However,thelaptopandusersoncomputersthatdo
dnlnothav24x7DNSdoneedthis.
dnlFEATURE(`accept_unresolvable_domains')
dnlFEATURE(`relay_based_on_MX')
=============
然后用m4redhat.mc>sendmail.cf生成sendmail.cf放到/etc目录下。且做如下操作:
1.更改/etc/sendmail.cf中Fw定义为Fw/etc/mail/sendmail.cw
并创建一个空文件sendmail.cw(#touch/etc/mail/sendmail.cw)
2.更改/etc/mail/mailertable象下面这样:
domain.comrelay:[192.168.11.1]
并运行makemaphash/etc/mail/mailertable.db