茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1670227 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_00041.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2012/11/20 7:21:15
原先立意是希望不擋浮動 ip user 能順利寄信,但上述設定
確擋住所有 dynamic 使用者!

由於已變動數次設定,乾脆全部重貼全文!對已看過 User 說聲
抱歉!因功力不足所以才會不斷修正,謝謝:-)

本篇不在於告知 postfix 如何安裝,如需要請參考!
鳥哥網站!
http://linux.vbird.org/linux_server/0390postfix.php
主要針對 postfix 擋信參數用法及心得在此講解一下:

_1. /etc/postfix/main.cf 中比較注意是
~當每行的第一個字為空白(tab或空白鍵)的文字列皆被視為上一列的延續。
方便解讀分析!

_2.根據 postfix 官方文件的資訊,所有的規則寫在前面的如果符合就先被執行,
因此順序變的重要!

_3.而 Postfix 用戶端判別規則檢查順序如下:
1 → smtpd_client_restrictions
2 → smtpd_helo_restrictions
3 → smtpd_sender_restrictions
4 → smtpd_recipient_restrictions
5 → smtpd_data_restrictions
6 → header_checks
7 → body_checks

_4.我僅列表我的防範垃圾信規則如下︰
# -=------------------------------------------------------=-
# _1_Server: 220 smtp.example.com ESMTO Postfix
# check client use ip/domain
#
smtpd_client_restrictions = permit_mynetworks,
permit_sasl_authenticated,
check_client_access regexp:/etc/postfix/client_checks, <-- 直接拒收不歡迎 smtp server,是用 554 方式拒收!,另誤判為 ODRB IP 直接以 OK 設此!
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.spamcop.net

---------------------------------------------
reject_rbl_client dul.dnsbl.sorbs.net <-- 加上這段可擋大部分 Dynamic IP
reject_rbl_client cbl.anti-spam.org.cn <-- 擋來自大陸的垃圾信
---------------------------------------------

# _2_Client: MAIL FROM:<info@ora.com>
# check Mail From
#
smtpd_sender_restrictions = permit_mynetworks,
permit_sasl_authenticated, <-- 避免來自未設反解 IP 而拒決轉寄!
check_sender_access regexp:/etc/postfix/sender_access, <-- 開放未定義反解 smtp server 是用正規表示法設定,以 OK 放行接受來源端信件!
reject_unknown_client, ┐
reject_non_fqdn_sender, ┼─→ DNS 檢查段!規則符合就先放行,後面就不檢查!
reject_unknown_sender_domain ┘

# _3_Clinet: RCPT TO:<kdent@example.com>
# check local network Relay
#
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
check_recipient_access regexp:/etc/postfix/no_fqnlist, <-- 設定部份帳號具有多重網域身份,其餘拒絕!
check_client_access regexp:/etc/postfix/client_access, <-- 拒收所有 Dynamic dns name!
reject_unauth_destination

# _4_Client: Data (這段定義是要配合 spamassassin 用,若無!可以省略)
#
smtpd_data_restrictions = check_client_access cidr:/etc/postfix/header-local,
permit_mynetworks,
check_client_access cidr:/etc/postfix/header-auth,
permit_sasl_authenticated,
check_client_access cidr:/etc/postfix/header-remote

#
# -=------------------------------------------------------=-

上面參數意義我想大部份的人都瞭解,只幫各位複習一下!
permit_sasl_authenticated → 允許SASL寄送
permit_mynetworks → 允許本地網路寄送
reject_unauth_destination → 不允許非認證來來源寄送

reject_rbl_client relay.ordb.org → 不允許RBL資料庫中之用戶端寄送
reject_non_fqdn_sender → 用戶端的MAIL FROM命令若不是RFC要求的完整名稱則退信。
reject_unknown_client → 當SMTP Client連線時,postfix若無法查詢該用戶端之PTR紀錄,則拒絕連線。
reject_unknown_sender_domain → mail from 命令所提供的寄信人位置若查不到A 紀錄或MX紀錄則退信。

