Добрый день. Помогите разобраться со СПАМ-ерским письмом которое, как по мне, имеет интересное содержание.Суть:
- есть большая корпоративная сеть с таким почтовым сервером Postfix+Amavisd-new+Spamassassin+CommuniGate.
- Пользователю «А» пришло спамерское письмо которое было адресовано пользователю «В»
- Пользователь «В» понятное дело это письмо не отсылал, и это видно из заголовка письма так как первый Received это какой-то интернет сервер.
- Интересно то что и отправитель письма и получатель письма пользователь «B»
- А самое интересное что в X-Spam-Status пишется что срабатывает правило USER_IN_WHITELIST_TO. Но вот в конфиге Spamassassin пользователь «В» не прописан в белом списке.Само письмо и конфиги выложены ниже. Название своего сервера и пользователей я заменил на myserver и «А», «В», «С».
Не могу понять почему на письмо сработало правило USER_IN_WHITELIST_TO и почему оно пришло пользователю «А» которого вообще нет в заголовке.
ЗАГОЛОВОК ПИСЬМА:
Return-Path: <mootermk@sendsmtp.com>
Received: from [123.44.55.66] (HELO relay.myserver.com)
by myserver.com (CommuniGate Pro SMTP 4.2.10)
with ESMTP id 10124872; Tue, 02 Feb 2010 23:14:28 +0200Received: from localhost (localhost [127.0.0.1])
by relay.myserver.com (Postfix) with ESMTP id BF989E0051;
Tue, 2 Feb 2010 23:14:28 +0200 (EET)Received: from relay.myserver.com ([127.0.0.1])
by localhost (relay [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
id 30727-12; Tue, 2 Feb 2010 23:14:26 +0200 (EET)Received: from host-81-190-2-17.gdynia.mm.pl (host-81-190-2-17.gdynia.mm.pl [81.190.2.17])
by relay.myserver.com (Postfix) with ESMTP id 266F7E004F;
Tue, 2 Feb 2010 23:14:25 +0200 (EET)Received: from 81.190.2.17 by vanitysmtp.changeip.com; Tue, 2 Feb 2010 22:13:48 +0100
Message-ID: <000d01caa44c$9c930130$6400a8c0@mootermk>
From: B@myserver.com
To: <B@myserver.com>Subject: I'll like you? Remember that night in the hotel?
Date: Tue, 2 Feb 2010 22:13:48 +0100
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0007_01CAA44C.9C930130"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.3790.1830
X-MimeOLE: Produced By Microsoft MimeOLE 6.00.3790.1830
X-Virus-Scanned: by amavisd-new at relay.myserver.com
X-Spam-Status: No, hits=-45.606 tagged_above=-100 required=9.5 tests=BAYES_99,
DCC_CHECK, DIGEST_MULTIPLE, HELO_DYNAMIC_IPADDR, HTML_80_90, HTML_MESSAGE,
INFO_TLD, NO_REAL_NAME, RAZOR2_CF_RANGE_E8_51_100, RAZOR2_CHECK,
RCVD_IN_BL_SPAMCOP_NET, RCVD_IN_SORBS_DUL, RCVD_IN_SORBS_WEB, RCVD_IN_XBL,
UNPARSEABLE_RELAY, URIBL_AB_SURBL, URIBL_JP_SURBL, USER_IN_WHITELIST_TO
X-Spam-Level:
Основные моменты amavisd.conf:$sa_local_tests_only = 0; # (default: false)
$sa_mail_body_size_limit = 1024*1024;
$sa_tag_level_deflt = -100.0;
$sa_tag2_level_deflt = 9.5;
$sa_kill_level_deflt = 9.5;
$sa_spam_subject_tag = '***** SPAM ***** ';
$sa_spam_modifies_subj = 1;
$sa_debug = 1;Основные моменты Local.cf:
use_razor2 1
use_bayes 1
bayes_auto_learn 0
bayes_path /var/spool/amavis/.spamassassin/bayes
bayes_auto_learn_threshold_nonspam 0
bayes_auto_learn_threshold_spam 20.0
use_pyzor 0
ok_locales all
razor_config /var/spool/amavis/.razor/razor-agent.confwhitelist_to C@myserver.com
whitelist_to D@myserver.com
whitelist_to F@myserver.comscore USER_IN_WHITELIST_TO -100.000
>Не могу понять почему на письмо сработало правило USER_IN_WHITELIST_TO и почему оно
>пришло пользователю «А» которого вообще нет в заголовке.Рассмотрим бумажный конверт. На нем написан адрес: город Лупкино, улица Бабкина, Васе Пупкину.
А внутри письма - "Здравствуй, дорогой Петя Иванов".
----Так и тут, при отправке письма сервер сначала говорит кому это письмо (конверт), а затем уже кидает содержимое (внутри письма).
>Так и тут, при отправке письма сервер сначала говорит кому это письмо
>(конверт), а затем уже кидает содержимое (внутри письма).Отправитель говорит что письмо
From: B@myserver.com
To: <B@myserver.com>Внутри письма спам, что не интересно. А вот почему оно попало пользователю A@myserver.com при полном отсутствии его в заголовке это не понятно.
PavelR - все внятно объяснил. Есть заголовок письма и есть конверт, они могут быть различны.
>PavelR - все внятно объяснил. Есть заголовок письма и есть конверт, они
>могут быть различны.Посмотрите лог по данному письму и вы все поймете.
Там будет реальный адрес получателя и отправителя.
>PavelR - все внятно объяснил. Есть заголовок письма и есть конверт, они
>могут быть различны.А разве почтовые сервера определяют дальнейший маршрут письма не по заголовку???
>А разве почтовые сервера определяют дальнейший маршрут письма не по заголовку???Сюрприииз :)
Гуглить: протокол smtp
>>PavelR - все внятно объяснил. Есть заголовок письма и есть конверт, они
>>могут быть различны.
>
>А разве почтовые сервера определяют дальнейший маршрут письма не по заголовку???По заголовкам на конверте, проставленные MTA .
Загловки Mail user agent (MUA) From: , To: для человека больше служат.
>>Так и тут, при отправке письма сервер сначала говорит кому это письмо
>>(конверт), а затем уже кидает содержимое (внутри письма).
>
>Отправитель говорит что письмо
>From: B@myserver.com
>To: <B@myserver.com>
>
>Внутри письма спам, что не интересно. А вот почему оно попало пользователю
>A@myserver.com при полном отсутствии его в заголовке это не понятно.Потому что во время smtp-сессии клиент сказал так:
EHLO blah-blah-blah
MAIL FROM:<blah-blah@domain.com>
RCPT TO:<A@myserver.com> <-- вот оно,а затем
DATA
From: B@myserver.com
To: <B@myserver.com>
Subjectspam
.
--
Все что до DATA - это конверт, все что после, но до пустой строки - заголовки письма (используются в почтовых клиентах для удобства, сортировки и т.д.). После пустой строки - текст письма
время smtp-сессии клиент сказал так:
>
>EHLO blah-blah-blah
>MAIL FROM:<blah-blah@domain.com>
>RCPT TO:<A@myserver.com> <-- вот оно
>А почему этот адрес не указывается в заголовке письма?
>А почему этот адрес не указывается в заголовке письма?Osiris, еще разок... внимательней будьте. Объясняю... Клиент соединяется на 25 TCP/порт с вашим SMTP-серверов. После приглашения (код сообщения 220), клиент представляется:
EHLO domain.name
сервер отвечает ему:
250-сообщение какое-нитьзатем клиент начинает говорить от имени кого он отправляет почту, этот адрес будет использоваться для ответа в случае неудачной доставки:
MAIL FROM:<user@domain.com>
Затем клиент говорить КОМУ он отправляет почту, это РЕАЛЬНЫЙ адрес доставки или алиас (псевдоним), вот именно на основании этого параметра SMTP-сервер маршрутизирует (кладет в ящик и т.д.) почту:
RCPT TO:<user@localdomain.com>
Это всё был конверт письма. Дальше начинает передача содержимого письма, то что вкладывается в конверт:
DATA
и тут начинаешь писать какие хочешь заголовки
From: Bill Gates <Bill.Gates@microsoft.com>
To: Petya Ivanov <non-existent@yandex.ru>
Subject: Forged headers
X-Comment:После пустой строки начинается текст письма, а предложение состоящее из одной точки заканчивает текст письма и говорит SMTp-серверу отправить письмо
.QUIT
Вот Вам такое письмо придет, и там будет написано, что его отправил Билл Гейтс и вообще на яндекс.ру, а не Ваш домен, но пришло оно все-таки Вам... Потому что (еще раз повторю) SMTP-сервер пересылает письма, основываясь на аргументах RCPT TO:<> и MAIL FROM:<>, то что идет после DATA это просто текст письма, там можно что угодно написать, именно их показывают Thunderbird, Outlook и т.д. Надеюсь понятно объяснилВот как это в реальности работает:
> telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 smtp.testdomain.org ESMTP MeTA1-1.0.PreAlpha32.0
ehlo localhost
250-smtp.testdomain.org ESMTP Hi there
250-PIPELINING
250-STARTTLS
250-AUTH LOGIN PLAIN GSSAPI DIGEST-MD5 CRAM-MD5
250-SIZE 10485760
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-XVERP
250 HELP
MAIL FROM:<vit@remotedomain.ru>
250 2.1.0 Sender ok
RCPT TO:<vit@testdomain.org>
250 2.1.5 Recipient okDATA
354 Go
From: Bill Gates <Bill.Gates@microsoft.com>
To: Petya Ivanov <non-existent@yandex.ru>
Subject: Forged headersmessage text
.
250 2.0.0 got it id=S000000000000006A00
quit
221 2.0.0 Bye
Connection closed by foreign host.
Vitaly_loki, спасибо за столь детальный ответ. Все, я понял. Просто раньше думал что адреса на "конверте" тоже указываются в заголовках.На счет этого я знаю, сам так не раз почту отправлял:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 smtp.testdomain.org ESMTP MeTA1-1.0.PreAlpha32.0
ehlo localhost
250-smtp.testdomain.org ESMTP Hi there
250-PIPELINING
250-STARTTLS
250-AUTH LOGIN PLAIN GSSAPI DIGEST-MD5 CRAM-MD5
250-SIZE 10485760
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-XVERP
250 HELP
MAIL FROM:<vit@remotedomain.ru>
250 2.1.0 Sender ok
RCPT TO:<vit@testdomain.org>
250 2.1.5 Recipient okDATA
354 Go
From: Bill Gates <Bill.Gates@microsoft.com>
To: Petya Ivanov <non-existent@yandex.ru>
Subject: Forged headersmessage text
.
250 2.0.0 got it id=S000000000000006A00
quit
221 2.0.0 Bye
Connection closed by foreign host.Тогда получается что реального отправителя (тот который на конверте) можно найти только в логах (/var/log/mail)?
И всетки если уж письмо попало A@myserver.com то почему на него сработало правило USER_IN_WHITELIST_TO в SpamAssassin? Ведь такой пользователь не прописан в белом списке.
>Тогда получается что реального отправителя (тот который на конверте) можно найти только
>в логах (/var/log/mail)?Совершенно верно, но не только. К примеру, sendmail добавляет аргумент RCPT TO:<> в заголовок конверта (но делать это не обязан, потому некоторые MTA это не делают):
Return-Path: <vit@testdomain.org>
Received: from localhost (localhost [127.0.0.1])
by smtp.testdomain.org (8.14.3/8.14.3) with ESMTP id o1DHeQi4001443
for <vit@testdomain.org>; Sat, 13 Feb 2010 22:40:40 +0500 (YEKT)Видите "for <vit@testdomain.org>"? Это и есть аргумент RCPT TO:<> А реальный отправитель это "Return-Path: <vit@testdomain.org>", т.е. то, что клиент указал в MAIL FROM:<>.
>И всетки если уж письмо попало A@myserver.com то почему на него сработало
>правило USER_IN_WHITELIST_TO в SpamAssassin? Ведь такой пользователь не прописан в белом
>списке.Вот тут точно не могу сказать, с SA не работал, но подозреваю, что B@myserver.com в белом списке, а SA видимо смотрел именно заголовки. Это мое предположение
>Совершенно верно, но не только. К примеру, sendmail добавляет аргумент RCPT TO:<> в заголовок конвертаСпасибо, теперь я разобрался почему письмо попало пользователю A@myserver.com а не B@myserver.com
>Вот тут точно не могу сказать, с SA не работал, но подозреваю,
>что B@myserver.com в белом списке, а SA видимо смотрел именно заголовки.
>Это мое предположениеОсновные моменты Local.cf:
use_razor2 1
use_bayes 1
bayes_auto_learn 0
bayes_path /var/spool/amavis/.spamassassin/bayes
bayes_auto_learn_threshold_nonspam 0
bayes_auto_learn_threshold_spam 20.0
use_pyzor 0
ok_locales all
razor_config /var/spool/amavis/.razor/razor-agent.confwhitelist_to C@myserver.com
whitelist_to D@myserver.com
whitelist_to F@myserver.comscore USER_IN_WHITELIST_TO -100.000
В белом списке нет пользователей "A" и "B"