我正在閱讀有關 sendmail 的 access_db 功能的資訊。顯然,作為阻止垃圾郵件的預防方法,它看起來很有前途。
我有幾個與如何使用 access_db 有關的問題。所以基本上我在存取文件中指定了一組規則,sendmail 將檢查該資料庫以查看它是否應該對電子郵件執行任何操作。
- 不符合任何指定規則的郵件怎麼辦?預設行為是什麼?
- 我可以使用正規表示式嗎?例如,「To:*@spam.com REJECT」有效嗎?
- 如果我只有“paypal.com RELAY”,這是否意味著我的 sendmail 將接受並發送源自或發送至 paypal.com 的電子郵件?
多謝!
答案1
- 如果規則與 access_db 中的規則不匹配,則不會影響接受或拒絕訊息。該訊息繼續由其餘規則處理。
- 描述了 access_db (以及任何通配符,但不是正規表示式)這裡。如果您想要正規表示式,則必須編寫自己的規則集來模仿 access_db 行為但使用正規表示式映射,或使用 milter,例如MIME德芳, 或者milter-正規表示式。
- 最好使用以
From:
或Connect:
代替普通 IP 位址或網域開頭的規則,這樣就不必考慮該規則是關於連接到您的主機的主機的域名,還是關於寄件者地址的域名(它們不一定相同)。
答案2
如何在 Sendmail 中使用正規表示式
我收到了所有數位網域的垃圾郵件,例如 3456.com,一開始我在 access.db 上增加了 10,000 個條目,這太荒謬了。
在您的 sendmail.mc 檔案中,在底部的郵件程式之後,您可以新增一個像這樣的正規表示式。
LOCAL_CONFIG
Kallnumbers regex -a@MATCH @[0-9]+\.com
LOCAL_RULESETS
SLocal_check_mail
R$+ $: $(allnumbers $1 $)
R@MATCH $#error $: "550 Rejected."
您可以逐字複製大部分內容,只需更改一些內容即可。
定義你的正規表示式並給它一個標識符,在它前面加上K
我的標識符是allnumbers
,我的正規表示式是[0-9]+\.com
Kallnumbers regex -a@MATCH @[0-9]+\.com
最後兩個定義了比賽和採取的行動
R$+ $: $(allnumbers $1 $)
R@MATCH $#error $: "550 Rejected.
我意識到這看起來很cf,但它在mc。