Страница 1 из 1
Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 14:07:44
RainBoy_Kharkov
Добрый день
Подскажите, как организовать следующее:
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
Помогите настроить

Спасибо!
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 14:11:30
hizel
должна отправляться не MX доставкой
тут завис

расшифруйте
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 14:16:19
RainBoy_Kharkov
Наверное, коряво выразился

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

Провайдер пошел навстречу и открыл релей через себя для нас.
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 14:18:44
RainBoy_Kharkov
Да, exim был поднят и настроен по статье "Связка exim и dovecot с веб интерфейсом postfixadmin"
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 14:46:23
RainBoy_Kharkov
Нашел в Exim FAQ
Код: Выделить всё
send_to_gateway:
driver = manualroute
domains = !+local_domains
transport = remote_smtp
route_list = * gate.way.host
Для того, чтобы вызывались последовательно 2 smtp в случае ошибки их надо написать один за другим?
+ остается открытым вопрос о очередности smtp серверов для a.ua =(
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 15:10:33
dikens3
Для того, чтобы вызывались последовательно 2 smtp в случае ошибки их надо написать один за другим?
Роутеры срабатывают одновременно. Т.е. произойдет 2-е отправки сразу.
Транспорт же, выполняет уже заведомо предопределённые действия на те или иные ошибки.
Либо перестаёт отправлять почту совсем (Постоянная ошибка - нет такого пользователя, доступ запрещен и т.п.), либо ждет последующую доставку.(Если ошибка временная.)
Я бы наверное подумал над перехватом соединений и их балансировкой. Exim сам это сделать сможет, только я не совсем понимаю как.
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 15:33:55
Гость
Как-то сложно -)
Неужели нет простого механизма перебора smtp серверов в случае отказов?
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 16:07:13
dikens3
Гость писал(а):Как-то сложно -)
Неужели нет простого механизма перебора smtp серверов в случае отказов?
Списки рассылки есть, отпишись туда, может поможет.
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 17:17:17
neyro
dikens3 писал(а):Для того, чтобы вызывались последовательно 2 smtp в случае ошибки их надо написать один за другим?
Роутеры срабатывают одновременно. Т.е. произойдет 2-е отправки сразу.
Транспорт же, выполняет уже заведомо предопределённые действия на те или иные ошибки.
Либо перестаёт отправлять почту совсем (Постоянная ошибка - нет такого пользователя, доступ запрещен и т.п.), либо ждет последующую доставку.(Если ошибка временная.)
Я бы наверное подумал над перехватом соединений и их балансировкой. Exim сам это сделать сможет, только я не совсем понимаю как.
Роутеры срабатывают последовательно, причем срабатывают только если письмо из предыдущего роутера вышло(параметра которые они возвращают можно почитать в мануале).
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 17:37:02
RainBoy_Kharkov
Спасибо
Отправил запрос, посмотрим...
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 17:41:17
dikens3
neyro писал(а):dikens3 писал(а):Для того, чтобы вызывались последовательно 2 smtp в случае ошибки их надо написать один за другим?
Роутеры срабатывают одновременно. Т.е. произойдет 2-е отправки сразу.
Транспорт же, выполняет уже заведомо предопределённые действия на те или иные ошибки.
Либо перестаёт отправлять почту совсем (Постоянная ошибка - нет такого пользователя, доступ запрещен и т.п.), либо ждет последующую доставку.(Если ошибка временная.)
Я бы наверное подумал над перехватом соединений и их балансировкой. Exim сам это сделать сможет, только я не совсем понимаю как.
Роутеры срабатывают последовательно, причем срабатывают только если письмо из предыдущего роутера вышло(параметра которые они возвращают можно почитать в мануале).
Т.е. сработают либо оба
одновременно, либо ни одного? (данный случай имею ввиду.)
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 17:50:04
RainBoyKharkov
Неважно, что сработают оба, если первый не работает.
Представляю где-то так:
роурер1: если письмо домену a.ua = отправляем через b.b.b.b
роутер2: если (отправка через роутер1 ошибка) или (письмо не домену a.ua) - отправка через a.a.a.a
роутер3: если (отправка через роутер2 ошибка) и (письмо не домену a.ua) - отправка через b.b.b.b
осталось понять, как это сделать все

Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 20:52:04
neyro
Блин..ну когда уже люди начнут читать мануалы...
вот подробное описание принципа работы роутеров:
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.
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-04 22:08:32
RainBoyKharkov
Спасибо за инфу

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

Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-05 10:27:43
dikens3
RainBoyKharkov писал(а):Спасибо за инфу

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

Полагаю, что это не подойдёт.
Ибо:
Если доставка на HOST A, вызывает постоянную ошибку (550 к примеру): - Должен ли Exim использовать ХОСТ Б? И будет ли, при наличии рекомендуемой опции
hosts_randomize?
Ключевые слова в сообщении автора я считаю следующие:
Если он недоступен
Отсюда главный вопрос который автор должен задать себе и найти на него ответ:
Что делает Exim (транспорт smtp) когда встречает временную/постоянную ошибку доставки?
Неважно, что сработают оба, если первый не работает.
Нет там если. Сработают оба и произойдет 2-е доставки.
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-05 11:53:09
RainBoyKharkov
Ключевое вы все правильно поняли
Если хост А почту отослать не в состоянии (недоступен, реджект итп - все что угодно) - отправка через хост Б
Для определенного домена - хост Б, потом хост А
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-05 12:06:27
neyro
в 100-й раз...читаем мануал...там есть все, что нужно...(а точнее -опции роутеров и транспортов, что происходитв случае defer и т.д.)
Re: Exim - Отправка почты из Exim через несколько SMTP
Добавлено: 2009-03-06 14:19:51
RainBoyKharkov
Порешал

Помогли рассылки
Перед 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,
в котором прописать: