我管理一所大學的 postfix SMTP 伺服器。每周至少有一個帳戶遭到洩漏並被用來發送垃圾郵件。我們開發了一個內部監視器,可以暫停佇列中訊息數量超過 40 條的任何本機帳戶。這樣我們就可以在第一時間停止發送垃圾郵件。
但昨天,一些攻擊者入侵了一個帳戶,並可以透過我們的伺服器發送郵件。監視器無法偵測到它,因為郵件沒有使用我們的網域進行排隊,但是[電子郵件受保護]。
我如何才能發現哪個帳戶正在使用該地址發送郵件?
提前致謝。
答案1
grep
您的郵件日誌中的其中之一QUEUEID
。您應該會看到類似以下內容:
May 20 15:25:40 mta2 postfix/smtps/smtpd[26154]: 578C7E0013: client=unknown[203.0.113.3], sasl_method=PLAIN, sasl_username=someuser
May 20 15:25:40 mta2 postfix/qmgr[3291]: 578C7E0013: from=<[email protected]>, size=1198, nrcpt=1 (queue active)
May 20 15:25:40 mta2 postfix/smtp[26074]: 578C7E0013: to=<[email protected]>, relay=mx.example.com[98.51.100.14]:25, delay=0.15, delays=0.02/0.01/0.06/0.06, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 6B87C336809C)
sasl_username
是您正在尋找的部分。
在未來,你需要設定reject_authenticated_sender_login_mismatch
作為你的一部分smtpd_sender_restrictions
。這需要一個有效的smtpd_sender_login_maps
。您可能還想查看policyd
作為您自製顯示器的補充或替代品。
例子:
**main.cf**
smtpd_sender_restrictions = reject_unknown_sender_domain reject_authenticated_sender_login_mismatch
smtpd_sender_login_maps = ldap:$config_directory/ldap-sender-login-map.cf
**ldap-sender-login-map.cf**
version = 3
server_host = ldap://ldap.example.com/
search_base = dc=example,dc=com
query_filter = mailLocalAddress=%s
result_attribute = mailLocalAddress
result_format = %s,%u