Всех приветствую! Ребят, стоит задача со старого сервера Exim переместить всех на новый сервер - внутренняя "организация Exchange" (когда всех пользователей переведут, данный сервер будет обновлён до более свежей версии ОС и самого Exim - сейчас стоит ASP Linux и Exim 4.72 - но не суть). Можно ли осуществить плавный перевод пользователей? т.е. с одним доменом чтобы работало два сервера: вижу это так - на сервер Exim из-вне приходит письмо: 1) если пользователь является локальным - письмо доставляется в его текущий ящик, 2) если пользователь отсутствует в локальной базе - пересылать письмо на ферму Exchange.
Как на Exchange сделать такую схему мы знаем - там создается специальный "коннектор", и если пользователь отсутствует в базе - письмо пересылается на сервер, указанный в "коннекторе".
Предполагаю, что это делается при помощи кастом-роутера, могли бы Вы помочь с его написанием? Если да, буду премного благодарен. Всех благ.
Exim и новый сервер
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- xM
- ст. лейтенант
- Сообщения: 1316
- Зарегистрирован: 2009-01-15 23:57:41
- Откуда: Königsberg
- Контактная информация:
-
- проходил мимо
- Сообщения: 8
- Зарегистрирован: 2015-09-17 15:40:30
Exim и новый сервер
Спасибо за подсказку, после прочтения составил такой роутер:
Код: Выделить всё
temp_manual_router:
driver = manualroute
transport = remote_smtp
route_list = example1.ru mail.example4.ru
У нас на экзиме несколько доменов example1.ru example2.ru example3.ru + релей на example4.ru (exchange), и такие роутеры:
Код: Выделить всё
begin routers
#запрещаем отправку писем со старых отключённых доменов
block_outgoing_mail_from_domain:
driver = redirect
domains = ! +local_domains
senders = *@lsearch;/etc/exim/blocked.domains
allow_fail = yes
data = :fail: You can not send emails from this mailbox, contact your support. (Rassilka pisem s dannogo yaschika zapreschena, obratites v OSPTK vashego filiala)
relay_to_our_domain:
driver = "manualroute"
route_data = ${lookup mysql{SELECT relay_name FROM mailertable WHERE domain='${domain}'}}
transport = remote_smtp
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT recipients FROM aliases WHERE local_part='${local_part}' AND domain='${domain}'}}
userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT recipients FROM userforward WHERE local_part='${local_part}' AND domain='${domain}'}}
#доставка писем локальным пользователям
mysqluser:
driver = accept
condition = ${if eq{} {${lookup mysql{SELECT home FROM users WHERE login='${local_part}' AND domain='${domain}' AND active='Y'}}}{no}{yes}}
transport = dovecot_delivery
#доставка на Exchange
temp_manual_router:
driver = manualroute
transport = remote_smtp
route_list = example1.ru mail.example4.ru
При таком раскладе получается:
1. Отправляем письма с exchange (адреса типа example4.ru) - письма доходят как до test1, так и до test2 так и на внешние адреса;
2. Отправляем письма с exim'овского адреса test1 на адреса внешние и test2 - на внешний адрес доставляется, на Exchange нет - Unroutable address;
3. Отправляем письмо извне на два адреса, test1@example1.ru (пользователь exim) и test2@example.ru (Exchange) : доставка осуществляется пользователю exim, для пользователя Exchange - Unroutable address.
Подскажите - в шары долблюсь, понять не могу. Если роутер поднять выше - то доставка на exim не осуществляется.
Отправлено спустя 42 минуты 2 секунды:
Правильно ли я понимаю, что нужно написать condition для этого роутера - поиск пользователя в локальной БД, если такого нет, то роутер запускается и выполняет пересылку письма?
- xM
- ст. лейтенант
- Сообщения: 1316
- Зарегистрирован: 2009-01-15 23:57:41
- Откуда: Königsberg
- Контактная информация:
Exim и новый сервер
У мну два последних роутера
smart_router исправьте исходя из ваших реалий.
В smart_smtp толко одна строчка типа
Он у меня отличается от remote_smtp ввиду того, что в последнем ещё и DKIM с PRVS делаются.
Отправлено спустя 13 минут 39 секунд:
Я у вас бегло взглянув не вижу ошибок в роутерах Exim.
Посмотрите, может у вас Exchange отшивает?
Либо тупо не срабатывает последний роутер в силу каких-то причин. Протрассируйте.
Код: Выделить всё
# --- local delivery
dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}{yes}{no}}
transport = dovecot_delivery
# --- delivery for Google hosted domains
smart_router:
driver = manualroute
# condition = ${if !def:h_x-spam-flag:}
# condition = ${if !def:h_x-exim-spam:}
domains = +ghs_domains
transport = smart_smtp
route_list = * aspmx.l.google.com:alt1.aspmx.l.google.com:alt2.aspmx.l.google.com:aspmx2.googlemail.com:aspmx2.googlemail.com
В smart_smtp толко одна строчка типа
Код: Выделить всё
smart_smtp:
driver = smtp
Отправлено спустя 13 минут 39 секунд:
Я у вас бегло взглянув не вижу ошибок в роутерах Exim.
Посмотрите, может у вас Exchange отшивает?
Либо тупо не срабатывает последний роутер в силу каких-то причин. Протрассируйте.
IT voodoo blog https://kostikov.co
-
- проходил мимо
- Сообщения: 8
- Зарегистрирован: 2015-09-17 15:40:30
Exim и новый сервер
УИИИИиииии! Спасибо, уважаемый xM, за помощь! Всё получилось, теперь письма ходят как надо. Сделал domainlist с доменами для миграции (выборка из sql - переезжать будут два домена), создал транспорт по аналогии с вашим smart_smtp (кстати в remote_smtp у меня тоже реализован DKIM), собрал всё в роутере и пошло.
- xM
- ст. лейтенант
- Сообщения: 1316
- Зарегистрирован: 2009-01-15 23:57:41
- Откуда: Königsberg
- Контактная информация:
Exim и новый сервер
IT voodoo blog https://kostikov.co