63
1 Mail Server

Mail Server

  • Upload
    alcina

  • View
    110

  • Download
    0

Embed Size (px)

DESCRIPTION

Mail Server. Outline. 基本概念 Mail Server 原理 Mail 相關通訊協定 Postfix 簡介 Postfix 的安裝、設定及測試 用戶端如何收信 OpenWebMail 簡介與安裝設定. 收發信件的基本概念. 電子郵件與傳統郵件一樣,如同地址般,需要有一個發信端與收信端 發信流程:信→郵局與郵局間的傳遞→收件人 郵務士的功能由轉送郵件的程式所取代. Mail Server 原理. E-mail 系統的服務程式. - PowerPoint PPT Presentation

Citation preview

Page 1: Mail Server

1

Mail Server

Page 2: Mail Server

2

Outline

基本概念 Mail Server 原理 Mail 相關通訊協定 Postfix 簡介 Postfix 的安裝、設定及測試 用戶端如何收信 OpenWebMail 簡介與安裝設定

Page 3: Mail Server

3

收發信件的基本概念 電子郵件與傳統郵件一樣,如同地址般,需要有一

個發信端與收信端

發信流程:信→郵局與郵局間的傳遞→收件人

郵務士的功能由轉送郵件的程式所取代

Page 4: Mail Server

4

Mail Server 原理

Page 5: Mail Server

5

E-mail 系統的服務程式 E-mail 系統包括 MUA (Mail User

Agent) 與 MTA (Mail Transport Agent) 兩個部份。

MUA 指使用者可用來讀寫信件的程式。

Ex: Outlook 。 MTA 指系統中負責處理信件收發工作

的程式。Ex: sendmail 與 postfix 。

Page 6: Mail Server

66

MUA( Mail User Agent ) 使用者所使用的閱讀、撰寫、回覆信件的程式。

Linux 的 pine、 elm、mutt、 kmail 等,及 Windows 中的 outlook 等,都是用戶端用來讀寫收發信件的程式。

用戶端是透過 MUA 軟體來跟郵件主機搭上線,但

MUA 並不負責實際傳遞信件的工作,而是交由MTA 處理。

Page 7: Mail Server

7

MTA ( Mail Transport Agent ) 用戶端使用 MUA 將信件寄出時,這封信是透過一台

安裝有 MTA 軟體的主機代為處理。 Linux 的 postfix 、 qmail 及 Windows 的 Exchange 等,都是屬於 MTA( 一台 Mail Server) 。

當 MTA 收到 MUA 所寄來的 mail 時,會先判斷這封信是否為本地端的 mail ,若否,則繼續將此 mail 傳送給另一部這個信件的 MTA 來處理 ; 而當 MTA 將信件轉寄給另一台 MTA 的行為,就叫做 Relay 。

Page 8: Mail Server

8

MDA ( Mail Deliver Agent )即郵件投遞代理程式之意。

MTA 收到 MUA 所寄來的信件時,如判斷這封信是屬於本地端的信件,會交給 Local MDA 處理,然後 Local MDA 就把它放置在使用者個人信箱之中 ; 那如果此 mail 是屬於外部的信件,則會透過 smtp MDA 來將 mail 轉寄給另一台 MTA 處理。

Page 9: Mail Server

99

佇列管理員 (Queue Manager)

Page 10: Mail Server

10

Mail 相關通訊協定

Page 11: Mail Server

1111

SMTP ( Simple Mail Transport Protocol )這是在寄信時所使用的協定,像 MUA 將

信件傳送給 MTA ,或者 MTA 再把信件轉寄給另一台 MTA 時,就是使用 SMTP 協定。

SMTP 協定所要使用的 port 為 25 ,當 MTA 發覺此 mail 非本地端信件時,即會把信件 Relay 給另一台 MTA 的 25 port ,當然這過程是使用 SMTP 協定。

Page 12: Mail Server

12

POP ( Post Office Protocol ) 這是收信時所使用的協定,也就是 MUA 把信

件從 MTA 中取回時所使用的協定。

POP 有所謂的 POP2 及 POP3 ,數字代表的是 POP 協定的版本,目前以 POP3 為主。

POP3 協定是使用 110 port ,因此當使用者要收信時, MUA 是連接 POP Server 的 110 port 來將信件收下。

Page 13: Mail Server

13

IMAP ( Internet Mail Application Protocol )

