Exim и два внешних релея. Нужна помощь.

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ShadowAGT
рядовой
Сообщения: 13
Зарегистрирован: 2016-08-17 17:49:49

Exim и два внешних релея. Нужна помощь.

Непрочитанное сообщение ShadowAGT » 2018-10-08 12:45:53

Здравствуйте, уважаемые форумчане!

Помогите пожалуйста разобраться. Свалилась тут на голову проблема, не хватает познаний чтоб решить. Письма с моего сервака, уходят через релей дата центра (назовем его dc.relay.com). Порты SMTP закрыты их фаером.

По какой-то причине, релей дата центра, где хостится сервер, не может отправить письма на yahoo.com и еще несколько доменов. Предполагаю, что список этот может пополняться.
<........@hotmail.com>: connect to 1.2.3.4[1.2.3.4]:25: Connection
refused
И причем, на И валятся письма нам назад. Юзер ничего соответственно не получает, а это крайне важно, чтоб у него это письмо было в почтовом ящике. Длительные бодания с сапортом дата центра ни к чему не привели.

Есть у нас еще один внешний релей на godaddy (назовем его external.relay.com). Так вот что нужно сделать, так это чтоб на заданные (желательно в отдельно взятом файле) домены получателей, письма уходили через второй релей (external.relay.com), а по умолчанию использовался релей дата центра (dc.relay.com).

Сейчас, у меня успешно работает вот такой smarthost:
Это вариант работающий сейчас с релеем dc.relay.com

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

smarthost:
    driver = manualroute
    domains = ! +local_domains
    transport = remote_smtp
    route_data = "dc.relay.com"
Соответственно к нему кусок транспорта

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

remote_smtp:
  driver = smtp
  dkim_domain = DKIM_DOMAIN
  dkim_selector = mail
  dkim_private_key = DKIM_PRIVATE_KEY
  interface = ${if exists {/etc/exim/domain_ips}{${lookup{$sender_address_domain}lsearch*{/etc/exim/domain_ips}{$value}{}}}{}}
  helo_data = ${if exists {/etc/exim/domain_hello}{${lookup{$sender_address_domain}lsearch*{/etc/exim/domain_hello}{$value}{$primary_hostname}}}{$primary_hostname}}
А вот такой вариант используется для external.relay.com

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

smart_route:
    driver = manualroute
    domains = ! +local_domains
    transport = auth_relay
    route_list = * smtpout.secureserver.net::80
И транспорт к нему

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

auth_relay:
    driver = smtp
    port = 80
  dkim_domain = DKIM_DOMAIN
  dkim_selector = mail
  dkim_private_key = DKIM_PRIVATE_KEY
  interface = ${if exists {/etc/exim/domain_ips}{${lookup{$sender_address_domain}lsearch*{/etc/exim/domain_ips}{$value}{}}}{}}
  helo_data = ${if exists {/etc/exim/domain_hello}{${lookup{$sender_address_domain}lsearch*{/etc/exim/domain_hello}{$value}{$primary_hostname}}}{$primary_hostname}}
    hosts_try_auth = $host_address
Собственно задача в том, чтоб сделать так, что если получатель письма принадлежит определенным доменам (например yahoo.com, hotmail.com), то почта отправлялась через external.relay.com, если же нет, то чтоб уходила через первый dc.relay.com.

В идеале, хотелось бы конечно вообще как-то анализировать MX серверы, т.к. например на gmail.com можно сделать обслуживание своего домена example.com (типа как почта для домена на яндексе), но при этом принимающие SMTP серверы это все-равно серваки gmail-а и могут отшибать письма для user@example.com, если почтовым сервисом для example.com выбран gmail...

Не могу допереть как это все организовать. Помогите пожалуйста.

Спасибо!

С уважением.

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

Аватара пользователя
skeletor
майор
Сообщения: 2527
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Exim и два внешних релея. Нужна помощь.

Непрочитанное сообщение skeletor » 2018-10-16 10:36:20

Вам нужно решить проблему:

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

connect to 1.2.3.4[1.2.3.4]:25: Connection refused
exim тут не при чём.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

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

