Здравствуйте форумчане!У меня имеется проблемма:
Есть шлюзовой сервер на FreeBSD + sendmail + spamassassin
он содержить ящики для нескольких локальных доменов, а также релеит всю почту на один домен, почтовый сервер которого (Exchange) находится "за ним", в локальной сети.Что хотелось: есть ли возможность релеить почту не на весь домен, а только реальным адресатам (по списку)? А письма на несуществующие ящики осеивать на шлюзовом сервере.
И в дополнение еще одна проблема (насколько я разобрался):
Надо как-то ускорить спам-фильтр.
писем в секунду приходит 1-3, а spamassassin обрабатывает одно письмо за 4.5-5 сек. (по логам усредненно)
Соответственно письма начинаются валиться в очередь, которая растет как снежный ком.
Также периодически sendmail перестает отвечать на соединение:
sendmail: rejecting connections on daemon MSA: load average: 16 (sendmail)прописал в sendmail.mc:
define(`confQueueLA',`70')dnl
define(`confRefuseLA',`80')dnl
не помогает, при загрузке больше 12 сендмейл не принимает соединения.Помогайте люди добрые, спам достал уже )))))
1. Как не релееить весь домен
в конфиге sendmail добавитьdefine(`_RELAY_FULL_ADDR_',`1')dnl
Затем прописать в access по типу:
TO:vasya@mydomen.com[TAB]RELAY
TO:petya@mydomen.com[TAB]RELAY
TO:mydomen.com[TAB]550 User unknown2. Как уменьшить спам
http://dz.dn.ua/spam/antispam.html
>[оверквотинг удален]
>
>define(`_RELAY_FULL_ADDR_',`1')dnl
>
>Затем прописать в access по типу:
>TO:vasya@mydomen.com[TAB]RELAY
>TO:petya@mydomen.com[TAB]RELAY
>TO:mydomen.com[TAB]550 User unknown
>
>2. Как уменьшить спам
>http://dz.dn.ua/spam/antispam.htmlСпасибо за совет, сегодня буду дописывать.
>Есть шлюзовой сервер на FreeBSD + sendmail + spamassassin
>Что хотелось: есть ли возможность релеить почту не на весь домен, а
>только реальным адресатам (по списку)? А письма на несуществующие ящики осеивать
>на шлюзовом сервере.Какая версия sendmail?
>Надо как-то ускорить спам-фильтр.
>писем в секунду приходит 1-3, а spamassassin обрабатывает одно письмо за 4.5-5
>сек. (по логам усредненно)
>Соответственно письма начинаются валиться в очередь, которая растет как снежный ком.Надо бы сначала использовать по максимуму antidos-средства самой системы и antispam средства sendmail'a, тогда значительная часть спама до SA просто не дойдет.
Из того, что сразу пришло в голову
- настроить connlimit & ratelimit в iptables
В sendmail:
- Использовать аналогичные средства connlimit & ratelimit
- Подключить требование greet_pause
- впрочем вот здесь кое-что перечислено -
http://linux.ufaras.ru/compar.html
http://linux.ufaras.ru/sendmail.html#0.1.Тогда значительная часть спама до SA просто не дойдет.
>Также периодически sendmail перестает отвечать на соединение:
>sendmail: rejecting connections on daemon MSA: load average: 16 (sendmail)
>прописал в sendmail.mc:
>define(`confQueueLA',`70')dnl
>define(`confRefuseLA',`80')dnl
>не помогает, при загрузке больше 12 сендмейл не принимает соединения.Этого быть не может. После внесенных изменений конфиг пересобрали?
Спасибо уважаемые за ответы!В первую очередь по поводу спама. Действительно его стало доходить до spamd меньше, при использовании block_bad_helo, delay_checks, greet_pause.
Моя система (свеже установленная и свеженастроенная)
FreeBSD 8 - release
Sendmail 8.14.3 + imapuw + sasl2 (saslauthd) + openSSL
Spamassassin 3.2.5 + spamass-milter + MySQL 5.1sendmail.mc:
divert(0)
VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.28 2003/04/18 01:25:41 gshapiro Exp $')
OSTYPE(freebsd6)
DOMAIN(generic)FEATURE(access_db,`hash -o -T<TMPF> /etc/mail/access.db')
FEATURE(mailertable,`hash -o /etc/mail/mailertable.db')
FEATURE(virtusertable,`hash -o /etc/mail/virtusertable.db')
FEATURE(`block_bad_helo')dnl
FEATURE(`delay_checks')dnl
FEATURE(`greet_pause')dnl
dnl FEATURE(`dnsbl',`bl.spamcop.net',`Mail rejected, see spamcop.net')dnl
dnl FEATURE(`dnsbl',`dul.ru',`Use mail relays of your ISP')dnl
dnl FEATURE(`dnsbl',`zen.spamhaus.org',`Mail rejected, see spamhaus.org')dnldefine(`confCACERT_PATH',`/etc/mail/certs')dnl
define(`confCACERT',`/etc/mail/certs/CAcert.pem')dnl
define(`confSERVER_CERT',`/etc/mail/certs/MYcert.pem')dnl
define(`confSERVER_KEY',`/etc/mail/certs/MYkey.pem')dnl
define(`confCLIENT_CERT',`/etc/mail/certs/MYcert.pem')dnl
define(`confCLIENT_KEY',`/etc/mail/certs/MYkey.pem')dnl
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
DAEMON_OPTIONS(`Port=smtps, Name=MSA-SSL, M=E')dnldefine(`confSMTP_LOGIN_MSG',`Server ready')
define(`confMAX_MESSAGE_SIZE',`20480000')
define(`confCW_FILE', `-o /etc/mail/local-host-names')
dnl define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')define(`confMILTER_MACROS_CONNECT',`t, b, j, _, {daemon_name}, {if_name}, {if_addr}')dnl
define(`confMILTER_MACROS_HELO',`s, {tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}')dnl
define(`confMILTER_MACROS_ENVRCPT',`r, v, Z, b')dnldefine(`confQueueLA',`70')dnl
define(`confRefuseLA',`80')dnl
dnl define(`confMaxDaemonChildren',`32')dnlTRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confAUTH_MECHANISMS',`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnlINPUT_MAIL_FILTER(`spamassassin',`S=local:/var/run/spamass-milter.sock,F=,T=C:15m;S:4m;R:4m;E:10m')
define(`confINPUT_MAIL_FILTERS',`spamassassin')MAILER(local)
MAILER(smtp)
На данный момент самая актуальная проблема - сендмейл в лог пишет:
rejecting connections on daemon MTA: load average: 13но по идее в конфиге я пишу, что LA должен быть не менее 80 ???? компилировал конфиг уже несколько раз, внося другие изменения.
Да и железо более-менее нормальное: P4 3.0GHz, i865, памяти 2GB.
Вот еще примерно такая ситуация с процессами sendmail у меня:
mx1# ps -ax |grep sendmail | wc -l
104В spamassassin все включено по умолчанию, кроме Pyzor и Razor 2 (выключил в надежде на ускорение обработки письма).
В общем даже не знаю что делать-то. Одна надежда на советы профессионалов.
Спасибо.зы. ну и еще top выклдываю может че-нибудь поможет, хотя видно, что проц грузится перловыми скриптами спамассассина.
mx1# top
last pid: 20447; load averages: 2.14, 5.13, 5.75 up 1+10:42:04 12:08:45
329 processes: 6 running, 323 sleeping
CPU: 46.6% user, 0.0% nice, 15.7% system, 1.1% interrupt, 36.6% idle
Mem: 259M Active, 1786M Inact, 203M Wired, 112M Buf, 755M Free
Swap: 4096M Total, 4096M FreePID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND
19313 nobody 1 46 0 32008K 29516K select 0:06 4.05% perl5.8.9
20155 nobody 1 48 0 31236K 28784K select 0:01 4.05% perl5.8.9
20302 nobody 1 48 0 31632K 29160K select 0:01 3.27% perl5.8.9
19048 nobody 1 46 0 31784K 29224K select 0:06 3.17% perl5.8.9
20215 nobody 1 45 0 31236K 28780K select 0:01 2.39% perl5.8.9
20042 nobody 1 46 0 31704K 29224K select 0:02 2.20% perl5.8.9
20343 nobody 1 47 0 30936K 28508K select 0:00 1.95% perl5.8.9
20282 nobody 1 45 0 30708K 28296K select 0:01 1.56% perl5.8.9
789 root 1 52 0 28912K 26400K RUN 3:22 0.00% perl5.8.9
557 root 1 44 0 3344K 1328K select 1:15 0.00% syslogd
849 mysql 9 44 0 89216K 53424K sigwai 1:07 0.00% mysqld
905 root 1 48 0 7872K 5168K select 1:07 0.00% sendmail
763 root 127 44 0 102M 66516K RUN 0:09 0.00% spamass-milter
81650 root 1 44 0 9584K 5688K select 0:04 0.00% mcОчень жду Ваших советов по тому, как бы сделать так, чтобы
1. Сендмейл не затыкался из-за "высокой нагрузки"
2. Снизить общую загруженность системы, если таковая присутствует(хотя может банально железа нехватает?)
>Спасибо уважаемые за ответы!
>
>В первую очередь по поводу спама. Действительно его стало доходить до spamd
>меньше, при использовании block_bad_helo, delay_checks, greet_pause.Уберите block_bad_helo - ЭТО ПЛОХО!!!
>[оверквотинг удален]
>INPUT_MAIL_FILTER(`spamassassin',`S=local:/var/run/spamass-milter.sock,F=,T=C:15m;S:4m;R:4m;E:10m')
>define(`confINPUT_MAIL_FILTERS',`spamassassin')
>
>MAILER(local)
>MAILER(smtp)
>
>
>На данный момент самая актуальная проблема - сендмейл в лог пишет:
>rejecting connections on daemon MTA: load average: 13
>Сделайте то что я вам написал!!!! Добавте
define(`_RELAY_FULL_ADDR_',`1')dnl
Пропишите все ваши адреса, которые релеется на Exchenge в accsess!!!Добавте в конец следующие:
LOCAL_RULESETS
SLocal_check_relay
R$* $: < $&{client_resolve} >
R<TEMP> $#error $@ 4.7.1 $: "450 Relaying temporarily denied. IP name lookup failed for " $&{client_addr}
R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed for " $&{client_addr}
R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name forged (PTR and A records mismatch) for " $&{client_addr}LOCAL_CONFIG
Knondsl1 regex -a@MATCH (^|[0-9.-])(mail|mailrelay|mta|mx|relay|smtp)[0-9.-]
Knondsl2 regex -a@MATCH \.(hotmail\.com|rax\.ru|ip\.net\.ua)$Kdsl1 regex -a@MATCH ([0-9].*){5,}
Kdsl2 regex -a@MATCH (^|[0-9.-])([axv]dsl|as|bgp|broadband|cable|[ck]lient|dhcp|dial|dialin|dialup|dialer|dip|dsl|dslam|dup|dyn|dynamic|host|ip|isdn|modem|nas|node|pool|ppp|pppo[ae]|sirius.*ukrtel.*|user|users|vpn)[0-9.-]
Kdsl3 regex -a@MATCH [0-9a-f]{8,}
Kdsl4 regex -a@MATCH (^|\.)[0-9]*[.-]
Kdsl5 regex -a@MATCH (-.*){3,}
Kdsl6 regex -a@MATCH \.(ipt\.aol\.com|internetdsl\.tpnet\.pl|rr\.com|pppool\.de|adelphia\.net|osnanet\.de|dedicado\.com\.uy)$
LOCAL_RULESETSSLocal_check_relay
R$* $: < $&{client_resolve} >
R<TEMP> $#error $@ 4.7.1 $: "450 Relaying temporarily denied. IP name lookup failed for " $&{client_addr}
R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed for " $&{client_addr}
R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name forged (PTR and A records mismatch) for " $&{client_addr}R$* $: $(nondsl1 $&{client_name} $)
R@MATCH $@ OK
R$* $: $(nondsl2 $&{client_name} $)
R@MATCH $@ OKR$* $: $(dsl1 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (1), please use Provider SMTP"
R$* $: $(dsl2 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (2), please use Provider SMTP"
R$* $: $(dsl3 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (3), please use Provider SMTP"
R$* $: $(dsl4 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (4), please use Provider SMTP"
R$* $: $(dsl5 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (5), please use Provider SMTP"
R$* $: $(dsl6 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (6), please use Provider SMTP"
Не забывайте делать
cd /etc/mail
make
make install
killall -HUP sendmailУ меня 6 доменов релеется и больше 4-5 подключений одновременно не бывает!
>>Также периодически sendmail перестает отвечать на соединение:
>>sendmail: rejecting connections on daemon MSA: load average: 16 (sendmail)
>>прописал в sendmail.mc:
>>define(`confQueueLA',`70')dnl
>>define(`confRefuseLA',`80')dnl
>>не помогает, при загрузке больше 12 сендмейл не принимает соединения.
>
>Этого быть не может. После внесенных изменений конфиг пересобрали?Вот тоже никак не могу понять, но мои изменения в конфиге никаких результатов не принесли... может с синтаксисом не то что-то...
конфиг пересобирал кучу раз, все успешно, на синтаксис сендмейл не ругается в логи при старте...
Спасибо друзья за помощь.Я разобрался с сервером.
Проблема заключалась в следующем. Сервер является транзитным для одного домена. Вся почта для этого домена обрабатывается спамассассином. Очень много писем шло на несуществующие адреса.
Я задействовал фичу relaytofulladdress в sendmail 8.14 и выше, благо количество ящиков не велико да и контролируется мной же.
в access.conf прописал
To: в общем, все что нужно ))
Долго правда не мог понять почему фича не работала, оказалось нужно было поправить mailertable.В результате кол-во проходящих писем снизилось на порядок.
LA упал с 30-35 до 0.3. Утилизация процессора со 100% до 8-9%. ну и все остальные параметры упали примерно на порядок.В общем сейчас все работает как надо.
По поводу
define(`confQueueLA',`70')dnl
define(`confRefuseLA',`80')dnlя поправил на
define(`confQUEUE_LA',`30')dnl
define(`confREFUSE_LA',`40')dnlи все заработало.
Спасибо!!!! без Вашей помощи я бы не разобрался...