Я управляю сервером Postfix SMTP в колледже. Каждую неделю как минимум один аккаунт взламывается и используется для рассылки спама. Мы разработали внутренний монитор, который блокирует любой локальный аккаунт, у которого в очереди более 40 сообщений. Таким образом, мы прекратили рассылку спама в первые же моменты.
Но вчера какой-то злоумышленник взломал аккаунт и смог отправлять письма через наш сервер. Монитор не смог обнаружить это, потому что сообщения не были поставлены в очередь с использованием нашего домена, но[email protected].
Как узнать, какой аккаунт отправлял письма, используя этот адрес?
Заранее спасибо.
решение1
grep
один из QUEUEID
s в вашем почтовом журнале. Вы должны увидеть что-то вроде:
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