亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1610 | 回復(fù): 0
打印 上一主題 下一主題

鳥哥VBird編譯安裝Postfix(轉(zhuǎn)) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-12-19 00:01 |只看該作者 |倒序瀏覽

使用 Tarball 安裝完整的 Postfix + POP3 + SMTP + Procmail 適用任何版本的 Linux
 
以 Tarball 安裝 Postfix 也不困難,比起 sendmail 來說,要簡單的很多喔!我們這里選擇的主要套件有:
cyrus-sasl-2.1.12.tar.gz
postfix-2.0.4.tar.gz
至于 procmail 與 imap 兩個套件都使用 Linux distribution 提供的 RPM 版本就好了,不需要額外的改裝。∧敲吹紫戮蛠碚勔徽勗趺窗惭b吧!(注: Cyrus SASL 與 Cyrus SASL2 這兩個不同版本的 SASL 函式庫放置的目錄并不相同,所以你可以分別安裝 cyrus version 1 與 version 2 喔!在鳥哥的案例當(dāng)中,還不會發(fā)生問題就是了!另外,如果您是 Red Hat 9 的使用者,由于 Red Hat 9 已經(jīng)提供了 Cyrus SASL version 2 了,所以您可以直接略過 Cyrus SASL 的安裝部分,直接到 Postfix 2.xx 的安裝呢!)

  安裝 Cyrus SASL 2.xx 版本!
1. 首先將數(shù)據(jù)解壓縮
[root@test root]# cd /usr/local/src
[root@test src]# tar -zxvf cyrus-sasl-2.1.12.tar.gz
2. 再來就是設(shè)定你的 cyrus SASL 的參數(shù)以及編譯啰!
[root@test src]# cd cyrus-sasl-2.1.12
[root@test cyrus-sasl-2.1.12]# ./configure   \
> --prefix=/usr/local/cyrus-sasl2 \
>--enable-login \
>--enable-plain \
>--enable-pwcheck \
>--with-saslauthd=/var/run  
# 注意上面的語法!那個 \ 是跳脫字符喔!后面直接 Enter !
# 不要接任何空白或者是 tab 按鍵!若有問題,請到 Shell 看看!
# 至于那個 pwcheck 的項目,就是要用來做為密碼確認(rèn)的一個咚咚啰!
[root@test cyrus-sasl-2.1.12]# make clean   
[root@test cyrus-sasl-2.1.12]# make
[root@test cyrus-sasl-2.1.12]# make install

# 上面三個步驟會花去一些時間,請耐心等待~
# 而由于我們剛剛設(shè)定了 --prefix=/usr/local/cyrus-sasl2 這個參數(shù),
# 所以, make install 之后,我們有用的函式庫會在  
# /usr/local/cyrus-sasl2/lib/sasl2 這個路徑當(dāng)中,但是, cyrus 程序
# 會主動去找 /usr/lib/sasl2 這個目錄!所以,我們必需要做連結(jié)檔!
# 才可以讓未來我們的 postfix 可以直接找的到我們所要的函式庫喔!
# 因為/usr/lib/下存放的是系統(tǒng)用到時函數(shù)庫。
[root@test cyrus-sasl-2.1.12]# cd /usr/lib
[root@test lib]# ln -s /usr/local/cyrus-sasl2/lib/* .
#(.代表當(dāng)前目錄)
# 這樣就建立起連結(jié)檔啰!很簡單吧! ^_^不過要注意喔,
# 上面這一行最后面那個小數(shù)點『.』不要忘記加了!
3. 準(zhǔn)備建立 Postfix 與 cyrus SASL 使用的簡易設(shè)定檔:
[root@test lib]# cd /usr/lib/sasl2
[root@test sasl2]# echo 'pwcheck_method: saslauthd' > smtpd.conf  
[root@test sasl2]# echo 'mech_list:plain login'  >>  smtpd.conf  
# 注意了!一般來說, Postfix 會使用 SASL 這個函式庫里面相關(guān)的設(shè)定檔,
# /usr/lib/sasl2/smtpd.conf 這個檔案的設(shè)定就是 Postfix 的預(yù)設(shè)使用 SASL 的
# 參數(shù)檔案,與 1.5.xx 版本不太相同的地方是, 2.xx 版本使用不同的機制:
auxprop :使用 sasldb2 這個共享數(shù)據(jù)庫,同樣需要使用共享密碼檔案喔!
     所以一般來說,單純的 Postfix 比較少使用這種機制;
saslauthd:使用 saslauthd 這個 daemon 進行認(rèn)證的工作,所以幾乎
     不需要其它的設(shè)定值哪,指定 saslauthd 就好啦! ^_^
