запретить отправку с локального домена во внешку

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение Laa » 2009-05-20 10:45:37

А если не секрет, то чем ограничено кол-во???? :cz2:
И в чем безопасность? Вы сами не доверяете своему же почтовому серверу? Боитесь, что он свое локальное письмо отправит наружу и потом снова примет? :no:


Вот, можно и так сделать:

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

acl_check_rcpt:
...
 deny sender_domains = localdomain.ru
  !domains = localdomain.ru
  message = Local senders can only send local messages.
 ...
Но еще надо учесть возможность снаружи прислать письмо локальному пользователю. Разрешать это или нет, не знаю. Возможно надо в проверке еще учесть авторизированный ли пользователь или может учесть ip-адреса отправителей. Но это все вы и сами сделаете по аналогии.

Удачи.
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

frya_foreva
рядовой
Сообщения: 41
Зарегистрирован: 2009-03-19 13:49:56

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение frya_foreva » 2009-05-20 11:42:00

Laa писал(а):А если не секрет, то чем ограничено кол-во???? :cz2:
И в чем безопасность? Вы сами не доверяете своему же почтовому серверу? Боитесь, что он свое локальное письмо отправит наружу и потом снова примет? :no:


Вот, можно и так сделать:

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

acl_check_rcpt:
...
 deny sender_domains = localdomain.ru
  !domains = localdomain.ru
  message = Local senders can only send local messages.
 ...
Но еще надо учесть возможность снаружи прислать письмо локальному пользователю. Разрешать это или нет, не знаю. Возможно надо в проверке еще учесть авторизированный ли пользователь или может учесть ip-адреса отправителей. Но это все вы и сами сделаете по аналогии.

Удачи.
серавно, с внутреннего домена (user@localdomain.net H=(workstation) [10.0.0.65]) проходит в мир на ящик ( fryaforeva@yandex.ru)

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

May 20 14:37:20 server exim[14414]: 2009-05-20 14:37:20 1M6hIe-0003kU-0o <= user@localdomain.net H=(workstation) [10.0.0.65] P=esmtp S=2099
May 20 14:37:20 server spamd[1301]: prefork: child states: II
May 20 14:37:20 server exim[14415]: 2009-05-20 14:37:20 1M6hIe-0003kU-0o => fryaforeva@yandex.ru R=dnslookup T=remote_smtp H=mx2.yandex.ru [93.158.134.89]
May 20 14:37:20 server exim[14415]: 2009-05-20 14:37:20 1M6hIe-0003kU-0o Completed
может что-то, где то еще нада указать?

P.S.
А если не секрет, то чем ограничено кол-во????
регламентирующими документами
Вы сами не доверяете своему же почтовому серверу?
скорее пользователям

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

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение Laa » 2009-05-20 12:09:20

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

exim -bh 10.0.0.65
и пробуйте вникнуть где оно было разрешено раньше.
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

frya_foreva
рядовой
Сообщения: 41
Зарегистрирован: 2009-03-19 13:49:56

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение frya_foreva » 2009-05-20 12:15:45

Laa писал(а):

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

exim -bh 10.0.0.65
и пробуйте вникнуть где оно было разрешено раньше.

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

# exim -bh 10.0.0.65

**** SMTP testing session as if from host 10.0.0.65
**** but without any ident (RFC 1413) callback.
**** This is not for real!

>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? yes (matched "*")
>>> looking up host name for 10.0.0.65
>>> IP address lookup yielded workstation
>>> no IP address found for host workstation (during SMTP connection from [10.0.0.65])
>>> workstation in dns_again_means_nonexist? no (option unset)
>>> temporary error for host name lookup
>>> host in host_reject_connection? no (option unset)
>>> gethostbyname looked up these IP addresses:
>>>   name=localhost address=127.0.0.1
>>> host in "localhost:127.0.0.1/8:10.0.0.0/16"? yes (matched "10.0.0.0/16")
>>> host in sender_unqualified_hosts? yes (matched "+relay_from_hosts")
>>> host in recipient_unqualified_hosts? yes (matched "+relay_from_hosts" - cached)
>>> host in helo_verify_hosts? no (option unset)
>>> host in helo_try_verify_hosts? no (option unset)
>>> host in helo_accept_junk_hosts? yes (matched "10.0.0.0/16")
>>> using ACL "acl_check_connect"
>>> processing "warn"
>>> check hosts = 127.0.0.1
>>> host in "127.0.0.1"? no (end of list)
>>> warn: condition test failed
>>> processing "accept"
>>> accept: condition test succeeded
220 server.ru ESMTP Exim 4.68 Wed, 20 May 2009 15:12:30 +0600

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

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение Laa » 2009-05-20 12:21:30

