Покритикуйте настройку ACL [exim]

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Покритикуйте настройку ACL [exim]

Непрочитанное сообщение CrazyPilot » 2009-08-01 21:38:42

Доброго времени суток, уважаемые!

Покритикуйте, плз, настройку exim. Вроде, после того, как сделал так спаму стало поменьше. Хотя наверно из-за выходных...У меня один мой домен. Это настройка почтовика, который висит на внешке (он релеит на и с внутреннего сервака). Критика и дельные советы приветствуются.

Код: Выделить всё

acl_check_rcpt:

        # Принимать письма, которые пришли не по TCP/IP
        accept hosts = :

        # Разрешим слать все постмастеру
        accept
        condition       = ${if eq{$local_part@$domain}{postmaster@example.ru}{yes}{no}}
        domains         = +local_domains

        deny message    = "Restricted characters in address"
        domains         = +local_domains
        local_parts     = ^[.] : ^.*[@%!/|]

        deny message    = "Restricted characters in address"
        domains         = !+local_domains
        local_parts     = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

        # Deny unless the recipient address can be verified.
        deny
        !verify         = recipient
        !domains        = +local_domains

        # Принимать почту от relay_from_hosts (сюда и лотус входит)
        accept hosts    = +relay_from_hosts
        control         = submission

        # Типа white list
        accept hosts    = +whitelist_hosts

        # Accept from fetchmail
        accept hosts    = 10.10.1.1
        domains         = +local_domains : +relay_to_domains

        # От внутренних хостов почту мы уже приняли. От всех других такую почту дропаем
        drop  message   = "Access denied - $sender_address_domain is my local domain"
        condition       = ${if eq{$sender_address_domain}{example.ru}{yes}{no}}

        # Wrong helo
        drop message    = "Access denied - Invalid HELO name (See RFC2821)"
        hosts           = !127.0.0.1 : !localhost : *
        condition       = ${if or{\
                                        { eq{$sender_helo_name}{} }\
                                        { eq{$sender_helo_name}{$sender_host_address} }\
                                        { eq{$sender_helo_name}{$interface_address} }\
                                        { isip{$sender_helo_name} }\
                                        { eq{$sender_helo_name}{$local_part} }\
                                        { match_domain{$sender_helo_name}{+local_domains} }\
                                }{yes}{no}}

        # Bounce сообщения никогда не посылаются более чем на один адрес
        drop message    = "Legitimate bounces are never sent to more than one recipient."
        senders         = : postmaster@* : mailer-daemon@*
        condition       = ${if >{$recipients_count}{1}{yes}{no}}

        # SPF проверка того, что письмо с домена остылается "правильным" mx
        drop message    = "$sender_host_address is not allowed to send mail from $sender_address_domain"
        hosts           = !127.0.0.1 : !localhost : !10.10.1.1 : *
        spf             = fail

        # Deny unless the sender address can be verified.
        require verify  = sender

        # Начинаем считать задержки
        warn set acl_c2 = 0

        # Check sender domain for blacklisted entry.
        warn dnslists   = dialup.mail-abuse.org : \
                          zen.spamhaus.org : \
                          cbl.abuseat.org : \
                          smtp.dnsbl.sorbs.net : \
                          nomail.rhsbl.sorbs.net : \
                          bl.spamcop.net
        set acl_c2 = 15
        message = "15s wait: listed in black dns list"

 # Check wrong hello for literals only
        warn set acl_c2 = ${eval:$acl_c2+10}
        condition       = ${if match{$sender_helo_name}{\N^\w+$\N}{yes}{no}}
        message = "10s wait: Literal helo"

        # Check for ptr record
        warn set acl_c1 = ${lookup dnsdb{defer_never,ptr=$sender_host_address}{$value}{none}}

        # Если нет ptr записи - добавить 15 секунд на размышление
        warn condition  = ${if eq{$acl_c1}{none}{yes}{no}}
        set acl_c2      = ${eval:$acl_c2+15}
        message         = "15s waiting: No ptr record"

        # Сделаем callout. Попробуем у удаленного сервака пройти проверку отправителем
        warn !verify    = sender/callout=30s,defer_ok,maxwait=20s
        set acl_c2      = ${eval:$acl_c2+15}
        message         = "15s waiting: Callout to server fails"

        warn log_message = "TESTING_DELAY: $acl_c2 seconds from: $sender_address to: $local_part@$domain"
        set acl_c2       = ${time_interval:$acl_c2}

        warn delay      = $acl_c2

        deny message    = "Sorry, no such user. Check recipient mail"
        condition       = ${if and{\
                                        {\
                                         eq{${lookup{$local_part@$domain}dbm{/usr/local/etc/exim/users.dbm}{$value}{deny}}}\
                                                {deny}\
                                        }\
                                        {\
                                              !match_domain{$sender_address_domain}{+local_domains}\
                                        }\
                                  }\
                                  {yes}{no}}

        warn set acl_m0 = $domain
        warn set acl_m3 = $sender_address_domain
        
        accept domains          = +local_domains : +relay_to_domains
        drop message            = "I'm not open relay! bb))"

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: Покритикуйте настройку ACL [exim]

Непрочитанное сообщение Laa » 2009-08-06 14:02:06

У вас давно это правило? Ложных срабатываний не было?