pwcheck。菏褂门c 1.5 版相似的認(rèn)證 daemon ,不過在 2.xx 版本里面這個模式 支持度比較沒有這么好的啦,所以請愛用 saslauthd 啰!
# 我們使用 SASL 預(yù)設(shè)的 saslauthd 這支程序做為密碼認(rèn)證的 daemon。
# 至于 mech_list:plain login 是列出支持的認(rèn)證機制的意思,我們使用的
# 是極為簡單的 login 與 plain 兩種機制而已!
4. 建立一些需要的參數(shù):
[root@test sasl2]# vi /etc/man.config
# 新增底下這一行之后,未來我們就可以透過 man 這個工具來查詢 sasl  
# 相關(guān)的指令的用法了!而不需要修改任何咚咚!不過要注意的是,
# 這個檔案在每個 Linux distributions 當(dāng)中不見得相同,例如 Open Linux  
# 檔名是 /etc/man.conf 呢!
MANPATH /usr/local/cyrus-sasl2/man
5. 檢驗 saslauthd 這支程序是否可行!
# 在 cyrus-sasl 的原始碼里面提供了一支小程序用來判斷 saslauthd 的認(rèn)證機制
# 是否成功的啟動了,這個小程序就是 testsaslauthd 啰!在剛剛原始碼目錄下,
# 所以你可以這樣做:
[root@test sasl2]# /usr/local/cyrus-sasl2/sbin/saslauthd -a shadow
# 執(zhí)行之后, saslauthd 的 PID 會被紀(jì)錄到 /var/run/mux.pid 這個檔案!
[root@test sasl2]# cd /usr/local/src/cyrus-sasl-2.1.12/saslauthd/
[root@test saslauthd]# make testsaslauthd
[root@test saslauthd]# ./testsaslauthd -u userID -p 'yours.passwd'
0: OK "Success."
# 若顯示 OK 的話!那么就是成功啦!很好!我喜歡~
6. 設(shè)定開機時啟動
[root @test saslauthd]# vi /etc/rc.d/rc.local
# 加入這一行:
/usr/local/cyrus-sasl2/sbin/saslauthd -a shadow

  安裝 Postfix 2.xx 版本!
0. 先確認(rèn)有沒有這個檔案存在!因為我們的 Postfix 會使用到很多數(shù)據(jù)庫!
[root@test root]# locate pcre.h | grep include
/usr/include/pcre.h
# 這個檔案也有可能存在于 /usr/include/pcre/pcre.h 里面!不要擔(dān)心,存在就好了
# 如果沒有存在的話,例如 Mandrake 9.0 預(yù)設(shè)狀態(tài)可能并不會主動安裝這個套件,
# 請自行拿出原版光盤,安裝 MDK 的 libpcre0xxxx 檔案,至于 redhat 等
# 其它版本,請自行安裝 pcre 相關(guān)的套件吧!在 Red Hat 9 則是需要
# pcre-devel 這個套件喔! ( apt-get install pcre-devel)
1. 首先將數(shù)據(jù)解壓縮(假設(shè)您將我們網(wǎng)站的檔案捉到 /root 底下了!)
[root@test root]# cd /usr/local/src
[root@test src]# tar -zxvf /root/postfix-2.0.4.tar.gz
2. 清除規(guī)則并且建立新的使用 SMTP 的規(guī)則給 postfix
[root@test src]# cd /usr/local/src/postfix-2.0.4
[root@test postfix-2.0.4]# make tidy  # 清除規(guī)則
[root@test postfix-2.0.4]# make makefiles CCARGS="-DUSE_SASL_AUTH \
>  -I/usr/local/cyrus-sasl2/include/sasl/"  \
>  AUXLIBS="-L/usr/local/cyrus-sasl2/lib -lsasl2"

# 上面的動作在建立 Makefile 啰!其中那個 -CCARGS 后面接的 -DUSE_SASL_AUHT
# -I/usr/local/cyrus-sasl2/include/sasl 其中 -I 后面的路徑就是 SASL2 的
# 函式庫所在的目錄喔!請依照您安裝的 sasl2 目錄所在而定!
[root@test postfix-2.0.4]# make
# 就是開始編譯啦!過程有點久喔!如果有出現(xiàn)任何 Error 時,
# 請將 error 仔細(xì)的查看一下吧!通常最大的原因都是一些
# include 檔案沒有安裝,也就是某些重要的套件沒有安裝之故,
# 例如 pcre.h 這個檔案就是一個例子啰!
# 解決的方法就是將該缺乏的套件安裝進去系統(tǒng)啦!
# 如果是 Red Hat 9 的話,可以這樣下達(dá)指令:
# make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/include/sasl" \
# AUXLIBS="-L/usr/lib/sasl2 -lsasl2"
# 因為 Red Hat 9 的 SASL2 路徑在 /usr/include/sasl ,這里要特別的強調(diào),
# 否則由于 Red Hed 9 同時提供 Cyrus SASL 1.5.x 以及 2.x.x 的版本,
# 可能會造成程序的誤判,那么很可能會出現(xiàn)下列的錯誤喔:
# fatal: SASL per-connection security setup  
# 上面的錯誤訊息出現(xiàn)在 /var/log/maillog 中!
3. 安裝前準(zhǔn)備工作:
# 如果您的系統(tǒng)是由 sendmail 要改換到 Postfix 的話,你不需要移除 sendmail ,
# 不過卻需要進行一些小手術(shù)喔!
[root@test postfix-2.0.4]# mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
[root@test postfix-2.0.4]# mv /usr/bin/newaliases /usr/bin/newaliases.OFF
[root@test postfix-2.0.4]# mv /usr/bin/mailq /usr/bin/mailq.OFF
[root@test postfix-2.0.4]# chmod 755 /usr/sbin/sendmail.OFF \
>  /usr/bin/newaliases.OFF /usr/bin/mailq.OFF
# 此外,還需要建立一個名為 postdrop 的群組與 postfix 的使用者喔!
[root@test postfix-2.0.4]# groupadd -r postdrop
[root@test postfix-2.0.4]# useradd -r -s /bin/false postfix
# 建立一個系統(tǒng)數(shù)據(jù)賬號吶!
[root@test postfix-2.0.4]# echo 'postfix:  root' >> /etc/aliases
# 請注意,如果您之前安裝過 sendmail 的話,那么不同版本的 sendmail 他的
aliases 放置的目錄并不相同,所以上面這行指令請依您的主機來設(shè)定!
4. 開始安裝 Postfix 到 /etc/postfix 這個目錄下:
[root@test postfix-2.0.4]# make install
# 底下會出現(xiàn)一大堆的問題集,不管如何,幾乎按下 enter 就對啦!
# 除了底下這兩個問題(最后兩個)可以選擇將 readme 檔案存下來喔!
Please specify the destination directory for the Postfix sample
configuration files.
sample_directory: [/etc/postfix] /etc/postfix/sample
Please specify the destination directory for the Postfix README
files. Specify "no" if you do not want to install these files.
readme_directory: [no] /etc/postfix/readme_files
# 這樣就安裝成功啦!接下來請開始查閱 主機的設(shè)定 那一節(jié)啰!


