Exim - not free relay!

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Liv
рядовой
Сообщения: 39
Зарегистрирован: 2008-09-12 0:25:42

Exim - not free relay!

Непрочитанное сообщение Liv » 2008-09-13 16:24:56

Доброго времени суток всем! :smile:
Я только недавно начал изучать Exim и уже проникся огромным уважением :good: к нему (особенно после qmail :st: )! Но он оказался настолько :-o обширным, что его не освоишь за пару дней!... А время не терпит!.. В настоящее время мой сервер является открытым релеем и от этого надо избавиться весьма срочно!
Поэтому у меня есть несколько вопросов к уважаемым гуру:
  1. Есть ли вероятность того, что открытый релей был заложен при компилляции? Если да, то какую опцию нужно обязательно указать при перекомпилляции Exim'а чтобы запретить релей по-умолчанию?
    В qmail это делалось с помощью перекомпилляции с использованием специальных патчей! Там всё делается с помощью этих патчей и если кумыл скомпиллирован для специального использования в составе с панелью управления хостингом, то с ним почти ничего нельзя сделать!! :st: :st:
  2. Есть ли какая-то команда/опция/директива для запрета релеинга? Если есть, то какая и где её прописать (в каком месте конфига)? Если этого нет, то расскажите как это указать в ACL?
  3. Как можно найти (проконтролировать) релей, т.е. обнаружить пользователей, пересылающих спам?
Простите, если мои вопросы кажутся вам ламерскими и не отправляйте, пожалуйста, читать доки и хелпы - я уже указал, что нужно срочно закрыть открытый релей! Заранее благодарю всех ответивших! :drinks: :drinks:

Хостинговая компания 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/

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim - not free relay!

Непрочитанное сообщение dikens3 » 2008-09-13 16:39:29

acl_smtp_rcpt показывай.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

lerryc
сержант
Сообщения: 191
Зарегистрирован: 2008-07-10 7:28:37
Откуда: Vladivostok

Re: Exim - not free relay!

Непрочитанное сообщение lerryc » 2008-09-13 16:41:49

если настраивал по кофигам с этого сайта - проверь что последняя команда после всех провек - deny а не acept
проверить можно по логам - от кого пришло и кому ушло
заметишь что "не наш" пересылает наружу - проверяй условия акцептов
машина думать не может, машина должна ехать

Liv
рядовой
Сообщения: 39
Зарегистрирован: 2008-09-12 0:25:42

Re: Exim - not free relay!

Непрочитанное сообщение Liv » 2008-09-13 17:04:26

dikens3 писал(а): acl_smtp_rcpt показывай
вот:

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

#!!# ACL that is used after the RCPT command
check_recipient:
  # Exim 3 had no checking on -bs messages, so for compatibility
  # we accept if the source is local SMTP (i.e. not over TCP/IP).
  # We do this by testing for an empty sending host field.
# Log all senders' rates
    warn ratelimit = 0 / 1h / strict
    log_message = Sender rate $sender_rate / $sender_rate_period

  accept  hosts = :

  accept hosts = +skipsmtpcheck_hosts


  # Accept bounces to lists even if callbacks or other checks would fail
  warn     message      = X-WhitelistedRCPT-nohdrfromcallback: Yes
           condition    = \
           ${if and {{match{$local_part}{(.*)-bounces\+.*}} \
                     {exists {/usr/local/cpanel/3rdparty/mailman/lists/${lc:$1}/config.pck}}} \
                {yes}{no}}

  accept   condition    = \
           ${if and {{match{$local_part}{(.*)-bounces\+.*}} \
                     {exists {/usr/local/cpanel/3rdparty/mailman/lists/${lc:$1}/config.pck}}} \
                {yes}{no}}


  # Accept bounces to lists even if callbacks or other checks would fail
  warn     message      = X-WhitelistedRCPT-nohdrfromcallback: Yes
           condition    = \
           ${if and {{match{$local_part}{(.*)-bounces\+.*}} \
                     {exists {/usr/local/cpanel/3rdparty/mailman/lists/${lc:$1}_${lc:$domain}/config.pck}}} \
                {yes}{no}}

  accept   condition    = \
           ${if and {{match{$local_part}{(.*)-bounces\+.*}} \
                     {exists {/usr/local/cpanel/3rdparty/mailman/lists/${lc:$1}_${lc:$domain}/config.pck}}} \
                {yes}{no}}

  #if it gets here it isn't mailman