Команда exim -bh ... позволяет эмулировать удаленную сессию и наблюдать за работой вашего конфига. Вы команду запустили, но не эмулировали удаленную сессию, поэтому толку мало. Сделайте же HELO... MAIL FROM:<... RCPT TO:<.... и после этого посмотрите в выводе где было разрешено раньше.
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

frya_foreva
рядовой
Сообщения: 41
Зарегистрирован: 2009-03-19 13:49:56

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение frya_foreva » 2009-05-20 12:33:59

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

# exim -bh 10.0.0.65

**** SMTP testing session as if from host 10.0.0.65
**** but without any ident (RFC 1413) callback.
**** This is not for real!

>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? yes (matched "*")
>>> looking up host name for 10.0.0.65
>>> IP address lookup yielded workstation
>>> no IP address found for host workstation (during SMTP connection from [10.0.0.65])
>>> workstation in dns_again_means_nonexist? no (option unset)
>>> temporary error for host name lookup
>>> host in host_reject_connection? no (option unset)
>>> gethostbyname looked up these IP addresses:
>>>   name=localhost address=127.0.0.1
>>> host in "localhost:127.0.0.1/8:10.0.0.0/16"? yes (matched "10.0.0.0/16")
>>> host in sender_unqualified_hosts? yes (matched "+relay_from_hosts")
>>> host in recipient_unqualified_hosts? yes (matched "+relay_from_hosts" - cached)
>>> host in helo_verify_hosts? no (option unset)
>>> host in helo_try_verify_hosts? no (option unset)
>>> host in helo_accept_junk_hosts? yes (matched "10.0.0.0/16")
>>> using ACL "acl_check_connect"
>>> processing "warn"
>>> check hosts = 127.0.0.1
>>> host in "127.0.0.1"? no (end of list)
>>> warn: condition test failed
>>> processing "accept"
>>> accept: condition test succeeded
220 server.ru ESMTP Exim 4.68 Wed, 20 May 2009 15:12:30 +0600
helo yandex.ru
>>> yandex.ru in helo_lookup_domains? no (end of list)
250 server.ru Hello yandex.ru [10.0.0.65]
MAIL FROM:<user1@localdomain.net>
250 OK
RCPT TO:<fryaforeva@yandex.ru>
>>> using ACL "acl_check_rcpt"
>>> processing "accept"
>>> check hosts = :
>>> host in ":"? no (end of list)
>>> accept: condition test failed
>>> processing "deny"
>>> check domains = +local_domains
>>> yandex.ru in ""? no (end of list)
>>> yandex.ru in "+local_domains"? no (end of list)
>>> deny: condition test failed
>>> processing "deny"
>>> check domains = !+local_domains
>>> yandex.ru in ""? no (end of list)
>>> yandex.ru in "!+local_domains"? yes (end of list)
>>> check local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
>>> fryaforeva in "^[./|] : ^.*[@%!] : ^.*/\.\./"? no (end of list)
>>> deny: condition test failed
>>> processing "accept"
>>> check local_parts = postmaster
>>> fryaforeva in "postmaster"? no (end of list)
>>> accept: condition test failed
>>> processing "accept"
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
>>> check control = submission
>>> accept: condition test succeeded
250 Accepted

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

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение Laa » 2009-05-20 12:58:32

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

