天天看點

sendmail在企業網中的應用(上)

一:sendmail概述:

Sendmail是目前使用最為廣泛的一種E-mail伺服器,是最重要的郵件傳輸代理程式。了解電子郵件的工作模式是非常重要的。一般情況下,我們把電子郵件程式分解成使用者代理,傳輸代理和投遞代理。當使用者試圖發送一封電子郵件的時候,他并不能直接将信件發送到對方的機器上,使用者代理必須試圖去尋找一個信件傳輸代理,把郵件送出給它。信件傳輸代理得到了郵件後,首先将它儲存在自身的緩沖隊列中,然後,根據郵件的目标位址,信件傳輸代理程式将找到應該對這個目标位址負責的郵件傳輸代理伺服器, 并且通過網絡将郵件傳送給它。對方的伺服器接收到郵件之後,将其緩沖存儲在本地,直到電子郵件的接收者檢視自己的電子信箱。可以看到,一個郵件傳輸代理的主要工作是監視使用者代理的請求,根據電子郵件的目标位址找出對應的郵件伺服器,将信件在伺服器之間傳輸并且将接收到的郵件緩沖或者 送出給最終投遞程式。

二:sendmail與dns:

電子郵件(email)伺服器與DNS系統是始終分不開的,如果你要發電子郵件,就得通過郵件(email)伺服器幫你将信件送出去。由于IP位址相對難以記憶,是以我們要有域名與IP位址的對應,這就是DNS系統,是以在收發電子郵件的過程中要用到DNS系統域名解析。DNS資料中,與電子郵件相關的是MX記錄。一般來說,排在前面的的MX伺服器的優先級别比較高由于MX後可以接數字,是以,一個域名或一台主機可以有多個MX記錄,這樣就起到了備援功能,當一台郵件伺服器出現問題時,由于有多個MX記錄,是以信件不會被直接退回,而是轉到下一個設定MX記錄的主機并暫存在該處,等主要郵件伺服器恢複正常之後,這個設定MX記錄的主機将會把郵件傳送到目的地,如此就起到了異地救援作用。

三:郵件系統結構:

MUA(mail user agent)郵件使用者代理:MUA是一個郵件系統的用戶端程式,提供閱讀、發送和接收電子郵件的使用者接口,MUA是郵件系統中與使用者直接互動的程式。在windows下,常用的有microsoft的outlook,國産的foxmail,在linux下有evolution以及firefox等軟體包。

MTA(mail submission agent)郵件傳輸代理:郵件傳輸代理負責郵件的存儲和轉發,MTA監視使用者請求,根據電子郵件的目标位址找到對應的電子郵件伺服器。在linux下常用 的MTA有sendmail(速度較慢)以及postfix(速度較快)等。

MDA(mail delivery agent)郵件投遞代理:主要的功能是将MTA接收的信件依照信件的流向放置到本地賬戶下的郵件檔案中,或者再經由MTA将信件送到下一個MTA。在linux下常用的MDA有mail.local、promail等。

MAA(mail access agent)郵件通路代理:MAA使用者将使用者連接配接到系統郵件庫,使用pop或者imap協定接收郵件。linux下常用的有dovecot軟體包等

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286290AChK.png"></a>

四:郵件系統所使用的協定:

SMTP:簡單郵件傳輸協定:SMTP隻負責電子郵件的傳送,其使用的端口是25。他是目前internet上傳輸電子郵件的标準協定。

POP:郵局協定:有版本2和3,目前大多使用版本3。是接收電子郵件客戶機和伺服器之間的協定。用戶端程式連接配接到伺服器的端口号110.

IMAP:網際消息通路協定。目前版本為4。他提供友善的下載下傳服務,支援pop協定所具有的全部功能。端口号是143.

案例:在136.com域sendmail伺服器上建立賬戶user1和user2,在sina.com域上建立user3和user4,實作這些使用者間的郵件轉發。

拓撲方案:

<a href="http://blog.51cto.com/attachment/201209/115242670.png" target="_blank"></a>

首先搭建163.com郵件伺服器:

修改主機名:

[root@lyt ~]# vim /etc/sysconfig/network    #如圖:

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_13472863067Lmd.png"></a>

[root@lyt ~]# vim /etc/hosts

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286307Xskg.png"></a>

