Postfix是一個由IBM幫助、由Wietse Venema負(fù)責(zé)開辟的自由軟件工程產(chǎn)品,它的目標(biāo)就是為用戶供給除Qmail以外的郵件辦事器選擇。Postfix在快速、易于治理和供給盡可能的安然性方面都進行了較好的考慮。Postfix是基于半駐留、互把持的過程的系統(tǒng)布局,每個過程完成特定的任務(wù),沒有任何特定的過程衍生關(guān)系,使全部系統(tǒng)過程獲得很好的呵護。同時Postfix也能夠和Qmail郵件辦事器保持兼容性以知足用戶的利用習(xí)慣。
與Qmail比擬,Postfix最被人稱道的處所就在于其建設(shè)文件的可讀性很高。Postfix的主建設(shè)文件是/etc/postfix/main.cf。當(dāng)然該建設(shè)文件的內(nèi)容比較多,但此中大年夜部門內(nèi)容都是注釋(“#”號開首的行),真正需要自行定義的參數(shù)并不多。但是,為了對其進行安然建設(shè),仍是需要針對某些選項進行細(xì)心的設(shè)置。
Postfix建設(shè)文件
在main.cf文件中,參數(shù)都是以近似變量的設(shè)置編制來設(shè)置的,這些參數(shù)的利用首要包含兩部門的內(nèi)容:
(1)定義和聲明變量:例如definename = good-better-best。等號左邊是變量的名稱,等號右邊是變量的值。
(2)援引變量:可以在變量的前面加上符號“$”來援引該變量,如:myname = $ definename(相當(dāng)于definename = good-better-best)。
需要寄望的是:等號兩邊需要有空格字符。別的,假定變量有兩個以上的設(shè)置值,就必需用逗號“,”或空格符“ ”將它們分隔。
在熟諳了上述變量的定義和援引編制后,下面具體介紹若何安然、高效地建設(shè)Postfix辦事器的相干選項。
設(shè)置Postfix辦事監(jiān)聽的收集接口
默許環(huán)境下,inet_inte***ces參數(shù)的值被設(shè)置為localhost,這表白只能在本地郵件主機上寄信。假定郵件主機上有多個收集接口,而又不想使全數(shù)的收集接口都開放Postfix辦事,便可以用主機名指定需要開放的收集接口。不外,凡是是將所有的收集接口都開放,以便領(lǐng)受從任何收集接口來的郵件,即將inet_inte***ces參數(shù)的值設(shè)置為“all”,以下所示:
inet_inte***ces = all
安然設(shè)置可領(lǐng)受郵件的主機名稱或域名
mydestination參數(shù)很是首要,因為只有當(dāng)發(fā)來的郵件的收件人地址與該參數(shù)值相匹配時,Postfix才會將該郵件領(lǐng)受下來。經(jīng)由過程該選項的設(shè)置可以過濾掉落良多沒有顛末認(rèn)證和授權(quán)的郵件,從而節(jié)流辦事器的存儲空間,和節(jié)流用戶的郵件措置時候。舉一個簡單的例子,用戶可以將該參數(shù)值設(shè)置為以下:
accept_domain = test.net
mydestination = $accept_domain
這就表白不管來信的收件人地址是[email protected](此中X暗示某用戶在test.net域中的郵件賬戶名),Postfix城市領(lǐng)受這些郵件。而除此以外的郵件,Postfix都不會接管。
安然設(shè)置可轉(zhuǎn)發(fā)郵件的收集(IP設(shè)置)
有關(guān)安然設(shè)置可轉(zhuǎn)發(fā)郵件的收集可利用mynetworks參數(shù)來設(shè)置??蓪⒃搮?shù)值設(shè)置為所信賴的某臺主機的IP地址,也可設(shè)置為所信賴的某個IP子網(wǎng)或多個IP子網(wǎng)(采取“,”或“ ”分隔)。
好比,用戶可以將mynetworks參數(shù)值設(shè)置為172.168.96.0/24,則暗示這臺郵件主機只轉(zhuǎn)發(fā)子網(wǎng)172.168.96.0/24中的客戶端所發(fā)來的郵件,而拒盡為其他子網(wǎng)轉(zhuǎn)發(fā)郵件:
mynetworks = 172.168.96.0/24
除mynetworks參數(shù)外,還有一個用于節(jié)制收集郵件轉(zhuǎn)發(fā)的參數(shù)是mynetworks-style,它首要用來設(shè)置可轉(zhuǎn)發(fā)郵件收集的編制。凡是有以下三種編制:
(1)class:在這類編制下,Postfix會主動按照郵件主機的IP地址得知它地點的IP收集類型(即A類、B類或是C類),從而開放的它地點的IP網(wǎng)段。
(2)subnet:這是postfix的默許值,Postfix會按照郵件主機的收集接口上所設(shè)置的IP地址、子網(wǎng)掩碼來得知所要開放的IP網(wǎng)段。
(3)host:在這類編制下,Postfix只會開放本機。
凡是,用戶一般不需要設(shè)置mynetworks-style參數(shù),而直接設(shè)置mynetworks參數(shù)。假定這兩個參數(shù)都進行了設(shè)置,那么mynetworks參數(shù)的設(shè)置有效。
設(shè)置可轉(zhuǎn)發(fā)郵件的收集(域名設(shè)置)
上面介紹的mynetworks參數(shù)是針對郵件來歷的IP來設(shè)置的,而relay_domains參數(shù)則是針對郵件來歷的域名或主機名來設(shè)置的,其實從道理上來講是一致的,不外是辨別了IP地址和域名罷了,不外,relay_domains還需要依托DNS這個根本舉措措施。
例如,用戶可以將relay_domains參數(shù)值設(shè)置為test.net,則暗示任何由域test.net發(fā)來的郵件城市被覺得是信賴的,Postfix會主動對這些郵件進行轉(zhuǎn)發(fā),以下所示:
relay_domains = test.net
那么,要使它能在實際收集中更好地轉(zhuǎn)發(fā)郵件,還必需進行響應(yīng)的DNS設(shè)置。那么,需要在該收集的DNS辦事器上定義了一個主區(qū)域test.net,并在該區(qū)域建設(shè)文件中定義了以下記實:
//定義郵件辦事器的IP地址
patterson.test.net. IN A 172.168.96.254
//定義郵件辦事器的別號
mail.test.net. IN CNAME patterson.test.net.
//定義優(yōu)先級別
test.net. IN MX 10 mail.test.net.
上述記實只對郵件辦事器進行了定義,還有諸如SOA、NS等的定義,在這里就不再贅述。
Postfix利用SMTP安然認(rèn)證
為了不無限制的轉(zhuǎn)發(fā)環(huán)境的呈現(xiàn),Postfix默許不會對外開放轉(zhuǎn)發(fā)功能,而僅對本機(localhost)開放轉(zhuǎn)發(fā)功能??墒牵趯嶋H利用中,必需在Postfix主建設(shè)文件中經(jīng)由過程設(shè)置mynetworks、relay_domains參數(shù)來開放一些所信賴的網(wǎng)段或網(wǎng)域,不然該郵件辦事器幾近沒有甚么用處。在開放了這些所信賴的網(wǎng)段或網(wǎng)域后,還可以經(jīng)由過程設(shè)置SMTP認(rèn)證,對要求轉(zhuǎn)發(fā)郵件的客戶端進行用戶身份(用戶賬戶名與暗碼)驗證。只有經(jīng)由過程了驗證,才能領(lǐng)受該用戶寄來的郵件并幫忙轉(zhuǎn)發(fā)。一樣,Postfix中今朝比較常常利用的SMTP認(rèn)證機制是經(jīng)由過程Cyrus SASL包來實現(xiàn)的。
默許環(huán)境下,Postfix并沒有啟用SMTP認(rèn)證機制。要讓Postfix啟用SMTP認(rèn)證,就必需對Postfix的主建設(shè)文件/etc/postfix/main.cf進行點竄。用戶需要在main.cf文件中添加以下有關(guān)SMTP認(rèn)證的設(shè)置部門:
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = ''
smtpd_recipient_restrictions = permit_mynetworks
permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients=yes
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous
此中,每個選項的具體含義以下:
(1)smtpd_sasl_auth_enable:指定是不是要啟用SASL作為SMTP認(rèn)證編制。默許不啟用,這里必需將它啟用,所以要將該參數(shù)值設(shè)置為yes。
(2)smtpd_sasl_local_domain:假定采取Cyrus-SASL版進行認(rèn)證,那么這里不做設(shè)置。
(3)smtpd_recipient_restrictions:暗示經(jīng)由過程收件人地址對客戶端發(fā)來的郵件進行過濾。凡是有以下幾種限制法則:
permit_mynetworks:暗示只如果收件人地址位于mynetworks參數(shù)中指定的網(wǎng)段便可以被轉(zhuǎn)發(fā)郵件。
permit_sasl_authenticated:暗示承諾轉(zhuǎn)發(fā)經(jīng)由過程SASL認(rèn)證的郵件。
reject_unauth_destination:暗示拒盡轉(zhuǎn)發(fā)含未信賴的方針地址的郵件。
(4)broken_sasl_auth_clients:暗示是不是兼容非尺度的SMTP認(rèn)證。有一些Microsoft的SMTP客戶端采取非尺度的SMTP認(rèn)證和談,只需將該參數(shù)設(shè)置為yes便可解決這類不兼容標(biāo)題問題。
(5)smtpd_client_restrictions:暗示限制可以向Postfix倡議SMTP連接的客戶端。假定要避免未顛末認(rèn)證的客戶端向Postfix倡議SMTP連接,則可將該參數(shù)值設(shè)置為permit_sasl_authenticated。
(6)smtpd_sasl_security_options:用來限制某些登錄的編制。假定將該參數(shù)值設(shè)置為noanonymous,則暗示避免采取匿名登錄編制。
在完成上述設(shè)置后,必需利用號令/etc/init.d/postfix reload從頭載進建設(shè)文件,或利用號令/etc/init.d/postfix restart從頭啟動Postfix辦事,以使該建設(shè)生效。當(dāng)然,這兩個號令的具體利用需要按照不合的Linux版本來選用。
別的,因為當(dāng)Postfix要利用SMTP認(rèn)證時,會讀取/usr/lib/sasl2/smtpd.conf文件中的內(nèi)容,以肯定所采取的認(rèn)證編制,是以假定要利用saslauthd這個守護過程來進行暗碼認(rèn)證,就必需確保/usr/lib/sasl2/smtpd.conf文件中的內(nèi)容為:
pwcheck_method: saslauthd