250 likes | 436 Views
Mail Server 的架設. kenduest (小州). Kenduest@cynix.com.tw. 章節內容. Mail Server 系統的簡介 Sendmail 的編譯安裝 Relay 觀念與設定 相關設定檔案 Access、Relay 、VirtualUserTable 等機制 Forward、Aliases 等機制 POP3/IMAP 的編譯安裝與設定. Mail Server 系統的簡介. MTA 與 MUA 、Deliver 解釋: MTA (Mail Transfer Agent)
E N D
Mail Server 的架設 kenduest (小州) Kenduest@cynix.com.tw
章節內容 • Mail Server 系統的簡介 • Sendmail 的編譯安裝 • Relay 觀念與設定 • 相關設定檔案 • Access、Relay 、VirtualUserTable 等機制 • Forward、Aliases 等機制 • POP3/IMAP 的編譯安裝與設定
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 程式
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 讀信
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 功能相同,不過有更多功能機制
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 (文件說明套件)
與 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 離開連線
Relay 觀念與設定 • 相關設定檔案與目錄 • 新版 sendmail 8.10.x 相關設定檔案都在 /etc/mail 目錄內。 • sendmail 8.9.x 或者是更舊的版本則是有一部份 的設定檔案放置在 /etc 目錄內 (ex: aliases 與 sendmail.cf) • /var/spool/mail 目錄內為放置使用者 mailbox • /var/spool/mqueue 目錄為放置 queue 信件
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
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 目錄
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 發信。
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 檔案
Access Database 檔案 • access 檔案內容敘述: • OK • 預設主機名稱不存在會發出錯誤,加入此項可以忽略 • OK 同時也是等於 RELAY • RELAY • 允許該連線端可以透過該 Mail Server 發信 • DISCARD • 把信件丟棄 • DENY • 發出錯誤,拒絕連線端 mail 請求 • ### any text • 與 DENY 功能一樣,不過可以自訂錯誤訊息
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 • xxx@hotmail.com “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:userid@hostname.com “550: do not allow this ID”
Relay-domains 檔案 • relay-domains 檔案 • relay-domains 檔案用途與 access 類似,不過只有 relay 相關功能設定而已 • relay-domains 檔案內容只有加上主機名稱 or ip,後面不用加上 RELAY 的敘述 • relay-domains 檔案範例: • .xxxxx.com.tw • 192.168 • host.xxx.com.tw
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
Forward 功能機制 • forward 為轉寄的功能 • 提供使用者可以把寄到 mail server 的信件, 自動轉寄到另外一個信箱 • 使用者在自己家目錄內建立 .forward 檔案, 權限為 600,內容就是要轉寄的位址。 • 若是希望轉寄還可以保留一份不要刪除, 要加上 \userid 。 userid 就是自己的 id • 使用範例: • \myid,peter@ms1.hinet.net,peter
Virtusertable 功能機制 • virtusertable 檔案 (/etc/mail/virtualuser) • 為應對某個 id 對應到另外的 id 或者是把某個 id 對應到另外的 e-mail 帳號。或者是把某個 e-mail 帳號對應到另外一個 id 或者是帳號 • 一般是用來解決一台 Mail Server 有多個主機名稱, 好讓於相同 id 能夠對應到不同的 id 使用者, 或者是對應到另外一個 e-mail 帳號 • virtusertable 檔案使用範例: service@mail.xxxxx.com.tw peter service@mail.yyyyy.com.tw john
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)
其他功能機制 • 指定透過另外一個 MTA 代為寄信: • sendmail.mc 檔案加入: (方法一) define(`SMART_HOST', `mail.xxxxx.com.tw') • sendmail.cf 檔案加入: (方法二) DSmail.xxxx.com.tw • 注意,所指定的 mail server 主機當然要能夠 允許您透過他連線寄信
Spam Mail • spam mail : • 廣告信,不受歡迎的 mail • mail bomb,郵件炸彈,影響系統運作 • 使用 quota 管制使用者 mailbox 可使用大小 • spammer • 專寄發 spam mail 的人,稱呼為 spammer • spam mail 解決方式: • Access Control List (/etc/mail/access) 控管 • 使用 firewall / filter 等方式阻擋連線
相關檔案與設定 • 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
POP3/IMAP 安裝 • 使用 rpm 套件安裝 : • redhat、mandrake、openlinux 等提供的 pop3、 pop2、imap 等 daemon 程式放在 imap 套件內 • 步驟 : mount /mnt/cdrom cd /mnt/cdrom/RedHat/RPMS rpm –ihv imap*
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
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