Не могу отправить письма не из нашей сети

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
dimish
мл. сержант
Сообщения: 73
Зарегистрирован: 2011-02-22 9:33:07

Не могу отправить письма не из нашей сети

Непрочитанное сообщение dimish » 2014-02-19 21:49:34

Никак не могу понять, почему не отправляются письма не из нашей сети. Раньше была просто банально не нужно, теперь пытаюсь наладить. Связка exim+dovecot.
Если отправлять из нашей локальной сети - всё нормально. Если снаружи, вижу следующее:

Это стандартный андроидовский клиент (не уходит. в программе пишет неверное имя пользователя и пароль):

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

Feb 19 22:29:29 freebsd exim[2194]: no host name found for IP address 78.25.121.178
Feb 19 22:29:29 freebsd exim[2194]: auth_plain authenticator failed for (localhost) [78.25.121.178] I=[m.y.i.p]:25: 535 Incorrect authentication data (set_id=mishurovskiy@mydomain.com)
А это через k-9 mail (уходит)

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

Feb 19 22:34:32 freebsd exim[2248]: no host name found for IP address 78.25.121.178
Feb 19 22:34:34 freebsd exim[2248]: 1WGByb-0000aG-CS <= mishurovskiy@mydomain.com H=([100.85.162.188]) [78.25.121.178] I=[m.y.i.p]:25 P=esmtpa A=auth_cram_md5:mishurovskiy@mydomain.com S=1451 id=aae3b685-6d68-4b20-9a0f-a23dfc307417@email.android.com from <mishurovskiy@mydomain.com> for myemail@qip.ru
Через аутлук не уходит.

Ааа.. Я так понял какая-то не та авторизация у меня стоит? Что поколупать? И что это за H=([100.85.162.188]) при отправка через k-9 mail?

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

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Re: Не могу отправить письма не из нашей сети

Непрочитанное сообщение xM » 2014-02-19 23:26:04

У вас же открытым текстом написано что не так в логе.
Смотрите методы аутентификации.
IT voodoo blog https://kostikov.co

Аватара пользователя
dimish
мл. сержант
Сообщения: 73
Зарегистрирован: 2011-02-22 9:33:07

Re: Не могу отправить письма не из нашей сети

Непрочитанное сообщение dimish » 2014-02-20 8:38:48

Подскажите? =)
Попробую погадать. =) Возможно exim не верно интерпретирует переданную клиентом информацию при способе Plain. Почему? Вот кусок конфига про аутентификацию:

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


begin authenticators

auth_plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${lookup mysql{SELECT `username` FROM \
                     `mailbox` WHERE `username` = \
                     '${quote_mysql:$1}' AND `password` = \
                     '${quote_mysql:$2}'}{yes}{no}}
  server_prompts = :
  server_set_id = $2

auth_login:
  driver = plaintext
  public_name = LOGIN
  server_condition = ${lookup mysql{SELECT `username` FROM \
                     `mailbox` WHERE `username` = \
                     '${quote_mysql:$1}' AND `password` = \
                     '${quote_mysql:$2}'}{yes}{no}}
  server_prompts = Username:: : Password::
  server_set_id = $1

auth_cram_md5:
  driver = cram_md5
  public_name = CRAM-MD5
  server_secret = ${lookup mysql{SELECT `password` FROM \
                        `mailbox` WHERE `username` \
                        = '${quote_mysql:$1}'}{$value}fail}
  server_set_id = $1


Аватара пользователя
dimish
мл. сержант
Сообщения: 73
Зарегистрирован: 2011-02-22 9:33:07

Re: Не могу отправить письма не из нашей сети

Непрочитанное сообщение dimish » 2014-02-20 10:29:28

Ахаха.. Вы не поверите, в чём, собственно, оказывается дело. =) С андроидовскими клиентами - фиг с ними, это я разобрался.

Суть проблемы в том, что у пользователей не уходит почта из аутлука, когда они подключаются по 3ж. А иногда уходит.. И звонят они мне из командировок ночью и жутко матеряться. =)
Оказывается, просто некоторые ip операторов, занесены в спамерские блэклисты. А некоторые не занесены. =) Как повезёт. А я из-за циклопичности лога и непоняток кто, собственно, конектится и не замечал, пока сам не протестировал.


Вопрос в лоб: существует ли какой-нибудь красивый метод решить этот вопрос кроме: а) выдать всем статический ip. б) добавить все диапазоны операторов в белый лист?