--------------------------------------------------------------------------------
主機的設(shè)定
安裝完畢 postfix 之后,接著下來就是設(shè)定了!同樣的,在設(shè)定主機之前,有幾個東西是您必需先取得的喔:
 
具有合法的 hostname ,或者是經(jīng)過授權(quán)的 DNS 主機來設(shè)定您自己的主機名稱(hostname);
您的 hostname 最好擁有一個 MX 的紀(jì)錄(record);
至少一定要了解到什么是 Relay 的問題,以及規(guī)劃一下您所想要開放 relay 的網(wǎng)域;
 
你至少需要有這些數(shù)據(jù)才行吶!好了,我先假設(shè)一下我的案例好了:
 
我的 hostname 為 vbird.adsldns.org;
我的 hostname 還有個別名為
www.vbird.adsldns.org
,也就是說, vbird.adsldns.org 與
www.vbird.adsldns.org
都指向同一個 IP ;
我的 domain name 為 adsldns.org ;
我預(yù)計開放的 relay 網(wǎng)域為 vbird.org 這個網(wǎng)域,與內(nèi)部的 192.168.1.0/24 這個網(wǎng)域,還要可以使用 access 這個檔案的設(shè)定功能!
 
開始來了解 postfix 啰! ^_^
 
--------------------------------------------------------------------------------
Postfix 的結(jié)構(gòu)
 
在主機的設(shè)定之前我們得先了解一下 postfix 的整體構(gòu)造,以方便以后來處理我們的檔案吶!所以底下我們會先針對 postfix 這個套件的結(jié)構(gòu)做個簡單的說明,然后再針對各個設(shè)定項目來進行說明啰!Postfix 的設(shè)定檔幾乎完全都在 /etc/postfix 里面,至于執(zhí)行檔則在 /usr/sbin 里面,我們分別來談一談幾個主要的注意事項吧!
 
設(shè)定檔:Postfix 的設(shè)定檔都在 /etc/postfix 里面,主要的設(shè)定檔有:
 
/etc/postfix/main.cf :這個就是最重要的 postfix 的設(shè)定檔了!等一下我們談到的設(shè)定都在這個檔案里面進行修改的動作!基本上,他本身就是一個簡單的說明文件檔啦!不過,要注意的是,在你修改完成了 main.cf 之后,請記得『一定要重新 reload 或重新 restart postfix 才行!』
 
/etc/postfix/master.cf:這個檔案是另外一個重要的 postfix 設(shè)定檔!他主要是規(guī)定了 postfix 每個程序的運作參數(shù)!
 
/etc/postfix/access :這個檔案與 sendmail 的 access 是相同的!都是用來做為 relay 或者是 deny 某些 IP 與 hostname 的檔案!不過,要啟用他還是得要修改 main.cf 才行!
 
/etc/postfix/aliases : 這個檔案與 sendmail 的 aliases 也是相同的!同樣的可以做為別名之用,所以您可以回頭去翻一翻這個檔案的用法喔!
 
/etc/postfix/pcre_table regexp_table relocated : 這幾個檔案可以做為郵件的過濾之用喔!可以使用正規(guī)表示法來進行郵件過濾(filter)的規(guī)則,呵呵!會使用這幾個檔案,或許連 procmail 也不需要使用了呢! ^_^
 
執(zhí)行檔:Postfix 的執(zhí)行檔可不少啊!約略提幾個主要的執(zhí)行檔吧!
 