使用 POP3與 IMAP 不同點是, POP3 通常會把郵件下載回自己主機內,這樣就會把伺服器上的 Mail Box 清空,因此使用者可以離線閱讀信件。

IMAP 則是把信件都保留在伺服器上,好處是可以利用不同的電腦來存取伺服器上所有新舊的信件 ﹔在做資料夾分類時,所建立的新資料夾是存在於伺服器上,而非個人電腦中。

Page 14: Mail Server

1414

郵件系統與協定之間的關係

14

Page 15: Mail Server

15

E-mail 寄信 / 收信過程寄信人將 E-mail 寫好上網寄出後,透過

SMTP(Simple Mail Transfer Protocol ,簡易郵件傳送協定 ) ,將 E-Mail 送到寄信人的郵件主機 (Mail Server) 。

寄信人的郵件主機 (Mail Server) 再透過SMTP 穿過 Internet ,將信寄送至收信人的郵件主機 (Mail Server) 的收信人帳號信箱上。

收信人上網連上郵件主機後,透過POP3(Post Office Protocol Version 3 ,郵局協定第 3 版 ) ,從郵件主機下載郵件到電腦的 E-mail 軟體裏或閱讀個人的郵件。

Page 16: Mail Server

16

傳送 E-mail 的方式利用網路來傳送 E-mail 可分為 2 種。在單一網路中收發 E-mail ,例如公司

內部。將 E-mail 傳送到另一台郵件主機,

發信與收信分別在不同的郵件主機中進行。

Page 17: Mail Server

17

在內部網路中傳送 E-mail當同一郵件主機中的使用者 cassia

要寄信給 ken 時,郵件伺服程式並不會將信件傳出郵件主機。用這種方式時,郵件主機並不需要有一個已登記的伺服器名稱,因此 cassia 寄給 ken 可以隨意使用下列幾種 E-mail 位址:

Page 18: Mail Server

18

在內部網路中傳送 E-mail

Page 19: Mail Server

19

E-mail E-mail 位址的格式位址的格式每個 E-mail 位址的格式,皆是由郵

件帳號、主機名稱 (host name) 與網域名稱 (domain name) 組合而成。

Page 20: Mail Server

20

傳送 E-mail 到其他郵件主機當 E-mail 要傳送到另一台郵件主機

時,一定要指定收信者的完整 E-mail 位址。

例如 cassia 要寄一封信給[email protected] ,則郵件伺服程式發現此信是要寄到 ms1.whatever.net 網域,就會詢問名稱伺服器 (name server) 關於此網域的資訊,然後透過 SMTP 協定將信件傳送到遠端的郵件主機:

Page 21: Mail Server

21

傳送 E-mail 到其他郵件主機

Page 22: Mail Server

22

傳送 E-mail 到其他郵件主機架設郵件主機時,不可隨便取一個名

稱 ,因為上游沒有記錄此郵件主機的位址,則當別人要寄信過來的時候,會因為找不到這台郵件主機而無法順利寄出。

Page 23: Mail Server

23

傳送 E-mail 到其他郵件主機

Page 24: Mail Server

24

檢查名稱伺服器是否設定正確想要讓自行架設的郵件主機能正常運

作,除了要有正式的網址之外,還必須在名稱伺服器中登記此主機是郵件伺服器,如此其他的郵件主機才能寄信給我們自行架設的郵件伺服器,否則信件可是會被退回的!

因此,必須在名稱伺服器中登記主機為郵件伺服器。

Page 25: Mail Server

25

檢查名稱伺服器是否設定正確查詢郵件伺服器是否有登記

Page 26: Mail Server

26

