配置郵件服務器
一
.郵件系統的基本原理
1.
簡介
:
通常狀況下,咱們把電子郵件程序分解成用戶代理,傳輸代理和投遞代理。
用戶代理將用戶的信件傳送至傳輸代理(如
Outlook Express
、
FoxMail
等)。郵件傳輸代理負責將郵件送到目標主機(如
sendmail
)。而投遞代理則從信件傳輸代理取得信件傳送至最終用戶的郵箱(如
procmail
)。
2.
電子郵件系統的優勢
:
能夠在很短期內把數據發送到目的地,發送和接收電子郵件的過程不會被中斷,隨時發送和接收電子郵件
3.
電子郵件系統
:
電子由件地址
和電子郵箱
[email]mailbox@abc.com[/email]
發送方使用第二部分來選擇目的地,接收方使用第一部分來選擇指定郵箱
4.
電子郵件格式
:
信封和內容
(
報頭,郵件格式所規定的必要的部分;報文分爲信件內容和附件部分
)
MUA
,
Mail User Agent,
將郵件發往
Internet
上的一個
ISP
,它具備撰寫郵件、顯示郵件、處理郵件的功能
MTA
,
Mail Transfer Agent,
它負責郵件的存儲和轉發
(store and Forward)
5.
電子郵件系統的工做原理
咱們來模擬一封郵件從發出到收到的過程。用戶使用
Outlook Express
(用戶代理或叫作郵件客戶端)向
Sendmail
(傳輸代理)請求發送電子郵件的服務,將郵件交給
Sendmail
。
Sendmail
根據郵件的目的地址,將郵件發送給郵件接收服務器,郵件接收服務器將郵件緩存(這也是
Sendmail
的工做)。接收郵件的用戶用
Outlook Express
向郵件接收服務器發出取信的請求,郵件接收服務器將郵件發送給用戶(這是
IMAP
或
POP
服務的工做)。至此,一封郵件從發送者的機器到達接收者的機器。
咱們要創建的郵件服務器,以
Sendmail
做郵件傳輸服務,
IMAP
做收信服務來構成郵件系統的基本框架。以
Horde Imp
做爲郵件的
Web
客戶端。剩下的就是
Horde Imp
的支持軟件:以
MySQL
存儲用戶數據,以
Apache+PHP
做爲
Web
服務器。咱們還使用其它的模塊來擴充本系統的功能:通信錄模塊和修改密碼模塊。
二
.
與電子郵件相關的協議
1.SMTP:Simple Message Transfer Protocol
由
RFC821
定義,
SMTP
主機規定基礎的電子郵件提交系統怎麼傳遞報文
.
當
MUA
與
MTA
創建鏈接併發送郵件和
MTA
之間使用
SMTP
進行電子郵件的轉發時使用
SMTP
協議
SMTP
的通訊過程
2.
多用途互聯網郵件擴充
MIME,Multipurpose
Internet Mail Extension
是
IETF
爲發送二進制數據而發明的多種編碼方案,它容許發送方和接收方選擇方便的編碼方法,發送方在頭部包含一些附加行說明信息遵循
MIME
格式,以及在主體中增長一些附加行說明數據類型和編碼;還容許發送方將信息分紅幾個部分,並對每一個部分指定不一樣的編碼方法,即在一個信息中既發送普通文本又附加
(attach)
一個圖像,
MIME
自動解碼附加的數據,爲了透明的編碼和解碼,
MIME
在電子郵件頭部增長兩行
:
一行用來聲明使用
MIME
生成信息,另外一行說明
MIME
信息是如何包含在正文中的
MIME-Version: 1.0
Content-Type:Multipart/Mixed; Boundary=Mime_separator|Content-Type:text/plain
3.
郵件接收客戶訪問郵件的方式
郵件接收者對郵件服務器的請求訪問模式有離線、在線和斷線
3
種模式
4.POP3
協議要檢測用戶登陸名和口令,而後將用戶的郵件從服務器移動到用戶本地桌面系統的
MUA.
它監聽
TCP
的
110
端口,
POP3
在
RFC1939
中定義,它是請求
-
響應式協議
5.IMAP4:
是
POP
的替代品,它了
POP
相同的基本功能以外,還增長了對郵箱同步的支持,即
IMAP
提供瞭如何遠程維護服務器上的郵件箱的功能
三
.sendmail
簡介
1.sendmail
的功能
接收
SMTP
郵件、爲郵件選擇路由、傳輸
SMTP
郵件、使用別名,從而容許使用郵件列表、錯誤檢測以及速度和代價優化
2.sendmail
的結構和處理過程
3.
安裝
sendmail
和
imap
#rpm -qa|grep sendmail
插入第一張光盤
#mount /mnt/cdrom
#cd/mnt/cdrom/RedHat/RPMS
#rpm -ivh sendmail-
8.12.8
-4.i386.rpm
安裝
sendmail
服務軟件
#rpm -ivh m4-
1.4.1
-13.i386.rpm
用
m4
工具生成
sendmail
的配置文件
#cd;eject
插入第
3
張光盤
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm -ivh sendmail-cf-
3.12.8
-4.i386.rpm
#rpm -ivh sendmail-doc-
8.12.8
-4.i386.rpm
#cd;eject
4.
啓動
sendmail
mc
LOCAL_DOMAIN('abc.com')dnl
設置本地域
LOCAL_DOMAIN('localhost.localdomain')dnl
DAEMON_OPTIONS('Port=smtp,Addr=192.168.1.57,Name=MTA')dnl
指定
sendmail
做爲
MTA
運行時的參數,
dnl
刪除尾部空格
#m4 sendmail.mc>sendmail.cf
#vi /etc/mail/sendmail.cf
C{w}abc.com
設置類的值爲
abc.com
C{
w}localhost.localdomain
O DaemonPortOptions=port=smtp,Addr=192.168.1.57,Name=MTA
命令
O
用於爲
sendmail
的選項賦值
O DaemonPortOptions=port=smtp,Addr=127.0.0.1,Name=MTA
#service sendmail start
四
.
安裝和啓動
imap
1.
安裝
IMAP
#rpm -qa|grep imap
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm -ivh imap
-2001a
-18.i386.rpm
#cd;eject
2.
啓動
imap
#vi /etc/xinetd.d/imap
disable=
no
service
xinetd restart
3.
配置
DNS
的
MX
記錄
IN MX 5 rhl9.abc.com
rhl
9 IN
MX 10 rhl9.abc.com
4.
收發郵件測試
:
#cat /etc/resolv.conf
nameserver
192.168.88.57
#mail [email]user1@abc.com[/email]
Subject:test1
Thist
is a test1
.
Cc:
#su - user1
$mail
#mail -u user1
五
.
配置虛擬郵件用戶數據庫
#vi /etc/named.conf
配置虛擬域名字解析
#echo "abc.com">>/etc/mail/local-host-names
vi
/etc/mail/access
abc.com
RELAY
#cd /etc/mail
#makemap hash access.db<access
生成
/etc/mail/virtusertable.db
#vi /etc/mail/virtusertable
[email]webmaster@abc.com[/email] user1
#cd /etc/mail
#makemap hash virtusertable.db<virtusertable
#service sendmail restart
測試
#mail [email]webmaster@abc.com[/email]
#mail -u user1
例
:1.
使用
access
數據庫
smtp
協議是不須要身份驗證的,
access
數據庫能夠限制基於主機的訪問控制
<
地址
><
操做
>
格式
舉例
說明
domain abc.com *.abc.com,
即域內全部主機
ip
address 192.168.12,192.168.11.11
網段內的全部主機及特定的主機
username@domain
[email]user1@abc.com[/email]
一個特定的郵件地址
username@ user1@
用戶名爲
user1
的郵件
操做
:
格式
說明
OK
無條件接受或發送
RELAY
容許
SMTP
代理投遞
REJECT
拒絕授受併發布錯誤信息
DISCARD
丟棄郵件,無錯誤信息發佈
#vi /etc/mail/access
192.168.2.108 REJECT
user1@
測試
:
在
192.168.2.108
計算機發送郵件測試
mail
from:user2@abc.com rcpt to:user2@abc.com
例
2:
使用
aliase
數據庫
#vi /etc/aliases
aliases:recipient
zhangsan:
user1
#newaliases
命令生成
aliases.db
rcpt
to:zhangsan.abc.com
例
3:
轉發郵件
abc:abc@abc.com
例
4:
僞造電子郵件
#telnet
set
local_echo
open
192.168.2.168 25
mail
from:webmaster@abc.com
rcpt
to:user1@abc.com
data
subject:this
is fake!
欺騙
<cr>
<cr>
enter
message
.
Quit