Postfix 阻止使用者被盜用大量發送垃圾信

mail server 這幾天被計中因為 spam 封了3次,請系館網管解除,然後把發現發送垃圾信的使用者照學姊的方法封鎖,他還是繼續照發… 就來研究一下哪裡出了問題

觀察信件

找出是誰大量發垃圾信:

$ cat /var/log/mail.log | grep nrcpt

只要 nrcpt 是 1 以上,尤其是 6~10 的,如果重複一直做這件事,那就大有問題,先抓出來繼續看。

# 看 mail queue
$ mailq | grep user
# 找出他的 mail id
# 由 id 看他的信件內容 (假設已經被ban 那信件會一直擺在queue)
$ postcat -q id
# big5
$ postcat -q id | iconv -f big5

我看到的是國外徵才信….很明顯 sender 雖然是我們 lab 的帳號,但來源卻是某個奇怪的信箱,而 reply-to 也是他們的信箱。

封鎖他

建立一個檔案 /etc/postfix/sender-access ,在裡面設定要特別處理的帳號,假設我們的網域是mail.server,被盜用的使用者叫 spammer:

$ vim /etc/postfix/sender-access

# /etc/postfix/sender-access
spammer@mail.server

 

然後建立 .db 檔並重啟 postfix:

$ postmap /etc/postfix/sender-access
$ service postfix restart

設定檢查寄件者功能

這邊就是研究的重點。/etc/postfix/main.cf 裡面可以放兩個項目:smtpd_sender_restrictions 和 smtpd_recipient_restrictions。我們要在裡面檢查寄件者因此分別在兩項加入
“check_sender_access hash:/etc/postfix/sender-access"。

以下是我們目前的設定,注意兩者都有 check_sender_access。

smtpd_sender_restrictions =
 check_sender_access hash:/etc/postfix/sender-access,
 reject_non_fqdn_sender,
 reject_unknown_sender_domain,
 reject_unknown_address

# postgray: 127.0.0.1:10023
smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_sasl_authenticated,
 reject_non_fqdn_recipient,
 reject_unknown_recipient_domain,
 reject_unauth_destination,
 check_policy_service inet:127.0.0.1:10023,
 check_sender_access hash:/etc/postfix/sender-access,
 check_recipient_access hash:/etc/postfix/recipient-access,
 permit

原本只有 smtpd_sender_restrictions 有 check_sender_access,卻從 /var/log/mail.log 發現被ban掉的人根本還是會繼續發送。研究了才發現,需要在 smtpd_recipients_restrictions 也設定才有用。從名字看,本來不懂,以為前者是管理 發出的信件,後者是管理 接收的信件。看了一些教學 才知道,他們是都在 smtp 轉發信件的時候觸發,只是順序不一樣,一個是在 MAIL FROM 的時候,一個是在 RCPT TO 的時候。

另外也查到一篇討論說有人建議把所有規定都設在 smtpd_recipients_restrictions,另一篇卻說這樣有點危險。好吧,目前沒辦法再更深入研究太多,總之現在的設定是可以確保垃圾信被擋住就是了。
338825 Aug 18 19:58:21 mailserver postfix/smtpd[12500]: NOQUEUE: reject: RCPT from unknown[x.x.x.x]: 554 5.7.1 <spammer@mail.server>: Recipient add ress rejected: Access denied; from=<Skyy@moninware.org> to=<spammer@mail.server> proto=ESMTP helo=<email.moninware.org>

暫時安心。

部分失效

但是用 Mac 上的 Mail 測試,還有使用 mail server 上的 roundcube webmail 試,都不會擋成功… 參考這篇,沒有非常確定。使用 gmail 寄才會真的被擋。

 

 

廣告
Postfix 阻止使用者被盜用大量發送垃圾信

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s