sendmail與 postfixCentOS 預設會提供 sendmail (

http://www.sendmail.org) 以及近期很熱門的 Postfix (http://www.postfix.org) 。

sendmail 曾是最為廣泛使用的 mail server 軟體,由於 設定檔太過於難懂,程式漏洞問題導致的主機安全性缺失等問題,新版的 CentOS 已經將預設的 mail server 調整為 postfix 。

Page 27: Mail Server

27

Sendmail 的特色:允許各種不同的 emial 位址路徑支援虛擬的 domains及 users允許偽裝的使用者及機器提供自動重試失敗傳送郵件的重傳及

其它一些情況

Page 28: Mail Server

2828

Postfix 簡介由Wietse Zweitze venema 博士於 1998年在 IBM 所開發 。

Postfix 的優點:◦速度更快◦ 相容性佳◦ 能調節系統◦更靈活◦ 安全性

28

Page 29: Mail Server

29

Postfix 相關套件Postfix : SMTP Server 的主要套件。

dovecot : POP3 Server 的主要套件。

Page 30: Mail Server

30

設定檔路徑(一)# rpm -ql postfix /etc/postfix/main.cf Postfix 的主要設定檔。 /etc/postfix/transport 擔任 Mail GW 的主機,可

以藉由設定這個檔案,來將信件轉給指定的 MTA 。 /etc/init.d/postfix 管理 Postfix 服務的 script 。 /sbin/rcpostfix 連結至 /etc/init.d/postfix 的符號連結檔。

/usr/lib/postfix/master 提供 Postfix 服務的 daemon 。

/usr/bin/mailq 查詢郵件佇列 (mail queue) 的指令。 /usr/bin/newaliases 建立或更新郵件別名資料庫。

Page 31: Mail Server

31

設定檔路徑(二) /usr/sbin/postalias 維護 Postfix 別名資料庫。 /usr/sbin/postconf Postfix 的設定工具。可以用來列

出 Postfix 的預設參數及實際參數值,也可以直接在命令列上 修改設定參數,並將設定結果寫入 main.cf 中。

/usr/sbin/postfix 控管 Postfix 的程式。 /usr/sbin/postmap 用來將指定的檔案內容轉換成資

料庫格式,並將轉換後的結果寫入資料庫檔案裡。 /usr/sbin/postsuper 管理佇列郵件的工具。 /var/spool/postfix 處理佇留信件的相關目錄,其所

存放的位置,如 hold、 incoming、 active 及 deferred 等目錄。

Page 32: Mail Server

32

Postfix 相關指令# postfix check <=檢查 postfix 相關的檔案、權限等是

否正確。# postfix start <=執行 postfix# postfix stop <= 關閉 postfix # postfix flush <=強制將正在郵件佇列的郵件寄出# postfix reload

<=重新讀入設定檔 /etc/postfix/main.cf#postconf <= 列出目前的設定參數值。#postconf -d <= 列出預設的設定參數值。#postconf -e 'alias_maps = hash:/etc/postfix/aliases'

在命令列上編輯設定參數後,直接寫入 main.cf 中。

# chkconfig postfix 35 <= 設定開機時啟動 Postfix 服務

Page 33: Mail Server

33

設定 Postfix # vi /etc/postfix/main.cf

(75行 )myhostname = mail.ccnet.com 指定 Mail Server 在 Internet 上的主機名稱 (83行 ) mydomain = ccnet.com myhostname 設定為 mail ,那 mydomain 就是 ccnet.com 。 (99行 - 註解拿掉 ) myorigin = $myhostname (113行 ,116 行加註解 ) inet_interfaces = all 指定郵件主機上,允許接收信件的網路介面位

址。 all 就表示是所有網路介面都可以接收使用者所寄來的信件,這也是預設值。

Page 34: Mail Server

34

設定 Postfix Server (二 ) mynetworks_style = subnet

指定 SMTP 所信任的來源端類型,有以下三種:#mynetworks_style = class#mynetworks_style = host

mynetworks_style = subnet --- 只要與 MTA 位於同一個子網段的主機,其所寄過來的信件都允許 Relay 。

message_size_limit = 10240000 # 設定每封信件大小,不得超過 10 MB 。

接著測試再重新啟動: # postfix check # postfix reload 或 #/etc/init.d/postfix restart

Page 35: Mail Server

35

設定 Postfix Server (三 )啟動之後的檢查# netstat -anp | grep :25

tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 11348/master     ↑  這裡如果顯示 127.0.0.1 的話,那表示不能對外提供 smtp 的服務,請特別注意。

#ps –aux |grep master

Page 36: Mail Server

36

Client 端測試Windows

C:\>telnet 192.168.1.123 25220 ccnet.com ESMTP Postfix <=ok

Linux$telnet 192.168.1.123 25 quit <= 離開

Page 37: Mail Server

37

設定可收信的 POP3 Server

確定是否已安裝 dovecot#rpm –q qpopper

安裝 dovecot #yum install dovecot

修改設定 # vim /etc/dovecot/dovecot.conf(新增在 21行 )protocols = imap pop3

# vim /etc/dovecot/conf.d/10-ssl.conf ssl = no <= 將第 6 行改成 no

#/etc/init.d/dovecot start #chkconfig dovecot on #netstat -tlnp | grep dovecot <=檢查 port

110/143

Page 38: Mail Server

38

Linux 用戶端如何寄信 在文字介面上打mail 即可收信 # mail user1 <= 寄信給 user1 Subject: Say Hello   <= 輸入信件標題

This is a test mail for Jack <= 從這裡是信的內容 .          <= 輸入一點 . 結束Cc:              <= 若需要再輸入副本收件人的 e-mail

Page 39: Mail Server

39

Linux 用戶端如何收信 $ mailHeirloom Mail version 12.4 7/29/08. Type ? for help."/var/spool/mail/wei": 1 message 1 new>N 1 root Sun May 27 22:43 18/530 "test

1"& <= mail 軟體的提示字元,可以輸入 ? 來察看可用指令

讀信:直接按 Enter 或輸入數字後 enter 顯示標題: h 或輸入 h 數字 回覆郵件: 輸入 R 刪除郵件: 輸入 d 或輸入 d10-50 刪除第 10-50

封郵件 儲存郵件到檔案: 輸入 s 數字 檔名 離開 mail :輸入 q 或 x ) 請求協助:輸入 help