/usr/sbin/postfix:這就是 postfix 的主要執(zhí)行檔案啦!啟動與簡單的關(guān)閉 postfix 可以使用:
postfix check :檢查 postfix 相關(guān)的檔案、權(quán)限等是否正確!
postfix start :開始 postfix 的執(zhí)行
postfix stop  :關(guān)閉 postfix
postfix flush :強制將目前正在郵件隊列的郵件寄出!
postfix reload:重新讀入設(shè)定檔,也就是 /etc/postfix/main.cf
要注意的是,每次更動了 /etc/postfix/main.cf 之后,一定需要執(zhí)行 postfix reload 喔!
 
/usr/sbin/postalias:這個指令是 sendmail 的 newaliases 啦!他可以用來將上面提到的設(shè)定檔  aliases 制作成為 postfix 看的懂得『數(shù)據(jù)庫』格式化檔案!由于一般來說,我們都是使用 hash 這一種數(shù)據(jù)格式,所以啰,你可以簡單的使用底下的指令方式來格式化。
postalias 數(shù)據(jù)庫格式:檔名
postalias hash:/etc/postfix/aliases  ==>自動建立 /etc/postfix/aliases.db 這個數(shù)據(jù)庫檔案!
 
/usr/sbin/postcat :這個指令可以用來觀察某個郵件隊列里面檔案的信息!postfix 的郵件隊列放置在 /var/spool/postfix 里面,但是這個目錄里面的檔案格式是 postfix 看的懂得,我們?nèi)祟惪床欢珵榱巳〉眠@些在郵件隊列里面的檔案信息,所以我們得使用 postcat 這個指令來讀取出信息喔!假如有個檔案放在 /var/spool/postfix/deferred,你可以這樣看:
postcat /var/spool/postfix/deferred/filename

/usr/sbin/postconf :可以用來讀取 main.cf 這個檔案里面的設(shè)定數(shù)據(jù)的一個指令!用途多多啊!簡單的來說,可以直接將你的 main.cf 里面的設(shè)定分門別類的顯示給你看,可以幫助除錯 (debug) 啦!不錯的工具,鳥哥個人蠻喜歡加入 -n 這個參數(shù)來了解目前的主要規(guī)范文件放置在那個目錄下!
postconf -n
顯示的結(jié)果為:
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
debug_peer_level = 2
.......
看到了吧!你想要知道的數(shù)據(jù)立刻一目了然,可以加快你的除錯喔!不必每次都要進入 main.cf 里面找好久呢!
 
/usr/sbin/postmap:怪怪!這個指令的用法跟上面提到的 postalias 幾乎完全一模一樣啊! ^_^不過,他是用來取代 sendmail 的 makemap 的!用法是:
postmap hash:/etc/postfix/access ==>自動建立 /etc/postfix/access.db 這個數(shù)據(jù)庫檔案!
 
/usr/sbin/postqueue :這個是在觀察郵件隊列的一個指令啦!你可以使用 postqueue -p 來顯示目前的郵件隊列內(nèi)容!這個:
postqueue -p 與 mailq 顯示的內(nèi)容會一模一樣喔!

目錄:同樣的具有郵件隊列與郵件信箱的放置目錄啊!
 
/var/spool/mail :電子郵件信箱放置目錄
/var/spool/postfix :郵件隊列,里面還有很多次目錄,都是一些其它功能的咚咚!
 
整體的架構(gòu)大致是如此,好啦!了解的一定程度的架構(gòu)之后,我們要開始來談?wù)勚鳈C的最基礎(chǔ)設(shè)定了吧!
 
--------------------------------------------------------------------------------
基礎(chǔ)設(shè)定
 
終于要來搞定我們的設(shè)定檔 /etc/postfix/main.cf 啦!先來搞定比較簡單的幾個部分喔!在 Postfix 安裝完畢之初,他僅支持本機寄信而已,如果您想要開放外送郵件,那就必需要做一些手術(shù)啦!底下幾個重要的項目先來觀察一下啰!(注:請使用 vi 來編輯喔!)
  在 main.cf 這個檔案當(dāng)中,設(shè)定的項目都是以類似變量的設(shè)定方法來設(shè)定的,例如要設(shè)定 postfix 主機名稱時,就以:
myhostname = vbird.adsldns.org
這樣的方式來設(shè)定的,那么什么是『變量』呢?如果還不清楚,趕緊拿出『鳥哥的 Linux 私房菜 -- 基礎(chǔ)學(xué)習(xí)篇』翻到『認(rèn)識 BASH 』的章節(jié),好好的瞧一瞧去吧!尤其變量的內(nèi)容顯示需要用 $ 來領(lǐng)頭的用法,千萬不可忘記!例如:
myorigin = $myhostname  ==> myorigin = vbird.adsldns.org
上面兩個是一模一樣的,只是藉由變量來讓我們的設(shè)定更加的簡單化!不過,與變量設(shè)定規(guī)則當(dāng)中比較不同的,在 main.cf 當(dāng)中的等號兩邊需要有空白!此外,如果有兩個以上的設(shè)定呢?那你就必須要逗號『,』或者是空格符『』來做為分隔了!例如:
mydestination = $myhostname, $mydomain  
mydestination = $myhostname $mydomain
在底下的設(shè)定當(dāng)中請?zhí)貏e留意這些設(shè)定喔!
 