snorlov
подполковник
Сообщения: 3917
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Не могу отправить письма не из нашей сети

Непрочитанное сообщение snorlov » 2014-02-20 13:23:00

А не поможет ли волшебное слово vpn...

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Re: Не могу отправить письма не из нашей сети

Непрочитанное сообщение xM » 2014-02-20 14:04:23

dimish писал(а):Оказывается, просто некоторые ip операторов, занесены в спамерские блэклисты. А некоторые не занесены. =) Как повезёт. А я из-за циклопичности лога и непоняток кто, собственно, конектится и не замечал, пока сам не протестировал.
Это решается грамотной настройкой Exim, когда почта от своих аутентифицированных пользователей не проверяется на вхождение в DNS BL.
IT voodoo blog https://kostikov.co

Аватара пользователя
dimish
мл. сержант
Сообщения: 73
Зарегистрирован: 2011-02-22 9:33:07

Re: Не могу отправить письма не из нашей сети

Непрочитанное сообщение dimish » 2014-02-21 9:02:50

vpn сложный процесс, требующий помощи в настройке на каждом устройстве. В принципе у меня есть вэб интерфейс, которым все желающие могут пользоваться, да и то это вызывает кучу лучей поноса, ибо "слишком много кнопочек надо нажимать".


По поводу "грамотной настройки". Ну, я пользуюсь почти стандартным конфигом, который здесь же и брал. Там, вроде, аутентификация должна проходить до bl, (accept authenticated = * , если я правильно понял) однако, что-то не стреляет. Вот, может взгляните трезвым взглядом?

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

begin acl

# Эти правила срабатывают для каждого получателя
acl_check_rcpt:

  # принимать сообщения которые пришли с локалхоста,
  # не по TCP/IP
  accept  hosts = 77.221.130.213 : 89.104.88.106 : 78.25.121.162 :


  # Запрещаем письма содержащие в локальной части
  # символы @; %; !; /; |. Учтите, если у вас было
  # `percent_hack_domains` то % надо убрать.
  # Проверяются локальные домены
  deny    message       = "Wrong symbol in adress"
          domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]

  # Проверяем недопустимые символы для
  # нелокальных получателей:
  deny    message       = "Wrong symbol in address"
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./


  # Запрещаем, если невозможно проверить отправителя
  # (отсутствует в списке локальных пользователей)
  # У себя я это закоментил, по причине, что некоторые
  # железяки (принтеры, & etc) и программы (Касперский, DrWEB)
  # умеют слать почту, в случае проблем но не умеют ставить
  # нужного отправителя. Такие письма эта проверка не пускает.
#  require verify        = sender

  # Запрещщаем тех, кто не обменивается приветственными
  # сообщениями (HELO/EHLO)
  deny    message       = "HELO/EHLO not by SMTP RFC"
          condition     = ${if eq{$sender_helo_name}{}{yes}{no}}

  # Принимаем сообщения от тех, кто аутентифицировался:
  # Вообще, большинство конфигов в рунете - это один и тот же
  # конфиг написанный Ginger, в котором этот пункт расположен
  # внизу. Но при таком расположении рубятся клиенты с adsl,
  # ppp, и прочие зарезанные на последующих проверках. Но это
  # жа неправильно! Этом мои пользователи из дома! Потому
  # я это правило расположил до проверок.
  accept  authenticated = *

# Рубаем нах, тех, кто подставляет свой IP в HELO
  deny    message       = "Not send your IP as HELO!"
          hosts         =  *:!+relay_from_hosts
          condition     = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}


# Рубаем тех, кто в HELO пихает мой IP (2500 за месяц!)
  deny    condition     = ${if eq{$sender_helo_name}{$interface_address}{yes}{no}}
          hosts         = !127.0.0.1 : !localhost : *
          message       = "Wrong IP. Get out!"

