- 论坛徽章:
- 0
|
原文出處:
http://linux.vbird.org/linux_server/0390postfix.php
[color="#000099"]在介紹完了 sendmail 之後,您是否覺得~唉!怎麼 sendmail.cf 這個設定檔這麼難搞定~還得藉由 m4 scripts 才能搞定!而且, sendmail 需要考慮到相當多的安全設定項目 ( Security ),否則很容易一不小心就被攻擊了!那麼有沒有更簡單、更安全的郵件系統啊!當然有啊!那就是 Postfix 這個咚咚!Postfix 的作者有鑑於 sendmail 是這樣成功的一個 MTA ,但是偏偏有點小問題,所以該作者站在兼容的立場上面寫出這個幾乎可以完全取代 sendmail 的 MTA !此外, Postfix 還更加的安全呢,真是很不錯的一個 mail server 的替代方案啊!
前言
:
:
本章學習之前你需要先知道的知識
:
為什麼要有 Postfix 呢
?
套件安裝
:
:
使用 RPM 安裝完整的 Postfix + POP3 + SMTP + Procmail
(
Cyrus-SASL 1.5.xx 設定方式
)
:
Mandrake 9.0
:
Red Hat 9
:
使用 Tarball 安裝完整的 Postfix + POP3 + SMTP + Procmail
(
Cyrus-SASL 2.xx 設定方式
)
主機的設定
:
:
Postfix 的結構
:
基礎設定
(
設定接受的主機名稱
)
:
重要觀念:預設 Relay 與 收信 流程
:
啟動 smtp 郵件認證功能
:
幾個相關的檔案說明
用戶端的使用說明
:
關於郵件主機安全的設定
:
:
關於 Open Relay Data Base
:
關於 Procmail 用法
:
關於郵件過濾的規則設定
:
問題信件的送達
其他應用說明
:
參考資源
本章習題練習
[color="#000099"]前言: 在開始介紹 Postfix 這個伺服器之前,得先告訴您的是,這個 Postfix 的用途是『[color="#000066"]郵件伺服器』,那麼我們在前一章『
Sendmail 伺服器
』裡面已經提過了 mail server 的相關原理與咦鬟^程,這個 Postfix 與 sendmail 是類似的東西,那就是『MTA』啦,既然都是 MTA ,使用的協定也相同,同時,這個 Postfix 最早之前的用途也是想要用來『取代 sendmail 』。所以,為了節省筆墨,也為了未來進行修改的時候不要有太多的版本 ( 意思是這裡 copy 一份 mail 原理,那裡又有一份原稿~ ) ,因此上,在進行本章的學習之前,請『務必』前往『
簡易 Mail server -- sendmail
』讀一讀 Mail server 的原理與相關的說明啊!
[color="#000099"]本章學習之前你需要先知道的知識:
上面剛剛提到,學習本章你必須要知道
Mail Server 的相關知識
才行,在這裡,我們不再說明已經提過的咚咚,請自行再前往翻閱。由於架設某種伺服器的第一步就是要瞭解該伺服器的工作原理,因此,在架設 Postfix 之前,您至少要知道以下的幾個咚咚: [color="#000066"]Mail Server 能否咦髋c DNS ( MX 與 A recode )的相關性為何? [color="#000066"]什麼是 MTA, MUA, MDA 與 Mail box, Mailing list 等相關的術語,及其內容所代表的意義! [color="#000066"]什麼是 smtp, pop3 以及 imap 協定,他們的用途分別是什麼? [color="#000066"]什麼是 Relay 與 Open Relay ? [color="#000066"]什麼是 SMTP 郵件認證? [color="#000066"]什麼是郵件的別名與轉遞( aliases 與 forward )? [color="#000066"]什麼是 Procmail 與什麼是 ORDB 呢? 如果您不曉得上面問題的答案,請不要『白目』的繼續往下看 ^_^,先前往『
簡易的 sendmail 伺服器
』瞧一瞧相關的原理之後,再來這裡吧!慢點學習不打緊,學的不精....可能會有害啊! @_@
[color="#000099"]為什麼要有 Postfix 呢?
這是個很有趣的問題:『為什麼要有 Postfix 呢?有了
sendmail
不就可以了嗎?!』說到這個就要談到 postfix 的由來了!
Postfix 是由 Wietse Zweitze Venema 先生(
http://www.porcupine.org/wietse/
)所發展的。早期的 mail server 都是使用 sendmail 架設的,還真的是『僅此一家,絕無分號!』 ^_^ !不過,Venema 博士覺得 sendmail 雖然很好用,但是畢竟不夠安全,尤其效能上面並不十分的理想,最大的困擾是....他的設定檔 sendmail.cf 真的是太難懂了!對於網管人員來說,要設定好 sendmail.cf 這個檔案,真不是人作的工作~
為了改善這些問題, Venema 博士就在 1998 年利用他老大在 IBM 公司第一個休假年進行一個計畫:『[color="#000066"]設計一個可以取代 sendmail 的軟體套件,可以提供網站管理員一個更快速、更安全、而且"完全相容"於 sendmail 的 mail server 軟體!』這個計畫還真的成功了!而且也成功的使用在 IBM 內部,可以說是完全取代了 sendmail 這個郵件伺服器!在這個計畫成功之後, Venema 博士也在 1998 年首次釋出這個自行發展的郵件伺服器,並定名為 VMailer。不過, IBM 的律師卻發現一件事,那就是 VMailer 這個名字與其他已註冊的商標很類似,這樣可能會引起一些註冊上面的困擾。為了避免這個問題,所以 Venema 博士就將名稱改為 Postfix ![color="#000066"]這個 Postfix 有『在什麼什麼之後修正』的意思。鳥哥個人認為, Venema 先生最早的構想並不是想要『[color="#000066"]創造一個全新的 Mail server 軟體,而是想要製造一個可以完全相容於 sendmail 的軟體』,所以,Venema 先生認為他自行發展的軟體應該是『改良 sendmail 的缺失』,所以才稱為 Postfix 吧!取其意為:『在 sendmail 之後的改良的郵件伺服器軟體!』
所以啦, [color="#000066"]Postfix 設計的理念上面,主要是針對『想要完全相容於 sendmail』所設計出來的一款『內在部分完全新穎』的一個郵件伺服器軟體。就是由於這個理念,因此,Postfix 改善了 sendmail 安全性上面的問題,改良了 mail server 的工作效率,更由於其設定檔完全為 ASCII 碼,且設定內容都是『人類看的懂得語言!』因此,你可以輕易的由 sendmail 改良到 Postfix 上面!這也是當初 Venema 博士的最初構想啊!就是基於這個構想,所以, Postfix 在外部設定檔案的支援度,與 sendmail 幾乎沒有兩樣,同樣的支援 aliases 這個檔案,同樣的支援 ~/.forward 這個檔案,也同樣的支援 SASL 的 SMTP 郵件認證功能等等!所以,呵呵!趕緊來學一學怎樣架設 Postfix 這個相當出色的郵件伺服器吧! ^_^[color="#000099"]套件安裝 跟之前一樣的,我們需要的 mail server 功能有哪些呢? - [color="#000066"]具有 smtp 的功能;
- [color="#000066"]具有 pop3 的功能;
- [color="#000066"]具有 procmail 過濾郵件的功能;
- [color="#000066"]具有 Open Relay Data Base 抵擋的功能;
為達成上述的功能,所以你至少需要底下的幾個套件: - [color="#000066"]cyrus-sasl
- [color="#000066"]procmail
- [color="#000066"]postfix
- [color="#000066"]imap(同時支援 pop3 及 imap 兩個協定)
如果您是使用 Mandrake 後期版本的話,那麼恭喜您,由於 Mandrake 預設就是使用 Postfix 做為郵件伺服器,並且在安裝的時候就已經將 Postfix 安裝到你的系統當中了。至於 Red Hat 9 同樣的也提供了 Postfix 喔!而如果您是使用非 postfix 為郵件伺服器的 Linux distribution ,呵呵!仔細的查看後面介紹的
Tarball
安裝的方式吧!
[color="#000099"]使用 RPM 安裝完整的 Postfix + POP3 + SMTP + Procmail
[color="#000000"]
[color="#000000"]底下我們分 Mandrake 9.0 與 Red Hat 9 這兩個主要 Linux distribution 來介紹 Postfix + Cyrus-SASL 的方法喔!
[color="#000000"]
[color="#000066"]Makdrake 9.x 版本
[color="#000000"]如果你是使用 Mandrake 之類的 Linux distribution 的話,由於他預設是以 Postfix 這個優良的郵件伺服器系統,所以您可以不費吹灰之力的,就將 Postfix 以 RPM 安裝完畢囉!基本上,如果是 Mandrake 的話,你需要安裝的套件大致上有: - [color="#000066"]SMTP 認證套件: cyrus-sasl ( cyrus-sasl-1.5.27-5mdk 以及其他認證機制函式庫 )
- [color="#000066"]Postfix 郵件伺服器: postfix ( postfix-1.1.11-4mdk )
- [color="#000066"]POP3 伺服器: imap ( imap-2001a-9mdk, imap-devel-2001a-9mdk 兩個 )
- [color="#000066"]郵件分析軟體:procmail ( procmail-3.22-3mdk )
你至少要安裝的套件就有上面這幾個,同時,請拿出您的原版光碟將上面的套件全部安裝吧!安裝的方法我們在『
鳥哥的 Linux 私房菜 -- 基礎學習篇
』介紹過的
RPM 與 Tarball 安裝方法
裡面提過多次了,請自行參考喔!安裝完畢之後,你的主機就已經具有 Postfix 這個系統啦!不過,由於我們還要提供 SMTP 以及其他相關的功能,所以這裡我們必需要確認一下各個套件是否都完全的安裝了呢?底下我們就一個一個的來設定吧!([color="#000066"]註:請特別留意 Cyrus-sasl 的版本,因為不同的版本他的函式庫所在目錄與設定檔都不相同!因此,在本篇文章中,您會發現我使用 Tarball 安裝的 2.xx 版本與使用 RPM 安裝的 1.5.xx 版本設定檔的內容不相同,不要懷疑,確實是如此的喔! )
[color="#cccccc"]安裝 cyrus-sasl[color="#cccccc"]1. 安裝
[color="#ff6666"]# 安裝的方法很簡單,就是使用 RPM 即可!不過,請先確認是否已經安裝!
[color="#ffffff"][root@test root]# [color="#ffff00"]rpm -qa | grep sasl
[color="#ffffff"]libsasl7-1.5.27-5mdk
[color="#ffffff"]cyrus-sasl-1.5.27-5mdk
[color="#ffffff"]libsasl7-devel-1.5.27-5mdk
[color="#ffffff"]libsasl7-plug-plain-1.5.27-5mdk
[color="#ffffff"]libsasl7-plug-login-1.5.27-5mdk
[color="#ff6666"]# 如果尚未安裝該套件,請拿出你的光碟片, mount 光碟,然後找尋該檔案,
[color="#ff6666"]# 直接安裝他吧!不過要注意的是,上面的檔案都要安裝喔!因為我們使用的
[color="#ff6666"]# 是最基本的 plain 與 login 這兩個機制,所以至少我們要安裝上面五個咚咚!
[color="#ffffff"][root@test root]# [color="#ffff00"]rpm -ivh cyrus-sasl-1.5.27-5mdk.i586.rpm
[color="#ff6666"]# 如果有發生屬性相依的問題,請自行再將需要的檔案自光碟當中找出,
[color="#ff6666"]# 然後加以安裝吧![color="#cccccc"]
[color="#cccccc"]2. 設定與啟動
[color="#ff6666"]# 由於 Cyrus-sasl 在 Mandrake 當中是 1.5.27 版本,所以他能支援的項目有:
[color="#ffccff"]shadow : 使用 /etc/shadow 做為認證碼;
[color="#ffccff"]pam : 使用 pam 模組做為認證,這個需要在 /etc/pam.d 這個目錄下新增
[color="#ffccff"] 一個名為 smtp 的檔案,並設定檔案內容才行!
[color="#ffccff"]sasldb : 使用 SASL 的認證函式庫,使用這個功能時,你必需要額外的
[color="#ffccff"] 指定 1.函式庫的名稱; 2.使用 saslpasswd 程式增加使用者!
[color="#ffccff"] 鳥哥個人認為這個功能不太好用,因為每新增一個使用者需要主動的
[color="#ffccff"] 幫使用者新增帳號、密碼到認證函式庫中,不太方便!
[color="#ffccff"] 不過如果您還使用其他的伺服器如 LDAP, MySQL 等等軟體時,
[color="#ffccff"] 則這個功能可就大大的有幫助啦!因為他可以分享帳號與密碼吶!
[color="#ffccff"]pwcheck: 這個功能就不錯啦! pwcheck 是一個服務(daemon),必需要在
[color="#ffccff"] 啟動 postfix 之前就啟動啦,因為 sasl 的認證就靠這個 daemon,
[color="#ffccff"] 基本上,他可以經由讀取 /etc/shadow 的資料來提供 client 端
[color="#ffccff"] 認證的功能!目前我們 Mandrake 9.0 預設使用的是這個 daemon!
[color="#ff6666"]# 給他設定開機時啟動 pwcheck 的功能吧!
[color="#ffffff"][root@test root]# [color="#ffff00"]vi /etc/rc.d/rc.local
[color="#ff6666"]# 在這個檔案當中最底下新增一行:
[color="#ffff00"]/usr/sbin/pwcheck
[color="#ff6666"]# 並且立刻執行這個 daemon 喔:
[color="#ffffff"][root@test root]# [color="#ffff00"]/usr/sbin/pwcheck
[color="#ffffff"][root@test root]#[color="#ffff00"] ps -aux | grep pwcheck
[color="#ffffff"]root 12602 0.0 0.5 1460 348 ? S 02:59 0:00 /usr/sbin/pwcheck
[color="#ff6666"]# 看到沒!要出現這個咚咚才算是有啟動 pwcheck 喔!
[color="#ff6666"]# 在 Sendmail 當中,我們必需建立一個名為 Sendmail.conf 的檔案,來告訴
[color="#ff6666"]# sasl 我們所需要的認證模式,那麼在 postfix 當中也一樣,我們必需要建立
[color="#ff6666"]# 一個檔案名稱為[color="#ffccff"]smtpd.conf[color="#ff6666"]來告訴 sasl ,喝!我 postfix 要的認證方式為何!
[color="#ff6666"]# 所以你需要這樣做:
[color="#ffffff"][root@test root]# [color="#ffff00"]cd /usr/lib/sasl
[color="#ffffff"][root@test sasl]# [color="#ffff00"]echo 'pwcheck_method: pwcheck' > smtpd.conf
[color="#ff6666"]# 上面這樣做完之後,系統就知道了:
[color="#ffccff"]1. postfix 要用 SMTP 認證時會去讀取 /usr/lib/sasl/smtpd.conf 並且知道
[color="#ffccff"] 是以 pwcheck 這支程式進行身份認證的動作;
[color="#ffccff"]2. 而 pwcheck 這支程式會主動去讀取 /etc/shadow ,裡面的密碼做認證
[color="#ff6666"]# 到此為止,就已經設定好了 cyrus sasl 的部分啦!
[color="#cccccc"]安裝 postfix[color="#cccccc"]1. 安裝
[color="#ff6666"]# 安裝的方法很簡單,就是使用 RPM 即可!不過,請先確認是否已經安裝!
[color="#ffffff"][root@test root]# [color="#ffff00"]rpm -qa | grep postfix
[color="#ffffff"]postfix-1.1.11-4mdk
[color="#ff6666"]# 如果尚未安裝該套件,請拿出你的光碟片, mount 光碟,然後找尋該檔案,
[color="#ff6666"]# 直接安裝他吧!
[color="#ffffff"][root@test root]# [color="#ffff00"]rpm -ivh postfix-1.1.11-4mdk.i586.rpm
[color="#ff6666"]# 這樣就安裝完畢啦!主機設定的部分請參考下一節喔!
[color="#cccccc"]安裝 procmail[color="#cccccc"]1. 安裝
[color="#ffffff"][root@test root]# [color="#ffff00"]rpm -qa | grep procmail
[color="#ffffff"]procmail-3.22-3mdk[color="#cccccc"]
[color="#cccccc"]2. 設定:
[color="#ff6666"]# 在設定方面,這主要與 procmail 有關而已,您可以下載 procmailrc
# 並放置到 /etc/ 底下即可詳細的資料請參考上一章
簡易 sendmail 之說明
!
[color="#cccccc"]安裝 imap[color="#cccccc"]1. 安裝
[color="#ffffff"][root@test root]# [color="#ffff00"]rpm -qa | grep imap
[color="#ffffff"]imap-2001a-9mdk
[color="#ffffff"]imap-devel-2001a-9mdk[color="#cccccc"]
[color="#cccccc"]2. 設定:
[color="#ff6666"]# 直接設定成為開機啟動即可:
[color="#ffffff"][root@test root]#[color="#ffff00"] chkconfig --add ipop3
[color="#ffffff"][root@test root]#[color="#ffff00"] /etc/rc.d/init.d/xinetd restart
[color="#ff6666"]# 這樣就已經可以收信件啦!
[color="#000066"]安裝的地方當中,重點在於 Cyrus-SASL 的安裝啦!由於我們需要有 SASL 的支援,所以必需要安裝這個咚咚!並且也需要設定 smtpd.conf 這個檔案!這樣就已經差不多 OK 啦!接下來請繼續參考
主機設定
的地方嚕!
[color="#000066"]Red Hat 9 版本:
什麼?!Red Hat 9 也同時提供 Postfix 啊?!沒錯的啦!呵呵!很高興吧!所以說, Red Hat 9 不但提供了 sendmail 給我們使用,還額外提供了 Postfix 讓我們可以隨意的轉換郵件伺服器軟體呢!不過,在 Red Hat 9 的 Cyrus-sasl 已經是 2.xx 版本了,而且還主動的提供相容於 1.5.xx 版本的函式庫呢!真是相當的棒啊!但是因為 Red Hat 9 提供的 Postfix 還是使用 1.xx 版,因此我們在 Red Hat 9 預設的 Postfix 郵件伺服器中,還是使用 Cyrus SASL 1.5.xx 的函式庫喔!所以也就無法使用 saslauthd 這個機制了!並且, Red Hat 9 並沒有提供 pwcheck 這個程式,所以在 Red Hat 9 底下的 Cyrus SASL 認證機制就需要使用 sasldb 了!至於安裝的方法最簡單的方式就是以我們在
網路升級套件
那一章節提到的 APT 來進行安裝即可!
[color="#cccccc"]1. 安裝:
[color="#ffffff"][root@test root]#[color="#ffff00"] apt-get install postfix
[color="#ffffff"][root@test root]#[color="#ffff00"] apt-get install cyrus-sasl
[color="#ffffff"][root@test root]#[color="#ffff00"] apt-get install procmail
很簡單吧!這樣就搞定了 Red Hat 9 的 Postfix 囉!([color="#000066"]注意, Mandrake 與 Red Hat 不同版本所使用的 Cyrus SASL 機制並不相同喔!在 Mandrake 當中預設是 pwcheck 而在 Red Hat 則預設使用 sasldb 這個驗證機制!並且,由於 Red Hat 9 在編譯 postfix 的時候使用的是 SASL version 1 ,所以無法使用 saslauthd 這個好用的機制,鳥哥認為,您最好使用 Tarball 來安裝您的 Postfix 在您的 Red Hat 9 上面喔!)
[color="#000099"]使用 Tarball 安裝完整的 Postfix + POP3 + SMTP + Procmail (適用任何版本的 Linux 喔!)
以 Tarball 安裝 Postfix 也不困難,比起 sendmail 來說,要簡單的很多喔!我們這裡選擇的主要套件有: 至於 procmail 與 imap 兩個套件都使用 Linux distribution 提供的 RPM 版本就好了,不需要額外的改裝啊!那麼底下就來談一談怎麼安裝吧!([color="#000066"]註: Cyrus SASL 與 Cyrus SASL2 這兩個不同版本的 SASL 函式庫放置的目錄並不相同,所以你可以分別安裝 cyrus version 1 與 version 2 喔!在鳥哥的案例當中,還不會發生問題就是了!另外,如果您是 Red Hat 9 的使用者,由於 Red Hat 9 已經提供了 Cyrus SASL version 2 了,所以您可以直接略過 Cyrus SASL 的安裝部分,直接到 Postfix 2.xx 的安裝呢!)
[color="#cccccc"]安裝 Cyrus SASL 2.xx 版本![color="#cccccc"]1. 首先將資料解壓縮(假設您將我們網站的檔案捉到 /root 底下了!)
[color="#ffffff"][root@test root]# [color="#ffff00"]cd /usr/local/src
[color="#ffffff"][root@test src]# [color="#ffff00"]tar -zxvf /root/cyrus-sasl-2.1.12.tar.gz
[color="#ff6666"].....(略).....最後建立一個 cyrus-sasl-2.1.12 的目錄[color="#cccccc"]
[color="#cccccc"]2. 再來就是設定你的 cyrus SASL 的參數以及編譯囉!
[color="#ffffff"][root@test src]# [color="#ffff00"]cd cyrus-sasl-2.1.12
[color="#ffffff"][root@test cyrus-sasl-2.1.12]# [color="#ffff00"]./configure
[color="#ffffff"]> [color="#ffff00"]--prefix=/usr/local/cyrus-sasl2 --enable-login --enable-plain
[color="#ffffff"]>[color="#ffff00"] --enable-pwcheck --with-saslauthd=/var/run
[color="#ff6666"]# 注意上面的語法!!那個 是跳脫字元喔!後面直接 Enter !
# 不要接任何空白或者是 tab 按鍵!若有問題,請到
Shell
看看!
[color="#ff6666"]# 至於那個 pwcheck 的項目,就是要用來做為密碼確認的一個咚咚囉!
[color="#ffffff"][root@test cyrus-sasl-2.1.12]# [color="#ffff00"]make clean && make
[color="#ffffff"][root@test cyrus-sasl-2.1.12]# [color="#ffff00"]make install
[color="#ff6666"]# 上面三個步驟會花去一些時間,請耐心等待~
[color="#ff6666"]# 而由於我們剛剛設定了[color="#ffccff"] --prefix=/usr/local/cyrus-sasl2 [color="#ff6666"]這個參數,
[color="#ff6666"]# 所以, make install 之後,我們有用的函式庫會在
[color="#ff6666"]#[color="#ffccff"] /usr/local/cyrus-sasl2/lib/sasl2 [color="#ff6666"]這個路徑當中,但是, cyrus 程式
[color="#ff6666"]# 會主動去找 [color="#ffccff"]/usr/lib/sasl2 [color="#ff6666"]這個目錄!所以,我們必需要做連結檔!
[color="#ff6666"]# 才可以讓未來我們的 postfix 可以直接找的到我們所要的函式庫喔!
[color="#ffffff"][root@test cyrus-sasl-2.1.12]# [color="#ffff00"]cd /usr/lib
[color="#ffffff"][root@test lib]#[color="#ffff00"] ln -s /usr/local/cyrus-sasl2/lib/* .
[color="#ff6666"]# 這樣就建立起連結檔囉!很簡單吧! ^_^不過要注意喔,
[color="#ff6666"]# 上面這一行最後面那個小數點『.』不要忘記加了![color="#cccccc"]
[color="#cccccc"]3. 準備建立 Postfix 與 cyrus SASL 使用的簡易設定檔:
[color="#ffffff"][root@test lib]# [color="#ffff00"]cd /usr/lib/sasl2
[color="#ffffff"][root@test sasl2]# [color="#ffff00"]echo 'pwcheck_method: saslauthd' > smtpd.conf
[color="#ffffff"][root@test sasl2]# [color="#ffff00"]echo 'mech_list:plain login' >> smtpd.conf
[color="#ff6666"]# 注意了!一般來說, Postfix 會使用 SASL 這個函式庫裡面相關的設定檔,
[color="#ff6666"]#[color="#ffccff"] /usr/lib/sasl2/smtpd.conf [color="#ff6666"]這個檔案的設定就是 Postfix 的預設使用 SASL 的
[color="#ff6666"]# 參數檔案,與 1.5.xx 版本不太相同的地方是, 2.xx 版本使用不同的機制:
[color="#ffccff"]auxprop :使用 sasldb2 這個共享資料庫,同樣需要使用共享密碼檔案喔!
[color="#ffccff"] 所以一般來說,單純的 Postfix 比較少使用這種機制;
[color="#ffccff"]saslauthd:使用 saslauthd 這個 daemon 進行認證的工作,所以幾乎
[color="#ffccff"] 不需要其他的設定值哪,指定 saslauthd 就好啦! ^_^
[color="#ffccff"]pwcheck :使用與 1.5 版相似的認證 daemon ,不過在 2.xx 版本裡面這個模式
[color="#ffccff"] 支援度比較沒有這麼好的啦,所以請愛用 saslauthd 囉!
[color="#ff6666"]# 我們使用 SASL 預設的 saslauthd 這支程式做為密碼認證的 daemon。
[color="#ff6666"]# 至於 [color="#ffccff"]mech_list:plain login [color="#ff6666"]是列出支援的認證機制的意思,我們使用的
[color="#ff6666"]# 是極為簡單的 login 與 plain 兩種機制而已![color="#cccccc"]
[color="#cccccc"]4. 建立一些需要的參數:
[color="#ffffff"][root@test sasl2]# [color="#ffff00"]vi /etc/man.config
[color="#ff6666"]# 新增底下這一行之後,未來我們就可以透過 man 這個工具來查詢 sasl
[color="#ff6666"]# 相關的指令的用法了!而不需要修改任何咚咚!不過要注意的是,
[color="#ff6666"]# 這個檔案在每個 Linux distributions 當中不見得相同,例如 Open Linux
[color="#ff6666"]# 檔名是 /etc/man.conf 呢!
[color="#ffff00"]MANPATH /usr/local/cyrus-sasl2/man[color="#cccccc"]
[color="#cccccc"]5. 檢驗 saslauthd 這支程式是否可行!
[color="#ff6666"]# 在 cyrus-sasl 的原始碼裡面提供了一支小程式用來判斷 saslauthd 的認證機制
[color="#ff6666"]# 是否成功的啟動了,這個小程式就是 testsaslauthd 囉!在剛剛原始碼目錄下,
[color="#ff6666"]# 所以你可以這樣做:
[color="#ffffff"][root@test sasl2]#[color="#ffff00"] /usr/local/cyrus-sasl2/sbin/saslauthd -a shadow
[color="#ff6666"]# 執行之後, saslauthd 的 PID 會被紀錄到 /var/run/mux.pid 這個檔案!
[color="#ffffff"][root@test sasl2]#[color="#ffff00"] cd /usr/local/src/cyrus-sasl-2.1.12/saslauthd/
[color="#ffffff"][root@test saslauthd]#[color="#ffff00"] make testsaslauthd
[color="#ffffff"][root@test saslauthd]#[color="#ffff00"] ./testsaslauthd -u userID -p 'yours.passwd'
[color="#ffffff"]0: OK "Success."
[color="#ff6666"]# 若顯示 OK 的話!那麼就是成功啦!很好!我喜歡~[color="#cccccc"]
[color="#cccccc"]6. 設定開機時啟動
[color="#ffffff"][root @test saslauthd]# [color="#ffff00"]vi /etc/rc.d/rc.local
[color="#ff6666"]# 加入這一行:
[color="#ffff00"]/usr/local/cyrus-sasl2/sbin/saslauthd -a shadow
[color="#cccccc"]安裝 Postfix 2.xx 版本![color="#cccccc"]0. 先確認有沒有這個檔案存在!因為我們的 Postfix 會使用到很多資料庫啊!
[color="#ffffff"][root@test root]# [color="#ffff00"]locate pcre.h | grep include
[color="#ffffff"]/usr/include/pcre.h
[color="#ff6666"]# 這個檔案也有可能存在於 /usr/include/pcre/pcre.h 裡面!不要擔心,存在就好了
[color="#ff6666"]# 如果沒有存在的話,例如 Mandrake 9.0 預設狀態可能並不會主動安裝這個套件,
[color="#ff6666"]# 請自行拿出原版光碟,安裝 MDK 的 libpcre0xxxx 檔案,至於 redhat 等
[color="#ff6666"]# 其他版本,請自行安裝 pcre 相關的套件吧!在 Red Hat 9 則是需要
[color="#ff6666"]# pcre-devel 這個套件喔! ( apt-get install pcre-devel)[color="#cccccc"]
[color="#cccccc"]1. 首先將資料解壓縮(假設您將我們網站的檔案捉到 /root 底下了!)
[color="#ffffff"][root@test root]# [color="#ffff00"]cd /usr/local/src
[color="#ffffff"][root@test src]# [color="#ffff00"]tar -zxvf /root/postfix-2.0.4.tar.gz
[color="#ff6666"].....(略).....最後建立一個 postfix-2.0.4 的目錄[color="#cccccc"]
[color="#cccccc"]2. 清除規則並且建立新的使用 SMTP 的規則給 postfix
[color="#ffffff"][root@test src]# [color="#ffff00"]cd /usr/local/src/postfix-2.0.4
[color="#ffffff"][root@test postfix-2.0.4]# [color="#ffff00"]make tidy [color="#ffccff"]# 清除規則
[color="#ffffff"][root@test postfix-2.0.4]# [color="#ffff00"]make makefiles CCARGS="-DUSE_SASL_AUTH
[color="#ffffff"]>[color="#ffff00"] -I/usr/local/cyrus-sasl2/include/sasl/"
[color="#ffffff"]>[color="#ffff00"] AUXLIBS="-L/usr/local/cyrus-sasl2/lib -lsasl2"
[color="#ff6666"]# 上面的動作在建立 Makefile 囉!其中那個 -CCARGS 後面接的 [color="#ffccff"]-DUSE_SASL_AUHT
[color="#ff6666"]#[color="#ffccff"] -I/usr/local/cyrus-sasl2/include/sasl[color="#ff6666"] 其中 [color="#ffccff"]-I 後面的路徑就是 SASL2 的
[color="#ff6666"]#[color="#ffccff"] 函式庫所在的目錄喔[color="#ff6666"]!請依照您安裝的 sasl2 目錄所在而定!
[color="#ffffff"][root@test postfix-2.0.4]# [color="#ffff00"]make
[color="#ff6666"]# 就是開始編譯啦!過程有點久喔!如果有出現任何 Error 時,
[color="#ff6666"]# 請將 error 仔細的查看一下吧!通常最大的原因都是一些
[color="#ff6666"]# include 檔案沒有安裝,也就是某些重要的套件沒有安裝之故,
[color="#ff6666"]# 例如 pcre.h 這個檔案就是一個例子囉!
[color="#ff6666"]#[color="#ffccff"] 解決的方法就是將該缺乏的套件安裝進去系統啦!
[color="#ff6666"]# 如果是 Red Hat 9 的話,可以這樣下達指令:
[color="#ff6666"]# [color="#ffccff"]make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/include/sasl"
[color="#ff6666"]# [color="#ffccff"]AUXLIBS="-L/usr/lib/sasl2 -lsasl2"
[color="#ff6666"]# 因為 Red Hat 9 的 SASL2 路徑在 /usr/include/sasl ,這裡要特別的強調,
[color="#ff6666"]# 否則由於 Red Hed 9 同時提供 Cyrus SASL 1.5.x 以及 2.x.x 的版本,
[color="#ff6666"]# 可能會造成程式的誤判,那麼很可能會出現下列的錯誤喔:
[color="#ff6666"]# [color="#ffccff"]fatal: SASL per-connection security setup[color="#ffffff"]
[color="#ff6666"]# 上面的錯誤訊息出現在 /var/log/maillog 中![color="#cccccc"]
[color="#cccccc"]3. 安裝前準備工作:
[color="#ff6666"]# 如果您的系統是由 sendmail 要改換到 Postfix 的話,你不需要移除 sendmail ,
[color="#ff6666"]# 不過卻需要進行一些小手術喔!
[color="#ffffff"][root@test postfix-2.0.4]# [color="#ffff00"]mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
[color="#ffffff"][root@test postfix-2.0.4]# [color="#ffff00"]mv /usr/bin/newaliases /usr/bin/newaliases.OFF
[color="#ffffff"][root@test postfix-2.0.4]# [color="#ffff00"]mv /usr/bin/mailq /usr/bin/mailq.OFF
[color="#ffffff"][root@test postfix-2.0.4]#[color="#ffff00"] chmod 755 /usr/sbin/sendmail.OFF
[color="#ffffff"]> [color="#ffff00"] /usr/bin/newaliases.OFF /usr/bin/mailq.OFF
[color="#ff6666"]# 此外,還需要建立一個名為 postdrop 的群組與 postfix 的使用者喔!
[color="#ffffff"][root@test postfix-2.0.4]#[color="#ffff00"] groupadd -r postdrop
[color="#ffffff"][root@test postfix-2.0.4]#[color="#ffff00"] useradd -r -s /bin/false postfix
[color="#ff6666"]# 建立一個系統資料帳號吶!
[color="#ffffff"][root@test postfix-2.0.4]# [color="#ffff00"]echo 'postfix: root' >> /etc/aliases
[color="#ff6666"]# 請注意,如果您之前安裝過 sendmail 的話,那麼不同版本的 sendmail 他的
[color="#ff6666"]aliases 放置的目錄並不相同,所以上面這行指令請依您的主機來設定![color="#cccccc"]
[color="#cccccc"]4. 開始安裝 Postfix 到 /etc/postfix 這個目錄下:
[color="#ffffff"][root@test postfix-2.0.4]#[color="#ffff00"] make install
[color="#ff6666"]# 底下會出現一大堆的問題集,不管如何,幾乎按下 enter 就對啦!
[color="#ff6666"]# 除了底下這兩個問題(最後兩個)可以選擇將 readme 檔案存下來喔!
[color="#ffffff"]Please specify the destination directory for the Postfix sample
[color="#ffffff"]configuration files.
[color="#ffffff"]sample_directory: [/etc/postfix] [color="#ffff00"]/etc/postfix/sample
[color="#ffffff"]Please specify the destination directory for the Postfix README
[color="#ffffff"]files. Specify "no" if you do not want to install these files.
[color="#ffffff"]readme_directory: [no] [color="#ffff00"]/etc/postfix/readme_files
# 這樣就安裝成功啦!接下來請開始查閱
主機的設定
那一節囉!
[color="#000099"]主機的設定 安裝完畢 postfix 之後,接著下來就是設定了!同樣的,在設定主機之前,有幾個東西是您必需先取得的喔:
- [color="#000066"]具有合法的 hostname ,或者是經過授權的 DNS 主機來設定您自己的主機名稱(hostname);
- [color="#000066"]您的 hostname 最好擁有一個 MX 的紀錄(record);
- [color="#000066"]至少一定要瞭解到什麼是 Relay 的問題,以及規劃一下您所想要開放 relay 的網域;
你至少需要有這些資料才行吶!好了,我先假設一下我的案例好了:
- [color="#000066"]我的 hostname 為 vbird.adsldns.org;
- [color="#000066"]我的 hostname 還有個別名為 www.vbird.adsldns.org ,也就是說, vbird.adsldns.org 與 www.vbird.adsldns.org 都指向同一個 IP ;
- [color="#000066"]我的 domain name 為 adsldns.org ;
- [color="#000066"]我預計開放的 relay 網域為 vbird.org 這個網域,與內部的 192.168.1.0/24 這個網域,還要可以使用 access 這個檔案的設定功能!
開始來瞭解 postfix 囉! ^_^
[color="#000099"]Postfix 的結構
在主機的設定之前我們得先瞭解一下 postfix 的整體構造,以方便以後來處理我們的檔案吶!所以底下我們會先針對 postfix 這個套件的結構做個簡單的說明,然後再針對各個設定項目來進行說明囉!Postfix 的設定檔幾乎完全都在 /etc/postfix 裡面,至於執行檔則在 /usr/sbin 裡面,我們分別來談一談幾個主要的注意事項吧!
- [color="#000099"]設定檔:[color="#000066"]Postfix 的設定檔都在 /etc/postfix 裡面,主要的設定檔有:
- [color="#000066"]/etc/postfix/main.cf :這個就是最重要的 postfix 的設定檔了!等一下我們談到的設定都在這個檔案裡面進行修改的動作!基本上,他本身就是一個簡單的說明文件檔啦!不過,要注意的是,在你修改完成了 main.cf 之後,請記得『[color="#000066"]一定要重新 reload 或重新 restart postfix 才行!』
- [color="#000066"]/etc/postfix/master.cf:這個檔案是另外一個重要的 postfix 設定檔!他主要是規定了 postfix 每個程序的咦鲄?担
|
|