Exim и два внешних релея. Нужна помощь.

Непрочитанное сообщение xM » 2018-10-16 13:16:31

Рисуете отдельный роутер перед стандартным для yahoo и иже с ним где идёт направление в отдельный транспорт с вашим вторым smart host.
IT voodoo blog https://kostikov.co

Аватара пользователя
f_andrey
майор
Сообщения: 2651
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

Exim и два внешних релея. Нужна помощь.

Непрочитанное сообщение f_andrey » 2018-10-17 14:23:06

А можно полный отлуп, может оно по DMARC например вас режет и надо просто оформить письма правильно.
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

ShadowAGT
рядовой
Сообщения: 13
Зарегистрирован: 2016-08-17 17:49:49

Exim и два внешних релея. Нужна помощь.

Непрочитанное сообщение ShadowAGT » 2018-10-17 16:36:10

skeletor писал(а):
2018-10-16 10:36:20
Вам нужно решить проблему:
connect to 1.2.3.4[1.2.3.4]:25: Connection refused
exim тут не при чём.
Так вот я не совсем понимаю где именно то проблема. Датацентр морозится, типа "у нас все хорошо". Я уже просто начинаю думать что я дурак. Но насколько я понимаю, хост 1.2.3.4 не принимает соединения, правильно? А он находится в ДЦ. Получается что у них один из серверов доставки (а именно 1.2.3.4) не хочет принимать соединения на 25 порт? Если бы это были yahoo.com и иже с ними, то айпишник стоял бы их... Правильно?
f_andrey писал(а):
2018-10-17 14:23:06
А можно полный отлуп, может оно по DMARC например вас режет и надо просто оформить письма правильно.
Ребят, это все что у меня есть. Все что смог нарыть. Еще раз поясню как у нас отправка происходит. Мой сервер, имеет IP адрес скажем 1.1.1.1, он не может пробиваться к кому хочет на 25й порт и слать/принимать(хотя принимать ему и не нужно) что-либо.
Для того чтоб отправлялась почта, мне нужно моим Exim-ом, отдать ее почтарю датацента на определенный IP. От меня он принимает соединения на 25 порт на IP-шнике 2.2.2.2.
Вот этот самый, 2.2.2.2, отвечает моему Exim-у (на даты внимания не обращайте. Просто выдергивал что ближе под руку попадалось. Но поверьте, все одинаково.

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

2018-10-17 13:20:13 1gClkC-0004xH-ST => someuser@yahoo.com R=smarthost T=remote_smtp H=relay.datacenter.co.uk [2.2.2.2] C="250 Mail queued for delivery"
И это на все письма! То есть они типа от меня приняли и все ок. Все. Больше я ничего не делаю. Дальше они видимо раскидывают эти письма как-то по своим почтовикам-помощникам, и они уже лезут на 25е порты. В поле отправитель всех этих писем стоит myemail@mydomain.com.
И вот стали валиться на этот мой емейл от relay19out@datacenter.co.uk письма с таким содержанием

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

This is the mail system at host relay19out.domain.co.uk.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The mail system

<someuser@yahoo.com>: delivery temporarily suspended: connect to
1.2.3.4[1.2.3.4]:25: Connection refused
1.2.3.4 соответственно принадлежит датацентру
Еще к письму аттач Delivery report. Вот его содержимое

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

Reporting-MTA: dns; relay19out.datacenter.co.uk
X-Postfix-Queue-ID: D07AC6041B73
X-Postfix-Sender: rfc822; [quote=ShadowAGT post_id=387615 time=1538991953 user_id=27194]
И транспорт к нему
[/quote]myemail@mydomain.net
Arrival-Date: Mon,  1 Oct 2018 21:20:18 +0100 (BST)

Final-Recipient: rfc822; someuser@yahoo.com
Original-Recipient: rfc822;someuser@yahoo.com
Action: failed
Status: 4.4.1
Diagnostic-Code: X-Postfix; delivery temporarily suspended: connect to
    1.2.3.4[1.2.3.4]:25: Connection refused
Как видите, ни о каком yahoo.com тут вообще речи не идет. Насколько я понимаю, отшибает на 1.2.3.4. То есть, он не принимает соединения от их внутренних myemail@mydomain.com почтарей, и мне об этом приходит сообщение какие я привел выше. Если заглянуть в сами заголовки этих сообщений, то там вот такая фигня.

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

Received: (qmail 16020 invoked by uid 30297); 6 Oct 2018 20:40:14 -0000
Received: from unknown (HELO p3plibsmtp02-01.prod.phx3.secureserver.net) ([68.178.213.1])
          (envelope-sender <>)
          by p3plsmtp14-04-25.prod.phx3.secureserver.net (qmail-1.03) with SMTP
          for <myemail@mydomain.com>; 6 Oct 2018 20:40:14 -0000
Received: from relay19out.domain.co.uk ([100.100.100.100]) [b]!!!Вот тут другой IP а домен тот же самый relay19out.datacenter.co.uk[/b]
 by bizsmtp with ESMTP
 id 8tMzg1oHaBbrN8tN0goJjB; Sat, 06 Oct 2018 13:40:14 -0700
Received: by relay19out.datacenter.co.uk (Postfix)
 id E7F756063064; Sat,  6 Oct 2018 21:38:13 +0100 (BST)
Date: Sat,  6 Oct 2018 21:38:13 +0100 (BST)
From: MAILER-DAEMON@relay19out.datacenter.co.uk (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: myemail@mydomain.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
xM писал(а):
2018-10-16 13:16:31
Рисуете отдельный роутер перед стандартным для yahoo и иже с ним где идёт направление в отдельный транспорт с вашим вторым smart host.
Да. Уже сделал. На всякий случай, может кому пригодится. Это вверх где списки доменов

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

domainlist relay_maddog_domains = lsearch;/etc/exim/relay_maddog
Дальше в smart_host-ы перед localuser:

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

smarthost_maddog:
    driver = manualroute
    domains = ! +local_domains : +relay_maddog_domains
#    condition = ${if eq {${local_part}} {admin} {yes} {no}}
    transport = auth_maddog_relay
    route_data = "smtpout.secureserver.net"

smarthost:
    driver = manualroute
    domains = ! +local_domains : ! +relay_maddog_domains
#    condition = ${if eq {${local_part}} {admin} {yes} {no}}
    transport = remote_smtp
    route_data = "relay.datacenter.co.uk"
Ну а дальше соответствующие установки транспорта для каждого из них. А в файлике /etc/exim/relay_maddog пишем вот так:

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

yahoo.com:
yahoo.co.uk:
yahoo.com.au:
Ну и так далее, для каждого домена своя строка заканчивающаяся двоеточием.

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

Exim и два внешних релея. Нужна помощь.

Непрочитанное сообщение xM » 2018-10-17 16:38:55

"Connection refused" значит что сетевое соединение было сброшено. Обычно так делается на firewall.
IT voodoo blog https://kostikov.co

ShadowAGT
рядовой
Сообщения: 13
Зарегистрирован: 2016-08-17 17:49:49

Exim и два внешних релея. Нужна помощь.

Непрочитанное сообщение ShadowAGT » 2018-10-17 16:53:46

xM писал(а):
2018-10-17 16:38:55
"Connection refused" значит что сетевое соединение было сброшено. Обычно так делается на firewall.
Сейчас пробил по ptr 1.2.3.4 - это relay20out.datacenter.co.uk, а relay19out.datacenter.co.uk судя по ptr записям висит на на IP 1.2.3.4 (на единичку меньше цифра в конце).
А если пинговать домены, то IP адреса relay20out и relay19out совершенно другие IP адреса, из совершенно разных подсетей не имеющих ничего общего с 1.2.3.xxx.
Получается что relay19out не может достучаться до relay20out, потому что там не принимается соединение...?
Друрдом какой-то честное слово...:-(
Получается что возможно у них где-то в своих DNS прописан IP не соответствующий действительному IP адресу relay20out и к нему не может достучаться на IP 1.2.3.4 ...?????