>>> processing "accept"
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
>>> check control = submission
>>> accept: condition test succeeded
250 Accepted
Ну судя по этому в начале ACL "acl_check_rcpt" есть проверка на хосты, ваш хост с которого отправляете 10.0.0.65 находится в разрешенном списке. Вот и останавливается проверка на этом. То, что я прислал раньше, нужно вставить ДО этой проверки. И проверить чтобы работало так как вам нужно.
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

frya_foreva
рядовой
Сообщения: 41
Зарегистрирован: 2009-03-19 13:49:56

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение frya_foreva » 2009-05-20 13:04:50

acl_check_rcpt:

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

  accept  hosts = :


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


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

  accept  local_parts   = postmaster
          domains       = +local_domains

  accept  hosts         = +relay_from_hosts
          control       = submission

	deny    condition     = ${if eq{$sender_address}{}{yes}{no}}
            hosts         = !127.0.0.1 : !localhost : *
            message       = "Sender address is empty?! not for RFC..."

  deny    message       = "HELO/EHLO require by SMTP RFC"
            condition     = ${if eq{$sender_helo_name}{}{yes}{no}}



  deny    condition     = ${if eq{$sender_helo_name}\
      {$interface_address}{yes}{no}}
                hosts         = !127.0.0.1 : !localhost : *
                message       = "main IP in your HELO! Access denied!"

				
  accept  authenticated = *
          control       = submission

  require message = relay not permitted
          domains = +local_domains : +relay_to_domains
  require verify = recipient
  deny          message = "Access deny - this is not open relay!"
                delay   = 30s
  accept

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

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение Laa » 2009-05-20 13:12:08

Вставьте

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

    acl_check_rcpt:
    ...
     deny sender_domains = localdomain.ru
      !domains = localdomain.ru
      message = Local senders can only send local messages.
     ...
перед

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

  accept  hosts         = +relay_from_hosts
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

frya_foreva
рядовой
Сообщения: 41
Зарегистрирован: 2009-03-19 13:49:56

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение frya_foreva » 2009-05-20 13:33:09

огромное спасибо все заработало, есть же всетаки хорошие и знающие людю которые готовы помочь. Может еще какие нить рекомендации дадите по настройке (по безопасности и т.д.)?

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

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение Laa » 2009-05-20 14:16:21

Дам!

1. не рубайте отправителей по только одному какому-то RBL!
2. не рубайте NULL SENDER (<>) до PREDATA, чтобы удаленный sender verify не споткнулся, и не делайте для него delay/defer. По крайне мере до predata.
3. давайте отправителям вашим deny только когда есть несколько причин дать deny, а не одно кривое хело или один RBL. Давайте в случае одного RBL грейлист (defer).
4. Почитайте побольше сообщений на этом форуме.
5. Определитесь для себя, что важнее -- принять меньше спама И писем или принять кучу лишнего спама, НО не потерять ОДНО важное письмо.

Удачи.
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

frya_foreva
рядовой
Сообщения: 41
Зарегистрирован: 2009-03-19 13:49:56

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение frya_foreva » 2009-05-20 14:34:29

Laa писал(а):Дам!

1. не рубайте отправителей по только одному какому-то RBL!
2. не рубайте NULL SENDER (<>) до PREDATA, чтобы удаленный sender verify не споткнулся, и не делайте для него delay/defer. По крайне мере до predata.
3. давайте отправителям вашим deny только когда есть несколько причин дать deny, а не одно кривое хело или один RBL. Давайте в случае одного RBL грейлист (defer).
4. Почитайте побольше сообщений на этом форуме.
5. Определитесь для себя, что важнее -- принять меньше спама И писем или принять кучу лишнего спама, НО не потерять ОДНО важное письмо.

Удачи.
если не жалко поделитесь примерами.

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

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение Laa » 2009-05-20 16:16:35

Может в кассу за вашей зарплатой тоже прити, не жалко? 8) :-D
Вам же лучше будет, если вникните во всё и разберетесь, никто за вас не обязан делать. :Search:
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

yolkov
рядовой
Сообщения: 37
Зарегистрирован: 2007-04-11 8:52:08

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение yolkov » 2009-05-20 18:37:35

