mail server 的架設
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 PresentationTRANSCRIPT
2
章節內容Mail Server 系統的簡介Sendmail 的編譯安裝Relay 觀念與設定
相關設定檔案 Access 、 Relay 、 VirtualUserTable 等機制 Forward 、 Aliases 等機制
POP3/IMAP 的編譯安裝與設定
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 程式
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 讀信
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 功能相同,不過有更多功能機制
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 ( 文件說明套件 )
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 離開連線
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 信件
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
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 目錄
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 發信。
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 檔案
13
Access Database 檔案access 檔案內容敘述 :
OK
預設主機名稱不存在會發出錯誤,加入此項可以忽略 OK 同時也是等於 RELAY
RELAY
允許該連線端可以透過該 Mail Server 發信
DISCARD
把信件丟棄
DENY
發出錯誤,拒絕連線端 mail 請求
### any text
與 DENY 功能一樣,不過可以自訂錯誤訊息
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”
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
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
17
Forward 功能機制forward 為轉寄的功能提供使用者可以把寄到 mail server 的信件,自動轉寄到另外一個信箱使用者在自己家目錄內建立 .forward 檔案,權限為 600 ,內容就是要轉寄的位址。若是希望轉寄還可以保留一份不要刪除,要加上 \userid 。 userid 就是自己的 id
使用範例 :
\myid,[email protected],peter
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
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)
20
其他功能機制指定透過另外一個 MTA 代為寄信 :
sendmail.mc 檔案加入 : ( 方法一 )
define(`SMART_HOST', `mail.xxxxx.com.tw')
sendmail.cf 檔案加入 : ( 方法二 )
DSmail.xxxx.com.tw
注意,所指定的 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 等方式阻擋連線
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
23
POP3/IMAP 安裝使用 rpm 套件安裝 :
redhat 、 mandrake 、 openlinux 等提供的 pop3 、
pop2 、 imap 等 daemon 程式放在 imap 套件內 步驟 :
mount /mnt/cdrom
cd /mnt/cdrom/RedHat/RPMS
rpm –ihv imap*
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
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