# Рубаем тех, кто в HELO пихает только цифры
# (не бывает хостов ТОЛЬКО из цифр)
  deny    condition     = ${if match{$sender_helo_name}{\N^\d+$\N}{yes}{no}}
          hosts         = !127.0.0.1:!localhost:*
          message       = "Wrong HELO. Get out!"

  # Рубаем хосты типа *adsl*; *dialup*; *pool*;....
  # Нормальные люди с таких не пишут. Если будут
  # проблемы - уберёте проблемный пункт (у меня клиенты
  # имеют запись типа asdl-1233.zone.su - я ADSL убрал...)
  deny    message       = "Suspicious host.. Get out!"
          condition     = ${if match{$sender_host_name}{dialup|pool|peer|dhcp}{yes}{no}}

  # Рубаем тех, кто в блэк-листах. Серваки перебираются
  # сверху вниз, если не хост не найден на первом, то
  # запрашивается второй, и т.д. Если не найден ни в одном
  # из списка - то почта пропускается.
  deny    message       = "host in blacklist - $dnslist_domain \n $dnslist_text"
	  hosts		= !192.168.1.0/24 : *
          dnslists      = opm.blitzed.org : \
                          proxies.blackholes.easynet.nl : \
                          cbl.abuseat.org : \
                          bl.spamcop.net : \
#                          bl.csma.biz : \
                          dynablock.njabl.org : \


  # Задержка. (это такой метод борьбы со спамом,
  # основанный на принципе его рассылки) На этом рубается
  # почти весь спам. Единственно - метод неприменим на
  # реально загруженных MTA - т.к. в результате ему
  # приходится держать много открытых соединений.
  # но на офисе в сотню-две человек - шикарный метод.
  #
  # более сложный вариант, смотрите в статье по exim и
  # курьер имап. Т.к. там метод боле умный (просто правил
  # больше :), то можно и на более загруженные сервера ставить)
  warn
        # ставим дефолтовую задержку в 20 секунд
        set acl_m0 = 15s
  warn
        # ставим задержку в 0 секунд своим хостам и
        # дружественным сетям (соседняя контора :))
        hosts = +relay_from_hosts : 192.168.0.0/20 :
        set acl_m0 = 0s
  warn
        # пишем в логи задержку (если оно вам надо)
        logwrite = Delay $acl_m0 for $sender_host_name [$sender_host_address] with HELO=$sender_helo_name. Mail from $sender_address to $local_part@$domain.
        delay = $acl_m0


  # Проверка получателя в локальных доменах.
  # Если не проходит, то проверяется следующий ACL,
  # и если непрошёл и там - deny
  accept  domains       = +local_domains
          endpass
          message       = "Account Unavailable"
          verify        = recipient

  # Проверяем получателя в релейных доменах
  # Опять-таки если не проходит -> следующий ACL,
  # и если непрошёл и там - deny
  accept  domains       = +relay_to_domains
          endpass
          message       = "Wrong Host"
          verify        = recipient

  # Разрешаем почту от доменов в списке relay_from_hosts
  accept  hosts         = +relay_from_hosts

  # Если неподошло ни одно правило - чувак явно ищет
  # открытый релей. Пшёл прочь. :)
  deny    message       = "Get out! 07"



Аватара пользователя
dimish
мл. сержант
Сообщения: 73
Зарегистрирован: 2011-02-22 9:33:07

Re: Не могу отправить письма не из нашей сети

Непрочитанное сообщение dimish » 2014-02-21 15:36:12

Ну, не знаю, в общем, как правильно, поставил accept senders перед проверкой dns bl и внёс туда несколько самых яростных пользюков 3ж. Наверное меня теперь спамом завалят. =(

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Re: Не могу отправить письма не из нашей сети

Непрочитанное сообщение xM » 2014-02-22 0:41:04

После

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

  accept  authenticated = *
у вас acl_check_rcpt работать дальше не должен.
Если он работает, то, очевидно, аутентификация клиентом пройдена не была.
IT voodoo blog https://kostikov.co

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Re: Не могу отправить письма не из нашей сети

Непрочитанное сообщение xM » 2014-02-23 16:15:25

Кстати, для того, чтобы юзеры корректно авторизовывались на вашем сервере можете перед проверкой на DNS BL вставить

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

  # --- accept authenticated users for own domains only
  deny   message        = Authentication need to relay.
         hosts          = !127.0.0.1 : !localhost : *
         domains        = +local_domains
         sender_domains = +local_domains
IT voodoo blog https://kostikov.co

Аватара пользователя
dimish
мл. сержант
Сообщения: 73
Зарегистрирован: 2011-02-22 9:33:07

Re: Не могу отправить письма не из нашей сети

Непрочитанное сообщение dimish » 2014-02-24 11:32:52

Спасибо. На самом деле это я - дебил. =) При тестировании просто забыл поставить галочку в клиенте, что требуется смтп аутентификация. Но, хоть с андроидовскими клиентами разобрался и руководство по экзиму переколупал. =)