mail server 的架設

25
1 kenduest ( 小小 ) [email protected] Mail Server 小小小

Upload: waite

Post on 12-Jan-2016

75 views

Category:

Documents


1 download

DESCRIPTION

Mail Server 的架設. kenduest (小州). [email protected]. 章節內容. Mail Server 系統的簡介 Sendmail 的編譯安裝 Relay 觀念與設定 相關設定檔案 Access、Relay 、VirtualUserTable 等機制 Forward、Aliases 等機制 POP3/IMAP 的編譯安裝與設定. Mail Server 系統的簡介. MTA 與 MUA 、Deliver 解釋: MTA (Mail Transfer Agent) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Mail Server  的架設

1

kenduest ( 小州 )

[email protected]

Mail Server 的架設

Page 2: Mail Server  的架設

2

章節內容Mail Server 系統的簡介Sendmail 的編譯安裝Relay 觀念與設定

相關設定檔案 Access 、 Relay 、 VirtualUserTable 等機制 Forward 、 Aliases 等機制

POP3/IMAP 的編譯安裝與設定

Page 3: Mail Server  的架設

3

Mail Server 系統的簡介MTA 與 MUA 、 Deliver 解釋 :

MTA (Mail Transfer Agent)

所謂的 MTA 就是 Mail Transfer Agent

Sendmail 、 PostFix 、 Qmail 或者是 Microsoft 的 Exchange Server 等等都是 MTA 程式

MUA (Mail User Agent)

所謂的 MUA 就是 Mail User Agent

Outlook Express 、 Outlook 、 Eudora 或者是 Linux 下的 pine 、 mutt 、 elm 等等讀信程式 都是 MUA 程式

Page 4: Mail Server  的架設

4

Mail Server 系統的簡介Mail Deliver (Mail Deliver Agent)

Mail Deliver Agent 為信件遞送程式 procmail 、 bbsmail 、 mail.local 都是這類程式

運作的流程 :

當 userA@host1 使用者使用 UA 程式寫信要寄給 userB@host2

當 userA@hostnameA 使用 hostA 主機寄信,該 hostsA MTA 程式的工作就是把信件傳送到host2 的 MTA ,再透過 host2 上的 MDA 存到userB 的信箱內,最後 userB 使用 MUA 讀信

Page 5: Mail Server  的架設

5

Mail Server 系統的簡介SMTP :

Simple Mail Transfer Protocol ,為 Mail 傳輸的協定 SMTP 傳輸,是透過 port 25 與對方 MTA 交談

POP :

Post Office Protocol ,為抓取遠端 Mail 的協定 POP 有 POP2 與 POP3 。目前多半使用 POP3

IMAP :

Internet Message Access Protocol

與 POP 功能相同,不過有更多功能機制

Page 6: Mail Server  的架設

6

sendmail 的安裝原始碼編譯安裝的方式

請參考附件使用 RPM 安裝的方式

mount /mnt/cdrom

cd /mnt/cdrom/RedHat/RPMS

使用 rpm –ihv 安裝下面檔案 :

sendmail-8.xx.xx-xxx.i386.rpm ( 主程式套件 )

sendmail-cf.xx.xx-xxx.i386.rpm ( 組態套件檔案 )

sendmail-doc-xx.xx.xx.i386.rpm ( 文件說明套件 )

Page 7: Mail Server  的架設

7

與 MTA 直接交談寄信與 MTA 直接交談寄信

請參考附件 使用 hlo / ehlo 打招呼。 使用 expn or vrfy 可以確認帳號是否存在 使用 mail from : username userid@hostname

指定寄信者 e-mail 帳號 使用 rcpt to: username userid@hostname

指定寄給 userid@hostname 帳號。 rcpt to:

可以多次指定使用者 使用 data 開始送內容,使用 . 結束內容傳送, 使用 quit 離開連線

Page 8: Mail Server  的架設

8

Relay 觀念與設定相關設定檔案與目錄

新版 sendmail 8.10.x 相關設定檔案都在 /etc/mail 目錄內。 sendmail 8.9.x 或者是更舊的版本則是有一部份 的設定檔案放置在 /etc 目錄內 (ex: aliases 與 sendmail.cf)

/var/spool/mail 目錄內為放置使用者 mailbox

/var/spool/mqueue 目錄為放置 queue 信件

Page 9: Mail Server  的架設

9

sendmail 相關檔案sendmail 相關檔案 :

/etc/mail/sendmail.cf ( 舊版在 /etc 目錄內 )

