Добрый день!Есть сервер Sendmail + CyrusIMAP + SpamAssassin. Открытый рэлей отключен, включены DNSBL.
Последнее время на почтовый ящик info@домен.ru приходят письма от info@домен.ru со спамом. В заголовках письма следующее:
Received: from aktobe.railways.kz ([61.47.250.66]) by ns.домен.ru (8.14.3/8.14.3) with SMTP id mBFAlZIH091622 for <info@домен.ru>; Mon, 15 Dec 2008 12:47:37 +0200 (EET) (envelope-from info@домен.ru)Как можно бороться с таким спамом?
Заранее благодарен!
>[оверквотинг удален]
>Есть сервер Sendmail + CyrusIMAP + SpamAssassin. Открытый рэлей отключен, включены DNSBL.
>
>
>Последнее время на почтовый ящик info@домен.ru приходят письма от info@домен.ru со спамом.
>В заголовках письма следующее:
>Received: from aktobe.railways.kz ([61.47.250.66]) by ns.домен.ru (8.14.3/8.14.3) with SMTP id mBFAlZIH091622 for <info@домен.ru>; Mon, 15 Dec 2008 12:47:37 +0200 (EET) (envelope-from info@домен.ru)
>
>Как можно бороться с таким спамом?
>
>Заранее благодарен!SPF поможет. в частости к сендмаилу можно подключить sid-milter (http://sendmail.net/sid-milter/)
И вы собираетесь резать почту по spf fail? Извините, но это бред. SPF, как впрочем и многое в фильтрации - рекомендации, а не руководство к действию. Заблокируете - будете сам себе злобный маньяк.
В пределах маленькой компании с ограниченным набором адресатов такое еще пройдет, но в компаниях покрупнее, где письма поступают со всего мира, вы огребете кучу ложных срабатываний. Единственный верный выход в использовании SPF - начисление спамо-баллов.
>И вы собираетесь резать почту по spf fail? Извините, но это бред.
>SPF, как впрочем и многое в фильтрации - рекомендации, а не
>руководство к действию. Заблокируете - будете сам себе злобный маньяк.
>В пределах маленькой компании с ограниченным набором адресатов такое еще пройдет, но
>в компаниях покрупнее, где письма поступают со всего мира, вы огребете
>кучу ложных срабатываний. Единственный верный выход в использовании SPF - начисление
>спамо-баллов.Каковы Ваши предложения?
1. в каком файле находятся сети, которым разрешено релеить - access или relay-domains
2. вы хотите, чтобы именно на на ящик info не поступала внешняя почта подписанная этим же адресом или хотите решить проблему глобально:
вообще запретить внешнюю почту, подписанную вашим доменом?
>1. в каком файле находятся сети, которым разрешено релеить - access или
>relay-domains
>2. вы хотите, чтобы именно на на ящик info не поступала внешняя
>почта подписанная этим же адресом или хотите решить проблему глобально:
>вообще запретить внешнюю почту, подписанную вашим доменом?Для отправки почты пользователь обязательно авторизируется на сервере.
relay-domains:
домен.ruaccess:
localhost.домен.ru OK
localhost OK
127.0.0.1 OK
домен.ru OK
10.111.0 OKХочется найти глобальное решение, хотя и решение только для одного ящика немение интересно.
С почтового сервера также могут отправлять письма удаленные пользователи (ADSL, GPRS или dial-up)после авторизации на сервере.
>Для отправки почты пользователь обязательно авторизируется на сервере.отлично, у вас задачка упрощается
за основу беру вот это http://www.anrb.ru/linux/sendmail3.html#29LOCAL_CONFIG
LOCAL_RULESETS
SLocal_check_mail
R$* $: < $&{auth_authen} > $| $1
R<$+> $| $+ $@ OK
# частное решение
R<><info@$=w> $#error $: $&f: "554 Forged envelope sender address."
# глобальное решение
R<><$+@$=w> $#error $: $&f: "554 Forged envelope sender address."HFrom: $>CheckFrom
SCheckFrom
R$* $: < $&{auth_authen} > $| $1
R<$+> $| $*<$+@$=w> $@ OK
R<> $| $*<info@$=w> $#error $: $1<info@$2>: "554 Forged sender address in the header From."
R<> $| $*<$+@$=w> $#error $: $1<$2@$3>: "554 Forged sender address in the header From."
Но! Здесь не учтена почта, отправленная прямо с сервера. Она ведь у вас не авторизуется?
>Но! Здесь не учтена почта, отправленная прямо с сервера. Она ведь у
>вас не авторизуется?Непосредственно с сервера без авторизации отправляются только письма администратору, зачастую от сервисов прописанных в кроне.
>>Но! Здесь не учтена почта, отправленная прямо с сервера. Она ведь у
>>вас не авторизуется?
>
>Непосредственно с сервера без авторизации отправляются только письма администратору, зачастую от сервисов
>прописанных в кроне.ну тогда добавьте в оба рулсета (в начало рулсетов)
R$* $: < $&{client_addr} > $| $1
R< 127.0.0.1 > $| $+ $@ OK
LOCAL_CONFIG
LOCAL_RULESETS
SLocal_check_mail
R$* $: < $&{client_addr} > $| $1
R< 127.0.0.1 > $| $+ $@ OK
R$+ $| $+ $: < $&{auth_authen} > $| $2
R<$+> $| $+ $@ OK
# частное решение
R<><info@$=w> $#error $: $&f: "554 Forged envelope sender address."
# глобальное решение
R<><$+@$=w> $#error $: $&f: "554 Forged envelope sender address."HFrom: $>CheckFrom
SCheckFrom
R$* $: < $&{client_addr} > $| $1
R< 127.0.0.1 > $| $+ $@ OK
R$+ $| $+ $: < $&{auth_authen} > $| $2
R<$+> $| $*<$+@$=w> $@ OK
R<> $| $*<info@$=w> $#error $: $1<info@$2>: "554 Forged sender address in the header From."
R<> $| $*<$+@$=w> $#error $: $1<$2@$3>: "554 Forged sender address in the header From."
Я так понимаю строка:
R<> $| $*<$+@$=w> $#error $: $1<$2@$3>: "554 Forged sender address in the header From."
относится к глобальному решению?Добавил в конфиг строки, ждем результатов!
P.S. Если у кого-то та же проблема - не забывайте что правая и левая часть выражений должна быть разделена не пробелами а ТАБУЛЯЦИЕЙ!
Проверено: первый вариант даёт отлуп как системным (по крону) так и клиентским (у которых исследуемый сервер указан как SMTP сервер) письмам. И, действительно, авторизация помогает (что очевидно). Второй вариант, как и указано, помогает пропускать локальные (на сервере) письма.А потом я попытал счастья на другой фре:
echo "From: root@domain.ru
To: root@domain.ru
Content-Type: text/plain; charset='koi8-r'
Subject: test..." | sendmail -t -froot@domain.ru
... и оно мне улыбнулось! Только что-то не радостно...
Ничего не поняла ...
Что не так?
Когда посылаю с винды через OE (SMTP - исследуемый сервер) from:<some>@domain.ru to:<some>@domain.ru без авторизации - не пускает, ругается. Т.е. то, что надо.Я в .mc установил confDONT_PROBE_INTERFACES, для оптимизации $w. Ну и дай думаю попробую с другого сервера (там sendmail фрюшный по-умолчанию) послать не на <some>@domain.ru, а на <some>@host.domain.ru. Ведь теперь в $w такой записи нет, а значит отлуп должен не сработать. Дык он и не сработал. Исследуемый сервер письмо съел и не подавился. Ясненько, думаю, сейчас я этот confDONT_PROBE_INTERFACES и отключу. А сам, тем временем, послал заодно и на <some>@domain.ru - попробовать. Ну и попробовал - сервер и это письмо съел. Вот ведь блин, думаю. На ночные (кроновские) он мне SYSERR показал (я не добавлял проверку на lo0 - сл-но и огрёбся), а тут сам себе преспокойненько спам шлю. Ну и запостил с горя.
Т.к. со времени последнего поста прошло уже много времени и ни у кого проблем не было, значит, думаю, я где-то не туда ткнул...
1. Покажите конфиг без #
2. echo "$=w"|sendmail -bt
3. Для чего вы заключаете почтовый ящик в угловые скобки?
3. привычка: если в угловых, значит курсивом...sendmail.mc
~~~~~~~~~~~
divert(-1)
divert(0)
VERSIONID(`$Id: /etc/mail/sendmail.mc,v 1.1 2009/08/23 00:00:00 YuGo Exp $')
OSTYPE(freebsd6)
DOMAIN(generic)dnl # default FreeBSD configuration
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
FEATURE(blacklist_recipients)
FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')define(`confCW_FILE', `-o /etc/mail/local-host-names')
define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
dnl define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')dnl # my (and stranix) experiments:
dnl define(`confDONT_PROBE_INTERFACES', `True')dnl [False]
define(`confPRIVACY_FLAGS', `goaway,noetrn,noreceipts,nobodyreturn')
FEATURE(`nouucp', `reject')
FEATURE(no_default_msa)
FEATURE(always_add_domain)
dnl define(`EDNSBL_TO', `3')dnl [5]
dnl FEATURE(`enhdnsbl', `bl.spamcop.net', `', `t')define(`confMILTER_MACROS_HELO', confMILTER_MACROS_HELO`, {verify}')
define(`confMILTER_MACROS_CONNECT', confMILTER_MACROS_CONNECT`,
{client_addr}, {client_port}, {client_name}, {client_resolve}')TRUST_AUTH_MECH(`LOGIN PLAIN CRAM-MD5 DIGEST-MD5')
define(`confAUTH_MECHANISMS', `LOGIN PLAIN CRAM-MD5 DIGEST-MD5')
define(`confAUTH_REALM',`domain.ru')dnl [undefined]
define(`confAUTH_OPTIONS', `A')dnl [undefined]
define(`confTO_AUTH', `3m')dnl [10m]define(`confTO_IDENT', `0s')dnl [5s]
define(`confTO_COMMAND', `1m')dnl [1h]
define(`confBAD_RCPT_THROTTLE', `1')dnl [infinite]
define(`confCONNECTION_RATE_THROTTLE', `30')dnl [undefined]DAEMON_OPTIONS(`Family=inet, Port=smtp, Name=MTA')
DAEMON_OPTIONS(`Family=inet, Port=smtps, Name=MTA-SSL, M=s')
define(`confCACERT_PATH', `/etc/mail/cacerts')
define(`confCACERT', `/etc/mail/mycerts/ca.pem')
define(`confCRL', `/etc/mail/mycerts/ca.crl')
define(`confSERVER_CERT', `/etc/mail/mycerts/serv.pem')
define(`confSERVER_KEY', `/etc/mail/private/serv.key')
define(`confCLIENT_CERT', `/etc/mail/mycerts/serv.pem')
define(`confCLIENT_KEY', `/etc/mail/private/serv.key')MAILER(local)
MAILER(smtp)LOCAL_CONFIG
LOCAL_RULESETS
SLocal_check_mail
dnl R$* $: < $&{auth_authen} > $| $1
dnl R<$+> $| $+ $@ OK
dnl R<><$+@$=w> $#error $: $&f: "553 Proper authentication required."
R$* $: < $&{client_addr} > $| $1
R< 127.0.0.1 > $| $+ $@ OK
R$+ $| $+ $: < $&{auth_authen} > $| $2
R<$+> $| $+ $@ OK
R<><$+@$=w> $#error $: $&f: "553 Proper authentication required."HFrom: $>CheckFrom
SCheckFrom
dnl R$* $: < $&{auth_authen} > $| $1
dnl R<$+> $| $*<$+@$=w> $@ OK
dnl R<> $| $*<$+@$=w> $#error $: <$2@$3>: "553 Proper authentication required."
R$* $: < $&{client_addr} > $| $1
R< 127.0.0.1 > $| $+ $@ OK
R$+ $| $+ $: < $&{auth_authen} > $| $2
R<$+> $| $*<$+@$=w> $@ OK
R<> $| $*<$+@$=w> $#error $: <$2@$3>: "553 Proper authentication required."
hosts
~~~~~
127.0.0.1 localhost
192.168.16.1 gw.domain.ru
1.2.3.4 ns.domain.ru
named (view изнутри)
~~~~~~~~~~~~~~~
@ IN NS gw.domain.ru.
@ IN MX 10 gw.domain.ru.
gw IN A 192.168.16.1
named (view снаружи)
~~~~~~~~~~~~~~~
@ IN NS ns.domain.ru.
@ IN MX 10 ns.domain.ru.
ns IN A 1.2.3.4
local-host-names
~~~~~~~~~~~~~~~~
domain.ru
echo "$=w" | sendmail -bt
~~~~~~~~~~~~~~~~~~~~~~~
domain.ru
localhost
[127.0.0.1]
gw.domain.ru
[192.168.16.1]
ns.domain.ru
[ns.domain.ru]
[1.2.3.4]
>SLocal_check_mail
>R$* $: < $&{client_addr} > $| $1
>R< 127.0.0.1 > $| $+ $@ OK
>R$+ $| $+ $: < $&{auth_authen} > $| $2
>R<$+> $| $+ $@ OK1. Пропустили здесь разделитель $|
>R<><$+@$=w> $#error $: $&f: "553 Proper authentication required."R$* $| <$+@$=w> $#error $: $&f: "553 Proper authentication required."
2. Адрес может быть без угловых скобок, поэтому нужно добавить еще строку
R$* $| $+@$=w $#error $: $&f: "553 Proper authentication required."
3. Думаю, можно объединить 2 строки в одну
R$* $| $+@$=w $* $#error $: $&f: "553 Proper authentication required."
Я этот синтаксис пока не знаю. Потому и не разобрался... Copy/paste.Спасибо большое.