搭建dns伺服器:

[root@lyt ~]# mkdir /mnt/cdrom

[root@lyt ~]# mount /dev/cdrom /mnt/cdrom/

[root@lyt ~]# cd /mnt/cdrom/Server/

[root@lyt Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm

[root@lyt Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm

[root@lyt Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm

[root@lyt Server]# cd /var/named/chroot/etc/

[root@lyt etc]# cp -p named.caching-nameserver.conf named.conf

[root@lyt etc]# vim named.conf

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286312mCah.png"></a>

[root@lyt etc]# vim named.rfc1912.zones

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286317vKkk.png"></a>

[root@lyt etc]# cd ../var/named/

[root@lyt named]# cp -p localhost.zone 163.com.db

[root@lyt named]# cp -p named.local 192.168.101.db

[root@lyt named]# vim 163.com.db

[root@lyt named]# vim 192.168.101.db       #區域的聲明檔案是101.168.192.in-addr.arpa與sina.com的相同

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286323rqr9.png"></a>

[root@lyt named]# vim /etc/resolv.conf      #該sendmail伺服器也是dns伺服器,是以sendmail要dns解析,需要指向dns伺服器,也即192.168.101.66

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286325Oaqw.png"></a>

[root@lyt named]# service named start

[root@lyt named]# chkconfig named on        #開機啟動dns伺服器

[root@lyt named]# init 6      #重新開機該伺服器

搭建sendmail(郵件發送伺服器)

[root@mail ~]# mount /dev/cdrom /mnt/cdrom/

[root@mail ~]# cd /mnt/cdrom/Server/

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286327dbV5.png"></a>

[root@mail Server]# rpm -qa |grep sendmail   #檢視sendmail已經安裝過的包

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286330Pn3j.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286331QZ27.png"></a>

[root@mail Server]# rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm       #該軟體包用于直接編輯sendmail.mc檔案,不用編輯sendmail.cf檔案

[root@mail Server]# cd /etc/mail

[root@mail mail]# vim sendmail.mc      #編輯sendmail的主配置檔案

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286334RZFS.png"></a>

[root@mail mail]# vim access       #編輯sendmail的中繼檔案

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286337Yi59.png"></a>

[root@mail mail]# vim local-host-names

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286339oX9y.png"></a>

[root@mail mail]# service sendmail restart      #重新開機sendmail伺服器

搭建dovecot(郵件接收伺服器)

[root@mail mail]# vim /etc/yum.repos.d/rhel-debuginfo.repo        #編輯本地yum

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286341Qjgo.png"></a>

[root@mail mail]# cd /mnt/cdrom/Server/

[root@mail Server]# yum install dovecot –y      #安裝該軟體包,用于接收郵件

[root@mail Server]# rpm -ql dovecot |less      #檢視dovecot的安裝位置

[root@mail Server]# vim /etc/dovecot.conf      #檢視dovecot的配置檔案,此處無需修改

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286343lpoQ.png"></a>

[root@mail Server]# service dovecot start     #啟用dovecot伺服器

[root@mail Server]# chkconfig dovecot on     #開機自動啟動

[root@mail Server]# useradd user1 #在本地郵件伺服器(163.com)上建立賬戶user1

[root@mail Server]# passwd user1

[root@mail Server]# useradd user2 #在本地郵件伺服器(163.com)上建立賬戶user2

[root@mail Server]# passwd user2

測試:使用windows xp主機自帶的outlook express工具檢視本地郵件伺服器(163.com)是否可用:(本地的user1使用者向user2發送郵件)

xp主機的ip參數

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286345muNw.png"></a>

點選:開始——》程式——》outlook  express

使用同樣的方法建立user2

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286347ZcEe.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286349eut3.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286350oQJq.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286351CgOi.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_134728635240kL.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286358jKPn.png"></a>

user1向user2發送郵件:

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286361Mu0v.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286366uLZo.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286368GB86.png"></a>

user2向user1發送郵件:

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286374qDKI.png"></a>

測試成功!!!

搭建sina.com郵件伺服器:

[root@localhost ~]# vim /etc/sysconfig/network

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286377z1Ng.png"></a>

搭建dns伺服器

[root@localhost ~]# mkdir /mnt/cdrom

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/

[root@localhost ~]# cd /mnt/cdrom/Server/

[root@localhost Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm

[root@localhost Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm

[root@localhost Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm

[root@localhost Server]# cd /var/named/chroot/etc/

[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286380HexK.png"></a>

[root@localhost etc]# vim named.rfc1912.zones

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286383cqkH.png"></a>

[root@localhost etc]# cd ../var/named/

[root@localhost named]# cp -p localhost.zone sina.com.db

[root@localhost named]# cp -p named.local 192.168.101.db

[root@localhost named]# vim sina.com.db

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286385HDcV.png"></a>

[root@localhost named]# vim 192.168.101.db      #區域的聲明檔案是101.168.192.in-addr.arpa與163.com的相同

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286388drcu.png"></a>

[root@localhost named]# vim /etc/resolv.conf

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286390Vxjj.png"></a>

[root@localhost named]# service named start

[root@localhost named]# chkconfig named on     #開機自動啟動

[root@localhost ~]# init 6      #重新開機

搭建sendmail(郵件發送伺服器):

[root@localhost Server]# rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm #該軟體包用于直接編輯sendmail.mc檔案,不用編輯sendmail.cf檔案

[root@mail mail]# vim sendmail.mc

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286392ydlb.png"></a>

[root@mail mail]# vim access

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286394ZD3f.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286396I9xc.png"></a>

[root@mail mail]# service sendmail restart

[root@mail mail]# chkconfig sendmail on

搭建dovecot伺服器(郵件接收伺服器):

[root@mail Server]# vim /etc/yum.repos.d/rhel-debuginfo.repo     #編輯本地yum

[root@mail Server]# yum install dovecot -y

[root@mail Server]# service dovecot start

[root@mail Server]# chkconfig dovecot on     #開機啟動dovecot

[root@mail Server]# useradd user3       #建立使用者user3

[root@mail Server]# passwd user3

[root@mail Server]# useradd user4       #建立使用者user4

[root@mail Server]# passwd user4

測試:使用windows xp主機自帶的outlook express工具檢視本地郵件伺服器(sina.com)是否可用:(本地的user3使用者向user4發送郵件)

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286399wyND.png"></a>

點選:開始——》程式——》outlook express

使用同樣的方法建立user4,這裡不再建立

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286401PeJv.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286402pRxZ.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286403IO2v.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_13472864048Jqe.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286406ckEj.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_13472864071bW7.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286409w3Lu.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_134728641095Zn.png"></a>

user3給user4發送郵件:

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286415zCPn.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_13472864163sbQ.png"></a>

user4向user3發送郵件:

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286419jFHu.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286421hyuh.png"></a>

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286423Va6x.png"></a>

現在測試163.com郵件伺服器和sina.com郵件伺服器能否進行郵件的轉發:

配置windows server 2003作為163.com域的主機,xp主機作為sina.com域的主機

server 2003主機的ip參數:

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_13472864258l3i.png"></a>

xp 主機的ip參數:

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286426ATlr.png"></a>

在windows  server  2003上向xp發送郵件:

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286428Yxd3.png"></a>

在xp主機上檢視郵件接收情況:

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286429qIVB.png"></a>

在xp主機上向server 2003主機發送郵件:

<a href="http://5493845.blog.51cto.com/attachment/201209/10/5493845_1347286431Oa3p.png"></a>

在server 2003上檢視郵件接收情況:

測試成功!!!!!!

附:

上個案例中兩台郵件伺服器是處于同一網段中,一般兩台郵件伺服器很少處于同一網段中。如果要模拟兩個不在同一網段中的郵件伺服器(假設163.com郵件伺服器的ip位址不變sina.com伺服器位址為192.168.100.10),拓撲不用變動,隻需在兩個郵件伺服器上做如下修改即可:

163.com域:

[root@mail ~]# route add -net 192.168.100.0 netmask 255.255.255.0 dev eth0

[root@mail ~]# route add default gw 192.168.100.10

sina.com域:

[root@mail ~]# route add -net 192.168.101.0 netmask 255.255.255.0 dev eth0

[root@mail ~]# route add default gw 192.168.101.66

本文轉自 liuyatao666 51CTO部落格,原文連結:http://blog.51cto.com/5503845/986870,如需轉載請自行聯系原作者

繼續閱讀