/etc/mail/sendmail.mc ( 舊版在 /etc 目錄內 )

/etc/sendmail.cw (sendmail 8.10.x 以後為 local-host-names)

/etc/mail/aliases ( 舊版在 /etc 目錄內 )

/var/log/sendmail.st

/etc/mail/access

/etc/mail/domaintable

/etc/mail/mailertable

/etc/mail/virtusertable

/etc/smrsh

/var/log/maillog

Page 10: Mail Server  的架設

10

sendmail.cf

sendmail.cf 檔案的功能 :

sendmail.cf 主要的設定檔案為 sendmail.cf

主要功能為設定 sendmail 運作環境與相關功能機制 信件檔頭相關資訊處理 重寫 address

把信件內容傳給本地端 deliver 程式 mail relay 、 deny 、 virtual host 等處理 新版 sendmail 8.10.x or above 檔案放置在

/etc/mail 目錄內。舊版則是在 /etc 目錄

Page 11: Mail Server  的架設

11

Mail Relay

何謂 Mail Relay :

簡單來說, mail relay 就是 sendmail 代為把 信件收信,然後傳遞給指定的收件者 在 sendmail 8.8.x 版本以前, sendmail 預設 是開放可以任意 mail relay 的機制。簡單說, 就是任何人都可以連上這台 mail server 寄信 在 sendmail 8.8.x 以後,可以任意 mail relay

的功能關掉了。因為目前 internet 爆炸, mail

傳輸量很多,廣告信相當猖獗。為了避免有人 亂用他人的 mail server 發信。

Page 12: Mail Server  的架設

12

Access Database 檔案access database 檔案名稱為 access

要使用 access 機制,當初建立 sendmail.mc 需要 :

