почтовые ящики на двух серверах

Здравствуйте все!
 
Имеется два почтовых сервера
1. Qmail у провайдера (mail.firma.ru)
2. Zimbra ZCS Open Source Edition внутри организации (mail1.firma.ru)
 
Вся существующая почта находится на сервере у провайдера (почта только для части сотрудников). 
Локальный сервер находится за Cisco FireWall
На Cisco прописан проброс портов на локальный сервер.
Имя сервера mail1.firma.ru

Задача в том, обеспечить всех сотрудников почтовыми ящиками, которые будут расположены на сервере zimbra в домене firma.ru
Во время тестового режима хочется, чтобы существующие ящики оставались на старом сервере. 
По моей просьбе провайдер создал дополнительную MX запись на своем DNS-сервере
Получилось так:
firma.ru.          A          NN.NNN.NN.NN
firma.ru.          MX       30       mail.firma.ru.
mail                   A       NN.NNN.NN.NN
NN.NN.NNN.NN.in-addr.arpa         PTR       mail.firma.ru.

mail1.firma.ru      A      MM.MMM.MMM.MMM
firma.ru.           MX        40   mail1.firma.ru.
MMM.MMM.MMM.MM.in-addr.arpa          PTR     mail1.firma.ru.

где NN.NNN.NN.NN - IP адрес провайдера

MMM.MMM.MMM.MM - внешний IP адрес нашей Cisco  

Идея была в том, что письмо на адрес, несуществующий на сервере провайдера будет отбрасываться его сервером и при выборе следующего приоритета MX будет доставляться на локальный сервер.
Но увы :(
Приходя на сервер провайдера QMail, письмо либо отбрасывается отправителю либо просто умирает на этом сервере, в зависимости от настроек QMail

Провайдер объясняет это так:

> Передача почты на следующий по приоритету MX почтовый сервер происходит в случае не возможности соединения с первым почтовым сервером (например в случае если сервер не отвечает по 25 порту, либо если сервер отвечает кодами ошибок "повторить позже" или кодом не доступности ).
> В данном случае почтовый сервер, на ошибку отсутствия пользователя, отвечает кодом "отбросить с ошибкой", так как это особенность любого почтового сервера, которые соответствует RFC. Если требуется чтобы на ошибку отсутствия пользователя сервер отвечал другим кодом, то тут потребуется переписывать исходных код почтового сервера что в нашем случае не возможно.
>

Теперь собственно мой вопрос.
Можно ли настроить Zimbra таким образом, чтобы она отвечала кодами ошибок "повторить позже" либо кодом недоступности в случае, если адреса получателя не существует на Zimbra? Тогда можно попробовать поменять приоритеты у MX записей и все будет OK.
Или может быть существует другой путь?
 Или все мои хотелки нереальны?





Комментарии

 1. Вы хотите, что-бы почта дублировалась?
2. Хотелки реальны, но не соответствуют RFC. Другими словами письма на некоторые сервера доходить не будут.
Предлагаю к зимбре, в ее ящики подключить ящики от Qmail. А Зимбра будет главной. И не пугайте  Cisco Firewall"ом - есть решения пострашнее фаервола :)

 1. Нет, как раз этого я не хочу. Вопрос в том, чтобы на сервере Qmail продолжали существовать некоторое время имеющиеся там почтовые ящики, а на зимбре можно было создавать новые и чтобы все они быди в одном домене firma.ru
2. Т.е. предлагается забирать почту с внешнего сервера? Это не совсем то, что надо. В этом случае сервер Qmail все равно должен получать почту и при этом он будет блокировать почту на  Зимбру из-за высшего приоритета  своей MX записи. Либо наоборот, если поменять приоритеты MX, Зимбра будет блокировать почту на Qmail и тогда нечего будет забирать из Qmail.

  
Такое возможно. Оставте МХ только для Zimbra, всю почту будет принимать она. А вот уже зимбру настроить так, чтобы она пересылала всю почту для несуществующих пользователей в Вашем домене на сервер Qmail. Только учтите, в этом случае вместо отброса писем для несуществующих пользователей, зимбра будет их все пересылать.
подскажите пожалуйства как это сделать ?
не могу никак раздуплить (
А что мешает попросить провайдера сделать запись в qmail для перенаправления всей непонятный почты на другой хост?

8.9 Как мне перенаправлять почту для неопознанных пользователей на другой хост?

 

Мне бы хотелось установить LUSER_RELAY, указывающий на bigbang.af.mil.

Ответ:

Поместите

 

| forward "$LOCAL"@bigbang.af.mil

в ~alias/.qmail-default.

А дальше уже зимбра будет ее разбирать. MX оставляете с большим приоритетом.
Единственный минус -  борьба со спамом.

>Можно ли настроить Zimbra таким образом, чтобы она отвечала кодами ошибок "повторить позже" либо кодом >недоступности в случае, если адреса получателя не существует на Zimbra?

Можно попробовать отвечать ошибкой 450 - так обычно отвечает в том числе и грейлистинг, при этом письма частенько уходят в другой mx.
В принципе отвечать можно любым кодом ошибки, каким вам захочется, сами гуглите при каком коде сервера -отправители будут пытаться отправить письма на другой mx (скорее всего каждый сервер будет вести себя по своему).
Делается примерно так (ZImbra 8.6):

открываем
/opt/zimbra/conf/zmconfigd/smtpd_recipient_restrictions.cf
добавляем в него строку
check_recipient_access lmdb:/opt/zimbra/conf/recipient_access

перед строкой reject_unlisted_recipient, т.е. до проверки существования пользователя в зимбре. (если пользователи в зимбре существуют, можно и сразу после этой строки, так будет более правильно, но пользователи обязательно! должны быть созданы в Zimbra, просто пометьте для себя, что до них почта не будет доходить)

создаем файлик
/opt/zimbra/conf/recipient_access
там пишем
user1@domain.com REJECT 450 Try again Later
user2@domain.com REJECT 450 Try again Later
и т.д.
Код ошибки "450 Try again Later" можете менять как вам хочеться. По идее в случае ошибки 45х сервер-отправитель должен пытаться отправить письмо на другой mx или позже.

А вообще я бы на вашем месте не заморачивался, ничего хорошего не получится, только время потратите на искуственно созданные проблемы. Если не хватает опыта в работе с зимброй, настройте тестовый сервер и "поиграйтесь", а потом смело переходите на новый.