在預設的情況下 ( 也就是說,在沒有開放 SMTP 這個郵件認證時! ) Postfix 對於收信與寄信的流程是如何呢?!這裡我們得分別來談一談幾個主要的設定項目與郵件傳輸的動作!
幫助 Client 發送信件,也就是 Relay 的功能開放的需求項目:在開放哪些項目之後,你的 postfix 主機才會幫助『信任』的 Client 端 Relay 呢?
當 Client 來自信任的網域,也就是 IP 符合 $mynetworks 的設定值時;
當 Client 來自信任的機器,也就是主機名稱符合 $relay_domains 的設定項目時;
當 Client 來自不信任的網域,但是去的目的地主機端符合 $relay_domains 的設定時。
當符合上面三點的任何一點時,那麼 postfix 將對該信件進行 relay 的動作!
From:http://linux.vbird.org/linux_server/0390postfix.php#server_flow
收信程序:在哪些情況之下,我們的 postfix 會將該封信件收下來呢?
收件者主機名稱符合 $inet_interfaces 的設定;
收件者主機名稱符合 $mydestination 的設定;
收件者主機名稱符合 $virtual_maps 的設定。
符合上面三點的任何一項時,那麼該封信件就會被我們的 postfix 收下來!
所以,如果你的 postfix 能寄不能收,或者是能收不能寄,請仔細的觀察一下上面的幾個重大的設定項目,仔細的在你的 main.cf 重新設定一下,基本上,應該就不會有太大的問題!
啟動 smtp 郵件認證功能
針對主機設定:
smtpd_sasl_auth_enable:
『確定是否要針對 Client 啟動 sasl 的認證呢?』預設是不啟用,這裡我們必須要將他給啟用才行!所以要『smtpd_sasl_auth_enable = yes'
smtpd_sasl_local_domain:
『確認已經經過認證的網域』,就是不需要身份認證也可以是『信任』的網域囉,在 1.5.xx 版的 cyrus 可以直接填寫為 $myhostname 啦!不過,在 2.xx 版本時,就不能設定了!很重要喔!
smtpd_recipient_restrictions:
『信件收件的限制規則』,既然已經啟動了 sasl 的郵件認證,此時必須要規定一下,到底在什麼條件之下,我們的 postfix 可以接受 Client 端的 Relay 的功能呢?主要有底下這幾種限制的規則:
permit_mynetworks:在 mynetworks 這個項目設定的網域 IP 都可以被允許連線喔;
permit_authenticated:允許使用者經過 SASL 的認證方式寄信!
check_relay_domains:通過一些測試之後的主機可以進行 relay ,與剛剛前幾節的 relay_domains 有點關係!
不過,在 2.xx 版本下,需要變成底下的項目了!
reject_unauth_destination:這是在 2.xx 版本時的設定項目,取代了 check_relay_domains 的設定項目囉!
通常我們會設定上面這三個就差不多啦!
smtpd_client_restrictions:
『針對 client 端的限制規則』,經過 mynetworks 這個信任網域的 IP 之後,那未經信任的 Client端 IP 來源你要限制他使用你的 postfix 時,這個項目就要啟動 permit_sasl_authenticated 囉!
smtpd_sasl_security_options:
『限制某些登入的方式』,在 Postfix 裡面,預設是使用 Plaintext 的方式來認證的,所以自然不能取消掉這個認證囉(noplaintext)!但是我們可以取消掉匿名登入的型態喔(noanonymous)!可以這樣做『smtpd_sasl_security_options = noanonymous'
針對 Client 設定:
smtp_sasl_auth_enable:
上面是針對主機來設定的,這個項目則是針對 Client 來設定的,在預設的情況之下, Postfix 並不會對 client 提供認證的功能,也就是說, postfix 只會依據 mynetworks 之類的信任網域來提供 Relay 的功能,那麼我們要啟動對於 client 的身份認證功能時,這裡就必需要設定為 yes 才行!不過,如果是在 2.xx 版本時,這個設定就不需要啦!
Postfix 預設的 Relay 流程與收受信件流程
Please follow and like us: