Exim - Отправка почты из Exim через несколько SMTP

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
RainBoy_Kharkov
проходил мимо

Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение RainBoy_Kharkov » 2009-03-04 14:07:44

Добрый день
Подскажите, как организовать следующее:

1. Вся почта на фирме должна отправляться не MX доставкой, а доставкой через 2 SMTP релея (a.a.a.a и b.b.b.b)
2. Отправляемая почта кидается на a.a.a.a Если он недоступен - то на b.b.b.b
3. Все почта для домена a.ua отправляется на b.b.b.b, если он недоступен - то на a.a.a.a

Помогите настроить =)
Спасибо!

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

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение hizel » 2009-03-04 14:11:30

должна отправляться не MX доставкой
тут завис :( расшифруйте
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение RainBoy_Kharkov » 2009-03-04 14:16:19

Наверное, коряво выразился =)
Имеется ввиду что почта не должна отправляться Exim ом напрямую на получателя, а должна футболиться на 2 промежуточных SMTP
Когда почта отправлячется напрямую от меня некоторые получатели футболят с заявлением о том, чтобы я отправлял почту через SMTP своего провайдера =)
Провайдер пошел навстречу и открыл релей через себя для нас.

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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение RainBoy_Kharkov » 2009-03-04 14:18:44

Да, exim был поднят и настроен по статье "Связка exim и dovecot с веб интерфейсом postfixadmin"

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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение RainBoy_Kharkov » 2009-03-04 14:46:23

Нашел в Exim FAQ

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

send_to_gateway:
  driver = manualroute
  domains = !+local_domains
  transport = remote_smtp
  route_list = * gate.way.host
Для того, чтобы вызывались последовательно 2 smtp в случае ошибки их надо написать один за другим?
+ остается открытым вопрос о очередности smtp серверов для a.ua =(

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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение dikens3 » 2009-03-04 15:10:33

Для того, чтобы вызывались последовательно 2 smtp в случае ошибки их надо написать один за другим?
Роутеры срабатывают одновременно. Т.е. произойдет 2-е отправки сразу.

Транспорт же, выполняет уже заведомо предопределённые действия на те или иные ошибки.
Либо перестаёт отправлять почту совсем (Постоянная ошибка - нет такого пользователя, доступ запрещен и т.п.), либо ждет последующую доставку.(Если ошибка временная.)

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

Гость
проходил мимо

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение Гость » 2009-03-04 15:33:55

Как-то сложно -)
Неужели нет простого механизма перебора smtp серверов в случае отказов?

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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение dikens3 » 2009-03-04 16:07:13

Гость писал(а):Как-то сложно -)
Неужели нет простого механизма перебора smtp серверов в случае отказов?
Списки рассылки есть, отпишись туда, может поможет.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение neyro » 2009-03-04 17:17:17

dikens3 писал(а):
Для того, чтобы вызывались последовательно 2 smtp в случае ошибки их надо написать один за другим?
Роутеры срабатывают одновременно. Т.е. произойдет 2-е отправки сразу.

Транспорт же, выполняет уже заведомо предопределённые действия на те или иные ошибки.
Либо перестаёт отправлять почту совсем (Постоянная ошибка - нет такого пользователя, доступ запрещен и т.п.), либо ждет последующую доставку.(Если ошибка временная.)

Я бы наверное подумал над перехватом соединений и их балансировкой. Exim сам это сделать сможет, только я не совсем понимаю как.
Роутеры срабатывают последовательно, причем срабатывают только если письмо из предыдущего роутера вышло(параметра которые они возвращают можно почитать в мануале).


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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение dikens3 » 2009-03-04 17:41:17

neyro писал(а):
dikens3 писал(а):
Для того, чтобы вызывались последовательно 2 smtp в случае ошибки их надо написать один за другим?
Роутеры срабатывают одновременно. Т.е. произойдет 2-е отправки сразу.

Транспорт же, выполняет уже заведомо предопределённые действия на те или иные ошибки.
Либо перестаёт отправлять почту совсем (Постоянная ошибка - нет такого пользователя, доступ запрещен и т.п.), либо ждет последующую доставку.(Если ошибка временная.)

Я бы наверное подумал над перехватом соединений и их балансировкой. Exim сам это сделать сможет, только я не совсем понимаю как.
Роутеры срабатывают последовательно, причем срабатывают только если письмо из предыдущего роутера вышло(параметра которые они возвращают можно почитать в мануале).
Т.е. сработают либо оба одновременно, либо ни одного? (данный случай имею ввиду.)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение RainBoyKharkov » 2009-03-04 17:50:04

Неважно, что сработают оба, если первый не работает.

Представляю где-то так:

роурер1: если письмо домену a.ua = отправляем через b.b.b.b
роутер2: если (отправка через роутер1 ошибка) или (письмо не домену a.ua) - отправка через a.a.a.a
роутер3: если (отправка через роутер2 ошибка) и (письмо не домену a.ua) - отправка через b.b.b.b

осталось понять, как это сделать все =)

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение neyro » 2009-03-04 20:52:04

Блин..ну когда уже люди начнут читать мануалы...
вот подробное описание принципа работы роутеров:
http://docs.exim.org/4.10/spec_3.html#SECT3.7

п.с а это пример того(из офф мануала эксима), что нужно автору.
Q9808: I have a mailing list exploder on one host, and three other hosts where I want to do the actual deliveries from. How can I get Exim to split a message into groups of recipients between the three hosts?

A9808: Set up a router that routes all remote addresses to a specific transport, with a list of your three hosts. For example:
send_to_three:
driver = manualroute
transport = to_three_smtp
route_list = !+local_domains hostA:hostB:hostC

The transport looks like this:
to_three_smtp:
driver = smtp
hosts_randomize

By setting hosts_randomize, you request that the host list be sorted randomly each time the transport is called, in order to spread the load. The number of times the transport is called for each message depends on the setting of the global option remote_max_parallel. If it is set to 1, the transport is called only once for each message, so only one host is used, but different messages use different hosts because of the randomizing.

The max_rcpt option (default 100) controls the number of addresses sent in each copy of the message - several copies are sent over the same connection if necessary.

If you want individual messages to be split between the three hosts, you must set the global option remote_max_parallel to 3. This allows Exim to run 3 separate instances of the transport at once. It will pass one-third of all the addresses to each instance. Because the host list is randomized, not round-robinned, there is no guarantee that a single message will use all three hosts, but on average it should.

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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение RainBoyKharkov » 2009-03-04 22:08:32

Спасибо за инфу =)
Навскидку прочел что раскидывает между хостами для отправки в случайном порядке. Завтра докурю до конца =)

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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение dikens3 » 2009-03-05 10:27:43

RainBoyKharkov писал(а):Спасибо за инфу =)
Навскидку прочел что раскидывает между хостами для отправки в случайном порядке. Завтра докурю до конца =)
Полагаю, что это не подойдёт.

Ибо:
Если доставка на HOST A, вызывает постоянную ошибку (550 к примеру): - Должен ли Exim использовать ХОСТ Б? И будет ли, при наличии рекомендуемой опции hosts_randomize?

Ключевые слова в сообщении автора я считаю следующие:
Если он недоступен
Отсюда главный вопрос который автор должен задать себе и найти на него ответ:
Что делает Exim (транспорт smtp) когда встречает временную/постоянную ошибку доставки?
Неважно, что сработают оба, если первый не работает.
Нет там если. Сработают оба и произойдет 2-е доставки.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение RainBoyKharkov » 2009-03-05 11:53:09

Ключевое вы все правильно поняли
Если хост А почту отослать не в состоянии (недоступен, реджект итп - все что угодно) - отправка через хост Б
Для определенного домена - хост Б, потом хост А

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение neyro » 2009-03-05 12:06:27

в 100-й раз...читаем мануал...там есть все, что нужно...(а точнее -опции роутеров и транспортов, что происходитв случае defer и т.д.)

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

Re: Exim - Отправка почты из Exim через несколько SMTP

Непрочитанное сообщение RainBoyKharkov » 2009-03-06 14:19:51

Порешал =)
Помогли рассылки

Перед dnslookup роутером поставить:

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

hubbed_hosts:
  debug_print = "R: hubbed_hosts for $domain"
  driver = manualroute
  domains = "${if exists{CONFDIR/hubbed_hosts}\
                   {partial-lsearch;CONFDIR/hubbed_hosts}\
              fail}"
  same_domain_copy_routing = yes
  route_data = ${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}
  transport = remote_smtp
В CONFDIR ( в случае debian это /etc/exim4/ ) создать файл hubbed_hosts,
в котором прописать:

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

a.ua:	b.b.b.b:a.a.a.a
*:	a.a.a.a:b.b.b.b