Page 40: Mail Server

40

Linux mutt#yum install mutt # mutt [-a 附加檔 ] [-i 內文檔 ] [-b 秘密副本 ]

[-c 一般副本 ] [-s 信件標題 ] email 位址

要讓 mail 群組能夠使用 wei 的家目錄$ chmod a+x ~

Page 41: Mail Server

41

非固定 IP 位址 郵件伺服器 假設你是 hinet 用戶,而 hinet 提供

的郵件主機為 ms1.hinet.net 可以這樣設定:

# vim /etc/postfix/main.cf 加入這行 relayhost =

[ms1.hinet.net]/etc/init.d/postfix restart

Page 42: Mail Server

4242

OpenWebMail 安裝簡介

Page 43: Mail Server

43

webmailwebmail 可當成是一種 MUA ( 郵件

使用者代理人 ) 來看待,也就是說可以將他想成與 outlook express 同等級的應用軟體。而我們可以透過 webmail 對 mail server 進行電子郵件的存取。

Page 44: Mail Server

44

安裝之前 需要 www server(Apache) 的環境。 DNS server 也是必須的。 安裝其他必要的軟體套件,如 Text-

lconv、 postfix  or sendmail 。特別注意檔案擺放的路徑位置。

Page 45: Mail Server

45

安裝前置套件首先啟動 smtp server :

# service postfix restart //重新啟動 postfix

# chkconfig postfix on // 設定成開機時自動啟動

檢查 smtp server 是否啟動 (smtp port 25)# telnet  localhost 25

# vi /etc/postfix/main.cfsoft_bounce = no -> yesinet_interfaces = all

Page 46: Mail Server

46

安裝前置套件 下載 Text-Iconv

http://openwebmail.org/openwebmail/download/packages/

下載 Text-Iconv-1.2.tar.gz 套件

接著下載 Openwebmailhttp://openwebmail.org/openwebmail/download/current/

下載 webmail-current.tar.gz ( 此為 2.53版 )

Page 47: Mail Server

47

安裝前置套件你也可以使用 wget 指令而不透過瀏覽器下載#wget

http://openwebmail.org/openwebmail/download/release/openwebmail-2.53.tar.gz

及# wget http://openwebmail.org/openwebmail/download/packages/Text-Iconv-1.2.tar.gz

Page 48: Mail Server

48

安裝前置套件解壓縮 Text-Iconv # tar xvf Text-Iconv-1.2.tar.gz 這邊請大家注意檔案的路徑,否則很容易搞混,建議都放在 root 底下。

Page 49: Mail Server

49

安裝前置套件 進到 Text-Iconv-1.2 的目錄下

# perl Makefile.PL ( 注意大小寫 )依序執行以下三個指令進行安裝

# make

# make test# make install

Page 50: Mail Server

50

安裝 Openwebmail 安裝 Openwebmail

# tar xvfz openwebmail-2.53.tar.gz

將 Openwebmail 配合 apache 的位置擺放# mv ./data/openwebmail /var/www/htdocs# mv ./cgi-bin/openwebmail /var/www/cgi-