# deny must be on the same line as hosts so it will get removed by buildeximconf if turned off
   deny  hosts = ! +senderverifybypass_hosts
        ! verify = sender/callout=60s

  accept  hosts = *
          authenticated = *


  #if they poped before smtp we just accept
  accept  condition = ${if match_ip{$sender_host_address}{iplsearch;/etc/relayhosts}{1}{${if eq{$sender_host_address}{127.0.0.1}{1}{0}}}}
          add_header = ${if exists{/etc/eximpopbeforesmtpwarning}{${perl{popbeforesmtpwarn}{$sender_host_address}}{}}
  
  accept  hosts = +relay_hosts
          add_header = ${if exists{/etc/eximpopbeforesmtpwarning}{${perl{popbeforesmtpwarn}{$sender_host_address}}{}}

   #recipient verifications are now done after smtp auth and pop before smtp so the users get back bounces instead of 
   # a clogged outbox in outlook

 deny message = JunkMail rejected - $sender_fullhost is in an RBL, see $dnslist_text
     dnslists = zen.spamhaus.org : bl.spamcop.net
     hosts = +backupmx_hosts  

 warn 
     dnslists = zen.spamhaus.org : bl.spamcop.net
     set acl_m8 = 1
     set acl_m9 = "JunkMail rejected - $sender_fullhost is in an RBL, see $dnslist_text"
     

 warn
    condition = ${if eq {${acl_m8}}{1}{1}{0}}
    ratelimit = 0 / 1h / strict / per_conn
    log_message = "Increment Connection Ratelimit - $sender_fullhost because of RBL match"

 drop
    condition = ${if eq {${acl_m8}}{1}{1}{0}}
    message = ${acl_m9}



  warn
    log_message = "Detected Dictionary Attack (Let $rcpt_fail_count bad recipients though before engaging)"
    condition = ${if > {${eval:$rcpt_fail_count}}{4}{yes}{no}}
    set acl_m7 = 1

  warn
    condition = ${if eq {${acl_m7}}{1}{1}{0}}
    ratelimit = 0 / 1h / strict / per_conn
    log_message = "Increment Connection Ratelimit - $sender_fullhost because of Dictionary Attack"

  drop 
    condition = ${if eq {${acl_m7}}{1}{1}{0}}
    message = "Number of failed recipients exceeded.  Come back in a few hours."



#recipient verifications are required for all messages that are not sent to the local machine
  #this was done at multiple users requests
  require verify = recipient
    message = "The recipient cannot be verified.  Please check all recipients of this message to verify they are valid.  Details: $acl_verify_message"



# The only problem with this setup is that if the message is for multiple users on the same server
# and they are on different unix accounts, the settings for the first recipient which has spamassassin enabled will be used.
# This shouldn't be a problem 99.9% of the time, however its a very small price to pay for a massive speed increase.
  warn  domains = ! ${primary_hostname} : +local_domains
         condition = ${if <= {$message_size}{200K}{${if eq {${acl_m0}}{1}{0}{${if exists{/etc/global_spamassassin_enable}{1}{${if exists{${extract{5}{:}{${lookup{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}lsearch{/etc/passwd}{$value}}}}/.spamassassinenable}{1}{0}}}}}}}{0}}
         set acl_m0    = 1
         set acl_m1    = ${lookup{$domain}lsearch*{/etc/userdomains}{$value}}

  warn  domains = ${primary_hostname}
          condition = ${if <= {$message_size}{200K}{${if eq {${acl_m0}}{1}{0}{${if exists{/etc/global_spamassassin_enable}{1}{${if exists{${extract{5}{:}{${lookup{$local_part}lsearch{/etc/passwd}{$value}}}}/.spamassassinenable}{1}{0}}}}}}}{0}}
          set acl_m0    = 1
          set acl_m1    = $local_part


  accept  domains = +relay_domains

  deny    message = $sender_fullhost is currently not permitted to \
                        relay through this server. Perhaps you \
                        have not logged into the pop/imap server in the \
                        last 30 minutes or do not have SMTP Authentication turned on in your email client.
Честно говоря, я ещё не вполне въезжаю во всё это! Но последняя команда и есть дени!...

Liv
рядовой
Сообщения: 39
Зарегистрирован: 2008-09-12 0:25:42

Re: Exim - not free relay!

Непрочитанное сообщение Liv » 2008-09-13 17:19:58

да, наверно надо пояснения...

skipsmtpcheck_hosts:
hostlist skipsmtpcheck_hosts = net-iplsearch;/etc/skipsmtpcheckhosts
На сервере - пустой файл

backupmx_hosts:
hostlist backupmx_hosts = lsearch;/etc/backupmxhosts
На сервере - пустой файл

relay_domains:
domainlist relay_domains = lsearch;/etc/localdomains : lsearch;/etc/secondarymx
Первый - это список доменов на сервере, второй пустой (вторичных mx нет)

senderverifybypass_hosts:
hostlist senderverifybypass_hosts = net-iplsearch;/etc/senderverifybypasshosts
На сервере этот файл содержит только 1 строку:
127.0.0.1

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim - not free relay!

Непрочитанное сообщение dikens3 » 2008-09-13 17:36:35

Я так и не понял где у тебя почта принимается из внешнего мира, а вообще открытого релея вроде нет.

Почему у тебя есть такое предположение?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Liv
рядовой
Сообщения: 39
Зарегистрирован: 2008-09-12 0:25:42

Re: Exim - not free relay!

Непрочитанное сообщение Liv » 2008-09-13 17:48:31

Потому, что я попробовал отправлять письма без какой-либо авторизации, без логина и пароля... просто указав майл сервер!
Получение не возможно, но отправка - без проблем!

А нужно сделать обязательную авторизацию!

Liv
рядовой
Сообщения: 39
Зарегистрирован: 2008-09-12 0:25:42

Re: Exim - not free relay!

Непрочитанное сообщение Liv » 2008-09-13 18:19:43

Вот, для примера соединение telnet из дома

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

220-server2.*****.ru ESMTP Exim 4.69 #0 Sat, 13 Sep 2008 19:12:22 +0400
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.
helo mail.system-admin.ru
250 server2.******.ru Hello mail.system-admin.ru [193.19.134.96]
mail from:<>
250 OK
rcpt to:<******@rambler.ru>
250 Accepted
quit
221 server2.*****.ru closing connection
Звёздочки я нарисовал - не хочу увеличения спамеров!
Как видите: зашёл и отправил (бы) без проблем!....

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim - not free relay!

Непрочитанное сообщение dikens3 » 2008-09-13 18:37:30

Ну так попробовал бы отправить с пустым отправителем.

В полезных скриптах есть пример для отладки, используй его и посмотри в каком условии происходит приём (accept) твоего письма. (В данном случае с пустым отправителем)

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

  accept  hosts = *
          authenticated = *
Вот это неадекватный случай и возможно в нём кроется проблема.
Сделай просто:

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

  accept  authenticated = *
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Liv
рядовой
Сообщения: 39
Зарегистрирован: 2008-09-12 0:25:42

Re: Exim - not free relay!

Непрочитанное сообщение Liv » 2008-09-13 23:36:34

dikens3 писал(а): Ну так попробовал бы отправить с пустым отправителем.
Попробовал - отправляет!!!
dikens3 писал(а): В полезных скриптах есть пример для отладки, используй его и посмотри в каком условии происходит приём (accept) твоего письма. (В данном случае с пустым отправителем)
Сделал 3 теста (смотрите логи в архиве )
testlog.zip
Логи тестовых отправлений
(15.37 КБ) 21 скачивание
  1. testlog_empty - отправление от <> на локальный адрес - похоже ушло...
  2. testlog_local - отправление user@mail.ru на локальный адрес - ушло...
  3. testlog_remote - отправление user@mail.ru на удалённый адрес (мой ящик на рамблере) - имитация релея (?) - вроде как не ушло....
dikens3 писал(а): Сделай просто:

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

  accept  authenticated = *
Это не помогает!

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim - not free relay!

Непрочитанное сообщение dikens3 » 2008-09-14 17:08:38

http://test.nettools.ru/

Этим тестируй свой релей.

Одна сессия, один лог. Нафига всё свалил в одну кучу?
По логам всё нормально вроде.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Liv
рядовой
Сообщения: 39
Зарегистрирован: 2008-09-12 0:25:42

Re: Exim - not free relay!

Непрочитанное сообщение Liv » 2008-09-14 18:30:33

dikens3 писал(а):http://test.nettools.ru/

Этим тестируй свой релей.

Одна сессия, один лог. Нафига всё свалил в одну кучу?
По логам всё нормально вроде.
Я уже говорил в соседней ветке о достоинстве этого сервиса!...

А в том архиве как раз три лога на три сессии!...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim - not free relay!

Непрочитанное сообщение dikens3 » 2008-09-14 19:43:02

Вероятно ты ещё не совсем понимаешь работу SMTP(ESMTP) протокола.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Liv
рядовой
Сообщения: 39
Зарегистрирован: 2008-09-12 0:25:42

Re: Exim - not free relay!

Непрочитанное сообщение Liv » 2008-09-15 12:53:05

Ну,... я и не говорил, что я асс в этом деле... :)
Потому сразу к спецам и обратился! Хотя уже начал кое-что понимать в экзиме и, думаю, скоро уже и сам решу все вопросы настройки...