Код: Выделить всё

        deny message    = "Sorry, no such user. Check recipient mail"
        condition       = ${if and{\
                                        {\
                                         eq{${lookup{$local_part@$domain}dbm{/usr/local/etc/exim/users.dbm}{$value}{deny}}}\
                                                {deny}\
                                        }\
                                        {\
                                              !match_domain{$sender_address_domain}{+local_domains}\
                                        }\
                                  }\
                                  {yes}{no}}
Я бы не давал бы задержку за рбл. Вернее бы сделал бы по-другому. Ведь в вашем случае нет разницы в одном рбл отправитель или в двух или во всех. Думаю над этим можно поработать и за большее кол-во рбл давать большую задержку. Ну или за присутствие во всех рбл -- вообще давать дени... ну то подумайте как вы решите.

Еще не нужно забывать, что ваши же отправители могут взять ноут, поехать куда-то и там понадобиться им отправить письмо одному из ваших получателей. Скорее всего вы им дадите drop. Или надо аутентифицировать отправителей и разрешать, если аутентифицированы... ну тут думать надо...

Проверку отправителя думаю можно по таймаутам и увеличить, возможно на той стороне тоже вам надают задержек по каким-то причинам. :(

Ну и не забывайте про NULL SENDER, от которого удаленные хосты могут делать sender-verify на вашу исходящую почту. Вы им можете дать deny/drop/delay... ну и ваше же исходящее письмо из-за вас ине будет принято ТАМ. Так что проверки для null sender лучше перенести в predata. IMHO.
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Покритикуйте настройку ACL [exim]

Непрочитанное сообщение CrazyPilot » 2009-08-06 14:41:22

Спасибо за ответ.

Я сейчас от этой схемы вообще ушел. Так как народ стал активно жаловацца на спам. (У меня раньше по rbl стояли дропы тупо, ща вот вернулся обратно к такой же схеме). Не знаю, с задержками как-то не вышло. Пролезает очень много спамеров через любые задержки. Подумываю поднять грейлистинг для тех, кто нарушает helo, в rbl и так далее.

Насчет правила не понял - какие могут быть ложные срабатывания?
Laa писал(а):Я бы не давал бы задержку за рбл. Вернее бы сделал бы по-другому. Ведь в вашем случае нет разницы в одном рбл отправитель или в двух или во всех. Думаю над этим можно поработать и за большее кол-во рбл давать большую задержку. Ну или за присутствие во всех рбл -- вообще давать дени... ну то подумайте как вы решите.
Разумная идея, спасибо, переделаю. Не нравится мне дропать всех, кто перечислен хотя бы в одном rbl. Не доверяю я этим спискам.
Laa писал(а):Еще не нужно забывать, что ваши же отправители могут взять ноут, поехать куда-то и там понадобиться им отправить письмо одному из ваших получателей. Скорее всего вы им дадите drop. Или надо аутентифицировать отправителей и разрешать, если аутентифицированы... ну тут думать надо...
У нас в данном случае юзается vpn. Дальше уже почтовый клиент цепляется на внутренний почтовик или используется web-клиент (опять же внутренний)
Laa писал(а):Ну и не забывайте про NULL SENDER, от которого удаленные хосты могут делать sender-verify на вашу исходящую почту. Вы им можете дать deny/drop/delay... ну и ваше же исходящее письмо из-за вас ине будет принято ТАМ. Так что проверки для null sender лучше перенести в predata. IMHO.
А можно поподробнее. Я вот так и не понял. Ну разрешу я null sender - тогда спамеры начнут радостно слать мне письма от него. Зарублю его в predata - как мне будут приходить bounce? Или они всегда от mailer-daemon?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35352
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Покритикуйте настройку ACL [exim]

Непрочитанное сообщение Alex Keda » 2009-08-06 23:55:35

CrazyPilot писал(а):А можно поподробнее. Я вот так и не понял. Ну разрешу я null sender - тогда спамеры начнут радостно слать мне письма от него. Зарублю его в predata - как мне будут приходить bounce? Или они всегда от mailer-daemon?
а я их все принимаю и в /dev/null сливаю отдельным роутером =)))
Убей их всех! Бог потом рассортирует...

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Покритикуйте настройку ACL [exim]

Непрочитанное сообщение CrazyPilot » 2009-08-07 7:58:50

lissyara писал(а):
CrazyPilot писал(а):А можно поподробнее. Я вот так и не понял. Ну разрешу я null sender - тогда спамеры начнут радостно слать мне письма от него. Зарублю его в predata - как мне будут приходить bounce? Или они всегда от mailer-daemon?
а я их все принимаю и в /dev/null сливаю отдельным роутером =)))
И баунсы тоже? Хотя, в принципе нафиг они не нужны, большинство моих пользаков баунсов пугаются и не понимают что это такое...
Но вот не нравится мне это как-то...

tux2002
проходил мимо

Re: Покритикуйте настройку ACL [exim]

Непрочитанное сообщение tux2002 » 2009-08-07 10:51:46

Я у себя всё таки свалку acl разбил по логике:
проверка helo - smtp_check_helo
проверка отправителя - smtp_check_mail
проверка получателей - smtp_check_rcpt
вирусы и остатки спама - smtp_check_data
Причём по моему опыту мы получали на abuse и postmaster по 300 и больше спама в день - 80% процентов режется тупым включением require verify = helo, остальные процентов 15 - парой acl в проверке получателя до SpamAssassin, но т.к. они противоречат rfc я их не оглашаю.

tux2002
проходил мимо

Re: Покритикуйте настройку ACL [exim]

Непрочитанное сообщение tux2002 » 2009-08-07 10:58:03

По rfc пустого отправителя я не запрещал, мне так не спамят.