<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    分享java帶來的快樂

    我喜歡java新東西

    Postfix的配置詳解

    4.1 postfix的配置文件結構

    postfix的配置文件位于/etc/postfix下,安裝完postfix以后,我們可以通過ls命令查看postfix的配置文件:

    [root@mail postfix]# ls

    install.cf main.cf master.cf postfix-script

    這四個文件就是postfix最基本的配置文件,它們的區別在于:

    mail.cf:是postfix主要的配置文件。

    Install.cf:包含安裝過程中安裝程序產生的postfix初始化設置。

    master.cf:是postfix的master進程的配置文件,該文件中的每一行都是用來配置postfix的組件進程的運行方式。

    postfix-script:包裝了一些postfix命令,以便我們在linux環境中安全地執行這些postfix命令。

    4.2 postfix的基本配置

    postfix大約有100個配置參數,這些參數都可以通過main.cf 指定。配置的格式是這樣的,用等號連接參數和參數的值。如:

    myhostname = mail.mydomain.com

    等號的左邊是參數的名稱,等號的右邊是參數的值; 當然,我們也可以在參數的前面加上$來引用該參數,如:

    myorigin = $myhostname

    雖然postfix有100個左右的參數,但是 postfix為大多數的參數都設置了缺省值,所以在讓postfix正常為你服務之前,你只需要配置為數不多的幾個參數。下面我們一起來看一看這些基本的postfix參數。需要注意的是,一旦你更改了main.cf文件的內容,則必須運行 postfix reload命令使其生效。

    1. myorigin

    myorigin參數指明發件人所在的域名。如果你的用戶的郵件地址為user@domain.com,則該參數指定@后面的域名。缺省地, postfix使用本地主機名作為myorigin,但是建議你最好使用你的域名,因為這樣更具有可讀性。比如:安裝postfix的主機為 mail.domain.com則我們可以這樣指定myorigin:

    myorigin = domain.com

    當然我們也可以引用其他參數,如:

    myorigin = $mydomain

    2. mydestination

    mydestination參數指定postfix接收郵件時收件人的域名,換句話說,也就是你的postfix系統要接收什么樣的郵件。比如:你的用戶的郵件地址為user@domain.com, 也就是你的域為domain.com, 則你就需要接收所有收件人為user_name@domain.com的郵件。與myorigin一樣,缺省地,postfix使用本地主機名作為 mydestination。如:

    mydestination = $mydomain

    mydestination = domain.com

    3. notify_classes

    在postfix系統中,必須指定一個postfix系統管理員的別名指向一個用戶,

    只有這樣,在用戶遇到問題時才有報告的對象,postfix也才能將系統的問題報告給管理員。notify_classes參數就是用來指定向postfix管理員報告錯誤時的信息級別。共有以下幾種級別:

    bounce:將不可以投遞的郵件的拷貝發送給postfix管理員。出于個人隱私的緣故,該郵件的拷貝不包含信頭。

    2bounce:將兩次不可投遞的郵件拷貝發送給postfix管理員。

    delay:將郵件的投遞延遲信息發送給管理員,僅僅包含信頭。

    policy:將由于UCE規則限制而被拒絕的用戶請求發送給postfix管理員,包含整個SMTP會話的內容。

    protocol:將協議的錯誤信息或用戶企圖執行不支持的命令的記錄發送給postfix管理員。同樣包含整個SMTP會話的內容。

    resource:將由于資源錯誤而不可投遞的錯誤信息發送給postfix管理員,比如:隊列文件寫錯誤等等。

    software:將由于軟件錯誤而導致不可投遞的錯誤信息發送給postfix管理員。

    缺省值為:

    notify_classes = resource, software

    4.myhostname

    myhostname 參數指定運行postfix郵件系統的主機的主機名。缺省地,該值被設定為本地機器名。你也可以指定該值,需要注意的是,要指定完整的主機名。如:

    myhostname = mail.domain.com

    5.mydomain

    mydomain參數指定你的域名,缺省地,postfix將myhostname的第一部分刪除而作為mydomain的值。你也可以自己指定該值,如:

    mydomain = domain.com

    6.mynetworks

    mynetworks 參數指定你所在的網絡的網絡地址,postfix系統根據其值來區別用戶是遠程的還是本地的,如果是本地網絡用戶則允許其訪問。你可以用標準的A、B、C類網絡地址,也可以用CIDR(無類域間路由)地址來表示,如:

    192.168.1.0/24

    192.168.1.0/26

    7.inet_interfaces

    inet_interfaces 參數指定postfix系統監聽的網絡接口。缺省地,postfix監聽所有的網絡接口。如果你的postfix運行在一個虛擬的ip地址上,則必須指定其監聽的地址。如:

    inet_interfaces = all

    inet_interface = 192.168.1.1

    4.3 postfix的UCE(unsolicited commercial email)控制

    所謂UCE控制就是指控制postfix接收或轉發來自于什么地方的郵件。

    缺省地,postfix轉發符合以下條件的郵件:

    * 來自客戶端ip地址符合$mynetworks的郵件。

    * 來自客戶端主機名符合$relay_domains及其子域的郵件。

    * 目的地為$relay_domains及其子域的郵件。

    缺省地,postfix接受符合以下條件的郵件:

    * 目的地為$inet_interfaces的郵件。

    * 目的地為$mydestination的郵件。

    * 目的地為$virtual_maps的郵件。

    但是我們也可以通過下面的規則來實現更強大的控制功能。

    1. 信頭過濾

    通過header_checks參數限制接收郵件的信頭的格式,如果符合指定的格式,則拒絕接收該郵件。可以指定一個或多個查詢列表,如果新郵件的信頭符合列表中的某一項則拒絕該接收郵件。如:

    header_checks = regexp:/etc/postfix/header_checks

    header_checks = pcre:/etc/postfix/header_checks

    缺省地,postfix不進行信頭過濾。

    2.客戶端主機名/地址限制

    通過smtpd_client_restrictions參數限制可以向postfix發起SMTP 連接的客戶端的主機名或ip地址。可以指定一個或多個參數值,中間用逗號隔開。限制規則是按照查詢的順序進行的,第一條符合條件的規則被執行。可用的規則有:

    reject_unknown_client:如果客戶端的ip 地址在DNS中沒有PTR記錄則拒絕轉發該客戶端的連接請求。可以用 unknown_client_reject_code參數指定返回給客戶機的錯誤代碼(缺省為450)。如果你有用戶沒有作DNS記錄則不要啟用該選項。

    permit_mynetworks:如果客戶端的ip地址符合$mynetworks參數定義的范圍則接受該客戶端的連接請求,并轉發該郵件。

    check_client_access maptype:mapname:根據客戶端的主機名、父域名、ip地址或屬于的網絡搜索access數據庫。如果搜索的結果為REJECT 或者 '[45]XX text' 則拒絕該客戶端的連接請求;如果搜索的結果為OK、RELAY 或數字則接受該客戶端的連接請求,并轉發該郵件。。可以用access_map_reject_code參數指定返回給客戶機的錯誤代碼(缺省為 554)。

    reject_maps_rbl:如果客戶端的網絡地址符合$maps_rbl_domains參數的值則拒絕該客戶端的連接請求。可以用maps_rbl_reject_code參數指定返回給客戶機的錯誤代碼(缺省為554)。

    示例:

    smtpd_client_restrictions = hash:/etc/postfix/access, reject_maps_rbl

    smtpd_client_restrictions = permit_mynetworks, reject_unknown_client

    該參數的缺省值為:

    smtpd_client_restrictions =

    也即接收來自任何客戶端的SMTP連接。

    3. 是否請求HELO命令

    可以通過smtpd_helo_required參數指定客戶端在SMTP會話的開始是否發送一個HELO命令。你可以指定該參數的值為yes或no。缺省值為:

    smtpd_helo_required = no

    4. HELO主機名限制

    可以通過smtpd_helo_restrictions參數指定客戶端在執行HELO命令時發送給postfix的主機名。缺省地, postfix 接收客戶端發送的任意形式的主機名。可以指定一個或多個參數值,中間用逗號隔開。限制規則是按照查詢的順序進行的,第一條符合條件的規則被執行。可用的規則有:

    reject_invalid_hostname:如果HELO命令所帶的主機名參數不符合語法規范則拒絕客戶機的連接請求。可以用invalid_hostname_reject_code參數指定返回給客戶機的錯誤代碼(缺省為501)。

    permit_naked_ip_address:RFC要求客戶端的HELO命令包含的ip地址放在方括號內,你可以用permit_naked_ip_address參數取消該限制。因為有的mail客戶端不遵守該RFC的規定。

    reject_unknown_hostname:如果客戶端執行HELO命令時的主機名在DNS中沒有相應的A 或 MX 記錄則拒絕該客戶端的連接請求。可以用invalid_hostname_reject_code參數指定返回給客戶機的錯誤代碼(缺省為450)。

    reject_non_fqdn_hostname:如果客戶端執行HELO命令時的主機名不是RFC規定的完整的域名則拒絕客戶端的連接請求。可以用invalid_hostname_reject_code參數指定返回給客戶機的錯誤代碼(缺省為504)。

    check_helo_access maptype:mapname:根據客戶端HELO的主機名、父域名搜索access數據庫。如果搜索的結果為REJECT 或者 '[45]XX text' 則拒絕該客戶端的連接請求;如果搜索的結果為OK、RELAY 或數字則接受該客戶端的連接請求。可以用access_map_reject_code參數指定返回給客戶機的錯誤代碼(缺省為554)。

    示例:

    smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname

    5. RFC 821信頭限制

    RFC 821對郵件的信頭做了嚴格的規定,但是廣泛使用的sendmail并不支

    持該規定,所以對于該參數我們只能說不,即:

    strict_rfc821_envelopes = no

    6. 通過發件人地址進行限制

    可以用smtpd_sender_restrictions參數通過發件人在執行MAIL FROM命令時提供的地址進行限制。可以指定一個或多個參數值,中間用逗號隔開。限制規則是按照查詢的順序進行的,第一條符合條件的規則被執行。可用的規則有:

    reject_unknown_sender_domain:如果MAIL FROM命令提供的主機名在DNS中沒有相應的A 或 MX 記錄則拒絕該客戶端的連接請求。可以用unknown_address_reject_code參數指定返回給客戶機的錯誤代碼(缺省為450)。

    check_sender_access maptype:mapname:根據MAIL FROM命令提供的主機名、父域搜索access數據庫。如果搜索的結果為REJECT 或者 '[45]XX text' 則拒絕該客戶端的連接請求;如果搜索的結果為OK、RELAY 或數字則接受該客戶端的連接請求。可以用access_map_reject_code參數指定返回給客戶機的錯誤代碼(缺省為554)。可以通過該參數過濾來自某些不受歡迎的發件人的郵件。

    reject_non_fqdn_sender:如果MAIL FROM命令提供的主機名不是RFC規定的完整的域名則拒絕客戶端的連接請求。可以用non_fqdn_reject_code 參數指定返回給客戶機的錯誤代碼(缺省為504)。

    缺省地,postfix接受來自任何發件人的郵件。

    示例:

    smtpd_sender_restrictions = hash:/etc/postfix/access, reject_unknown_sender_domain

    7. 通過收件人地址進行過濾

    可以用smtpd_recipient_restrictions參數通過發件人在執行RCPT TO命令時提供的地址進行限制。缺省值為:

    smtpd_recipient_restrictions = permit_mynetworks, check_relay_domains

    可以指定一個或多個參數值,中間用逗號隔開。限制規則是按照查詢的順序進行的,第一條符合條件的規則被執行。可用的規則有:

    check_relay_domains:如果符合以下的條件,則接受SMTP連接請求,否則拒絕該連接,可以用relay_domains_reject_code 參數指定返回給客戶機的錯誤代碼(缺省為504)。

    * 客戶端主機名符合$relay_domains及其子域

    * 目的地為$inet_interfaces、$mydestination或$virtual_maps

    permit_auth_destination:不管客戶端的主機名,只要符合以下的條件,就

    接受SMTP連接請求:

    * 解析后的目標地址符合$relay_domains及其子域

    * 解析后的目標地址符合$inet_interfaces、$mydestination或$virtual_maps

    reject_unauth_destination:不管客戶端的主機名,只要符合以下的條件,就拒絕該客戶端SMTP連接請求:

    * 解析后的目標地址符合$relay_domains及其子域

    * 解析后的目標地址符合$inet_interfaces、$mydestination或$virtual_maps

    check_recipient_access:根據解析后的目標地址、父域搜索access數據庫。如果搜索的結果為REJECT 或者 '[45]XX text' 則拒絕該客戶端的連接請求;如果搜索的結果為OK、RELAY 或數字則接受該客戶端的連接請求。可以用access_map_reject_code參數指定返回給客戶機的錯誤代碼(缺省為554)。

    reject_unknown_recipient_domain:如果收件人的郵件地址在DNS中沒有相應的A 或 MX 記錄則拒絕該客戶端的連接請求。可以用unknown_address_reject_code參數指定返回給客戶機的錯誤代碼(缺省為450)。

    reject_non_fqdn_recipient:如果發件人在執行RCPT TO命令時提供的地址

    不是完整的域名則拒絕其SMTP連接請求。可以用The non_fqdn_reject_code參數指定返回給客戶機的錯誤代碼(缺省為504)。

    4.4 posftfix的性能控制

    之所以對postfix的性能進行控制,是為了在遇到郵件風暴時保證postfix可以正常運行。通常,我們可以通過對下列postfix 參數的配置來調節postfix的性能,這些參數都是通過mail.cf配置文件進行配置的,修改以后不要忘了運行postfix reload命令來使配置生效。

    1. 進程數限制

    可以通過default_process_limit 參數來控制postfix系統同時可以運行的最大進程數目。缺省值是50個。

    2. 對同一目標主機的并發連接限制

    當向同一目標主機發出SMTP連接時,postfix初始化發出兩個SMTP連接,如果投遞成功則增加并發的SMTP連接數目,遇到擁塞時又減少并發連接的數目。postfix中通過以下的參數對同一目標主機的并發連接進行控制:

    * initial_destination_concurrency:控制對同一目標主機的初始化并發連接數目。缺省值為2。

    * default_destination_concurrency_limit:控制初始化連接后對同一目標主機的最大并發連接數目。缺省值為10。

    * local_destination_concurrency_limit:控制對同一本地收件人的最大同時投遞的郵件數目。缺省值為2,因為對本地同一收件人投遞郵件時投遞工作只能一個接一個的進行,所以設得在大也沒用。

    3. 對同一封郵件的收件人數目限制

    通過default_destination_recipient_limit參數來控制postfix的投遞代理(如

    smtp進程)可以將同一封郵件發送給多少個收件人。缺省值為50。也可以用明確指出該投遞代理的參數來覆蓋該缺省值。如用smtpd_recipient_limit來指定smtp投遞代理可以將同一封郵件發送給多少個收件人,該參數的缺省值為1000。

    4. 推遲投遞控制

    通過defer_transports參數,我們可以推遲投遞該參數指定的郵件直到postfix明確的提出投遞要求。下面我們看一個例子:

    有一個小型的局域網,用戶都將郵件發送給局域網內部的一臺postfix郵件服務器,然后通過在該服務器上撥號將郵件發送出去。這時我們可以這樣指定該參數的值:

    defer_transports = smtp

    該語句表示postfix推遲投遞所有的郵件直到執行sendmail -q命令,這樣我們就可以在ppp的腳本中加上sendmail -q,以便在撥號成功后讓postfix開始投遞郵件。

    posted on 2011-12-11 19:36 強強 閱讀(567) 評論(0)  編輯  收藏 所屬分類: linux 操作系統配置sendmail

    主站蜘蛛池模板: 成人福利在线观看免费视频| 午夜亚洲国产精品福利| 国产精品网站在线观看免费传媒 | 中国内地毛片免费高清| 亚洲人成人无码网www国产| 成人精品综合免费视频| a级亚洲片精品久久久久久久| 黄色视频在线免费观看| 奇米影视亚洲春色| 久久国产精品2020免费m3u8| 亚洲网址在线观看你懂的| 久久国产精品成人片免费| 亚洲香蕉久久一区二区| 暖暖免费高清日本一区二区三区 | 亚洲av成人一区二区三区| 日韩精品无码区免费专区| 亚洲av无码成人精品区一本二本 | 亚洲国产美女精品久久| 91在线视频免费播放| 亚洲成a人无码亚洲成www牛牛| 免费在线观看a级毛片| 中文字幕a∨在线乱码免费看| 亚洲男人天堂av| 午夜私人影院免费体验区| 一级毛片视频免费观看| 亚洲韩国精品无码一区二区三区 | 日韩免费无码一区二区视频| 欧亚一级毛片免费看| 久久久久无码精品亚洲日韩| 性做久久久久久免费观看| 深夜免费在线视频| 亚洲精品中文字幕乱码影院| 四虎影在线永久免费四虎地址8848aa| 久久久WWW免费人成精品| 亚洲另类视频在线观看| 久久精品亚洲福利| 精品香蕉在线观看免费| 日韩少妇内射免费播放| 亚洲国产精品yw在线观看| 亚洲色偷偷狠狠综合网| 91成人免费观看网站|