The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как заставить sendmail релеить не на весь домен"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Открытые системы на сервере (Почта / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Как заставить sendmail релеить не на весь домен"  +/
Сообщение от serphio (ok) on 26-Мрт-10, 10:54 
Здравствуйте форумчане!

У меня имеется проблемма:
Есть шлюзовой сервер на 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 сендмейл не принимает соединения.

Помогайте люди добрые, спам достал уже )))))

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как заставить sendmail релеить не на весь домен"  +/
Сообщение от Rontex email(??) on 26-Мрт-10, 17:54 
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 unknown

2. Как уменьшить спам
http://dz.dn.ua/spam/antispam.html

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Как заставить sendmail релеить не на весь домен"  +/
Сообщение от serphio (ok) on 29-Мрт-10, 13:19 
>[оверквотинг удален]
>
>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

Спасибо за совет, сегодня буду дописывать.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Как заставить sendmail релеить не на весь домен"  +/
Сообщение от Medlar email(??) on 26-Мрт-10, 19:02 
>Есть шлюзовой сервер на 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 сендмейл не принимает соединения.

Этого  быть не может. После внесенных изменений конфиг пересобрали?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Как заставить sendmail релеить не на весь домен"  +/
Сообщение от serphio (ok) on 29-Мрт-10, 13:10 
Спасибо уважаемые за ответы!

В первую очередь по поводу спама. Действительно его стало доходить до 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.1

sendmail.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')dnl

define(`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')dnl

define(`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')dnl

define(`confQueueLA',`70')dnl
define(`confRefuseLA',`80')dnl
dnl define(`confMaxDaemonChildren',`32')dnl

TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confAUTH_MECHANISMS',`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl

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

но по идее в конфиге я пишу, что 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 Free

  PID 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. Снизить общую загруженность системы, если таковая присутствует(хотя может банально железа нехватает?)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Как заставить sendmail релеить не на весь домен"  +/
Сообщение от rontex email(ok) on 29-Мрт-10, 15:51 
>Спасибо уважаемые за ответы!
>
>В первую очередь по поводу спама. Действительно его стало доходить до 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_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}

R$*            $: $(nondsl1 $&{client_name} $)
R@MATCH            $@ OK
R$*            $: $(nondsl2 $&{client_name} $)
R@MATCH            $@ OK

R$*            $: $(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 подключений одновременно не бывает!

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Как заставить sendmail релеить не на весь домен"  +/
Сообщение от serphio (ok) on 29-Мрт-10, 13:17 
>>Также периодически sendmail перестает отвечать на соединение:
>>sendmail: rejecting connections on daemon MSA: load average: 16 (sendmail)
>>прописал в sendmail.mc:
>>define(`confQueueLA',`70')dnl
>>define(`confRefuseLA',`80')dnl
>>не помогает, при загрузке больше 12 сендмейл не принимает соединения.
>
>Этого  быть не может. После внесенных изменений конфиг пересобрали?

Вот тоже никак не могу понять, но мои изменения в конфиге никаких результатов не принесли... может с синтаксисом не то что-то...
конфиг пересобирал кучу раз, все успешно, на синтаксис сендмейл не ругается в логи при старте...

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Как заставить sendmail релеить не на весь домен"  +/
Сообщение от serphio (ok) on 13-Апр-10, 11:03 
Спасибо друзья за помощь.

Я разобрался с сервером.
Проблема заключалась в следующем. Сервер является транзитным для одного домена. Вся почта для этого домена обрабатывается спамассассином. Очень много писем шло на несуществующие адреса.
Я задействовал фичу 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

и все заработало.

Спасибо!!!! без Вашей помощи я бы не разобрался...

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру