sendmail在企业网中的应用

Sendmail配置

25.1 sendmail概述

25.1.1 sendmail基本概念

发信服务器:smtp

收信服务器: pop/imap

MTA:邮件传输代理,邮件server的总称。

MUA:邮件用户代理,收信的客户端软件的总称。(oe/foxmail) 就是收受邮件主机的电子邮件,以及提供使用者浏览与编写邮件的功能。

25.1.2 邮件格式

From:[email protected]

To:[email protected]

Subject to :hi

Body:welcome to here!

25.2 sendmail安装

25.2.1 rpm包安装sendmail

Sendmail默认已经安装好了,只能在主机上,以及主机上的用户之间收发电子邮件,不能通过邮件域名,以及pop3功能收发电子邮件,如果需要使用其它功能还需要对sendmail进行配置。

1.安装sendmail工具

rpm -q sendmail

rpm -q sendmail-cf

rpm -q sendmail-doc

rpm -qa |grep sasl

cyrus-sasl-lib-2.1.21-10

cyrus-sasl-devel-2.1.21-10

cyrus-sasl-plain-2.1.21-10

cyrus-sasl-2.1.21-10

2.M4工具安装

rpm -qa |grep m4   /*检查m4工具的安装*/

m4-1.4.4-1.2.1     /*默认情况下该工具没有安装,需要安装才能对sendmail进行其它配置,非常关键与重要。*/

3.准备dns资源记录

详细请见18.2.4自定义区域文件

25.2.2 pop3/imap安装

1.redhat linux9的pop3/imap安装

rpm -q dovecot

dovecot-1.0-0.beta2.7

#默认的情况下pop/imap服务的功能没有安装,需要另外安装才行,对于FC/Redhat服务器版式的pop服务器,需要安装以上文件包。由于以上文件包有一定的软件依赖性,需要先安装perl再安装mysql,才能无错误提示安装dovecot软件包。

25.2.3 sendmail服务启动

Sendmail服务是独立方式来进行启动的。Sendmail服务的启动需要可以通过以下方式来进行。

chkconfig sendmail on

service sendmail start

sendmail -bd �Cq12h

后跟的参数解释如下:

-b:设定Sendmail服务运行于后台。

-d:指定Sendmail以Daemon(守护进程)方式运行。

-q:设定当Sendmail无法成功发送邮件时,就将邮件保存在队列里,并指定保存时间。上面的12h表示保留12小时。

25.3 sendmail邮件配置

25.3.1 sendmail配置文件介绍

rpm -qc sendmail

/etc/mail/access             /*允许转发的域名与IP地址*/

/etc/mail/local-host-names   /*域名后缀*/

/etc/mail/sendmail.cf        /*sendmail配置文件*/

/etc/mail/sendmail.mc        /*sendmail模板文件*/

/etc/rc.d/init.d/sendmail    /*sendmail服务启动脚本*/

25.3.2 /etc/mail/access

/etc/mail/access中加入允许sendmail进行中继或转发的邮件的域名与地址。否则sendmail不会把该邮件进行转发出去。默认只有127.0.0.1即是本地邮件进行转发,所以需要修改以下文件。

vi /etc/mail/access

192.168.1                      RELAY

mail.koumm.com            RELAY

koumm.com                   RELAY

localhost                        RELAY

127.0.0.1                       RELAY

localhost.localdomain     RELAY

修改完以后还需要对以上文件进行hash编码才行。

Makemap hash access.db < access

25.3.3 /etc/mail/local-host-names

/etc/mail/local-host-names是申明sendmail可以为哪几个域发送电子邮件。

vi /etc/mail/local-host-names

koumm.com

mail.koumm.com

abc.com

#sendmail可以为哪几个域服务。

25.3.4 /etc/mail/sendmail.cf

/etc/mail/sendmail.cf是sendmail的配置文件,该文件是由sendmail.mc模板文件创建而成的,为了实现非本机的SMTP/POP/IMAP收发功能。需要修改该模板文件,然后再由模板文件创建配置文件。

vi /etc/mail/sendmail.mc

1. 用户邮件的大小限制

原来限制为2MB,建议改为20MB,注意这里容量单位为字节,2000000=2M,20000000=20M

