The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Отказоустойчивый почтовый сервер (два в одном)"
Отправлено kam, 06-Дек-13 15:10 
>[оверквотинг удален]
>> натиться в соответствующие IP-адреса выданные провайдерами. При этом конфигурация МТА
>> будет статичной, но нужно будет как-то сообщать MTA что какой-то из
>> каналов лёг и не нужно использовать соответствующий source_IP для отправки.
> К сожалению, проблема не внутри, а снаружи локальной сети. MTA и так
> уже имеет информацию о текущем внешнем роутинге (файлик на FTP в
> локалке содержит эту информацию и обновляется роутером при смене маршрута).
> Но необходимости переписывать HELO/EHLO в соответствии с (новым)именем хоста почтовика
> (имена ведь разные по разным внешним адресам/маршрутам) это не отменяет. Возможно,
> я не вполне понял, что имеется в виду под статичной конфигурацией
> MTA. Попытаться сделать HELO/EHLO динамически (скриптом)?

Возможно я не вполне корректно применил слово "статичный". Конечно, так как в вашей схеме при смене маршрута меняется IP-адрес с которого почта уходит во внешний мир, то полностью исключть обмен информацией между роутером и МТА невозможно. Однако можно свести к минимуму число меняющихся параметров МТА при смене маршрута, вплоть до изменения одного флага в SQL-табличке. Слегка погуглив я обнаружил, что в postfix пожно сделать то о чём я писал в своих "философских" рассуждениях:

master.cf

Create different Interfaces. One for each domain:

rotate1  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate1
          -o smtp_helo_name=domainone.com.br
          -o smtp_bind_address=173.111.111.1

rotate2  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate2
          -o smtp_helo_name=domaintwo.com.br
          -o smtp_bind_address=173.111.111.2

main.cf

    Disable all other transport maps, i.e.: # transport_maps = xxxxx

    Enable dependent transport map (require postfix 2.7.x or later)

    sender_dependent_default_transport_maps = mysql:/etc/postfix/config/transport_random_dependent.cf

transport_random_dependent.cf

Example:

user = postfix
password = mypassword
dbname = postfixdb
hosts = localhost
query = SELECT transport FROM transport_random WHERE domain = '%d' AND status='1' ORDER BY RAND() LIMIT 1

Table transport_random

Column "transport" = rotate1, rotate2, rotate3, rotate4 (etc)
Column "domain" = sender domains (replaced by %d)
Column "status" = boolean (0 or 1) if is enabled the transport.

The instruction "RAND() LIMIT 1" is necessary only if you want to use random transports for the same domain.

In example, you want to send from mydomain.com from 3 different IPs.

Then, you create 3 transports (rotate1, rotate2 and rotate3) with 3 different IPs, then set at mysql lines:

transport = rotate1 | domain = mydomain.com
transport = rotate2 | domain = mydomain.com
transport = rotate3 | domain = mydomain.com

Then, when postfix will randomize three different transports (rotate one to three) to send this emails.

Моя мысль была следующей: МТА для отправки почты всегда использует все имеющиеся каналы, перебирая их случайным образом. В таком случае нет вопроса о переключении канала (смене настроек МТА) - есть вопрос использовать или не использовать данный канал. Если какой-то из каналов лёг, роутер должен сообщить МТА об этом, чтобы тот перестал его использовать. Так вот, если мой английский меня не подводит, кусок конфига приведённый выше как раз и намекает на возможность реализации данной схемы работы. Чтобы исключить транспорт (канал) из списка используемых нужно просто полю status в таблице transport_random присвоить значение 0. В идеале роутер по ssh с авторизацией по ключам заходит на хост с СУБД, которую использует МТА и дёргает SQL-скрипт. Достаточно элегантно? Понятно, что с AS не сравнится, но при данной структуре сети выглядит весьма не плохо :)

Всё выше сказанное - на правах "философских рассуждений" так как эксперементального стенда нет. Просто задача интересная. :)

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру