Всех приветствую! Есть задача - настроить второй mx для домена. Freebsd, sendmail.
Схема следующая: Работает первый mx. Вторая машина периодически проверяет, доступна ли первая.
Если первая упала, вторая начинает принимать почту для домена и складывать ее в очередь, чтобы позднее передать на первую.Хочется осуществить следующее: при приеме почты на mx2 принимать ее только для существующих пользователей и передавать первому по не стандартному порту. (списки пользователей синхронизируются)
Я делаю так: virtusertable:
user1@domain.ru user1@domain.ru
user2@domain.ru user2@domain.ru
@domain.ru error:nouser No such user hereТакже использую mailertable
domain.ru esmtp:mx1.domain.ruгде esmtp определен как использующий НЕ 25й порт.
relay-domains:
domain.ruПри такой конфигурации происходит следующее: при отправки письма несуществующему пользователю,
оно успешно принимается mx2 и уже mx1 посылает его подальше со словами, что такого пользователя нет.Если же я делаю так:
virtusertable:
user1@domain.ru localuser
user2@domain.ru localuser
@domain.ru error:nouser No such user hereгде также использую mailertable
domain.ru esmtp:mx1.domain.ru
где esmtp определен как использующий НЕ 25й порт.local-host-names
domain.ruПри этом почта для несуществующих ящиков не принимается. Отказ идет на этапе rcpt to: (т.е. то, что мне нужно)
Но почта доставляется локально, а не посылается через esmtp:mx1.domain.ruКак это побороть?
>Всех приветствую! Есть задача - настроить второй mx для домена. Freebsd, sendmail.
>
>Схема следующая: Работает первый mx. Вторая машина периодически проверяет, доступна ли первая.
>
>Если первая упала, вторая начинает принимать почту для домена и складывать ее
>в очередь, чтобы позднее передать на первую.
>
>Хочется осуществить следующее: при приеме почты на mx2 принимать ее только для
>существующих пользователей и передавать первому по не стандартному порту. (списки пользователей
>синхронизируются)
>
>Я делаю так: virtusertable:
>
>user1@domain.ru user1@domain.ru
>user2@domain.ru user2@domain.ru
>@domain.ru error:nouser No such user here
>
>Также использую mailertable
>domain.ru esmtp:mx1.domain.ru
>
>где esmtp определен как использующий НЕ 25й порт.
>
>relay-domains:
>domain.ru
>
>При такой конфигурации происходит следующее: при отправки письма несуществующему пользователю,
>оно успешно принимается mx2 и уже mx1 посылает его подальше со словами,
>что такого пользователя нет.
>
>Если же я делаю так:
>
>virtusertable:
>
>user1@domain.ru localuser
>user2@domain.ru localuser
>@domain.ru error:nouser No such user here
>
>где также использую mailertable
>domain.ru esmtp:mx1.domain.ru
>где esmtp определен как использующий НЕ 25й порт.
>
>local-host-names
>domain.ru
>
>При этом почта для несуществующих ящиков не принимается. Отказ идет на этапе
>rcpt to: (т.е. то, что мне нужно)
>Но почта доставляется локально, а не посылается через esmtp:mx1.domain.ru
>
>Как это побороть?
вообще-то не надо никаких virtusertable, все делается через mailertable
и НИ В КОЕМ СЛУЧА НЕЛЬЗЯ добавлять релейный домен в local-host-names(sendmail.cw) на secondary-mx, так как почта будет
считаться ЛОКАЛЬНОЙ и будет попытка распихать ее по mail-box'ам вместо
хранения в очереди пока не оживет PRIMARY-MX.
>вообще-то не надо никаких virtusertable, все делается через mailertable
>и НИ В КОЕМ СЛУЧА НЕЛЬЗЯ добавлять релейный домен в local-host-names(sendmail.cw) на
>secondary-mx, так как почта будет
>считаться ЛОКАЛЬНОЙ и будет попытка распихать ее по mail-box'ам вместо
>хранения в очереди пока не оживет PRIMARY-MX.
Спасибо :)
По моему, смысл 2,3,...-го MX имеет только для высоконагруженных почтовых систем и то в смысле балансировки нагрузки. Попытка применить его для небольшого почтового сервера не ведет ни к чему. Если пользователи на mx1 то они все равно не получат почту, пока mx1 не поднимется. Какая разница, в какой почтовой очереди лежит сообщение - у отправителя или на mx2 ?
Да и спама поубавится. Настройка secondary mx для нескольких доменов и проверкой существования пользователей в случае еще и их собственных почтовиков не очень рентабельна :-)
>
> По моему, смысл 2,3,...-го MX имеет только для высоконагруженных почтовых систем
>и то в смысле балансировки нагрузки. Попытка применить его для небольшого
>почтового сервера не ведет ни к чему. Если пользователи на mx1
>то они все равно не получат почту, пока mx1 не
>поднимется. Какая разница, в какой почтовой очереди лежит сообщение - у
>отправителя или на mx2 ?
>Да и спама поубавится. Настройка secondary mx для нескольких доменов и проверкой
>существования пользователей в случае еще и их собственных почтовиков не очень
>рентабельна :-)Это делается на тот случай, если первый mx будет недоступен более 5 дней.
(Мало ли что может случиться..)
>Это делается на тот случай, если первый mx будет недоступен более 5
>дней.
>(Мало ли что может случиться..)
Давайте подумаем, упал mx1 и почта легла на mx2. mx2 держит ее 5 дней, а mx1 так и не поднялся . Вопрос - где будет почта через 5 дней ?
>
>>вообще-то не надо никаких virtusertable, все делается через mailertable
>>и НИ В КОЕМ СЛУЧА НЕЛЬЗЯ добавлять релейный домен в local-host-names(sendmail.cw) на
>>secondary-mx, так как почта будет
>>считаться ЛОКАЛЬНОЙ и будет попытка распихать ее по mail-box'ам вместо
>>хранения в очереди пока не оживет PRIMARY-MX.
>
>
>Спасибо :)
define(`MYSMTP_MAILER_ARGS',`TCP $h 26')
mailertable:user1@domain.ru mysmtp:mx.domain.ru
user2@domain.ru mysmtp:mx.domain.ru
@domain.ru error:nouser No such user hereВсе-таки принимает и для всех других пользователей домена :(
Как запретить это с помощью mailertable?
>>
>>>вообще-то не надо никаких virtusertable, все делается через mailertable
>>>и НИ В КОЕМ СЛУЧА НЕЛЬЗЯ добавлять релейный домен в local-host-names(sendmail.cw) на
>>>secondary-mx, так как почта будет
>>>считаться ЛОКАЛЬНОЙ и будет попытка распихать ее по mail-box'ам вместо
>>>хранения в очереди пока не оживет PRIMARY-MX.
>>
>>
>>Спасибо :)
>
>
>define(`MYSMTP_MAILER_ARGS',`TCP $h 26')
>
>
>mailertable:
>
>user1@domain.ru mysmtp:mx.domain.ru
>user2@domain.ru mysmtp:mx.domain.ru
>@domain.ru error:nouser No such user here
>
>Все-таки принимает и для всех других пользователей домена :(
>Как запретить это с помощью mailertable?дык придумать как сделать проверку наличия пользователя
>
>дык придумать как сделать проверку наличия пользователя
Слегка построить кластер высоконадежный, затем слегка переписать sendmail на тему проверки юзера как-нибудь через ldap , только я боюсь что получится нечто типа mail.ru ,yahoo.com ну или gmail.com :-)Дешевле добиться стабильной работы mx1, авария на 5 дней нереальна.
>>
>>дык придумать как сделать проверку наличия пользователя
>
>
> Слегка построить кластер высоконадежный, затем слегка переписать sendmail на тему проверки
>юзера как-нибудь через ldap , только я боюсь что получится нечто
>типа mail.ru ,yahoo.com ну или gmail.com :-)
>
> Дешевле добиться стабильной работы mx1, авария на 5 дней нереальна.в жизни реально все, убеждаюсь в этом на фоне всяческих трагических
катастроф за последние несколько лет :(Про фашизм тоже сперва думали НЕРЕАЛЬНО. Про Югославию до сих пор 4/5
мира верит про концлагеря и жестокости которые, якобы славянское
население устроило...
В ОИЯИ к примеру была конкретная ситуация с потерей канала аж на две
недели, чуть DNS не протух и почта все это время на ripe лежала, они
были один из MX'ов.
>в жизни реально все, убеждаюсь в этом на фоне всяческих трагических
>катастроф за последние несколько лет :(Время восстановления магистралей РТкомм и Транстелеком 4 часа, иначе дают обход.
>недели, чуть DNS не протух и почта все это время на ripe
>лежала, они
>были один из MX'ов.Круто, и ripe у нее на побегушках :-) Максимум что я могу добиться от верхних провайдеров - это весьма ограниченный обьем спула для моей почтовой очереди, 5 дней туда не войдут :-(
А вообще вопрос не в mx , а в том что sendmail мало пригоден пока для _поставленной задачи_
>>в жизни реально все, убеждаюсь в этом на фоне всяческих трагических
>>катастроф за последние несколько лет :(
>
> Время восстановления магистралей РТкомм и Транстелеком 4 часа, иначе дают обход.
>в жизни всякое бывает...
>>недели, чуть DNS не протух и почта все это время на ripe
>>лежала, они
>>были один из MX'ов.
>
> Круто, и ripe у нее на побегушках :-) Максимум что яшутка понятна, это было очень давно, лет 10 назад, когда за массу
услуг денег не брали, только договоренности и гаранты, у нас гарантом
и просителем выступал CERN>могу добиться от верхних провайдеров - это весьма ограниченный обьем спула
>для моей почтовой очереди, 5 дней туда не войдут :-(это вопрос договоренности
> А вообще вопрос не в mx , а в том что
>sendmail мало пригоден пока для _поставленной задачи_на вкус и цвет...
>> А вообще вопрос не в mx , а в том что
>>sendmail мало пригоден пока для _поставленной задачи_
>
>на вкус и цвет...Вот весьма ограниченный вариант реализации данной схемы -
у нашины 2 интерфейса в разных IP-сетях, подключенных разными каналами,
оба MX смотрят туда. 2 сендмайла слушающих на разных IP. Ну и кому лучше будет при падении машины ? Хотя дешево, удобно и практично.
>>> А вообще вопрос не в mx , а в том что
>>>sendmail мало пригоден пока для _поставленной задачи_
>>
>>на вкус и цвет...
>
> Вот весьма ограниченный вариант реализации данной схемы -
> у нашины 2 интерфейса в разных IP-сетях, подключенных разными каналами,
> оба MX смотрят туда. 2 сендмайла слушающих на разных IP. Ну
>и кому лучше будет при падении машины ? Хотя дешево, удобно
>и практично.незатратно - да, но неудобно и непрактично два почтовика на одной машине,
еще и опасно
>дык придумать как сделать проверку наличия пользователяТак это нереально чтоли средствами самого sendmail? Я думал virtusertable прокатит..
>>дык придумать как сделать проверку наличия пользователя
>
>Так это нереально чтоли средствами самого sendmail? Я думал virtusertable прокатит..а он и прокатит, только если sendmail без ldap или sql, то тебе нужно
ПРИДУМЫВАТЬ как проверять на существование пользователей на secondary-mx.
Иначе каждого несуществующего пользователя каждый раз будешь вносить
в virtusertable
>а он и прокатит, только если sendmail без ldap или sql, то
>тебе нужно
>ПРИДУМЫВАТЬ как проверять на существование пользователей на secondary-mx.
> Иначе каждого несуществующего пользователя каждый раз будешь вносить
>в virtusertableтак у меня есть список СУЩЕСТВУЮЩИХ пользователей мх1
всех остальных запретить и все! Только как?virtusertable
@domain.ru error:nouser no such user hereу меня не работал в связке с mailertable
ок прикинем с sendmail-омнужно хранить копию пользователей на второй машине, потому что при падение первой определить есть ли такой пользователь или нет не получится
нужно описать какой то механизм который будет обслуживать очередь при падение первой машины к примеру 2 режима работы:
1) когда mx1 жив все то письмам что не можем доставить делать отлуп
2) сидеть и ждать и нечего не делать с очередью пока mx1 мертв
по мне проще сделать копию машины mx1 и пускать только тогда когда mx1 умрет, а как только mx1 оживет убивать mx2 и делать синхронизацию директорий с полученной почтой (MailDir очень в этом поможет)"кластера" -- это дорого, а тут вроде как 1 скриптом который на ведущую машину просто делает move с ведомой все обоходится....
ЗЫ: сам такого не дела, так что это токма идея.