define(`UUCP_MAILER_MAX', `20000000')dnl

2. 邮箱接收邮件的地址范围

原来该命令行中地址为127.0.0.1,这样只能收本机系统产生的邮件,改为通配地址0.0.0.0,表示允许任意地址的计算机通过此邮件服务器发送邮件,或根据具体情况修改,必须要修改,否则pop发送功能不能实现。

DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0,Name=MTA' )dnl

3. 设置本地邮箱的域名

默认是localhost.localdomain,在outlook中输入用户邮箱时会自动显示本域名信息,需要修改为本地域名地址。

LOCAL_DOMAIN(`koumm.com')dnl

dnl MASQUERADE_AS(`koumm.com')dnl

m4 sendmail.mc > sendmail.cf /*通过模板生成配置文件*/

25.3.5 邮件别名

一般情况下,电子邮件出现问题的时候,我们需要把出错的邮件头发送到本机的postmaster用户,但是也许你的系统上有多个系统管理员,因此每个人都需要得到一份这个邮件头的拷贝。这种情况下就需要使用用户别名文件了。

创建别外文件,也就是可以为哪些用户代收邮件的功能。

makemap hash aliases.db < aliases

#生成数据库文件,以后面添加别名用户做准备。

1.一般别名

aliases文件的格式是 邮件别名:实际用户名

如果一个别名有多个用户就用逗号分开,每个别名一行。

postmaster:supervisor,manager

2.自动转发

别名还可以用在这样的情况,即定义自动的邮件转发。例如,某个用户以前在你的系统上接受电子邮件,现在他有了一个新的电子邮件,希望发到你的机器上的邮件自动被转发到他新的电子邮件地址上,那么,可以使用类似这样的别名方式:(假设你的机器是[email protected])

joe: [email protected]

以后发给[email protected]的电子邮件就自动中转到[email protected]。注意左边自动加上你的机器名字,所以左边只能是账号名字,不能是全限定邮件地址。

3. 重定向

另一个常用的办法是重定向。如果你在模板文件中定义了REDIRECT特性,那么可以使用这个功能。例如,某个人在你的机器上开了一个账户tom,后来迁移到[email protected]。那么,你可以将其别名写成

tom: [email protected]

示例:

vi /etc/mail/aliases

root:redhat

joe: [email protected]

tom: [email protected]

newaliases  将以上别名初始化。

/etc/aliases: 76 aliases, longest 10 bytes, 765 bytes total

25.3.6 用户认证

要实现用户认证的功能,需要修改sendmail配置文件,FC5 linux sendmail默认已经开启了认证功能,但是认证服务没有开启,需要手动开启。

如果发送的邮件是对linux主机上的用户发的,是不需要经过认证的。对于发送到非本域的电子邮件是需要进行发送前的认证的,如发送到互联网上的电子邮件。

1.开启认证服务

chkconfig --list |grep sasl

saslauthd       0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭

chkconfig saslauthd on   /*开机自动开启认证服务*/

service saslauthd start  /*运行认证服务*/

2.配置认证服务

vi /etc/mail/sendmail.mc

#修改以下内容,如果前面有dnl把前面的dnl删除掉,才能成功。

dnl # The following allows relaying if the user authenticates, and disallows

dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links

#注,这里要把原来的p改成y

define(`confAUTH_OPTIONS', `A y')dnl

#是使sendmail不管access文件中如何设置,都能 relay 那些通过EXTERNAL

#LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件。

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

#confAUTH_MECHANISMS"是确定系统的认证方式,OE只支持login

define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

#注释掉这一行,这一行作用是在25口发送电子邮件。

#dnl DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

#修改以下内容,把认证口也改在25口。

#dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl

#去掉行首的注释符,并且将内容修改成Port=25:

DAEMON_OPTIONS(`Port=25, Name=MSA')dnl

m4 sendmail.mc > sendmail.cf

#以下配置一定要做。思路就是通过模板文件生成配置文件。

3.检测认证开启

#如果出现250-AUTH LOGIN PLAIN说明认证服务开始成功。

netstat -tnl|grep 25

telnet koumm.com 25

Trying 192.168.1.3...

Connected to koumm.com (192.168.1.3).

Escape character is '^]'.

220 localhost.localdomain ESMTP Sendmail 8.13.5/8.13.5; Tue, 3 Feb 2009 21:42:34 +0800

ehlo koumm.com         /*手动输入内容*/

250-localhost.localdomain Hello redhat.koumm.com [192.168.1.3], pleased to meet you

250-ENHANCEDSTATUSCODES

250-PIPELINING

250-8BITMIME

250-SIZE

250-DSN

250-ETRN

250-AUTH LOGIN PLAIN

250-DELIVERBY

250 HELP

25.3.7 smtp命令测试发信

1.测试邮件发送

telnet koumm.com 25

Trying 192.168.1.3...

Connected to koumm.com (192.168.1.3).

Escape character is '^]'.

220 localhost.localdomain ESMTP Sendmail 8.13.5/8.13.5; Tue, 3 Feb 2009 21:42:34 +0800

mail from:[email protected]     /*从哪里发的*/

rcpt to:[email protected]     /*发到哪里去*/

data                         /*内容区域标志,下面为正文内容*/

subject:hello                /*邮件主题,可以没有主题。*/

hello!

.                  /*点号结束邮件内容*/

quit               /*退出*/

2.Smtp其它命令补充

HELO:<地址>

MAIL FROM:<发件人Email地址>

RCPT TO:<收信人的E-mail地址>

VRFY:<Email地址> 验证其后的电子邮件地址的正确性

DATA

Subject:<主题内容><回车>,

.<回车> 结束邮件的编辑

RSET 中止发信操作,删除输入内容。

QUIT

3.用户接收

收信可以用以下方式进行,也可以用pop命令直接接收也可以。

su - redhat

mail               /*收信*/

25.4 pop3服务配置

pop3服务,不同的版本的linux中POP程序都不相同。Fc5与redhat企业版采用是dovecot程序来实现pop/imap服务。

redhat linux9中采用的是imap来实现pop/smtp服务。

25.4.1 dovecot程序pop/imap配置

dovecot中安装好后,就可以提供pop3/imap服务了,不需要单独配置,dovecot配置文件/etc/dovecot.conf

vi /etc/dovecot.conf

#只需要修改以下内容,其它不需要动。

protocols = imap imaps pop3 pop3s

listen = *

25.4.2 imap程序pop/imap配置

imap程序的安装配置主要是在redhat linux9系统中,其中安装好imap程序后,pop/imap服务的配置文件就已经安装好了,需要对其进行配置才能使用。注明:linux9中的pop服务的启动是采用超级守护程序xinetd来进行启动的。

1.安装imap

rpm -ivh imap-2001a-18.i386.rpm

2.配置pop3

vi /etc/xinetd.d/ipop3

default: on

# description: The telnet server serves telnet sessions; it uses \

#       unencrypted username/password pairs for authentication.

service ipop3

{

        disable = no    把原来的yes改成no就OK

        flags           = REUSE

        ....       

        wait            = no

}

/etc/rc.d/init.d/xinetd restart

注:对于redhat linux9的配置可能与现在的新系统不一样,但是相关原理一致,可以在不同的环境中采用不同的方法来实现。

25.4.3 outlook测试收发信

打开Outlook Express,修改你的账号属性,在服务器选项,选取我的smtp服务器需要认证,其它配置根据向导进行。

对于sendmail配置认证功能,找了很多的文章,进行实践,但是在oe中怎么就不能够实现,因为验不验证都可以实现收发邮件,是不是sendmail本身的问题还是怎么回事,这个问题留待以后再解决了。

解决:已经更新了配置。对于发送到互联网的邮件需要选择身份验证。Linux主机上用户之间的邮件发送不需要认证。

25.4.5 pop命令测试收信

1.测试邮件发送

#红色为命令,后面为参数

telnet koumm.com 110

Trying 192.168.129.20...

Connected to 192.168.129.20.

Escape character is '^]'.

+OK POP3 [192.168.129.20] v2001.78rh server ready

user redhat   /*邮箱的用户名*/

+OK User name accepted, password please

pass redhat   /*邮箱的密码*/

+OK Mailbox open, 1 messages

list          /*显示信件个数、序号和每个信件的大小*/

+OK Mailbox scan listing follows

1 608         /*邮件序号,以及邮件占用的字节数*/

.

stat          /*用户共有多少封信件在信箱中*/

+OK 1 608

retr 1        /*返回第一封信的全部内容*/

+OK 608 octets

Return-Path: <[email protected]>

Received: from localhost.localdomain (redhat [127.0.0.1])

        by localhost.localdomain (8.12.8/8.12.8) with SMTP id 31812

        for <[email protected]>; Wed, 11 Feb 2009 20:31:03 +0800

Received: (from root@localhost)

        by localhost.localdomain (8.12.8/8.12.8) with SMTP id 31812

        for [email protected]; Wed, 11 Feb 2009 20:31:03 +0800

Date: Wed, 11 Feb 2009 20:31:03 +0800

From: root <[email protected]>

Message-Id: <[email protected]>

To: [email protected]

Subject: book

Status:  

book

book

book

yes

.

quit

+OK Sayonara

Connection closed by foreign host.

2.其它命令

USER <用户名>

PASS <密码>

STAT     将告诉用户共有多少封信件在信箱中。

LIST     显示信件个数、序号和每个信件的大小。

TOP n m  显示第n个信件前m行的内容。

RETR n 可以显示第n个信件的全部内容。

DELE n 删除指定的第n个信件。

REST n 恢复被删除的n个信件。

LAST 显示下一个信件的编号。

NOOP 不执行任何操作,仅用来测试服务器的响应是否正常。

QUIT 退出POP3服务器,结束信件查阅过程。

你可能感兴趣的:(邮件,server,foxmail,的,客户端软件)