Laa писал(а):Дам!
2. не рубайте NULL SENDER (<>) до PREDATA, чтобы удаленный sender verify не споткнулся, и не делайте для него delay/defer. По крайне мере до predata.
.
а можно здесь по подробнее. что значит PREDATA?

и может объясните как работает require verify = sender

а то не могу сделать роутер с опцией senders, при проверке АСЛ этот роутер всегда приходит с пустым сендером, задолбался уже.

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

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение Laa » 2009-05-20 19:09:21

PREDATA -- это часть СМТП-взаимодействия после получения ответа на RCPT TO (не важно положительного или отрицательного), но до разрешения вводить данные (DATA). В этой части отправителю еще не разрешили вводить данные, но уже выяснили HELO/EHLO, адрес отправителя и перечень получателей. Тут или позже нужно давать запреты NULL SENDER-у, так как при проверке отправителя (sender verify) дальше идти процесс не будет.

Поясню подробней.
Никогда точно нельзя сказать, что отправитель NULL SENDER является спамером или sender-verify удаленного почтового сервера на наше письмо. Так вот, если сторона получателя по DNSBL даст deny на стадии RCPT TO любому отправителю, который пытается прислать письмо, то может оказаться, что своё же письмо и не будет доставлено (см мою подпись!). Схема такая:

1. LOCAL_SMTP пытается отправить письмо на REMOTE_SMTP
2. REMOTE_SMTP после получения MAIL FROM пытается выполнить проверку отправителя (sender verify) просто попытавшись доставить от отправителя <> письмо нашему пользователю к нам на сервер LOCAL_SMTP.
3. LOCAL_SMTP выдает deny -- you in dnsbl. (если REMOTE_SMTP действительно в DNSBL, а это бывает часто).
4. Пункт 1 обламывается, так как REMOTE_SMTP оказался в DNSBL и мы ему выдали ошибку на его sender verify, и REMOTE_SMTP понял, что адрес отправителя с нашего LOCAL_SMTP несуществующий.
5. Наш локальный пользователь прибежал с истерикой, что мол его супер-важное письмо недоставлено.

А sender verify работает так: REMOTE_SMTP, после того, как LOCAL_SMTP выдал HELO и MAIL FROM выполняет тестовую доставку письма от пользователя <> (NULL SENDER) к нашему пользователю, от которого отправляется письмо в надежде после RCPT TO получить код положительный или отрицательный. На этом основании REMOTE_SMTP понимает существует ли отправитель или он поддельный. При sender verify процесс не доходит до DATA, REMOTE_SMTP после ответа LOCAL_SMTP на RCPT TO просто говорит QUIT и отключается с какой-то информацией.

Спамеры, же, в свою очередь шлют от NULL SENDER спам, который вводят на стадии DATA, и, вот чтобы им в этом помешать как раз стоит выдавать отлуп перед DATA, на стадии PREDATA ну или позже (чтобы собрать больше логов? и потом отлуп).

Многа букаф, но постарался разжевать по максимуму.
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!


frya_foreva
рядовой
Сообщения: 41
Зарегистрирован: 2009-03-19 13:49:56

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение frya_foreva » 2009-05-21 8:50:08

может комунить пригодится не плохой конфиг с описанием http://trac.ungrund.org/system/browser/ ... onf?rev=84, нашел на просторах инета

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

Re: запретить отправку с локального домена во внешку

Непрочитанное сообщение Laa » 2009-05-21 16:01:56

frya_foreva писал(а):может комунить пригодится не плохой конфиг с описанием http://trac.ungrund.org/system/browser/ ... onf?rev=84, нашел на просторах инета
Да, неплохой. Советую всем, кто не совсем понимает как работает екзим обращаться к этому конфигу для понимания!!!

Но, так сходу вижу, что проверка по DNSBL выполняется для ВСЕХ! А многим не надо выполнять проверку для своих пользователей из своей локалки. Это трафик и задержки, оно надо? Остальное пока сходу интересно и вдумчиво сделано. Автор молодец!
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!