~其實重點不是講這些參數意義,而是自定義檔案用法;凡是有做過【修改】必須
重新【載入設定檔,設定值才會生效!]啟動 MTA 系統!
Exp︰
# /etc/rc.d/init.d/MailScanner restart
# /etc/rc.d/init.d/postfix reload


~注意!
檢查規則順序是按照訂的先後作判斷;若已有條件符合者後面就不檢查了!
__check_client_access regexp:/etc/postfix/client_checks
...
/ecfs[1-9]\.epaper\.com\.tw/ 554 Service unavailable
/ecfs1[0-9]\.epaper\.com\.tw/ 554 Service unavailable

# -=---------------------------------------------=-
# For Japen Mike_Huang
/125\.175\.32\.168/ OK ←─ 放行誤判為 ORDB IP!


~Maillog 若有阻擋成功訊息如下:
Oct 2 09:04:12 tej9806 postfix/smtpd[20256]: connect from 61-225-206-44.dynamic
.hinet.net[61.225.206.44]

Oct 2 09:04:12 tej9806 postfix/smtpd[20256]: NOQUEUE: reject: CONNECT from 61-2
25-206-44.dynamic.hinet.net[61.225.206.44]: 554 <61-225-206-44.dynamic.hinet.net
^^^^
[61.225.206.44]>: Client host rejected: Service unavailable; proto=SMTP
^^^^^^^^^^^^^^^^^^^^
Oct 2 09:04:12 tej9806 postfix/smtpd[20256]: disconnect from 61-225-206-44.dyna
mic.hinet.net[61.225.206.44]

__check_sender_access regexp:/etc/postfix/sender_access
...
/.*firstbank\.com\.tw/ OK
/61\.219\.52\.9/ OK

/ms[1-9]\.epaper\.com\.tw/ DISCARD
/ms[a-z]\.epaper\.com\.tw/ DISCARD

/ecfs[1-9]\.epaper\.com\.tw/ DISCARD
/ecfs10\.epaper\.com\.tw/ DISCARD
/ecfsrv\.epaper\.com\.tw/ DISCARD

~Maillog 若有阻擋成功訊息如下:
Sep 27 14:24:57 tej9806 postfix/smtpd[20168]: connect from msr.epaper.com.tw[211
.20.188.103]

Sep 27 14:24:58 tej9806 postfix/smtpd[20168]: NOQUEUE: discard: MAIL from msr.epaper.com.tw
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[211.20.188.103]: <edm@msx.epaper.com.tw>: Sender address triggers DISCARD action
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
; from=<edm@msx.epaper.com.tw> proto=ESMTP helo=<msr.epaper.com.tw>
Sep 27 14:24:58 tej9806 postfix/smtpd[20168]: 52FFC14145: client=msr.epaper.com.
tw[211.20.188.103]
Sep 27 14:24:59 tej9806 postfix/smtpd[20168]: disconnect from msr.epaper.com.tw[
211.20.188.103]

__check_client_access regexp:/etc/postfix/client_checks
...
# -=---------------------------------------------=-
/.*dynamic\..*/ DISCARD

~Maillog 若有阻擋成功訊息如下:
Oct 14 13:40:45 tej9806 postfix/smtpd[21152]: connect from 141.168.179.60
.broad.nb.zj.dynamic.cndata.com[60.179.168.141]

Oct 14 13:40:55 tej9806 postfix/smtpd[21152]: NOQUEUE: discard: RCPT from
^^^^^^^^^
141.168.179.60.broad.nb.zj.dynamic.cndata.com[60.179.168.141]: <141.168.179.60.
broad.nb.zj.dynamic.cndata.com[60.179.168.141]>: Client host triggers DISCARD action;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
from=<zeMnt1o3g2qkygWW0AQOzkkIcIhR@ms53.hinet.net> to=<patty@tej.com.tw> p
roto=SMTP helo=<141.168.179.60.broad.nb.zj.dynamic.cndata.com>

Oct 14 13:40:55 tej9806 postfix/smtpd[21152]: DBB0D14149: client=141.168.
179.60.broad.nb.zj.dynamic.cndata.com[60.179.168.141]