主機名稱的設(shè)定:myhostname 與 mydomain (極重要)
這個設(shè)定蠻重要的喔!就是在設(shè)定你的主機名稱啰!請?zhí)貏e留意,這個『 myhostname 』的變數(shù)在 main.cf 設(shè)定檔的后面會持續(xù)的被使用到,所以,不要寫錯了!至于 mydomain 則是你的網(wǎng)域啦!以鳥哥的 linux.vbird.org 為例,我的主機名稱為 linux.vbird.org (用 FQDN 的方式來寫),此時,我的 domain 就是 vbird.org 啦!在本章的例子當(dāng)中,主機名稱為 vbird.adsldns.org 網(wǎng)域名稱為 adsldns.org ,所以你要這樣設(shè)定: myhostname = vbird.adsldns.org   
方法三:使用檔案型態(tài)
mydestination = /etc/postfix/local-host-names
上面的名稱可以隨便你取喔!然后在該檔案內(nèi)設(shè)定
[root@test root]# vi /etc/postfix/local-host-names
vbird.adsldns.org,
www.vbird.adsldns.org

一般來說,除非您對于 local-host-names 這個文件名稱情有獨鍾,否則的話,鳥哥個人建議您直接在 mail.cf 里面直接設(shè)定好你的可接受的主機名稱即可!特別留意的是,如果你的 DNS 里頭的設(shè)定有 MX 的話,那么請將 MX 指向的那個主機名稱一定要寫在這個 mydestination 內(nèi)!否則很容易出現(xiàn)錯誤訊息喔!特別的給他注意這一點!『一般來說,使用者最常發(fā)生錯誤的地方就在這個設(shè)定里頭呢!需要搭配你的 DNS 設(shè)定喔!』
 
簡易的 Relay 控制:inet_interfaces mynetworks_style mynetworks relay_domains (極重要)
這個項目在控制誰可以利用我們的主機來寄信呢?也就是在 sendmail 里面的 access 那個檔案的咚咚啦!分別說明一下幾個東西啰!
 
inet_interfaces:你的 Postfix 主機能被用來使用的接口,假如你的 Linux 主機有多個接口,例如多張網(wǎng)絡(luò)卡或者是撥接之后又會產(chǎn)生的 ppp0 這些接口時,如果你不想要全部的接口都開放 postfix 功能,那么就可以在這里指定能用的接口啰 (注:指定的方式是以主機名稱為主喔!) 一般預(yù)設(shè)只有自己的內(nèi)部循環(huán)網(wǎng)絡(luò)可以使用 (localhost) ,不過,如果要連上 Internet 的話,建議就要全部都開放啦! inet_interfaces = all
 
mynetworks_style:這是用來設(shè)定你所想要的 relay 的信任(trust)網(wǎng)域型態(tài)!一般來說,有三種主要的型態(tài),分別是:
 
class :表示為 A/B/C 三種 class 其中之一,在撥接或者是 ADSL 的情況下,這種型態(tài)設(shè)定并不好!因為他會主動的去找你目前的 IP 所在的網(wǎng)域來進行 relay 的功能開放!舉個例子來說,如果你是以中華電信的 ADSL 撥接情況,那么你的 IP 很可能會是 61.59.xxx.yyy ,那如果你設(shè)定為 A class 的話 ( postfix 會自動的判斷,請至"網(wǎng)絡(luò)基礎(chǔ)"一文當(dāng)中查看 A/B/C 三個 class 的說明 ) ,那么只要是 61 開頭的 IP 都可以用你的 postfix 喔!很嚴(yán)重吧!這個設(shè)定通常只給內(nèi)部私有網(wǎng)域來使用的啰!
 
subnet:這是 postfix 的默認(rèn)值,使用 subnet 的型態(tài)來設(shè)定喔!意義是說,你的網(wǎng)絡(luò)卡 IP 所在網(wǎng)域的任何一個 IP 都會被接受的意思!例如我的主機網(wǎng)卡私有 IP 為 192.168.1.2 那么所有我內(nèi)部網(wǎng)域連接到這個網(wǎng)卡的 192.168.1.0/24 這個網(wǎng)域的所有 IP 都會被認(rèn)為是『合法的』!而自動的提供其 Relay 的功能呢!
 
host :在這個設(shè)定時, postfix 僅會知道 localhost 設(shè)定為 trust (信任) 的網(wǎng)域而已!
 
基本上,這個設(shè)定值你可以指定為 mynetworks_style = subnet ,不過,也可以不要設(shè)定啦!直接以底下 mynetworks 來設(shè)定 relay 的網(wǎng)域即可!另外,如果您有設(shè)定 mynetworks_style 以及 mynetwork 時,那么 mynetworks 這個設(shè)定會取代掉 mynetworks_style 喔!因為如此,所以鳥哥個人是不設(shè)定 mynetworks_style 的,只設(shè)定 mynetworks 而已!
 