bin

Page 51: Mail Server

51

安裝 Openwebmail 接著修改設定檔的路徑

/var/www/cgi-bin/openwebmail/etc/openwebmail.conf把裡面 ow_cgidir 和 ow_htmldir 的內容改為:ow_cgidir               /var/www/cgi-bin/openwebmailow_htmldir             /var/www/htdocs/openwebmail

Page 52: Mail Server

52

安裝 Openwebmail修改目錄權限,讓 Openwebmail 可用 root 的權限執行或建立所需的目錄及檔案。

chown root.root /var/www/cgi-bin/openwebmailchown -R root.root /var/www/htdocs/openwebmailchown root.mail /var/www/cgi-bin/openwebmail/*chmod 4555 /var/www/cgi-bin/openwebmail/openwebmail*.plchown root.mail /var/www/cgi-

bin/openwebmail/openwebmail*.plchmod 4555 /usr/bin/suidperl

Page 53: Mail Server

53

安裝 Openwebmail初始化 Openwebmail (重要 !)執行 # /var/www/cgi-bin/openwebmail/ openwebmail-tool.pl --init

接著按照說明更改 dbm.conf 的內容,改完了要再初始化 Openwebmail 一次。

以下是 dbm.conf 的存放位置# /var/www/cgi-bin/openwebmail/etc/ defaults/dbm.conf

Page 54: Mail Server

54

安裝 Openwebmail修改 dbm.conf :

dbm_ext                 .dbdbmopen_ext             none改為dbm_ext                 .pagdbmopen_ext             none

如果沒有意外,那到這邊就已安裝完成。

Page 55: Mail Server

55

使用 Openwebmail Openwebmail 是使用你的 Linux 系統中的

使用者帳號來登入,為了方便起見請大家統一新增一個使用者 「mailuser」,密碼一樣為 mailuser

# useradd mailuser –m //建立使用者 mailuser 並建立家目錄# passwd mailuser //修改 mailuser 的密碼

Page 56: Mail Server

56

使用 Openwebmail 使用者設定好之後用 vi 修改以下檔案

# vi /var/www/cgi-bin/openwebmail/etc/defaults

/auth_unix.conf將以下這段 passwdfile_encrypted   /etc/master.passwd 改為 passwdfile_encrypted   /etc/shadow

如果不改這裡 , Openwebmail 會抓不到使用者的名稱及密碼。

Page 57: Mail Server

57

使用 Openwebmail 在瀏覽器中輸入:

http://你的主機 /cgi-bin/openwebmail/openwebmail.pl

如出現登入畫面則表示成功,這時可用剛剛新設的 mailuser 來登入。

Page 58: Mail Server

58

登入畫面

Page 59: Mail Server

59

使用 root 登入的方法 由於 Openwebmail 預設無法用 root 使用者

來登入,在這邊補充修改的方法。 # vi /var/www/cgi-bin/openwebmail/etc/

defaults/openwebmail.conf將裡面的 allowed_rootloginip none改為 allowed_rootloginip 你的 IP這樣就可以了!

Page 60: Mail Server

60

檢視寄信狀況 (一 )當我們寄出郵件時,要怎麼知道真的

已被郵件主機寄出去了呢?本節將會告訴你查看郵件佇列的方法。

有時候可能會因為網路的問題而使得郵件送不出去,我們可以用 mailq 指令來查看郵件佇列 (mail queue) 的內容:

Page 61: Mail Server

61

檢視寄信狀況 (二 )如果是類似下面這樣的訊息,則表示

有信件尚未被送出:

Page 62: Mail Server

62

檢視寄信狀況 (三 )有封信件停留在郵件佇列中等待寄送,

如果一直都寄不出去,則會通知發信人無法寄出。這些留在郵件佇列中的信件都儲存在 /var/spool/mqueue 目錄中,其存取權限預設為 "rw-------" ,擁有者是 root 。

而我們在郵件主機上收發郵件的動作,可查看記錄在 /var/log/maillog 檔,檢視寄送的情況。

Page 63: Mail Server

63

參考資料http://kevingt.wordpress.com/2009/08/12/postfix-mail-server-%E8%88%87-open-webmail/

http://linux.vbird.org/linux_server/0380mail.php

http://linux.vbird.org/linux_server/0520openwebmail.php