Oct 14 13:41:00 tej9806 postfix/smtpd[21152]: disconnect from 141.168.179
.60.broad.nb.zj.dynamic.cndata.com[60.179.168.141]

__check_recipient_access regexp:/etc/postfix/no_fqnlist
# -=---------------------------------------------=-
/service@richmall\.com\.tw/ OK
/rise@richmall\.com\.tw/ OK
/.*richmall\.com\.tw/ DISCARD

~Maillog 若有阻擋成功訊息如下:
Dec 21 15:22:07 tej9806 postfix/smtpd[29202]: NOQUEUE: discard: RCPT from
amos.component.com.tw[59.124.227.230]: <paul@richmall.com.tw>: Recipient
address triggers DISCARD action; from=<kuang@amos.component.com.tw>
to=<paul@richmall.com.tw> proto=ESMTP helo=<amos.component.com.tw>

有無看出這兩個檔都用 regexp(正規表示法)作法,但所帶參數不一樣,
並非網路上所討論一樣!我的規則是所有用動態 IP 所架 MailServ 一律
阻擋,但來至於公司使用者不限是否為動態 IP。至於已確定誤判 Mail
Server 可試先定義在 sender_access 檔案內其允許值為 OK!

__總結:

/etc/postfix/client_checks 內容定義要拒收已知發信者 ip ,如 pchome 廣告信!

/etc/postfix/sender_access 俗稱白名單避免一些正常信未設反解而遭到誤判為
垃圾信,如第一銀行; 新聞局(ncc.tw)

/etc/postfix/client_access 任何 IP 來自屬於自家 User 可寄信!其餘來自任何 IP
其反解 ptr name 帶有 dynamic, dhcp 所發信主機或
client 端皆拒收!

/etc/postfix/no_fqnlist 定義在多重網域下,只允許部份帳號具有多重身份,
其餘則只能具有單一 Domain!

__而正規表示法意義可參考鳥哥網站︰
http://linux.vbird.org/linux_basic/0330regularex.php

參考上奇那本 POSTFIX後 實做
我的main.cf
smtpd_recipient_restrictions =
....
reject_rbl_client dul.dnsbl.sorbs.net <--加上這段可擋大部分 Dynamic IP
reject_rbl_client cbl.anti-spam.org.cn <----擋來自大陸的垃圾信

另外書上有提到若是想讓特定被listed為spam的ip 也接受 在之後可以設置
check_sender_access = hash:/etc/postfix/rhsbl_sender_exceptions

就是你提到的白名單 可是我就是實做上有點問題 不知是否格式問題
又請問你所提的白名單是在DNS check之前 還是之後
以下為log
-----------------------
1.擋Dynamic IP
Nov 24 04:41:59 ns1 postfix/smtpd[1415]: NOQUEUE: reject: RCPT from unknown[201.66.41.181]:
554 Service unavailable; Client host [201.66.41.181] blocked using dul.dnsbl.sorbs.net;
Dynamic IP Addresses See: http://www.sorbs.net/lookup.shtml?201.66.41.181; from=<alice@XXX.com.tw>
to=<alice@XXX.com.tw> proto=ESMTP helo=<201-66-41-181.ctame706.dsl.brasiltelecom.net.br>

2.在RCPT TO之後會收到 451 Server configuration error
Nov 24 03:57:32 ns1 postfix/smtpd[15441]: NOQUEUE: reject: RCPT from XX-XX-67-141.HINET-IP.hinet.net[XX.XX.67.141]:
451 Server configuration error; from=<spXXtw@gmail.com> to=<peter@XX.com.tw> proto=ESMTP helo=<googlemail.com>
Nov 24 03:57:32 ns1 postfix/smtpd[15441]: > XX-XX-67-141.HINET-IP.hinet.net[XX.XX.67.141]: 451 Server configuration error


謝謝 !!



原文出處:鳥哥的 Linux 私房菜-新手討論區 • 檢視主題 - [分享] Postfix 進階篇
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|