mynetworks :這個也是用來開放 Relay domain 的一個設(shè)定項目!一般來說,也可以設(shè)定成很多的方式,包括檔案與變量或直接書寫需要的 IP/netmask 類型!這里我們假設(shè)有 192.168.1.0/24, 127.0.0.0/8 以及 192.168.1.100 這幾個咚咚要開放,所以我可以這樣寫:『mynetworks = 192.168.1.0/24, 127.0.0.0/8, 192.168.1.100/32』!如此一來,連 access 都不需要設(shè)定呢! ^_^ ( 注:請注意,如果你沒有設(shè)定 mynetworks 的話,一定要將 mynetworks_style 設(shè)定為 host 喔!不然你的 IP 所在的子網(wǎng)域的 IP 會被自動的認(rèn)為是『合法的』呢!)另外,如果你想要啟用 /etc/postfix/access 這個檔案的設(shè)定功能時,那就必需要再加以修改喔!例如:『mynetworks = 127.0.0.0/8, hash:/etc/postfix/access 』注意文件名稱使用完整檔名!
 
relay_domains:相對于 mynetworks 設(shè)定的專門針對『來源』的 IP 來設(shè)定,那么如果是以主機名稱,或者是領(lǐng)域名稱( domain )時,要如何設(shè)定呢?那就可以使用這個項目來設(shè)定啦! mynetworks 設(shè)定『信任網(wǎng)域的來源 IP 』而 relay_domains 則可以設(shè)定『信任網(wǎng)域的來源與目標(biāo)之主機或領(lǐng)域名稱』啦!舉個例子來說,如果你的主機要開放 vbird.org 這個網(wǎng)域的主機的 Relay 功能,那么你將 vbird.org 寫入 relay_domains 當(dāng)中時,那么:
 
任何由 vbird.org 來的信件都會被認(rèn)為是『信任』的,所以 postfix 主機會自動幫忙 relay ;
由任何地方來的信件,"并且"要往 vbird.org 這個網(wǎng)域去的信件,postfix 主機也會幫忙 Relay 的!
 
所以說,這個 relay_domains 可以設(shè)定『來源』與『目標(biāo)』的主機或領(lǐng)域名稱喔!一般來說,relay_domains 預(yù)設(shè)就是我們自己的主機啦。
 
上面的設(shè)定項目當(dāng)中,我們可以僅設(shè)定兩個即可啦!其它的不用管也沒有關(guān)系!不過,由于我預(yù)設(shè)還有啟動 vbird.org 這個 relay domain ,所以說,整體架設(shè)如下: inet_interfaces = all
mynetworks = 192.168.1.0/24, 127.0.0.0/8, 192.168.1.100/32,  
       hash:/etc/postfix/access
relay_domains = vbird.org
設(shè)定完成之后還需要啟動 access 喔!
1. 先手動修改完任何你想要的動作在 /etc/postfix/access 當(dāng)中;
2. 完成數(shù)據(jù)庫的建置:
[root@test root]# postmap hash:/etc/postfix/access

 
設(shè)定賬號別名的數(shù)據(jù)庫:aliases_maps (極重要)
還記得 aliases 這個賬號別名的用途吧?!如果你是以 RPM 的方式來安裝 Postfix ,那么這個設(shè)定值是沒有問題的,但是,如果你是以 Tarball 來安裝你的系統(tǒng)時,并且是由 sendmail 升級的,那么由于 sendmail 將 aliases 放置在 /etc/aliases (要視你的 Linux 版本而定!),不過,比較好的作法是將 aliases 放置在 /etc/postfix/aliases 里面,這樣設(shè)定與目錄之間的關(guān)系比較容易找啦!那要如何修改呢?首先,你可以將舊有的 aliases 移動到 /etc/postfix/aliases 里面,并且請?zhí)貏e注意,這個舊有的檔案里面,一定要存在有『 postfix: root 』這一個設(shè)定才行喔!然后透過 /etc/postfix/main.cf 里面的 alias_maps 來修改,通常鳥哥個人喜歡改成這樣: alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
改完之后還需要以 postalias 來建置成為 postfix 可以讀取的數(shù)據(jù)庫格式喔! [root@test root]# postalias hash:/etc/postfix/aliases

呵呵!設(shè)定完上面這幾個重要的項目之后,基本上,你的 postfix 主機『已經(jīng)準(zhǔn)備好上路啦!』所以,這個時候請將他啟動吧!或者是重新啟動他吧!
  先確認(rèn)設(shè)定檔有沒有錯誤:
[root@test root]# postfix check  
如果是 RPM 安裝的情況:
[root@test root]# /etc/rc.d/init.d/postfix restart
如果是 Tarball 安裝的情況:
[root@test root]# postfix start
檢查是否正確的啟動了呢?
[root@test root]# netstat -tl | grep smtp
tcp        0      0 *:smtp                  *:*                     LISTEN
設(shè)定開機的時候立刻啟動:
[root@test root]# chkconfig --add postfix
--------------------------------------------------------------------------------
重要觀念:Postfix 預(yù)設(shè)的 Relay 流程與收受信件流程:
 
在預(yù)設(shè)的情況下 ( 也就是說,在沒有開放 SMTP 這個郵件認(rèn)證時! ) Postfix 對于收信與寄信的流程是如何呢?!這里我們得分別來談一談幾個主要的設(shè)定項目與郵件傳輸?shù)膭幼鬣福?
 
