小型企业的Sendmail邮件服务器应用实例

一、
前言

  本文旨在介绍如何利用Linux服务器上的sendmail构建中小型企业的邮件服务器。
我们假定该企业采用专线接入Internet,有两台Linux服务器(Redhat
6.1
),一台作为防火墙直接接入Chinanet,是通向Internet的唯一出入口,同时该企业的域名为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.
把这台防火墙仅作为mail
relay主机,任何从外部世界发往@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配置:


  我们采用Redhat
Linux
6.1

Sendmail
8.9.3作为操作环境:


  安装操作系统和防火墙的配置略,建议采用3c905b或者Intel
pro100
的网卡,先配置DNS。

设置/etc/named.conf象这样:

============

zone
"."{

type
hint;

file
"named.ca";

};

zone
"0.0.127.in-addr.arpa"{

notify
no;

type
master;

file
"127.0.0";

};

zone
"11.168.192.in-addr.arpa"{

notify
no;

type
master;

file
"192.168.11";

};

zone
"domain.com"
{

notify
no;

type
master;

file
"domain.com";

};


文件
192.168.11象下面这样:

@
IN
SOA
dns.domain.com.
root.mail.domain.com.
(

1999092201
86400
3600
3600000
86400
)

NS
dns.domain.com.

1
PTR
mail.domain.com.

5
PTR
firewall.domain.com.


文件

domain.com象下面这样:

@
IN
SOA
dns.domain.com.
root.mail.domain.com.
(

1999120401
86400
3600
3600000
86400
)

NS
dns.domain.com.

A
a.b.c.d

MX
10
mail.domain.com.

firewall
A
a.b.c.d

mail
A
a.b.c.d

dns
A
a.b.c.d


加下面的行到/etc/hosts

192.168.11.1
mail.domain.com
mail

192.168.11.5
firewall.domain.com
firewall

============

下面配置Sendmail,首先要先创建一个用来生成/etc/sendmail.cf的sendmail.mc文件,在Redhat
安装的过程中有一个默认地redhat.mc在/usr/lib/sendmail-cf/cf目录下。

我们修改为如下:

===========

divert(-1)

dnl
This
is
the
macro
config
file
used
to
generate
the
/etc/sendmail.cf

dnl
file.
If
you
modify
thei
file
you
will
have
to
regenerate
the

dnl
/etc/sendmail.cf
by
running
this
macro
config
through
the
m4

dnl
preprocessor:

dnl

dnl
m4
/etc/sendmail.mc
>
/etc/sendmail.cf

dnl

dnl
You
will
need
to
have
the
sendmail-cf
package
installed
for
this
to

dnl
work.

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)

分享到