FEATURE(`access_db', `hash -o /etc/mail/access')

access 主要用途為設定 mail 接收的權限access 檔案變更後,需要使用 makemap 建立access.db 檔案。 ex:

makemap hash /etc/mail/access < /etc/mail/access

如此會建立 sendmail 實際使用的 access.db 檔案

Page 13: Mail Server  的架設

13

Access Database 檔案access 檔案內容敘述 :

OK

預設主機名稱不存在會發出錯誤,加入此項可以忽略 OK 同時也是等於 RELAY

RELAY

允許該連線端可以透過該 Mail Server 發信

DISCARD

把信件丟棄

DENY

發出錯誤,拒絕連線端 mail 請求

### any text

與 DENY 功能一樣,不過可以自訂錯誤訊息

Page 14: Mail Server  的架設

14

Access Database 檔案access 檔案例子 :

not_exist.com.tw OK

mail.xxxx.com.tw RELAY

210.242.57 RELAY

some.xxxxx.com “550: reject this domain”

spam.xxx.edu DISCARD

[email protected] “550: reject this mailbox”

sendmail 8.10.x or above 新增 :

connect:mail.xxx.com.tw “550: Spam MailServer”

from:some.xxxx.edu “550: from host not allow”

to:[email protected] “550: do not allow this ID”

Page 15: Mail Server  的架設

15

Relay-domains 檔案relay-domains 檔案

relay-domains 檔案用途與 access 類似,不過只有 relay 相關功能設定而已 relay-domains 檔案內容只有加上主機名稱 or

ip ,後面不用加上 RELAY 的敘述relay-domains 檔案範例 :

.xxxxx.com.tw

192.168

host.xxx.com.tw

Page 16: Mail Server  的架設

16

Aliases 功能機制aliases 檔案 (/etc/mail/aliases or /etc/aliases)

aliases 檔案,為別名檔案 aliases 可以產生一個帳號,可以應對寄給許多帳號 改過 aliases 檔案,要執行 newaliases 更新 可以在 sendmail.cf 檔案內自訂其他 aliases 檔案

aliases 範例 antispam: root

somebody : userid1,userid2,xxx@hostname

maillist: “|/usr/sbin/wrapper maillinst”

people: :include:/path/email_list/filename

Page 17: Mail Server  的架設

17

Forward 功能機制forward 為轉寄的功能提供使用者可以把寄到 mail server 的信件,自動轉寄到另外一個信箱使用者在自己家目錄內建立 .forward 檔案,權限為 600 ,內容就是要轉寄的位址。若是希望轉寄還可以保留一份不要刪除,要加上 \userid 。 userid 就是自己的 id

使用範例 :

\myid,[email protected],peter

Page 18: Mail Server  的架設

18

Virtusertable 功能機制virtusertable 檔案 (/etc/mail/virtualuser)

為應對某個 id 對應到另外的 id 或者是把某個 id

對應到另外的 e-mail 帳號。或者是把某個 e-mail

帳號對應到另外一個 id 或者是帳號 一般是用來解決一台 Mail Server 有多個主機名稱, 好讓於相同 id 能夠對應到不同的 id 使用者, 或者是對應到另外一個 e-mail 帳號

virtusertable 檔案使用範例 :

[email protected] peter

[email protected] john

Page 19: Mail Server  的架設

19

Mailertable 功能機制Mailertable 檔案為 /etc/mail/mailertable ,該檔案是用來指定部份信件的轉信主機。格式 : 收件人 host mailer:host 配對 。舉例 :

.xxxx.tw smtp:mail.xyz.com.tw

mail.xyz.com.tw esmtp:mail.xyz.net.tw

.ooxx.com.tw esmtp:[192.168.1.1]

當收信人帳號網域是 xxxx.tw 結尾,把信件丟給 mail.xyz.com.tw

MTA 處理。當收信人帳號主機名稱是 mail.xyz.com.tw ,把信件丟給 mail.xyz.com.tw MTA 處理 ( 使用 ESMTP)

當收信人帳號主機網域是 ooxx.com.tw ,把信件丟給 192.168.1.1 該主機的 MTA 處理 ( 使用 ESMTP)

Page 20: Mail Server  的架設

20

其他功能機制指定透過另外一個 MTA 代為寄信 :

sendmail.mc 檔案加入 : ( 方法一 )

define(`SMART_HOST', `mail.xxxxx.com.tw')

sendmail.cf 檔案加入 : ( 方法二 )

DSmail.xxxx.com.tw

注意,所指定的 mail server 主機當然要能夠 允許您透過他連線寄信

Page 21: Mail Server  的架設

21

Spam Mail

spam mail :

廣告信,不受歡迎的 mail

mail bomb ,郵件炸彈,影響系統運作 使用 quota 管制使用者 mailbox 可使用大小

spammer

專寄發 spam mail 的人,稱呼為 spammer

spam mail 解決方式 :

Access Control List (/etc/mail/access) 控管 使用 firewall / filter 等方式阻擋連線

Page 22: Mail Server  的架設

22

相關檔案與設定makemap : 讀取文字檔案建立 sendmail 讀取的二進位檔newaliases : 讀取 aliases 檔案建立 aliases.db 檔案mailq : 觀察 mqueue 待寄信件狀態 (ex: mailq –v)

/var/log/maillog : mail 發送的記錄檔案/etc/mail/sendmail.cf :

DMaaa.bbb.ccc.ddd

O AliasFile=/path/filename

O MaxMessageSize=xxxxx

O PrivacyOptions=authwarnings,noexpn,novrfy

O MaxDaemonChildren=xx

O SmtpGreetingMessage=$j Sendmail $v/$Z; $b

Page 23: Mail Server  的架設

23

POP3/IMAP 安裝使用 rpm 套件安裝 :

redhat 、 mandrake 、 openlinux 等提供的 pop3 、

pop2 、 imap 等 daemon 程式放在 imap 套件內 步驟 :

mount /mnt/cdrom

cd /mnt/cdrom/RedHat/RPMS

rpm –ihv imap*

Page 24: Mail Server  的架設

24

POP3/IMAP 啟動設定pop3/imap 服務,是透過 inetd 啟動該服務,所以 /etc/inetc.conf 檔案需要有 pop3d 、 imap 敘述。/etc/inetd.conf :

pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d

imap stream tcp nowait root /usr/sbin/tcpd imapd

/etc/services 檔案內需要有對應的項目pop-3 110/tcp # POP version 3

imap 143/tcp # imap version 2

變更了 inetd.conf 檔案,需要重新啟動 inetd daemon

/etc/rc.d/init.d/inet restart

Page 25: Mail Server  的架設

25

fetchmail 程式的使用fetchmail 是一個可以透過 pop2 、 pop3 、 imap 等協定到指定 mail server 把信件抓回,然後寄回到使用者 mailbox 內的程式軟體fetchmail 的使用 :

fetchmail -p POP3 -u kenduest mail.cynix.com.tw

.fetchmailrc 自動化設定檔案 :

poll mail.xxxxx.com.tw with proto POP3

user “userid" there with password “passwd" is l_id here

mail.xxxxx.com.tw : mail server 名稱userid : 使用者 id , passwd : 密碼, l_id : 本地端 id