幫助 Client 發(fā)送信件,也就是 Relay 的功能開放的需求項目:在開放哪些項目之后,你的 postfix 主機才會幫助『信任』的 Client 端 Relay 呢?
當(dāng) Client 來自信任的網(wǎng)域,也就是 IP 符合 $mynetworks 的設(shè)定值時;
當(dāng) Client 來自信任的機器,也就是主機名稱符合 $relay_domains 的設(shè)定項目時;
當(dāng) Client 來自不信任的網(wǎng)域,但是去的目的地主機端符合 $relay_domains 的設(shè)定時。
當(dāng)符合上面三點的任何一點時,那么 postfix 將對該信件進行 relay 的動作喔!
 
收信程序:在哪些情況之下,我們的 postfix 會將該封信件收下來呢?
收件者主機名稱符合 $inet_interfaces 的設(shè)定;
收件者主機名稱符合 $mydestination 的設(shè)定;
收件者主機名稱符合 $virtual_maps 的設(shè)定。
符合上面三點的任何一項時,那么該封信件就會被我們的 postfix 收下來!所以,如果你的 postfix 能寄不能收,或者是能收不能寄,請仔細(xì)的觀察一下上面的幾個重大的設(shè)定項目,仔細(xì)的在你的 main.cf 重新設(shè)定一下,基本上,應(yīng)該就不會有太大的問題啦!
 
--------------------------------------------------------------------------------
啟動 smtp 郵件認(rèn)證功能
 
談完了 Relay 的功能之后,接下來自然就是重要的『SMTP』郵件認(rèn)證的部分了!目前郵件認(rèn)證的功能有相當(dāng)多種類,請?zhí)貏e留意的是,鳥哥這里使用的是 SASL 釋出的 pwcheck 與 saslauthd 這兩個 daemons 提供的功能喔!這兩個功能分別在 cyrus-sasl 1.5.xx(pwcheck) 里頭與 2.xx(saslauthd) 里頭設(shè)定的啦!但是 Red Hat 9 使用的是 saslauthd 喔!請回到前面的 Postfix 安裝里面瞧一瞧 RPM 的 1.5.xx 與 Tarball 的 2.xx 好嗎!你要作的動作有:
 
確定 cyrus-sasl 已經(jīng)安裝,并且同時必須要安裝 libsasl 相關(guān)的 LOGIN 及 PLAIN 的函式庫(這個在前面 Postfix 套件安裝 當(dāng)中已經(jīng)說明了,分別參考 Tarball 與 RPM 的安裝,請前往參考);
確定在 sasl 函式庫內(nèi)已經(jīng)存在有 smtpd.conf 這個檔案 (注意,cyrus-sasl 第一版函式庫在 /usr/lib/sasl 而第二版則在 /usr/lib/sasl2 ,目錄并不相同,請仔細(xì)察看一下您的 sasl 喔! ),這個檔案的內(nèi)容在 Postfix 套件安裝里面已經(jīng)說明了!并且 sasl 與 sasl2 設(shè)定并不相同,請自行參考;
確定已經(jīng)使用 pwcheck(cyrus-sasl 1.5.xx) 或 saslauthd(cyrus-sasl 2.xx) 這兩個 daemon 了,并且已經(jīng)成功的啟動 daemon 了!可以使用『ps -aux | grep pwcheck 』或『ps -aux | grep saslauthd 』察看是否有 process 存在;
修改 /etc/postfix/main.cf 這個檔案的設(shè)定 (請參考底下的說明);
重新啟動 postfix 。
 
基本上,大部分的內(nèi)容我們在安裝的時候已經(jīng)搞定啦,就剩下需要設(shè)定 main.cf 這個檔案而已,那么有哪些數(shù)據(jù)必須要設(shè)定的呢?
 
針對主機設(shè)定:
smtpd_sasl_auth_enable:『確定是否要針對 Client 啟動 sasl 的認(rèn)證呢?』預(yù)設(shè)是不啟用,這里我們必須要將他給啟用才行!所以要『smtpd_sasl_auth_enable = yes』
 
smtpd_sasl_local_domain:『確認(rèn)已經(jīng)經(jīng)過認(rèn)證的網(wǎng)域』,就是不需要身份認(rèn)證也可以是『信任』的網(wǎng)域啰,在 1.5.xx 版的 cyrus 可以直接填寫為 $myhostname 啦!不過,在 2.xx 版本時,就不能設(shè)定了!很重要喔!
 
smtpd_recipient_restrictions:『信件收件的限制規(guī)則』,既然已經(jīng)啟動了 sasl 的郵件認(rèn)證,此時必須要規(guī)定一下,到底在什么條件之下,我們的 postfix 可以接受 Client 端的 Relay 的功能呢?主要有底下這幾種限制的規(guī)則:
permit_mynetworks:在 mynetworks 這個項目設(shè)定的網(wǎng)域 IP 都可以被允許聯(lián)機喔;
permit_authenticated:允許使用者經(jīng)過 SASL 的認(rèn)證方式寄信!
check_relay_domains:通過一些測試之后的主機可以進行 relay ,與剛剛前幾節(jié)的 relay_domains 有點關(guān)系!不過,在 2.xx 版本下,需要變成底下的項目了!
reject_unauth_destination:這是在 2.xx 版本時的設(shè)定項目,取代了 check_relay_domains 的設(shè)定項目啰!
通常我們會設(shè)定上面這三個就差不多啦!
 
smtpd_client_restrictions:『針對 client 端的限制規(guī)則』,經(jīng)過 mynetworks 這個信任網(wǎng)域的 IP 之后,那未經(jīng)信任的 Client端 IP 來源你要限制他使用你的 postfix 時,這個項目就要啟動 permit_sasl_authenticated 啰!
 
smtpd_sasl_security_options:『限制某些登入的方式』,在 Postfix 里面,預(yù)設(shè)是使用 Plaintext 的方式來認(rèn)證的,所以自然不能取消掉這個認(rèn)證啰(noplaintext)!但是我們可以取消掉匿名登入的型態(tài)喔(noanonymous)!可以這樣做『smtpd_sasl_security_options = noanonymous』
 
針對 Client 設(shè)定:
smtp_sasl_auth_enable:上面是針對主機來設(shè)定的,這個項目則是針對 Client 來設(shè)定的,在預(yù)設(shè)的情況之下, Postfix 并不會對 client 提供認(rèn)證的功能,也就是說, postfix 只會依據(jù) mynetworks 之類的信任網(wǎng)域來提供 Relay 的功能,那么我們要啟動對于 client 的身份認(rèn)證功能時,這里就必需要設(shè)定為 yes 才行!不過,如果是在 2.xx 版本時,這個設(shè)定就不需要啦!
 
所以整個設(shè)定值就變成這樣啦:
  [root@test root]# vi /etc/postfix/main.cf
1.5.xx 版本的 Cyrus SASL
底下請自行新增在這個檔案的最后面:
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,  
     check_relay_domains
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous
smtp_sasl_auth_enable = yes
2.xx 版本的 Cyrus SASL
底下請自行新增在這個檔案的最后面:
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = ' '
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,
     reject_unauth_destination
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous
注:有網(wǎng)友來信告知,在 smtpd_sasl_local_domain 的部分,也可以修改成:
smtpd_sasl_local_domain=
即可!

 
另外,由于 RPM 版本的 Postfix 預(yù)設(shè)會使用 chroot jail 這個比較安全的動作,所以,如果是 RPM 安裝時,你還必需要修改一個檔案:
  [root@test root]# vi /etc/postfix/master.cf
找到底下的這一行:
smtp    inet    n       -       y       -       -       smtpd
將他改成為:
smtp    inet    n       -       n       -       -       smtpd
 
注:chroot jail 的功能在于『使用權(quán)限較低的一般身份使用者來進行 postfix 的工作程序,只有在需要的時候才可以進入 /var/spool/postfix 這個郵件隊列目錄!』,對于系統(tǒng)來說,是有一定程度的安全保障的!所以, Postfix 才會在預(yù)設(shè)的情況之下以 chroot 的功能來進行 postfix 的!不過,再加上了 SMTP 這個認(rèn)證機制之后,由于他必需要以比較高等級的使用者來執(zhí)行一些認(rèn)證個功能,所以除非您額外的加入很多的函式庫去到 chroot jail 目錄下,否則的話,就不能使用 chroot 啦!所以,如果要啟動 SMTP 的話,請務(wù)必將 master.cf 這個檔案修改過喔! ^_^
 
這樣就算設(shè)定完畢啦!然后重新啟動 postfix 看看情況是如何:
  [root@test root]# /etc/rc.d/init.d/postfix restart
[root@test root]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
220 vbird.adsldns.org ESMTP Postfix (1.1.11) (Mandrake Linux)
ehlo localhost   
幾個相關(guān)的檔案說明
 
在 sendmail 當(dāng)中有幾個頗為重要的檔案,例如 ~/.forward 等等的檔案!在這里我們也必需說明一下這幾個檔案在 postfix 里面的應(yīng)用情況:
 
/etc/mail/local-host-names:這個檔案是用來書寫你的 mail server 可以接收『目的 e-mail server』的名稱的一個檔案,這在先前的設(shè)定項目中已經(jīng)提過了,就是 /etc/postfix/main.cf 里面的 mydestination 的設(shè)定內(nèi)容啦!
 
/etc/mail/access :這個檔案用來規(guī)定可以 Relay 或者需要 discard 的動作!在 postfix 當(dāng)中預(yù)設(shè)是不開啟這個檔案的設(shè)定的,如果要啟用的話,需要在 mynetworks 里面規(guī)定好文件名稱喔!設(shè)定方法請參考前幾節(jié)的說明!
 
~/.forward :這個檔案在 sendmail 與 postfix 當(dāng)中的設(shè)定是一模一樣的,都是用來幫忙郵件的轉(zhuǎn)遞的,可以參考 sendmail 的設(shè)定項目!
 
/usr/sbin/mailq:這個執(zhí)行檔已經(jīng)被更改過了!目前可以使用 postqueue -p 來顯示出還在郵件隊列的信件標(biāo)題喔!
 
基本上,在 sendmail 當(dāng)中可以使用的外部設(shè)定檔案,在 postfix 底下幾乎都能再被使用!所以,由 sendmail 升級到 postfix 真是相當(dāng)?shù)暮啽惆。?^_^

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u2/64038/showart_2125381.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP