exim. роутер-> local_part ->транспорт
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- сержант
- Сообщения: 181
- Зарегистрирован: 2007-04-24 12:16:36
exim. роутер-> local_part ->транспорт
Привет. Каким образом можно передать из роутера значение local_part в транспорт, чтобы он был в виде $local_part@$domain?
зачем мне это нужно: есть почтовая система, где аккаунты хранятся в виде:
mail=bob@xxx uid=bob
необходимо завести в неё второй домен, тогда аккаунты будут в таком виде
(возможно я слишком идеализировал, но мне именно так представляется правильным ):
mail=bob@xxx uid=bob@xxx
mail=bob@yyy uid=bob@yyy
доступ к cyrus2.213 в таком виде работает. остаётся связать это с exim4.67
вообщем-то неважно какой из транспортов я использую, в любом случае
queued for cyrus_trans transport: local_part = bob
тщетные попытки роутера redirect где data=$local_part@$domain проваливаются:
router skipped: previously routed bob@xxx
и далее всё равно local_part = bob
если сделать вывод, что средствами роутера это не решить, то как в транспорте заменить local_part вообще не нахожу зацепок. использую такой:
cyrus_trans:
driver = smtp
protocol = lmtp
--skip--
Наставьте на путь правильный.
зачем мне это нужно: есть почтовая система, где аккаунты хранятся в виде:
mail=bob@xxx uid=bob
необходимо завести в неё второй домен, тогда аккаунты будут в таком виде
(возможно я слишком идеализировал, но мне именно так представляется правильным ):
mail=bob@xxx uid=bob@xxx
mail=bob@yyy uid=bob@yyy
доступ к cyrus2.213 в таком виде работает. остаётся связать это с exim4.67
вообщем-то неважно какой из транспортов я использую, в любом случае
queued for cyrus_trans transport: local_part = bob
тщетные попытки роутера redirect где data=$local_part@$domain проваливаются:
router skipped: previously routed bob@xxx
и далее всё равно local_part = bob
если сделать вывод, что средствами роутера это не решить, то как в транспорте заменить local_part вообще не нахожу зацепок. использую такой:
cyrus_trans:
driver = smtp
protocol = lmtp
--skip--
Наставьте на путь правильный.
Услуги хостинговой компании 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/
- Alex Keda
- стреляли...
- Сообщения: 35437
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- сержант
- Сообщения: 181
- Зарегистрирован: 2007-04-24 12:16:36
подумал.. ну учётная запись в cyrus понимает замены символов '@' c '%',lissyara писал(а):путь истинный - использовать вместо соббаки что-то иное.
делаем в redirect
data=$local_part%$domain и он зачем то входит в луп и начинает наращивать имя
как-то можно его ограничить?
или что-то другое имелось в виду?
- Alex Keda
- стреляли...
- Сообщения: 35437
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- сержант
- Сообщения: 181
- Зарегистрирован: 2007-04-24 12:16:36
вроде получается, но...
вообщем сделал так.
существующий пользователь остаётся
mail=bob@xxx uid=bob
а с новым доменом так
mail=bob@yyy uid=bob_yyy
теперь самое интересное в интересующих роутерах
тут я заменяю $local_part с bob на bob_yyy в почтовом адресе bob@yyy.
тогда не пройдёт через роутер cyrus_router
total_rewrite:
driver = redirect
allow_fail
allow_defer
domains = yyy
data = ${lookup ldapm {ldap:///dc=aaa?uid?sub?(&(mail=$local_part@yyy)(objectClass=inetOrgPerson))}}
этот роутер последний, проверка наличия почтового адреса в системе тут не даёт принимать письмо целиком, обрывает соединение на этапе rcpt to
cyrus_router:
driver = accept
transport = cyrus_trans
condition = ${lookup ldap {ldap:///dc=aaa?mail?sub?(&(objectClass=inetOrgPerson)(mail=${local_part}@${domain}))}{$value} fail}
cannot_route_message = no such mailbox here.
если я поставлю этот роутер перед cyrus_router (в нём уберу проверку на ящик), то письмо примется целиком, что мне совершенно ненужно
user_check_router:
no_verify
driver = redirect
data="${lookup ldap {ldap:///dc=aaa?mail?sub?(&(objectClass=inetOrgPerson)(mail=${local_part}@${domain}))}{$value} {:fail: no such mailbox here.}}"
allow_fail
как тут поступать? пока есть мысль делать на каждый домен cyrus_router.
Для существующих юзеров домена xxx оставляем старый
cyrus_router:
driver = accept
transport = cyrus_trans
добавляем только домен
domains= xxx
condition = ${lookup ldap {ldap:///dc=aaa?mail?sub?(&(objectClass=inetOrgPerson)(mail=${local_part}@${domain}))}{$value} fail}
cannot_route_message = no such mailbox here.
для новых пользователей домена yyy.
cyrus_router_yyy:
driver = accept
transport = cyrus_trans
domains= yyy
condition = ${lookup ldap {ldap:///dc=aaa?uid?sub?(&(objectClass=inetOrgPerson)(mail=${local_part}@${domain}))}{$value} fail}
cannot_route_message = no such mailbox here.
вот только сомневаюсь, будет ли проверка rcpt работать должным образом.
существующий пользователь остаётся
mail=bob@xxx uid=bob
а с новым доменом так
mail=bob@yyy uid=bob_yyy
теперь самое интересное в интересующих роутерах
тут я заменяю $local_part с bob на bob_yyy в почтовом адресе bob@yyy.
тогда не пройдёт через роутер cyrus_router
total_rewrite:
driver = redirect
allow_fail
allow_defer
domains = yyy
data = ${lookup ldapm {ldap:///dc=aaa?uid?sub?(&(mail=$local_part@yyy)(objectClass=inetOrgPerson))}}
этот роутер последний, проверка наличия почтового адреса в системе тут не даёт принимать письмо целиком, обрывает соединение на этапе rcpt to
cyrus_router:
driver = accept
transport = cyrus_trans
condition = ${lookup ldap {ldap:///dc=aaa?mail?sub?(&(objectClass=inetOrgPerson)(mail=${local_part}@${domain}))}{$value} fail}
cannot_route_message = no such mailbox here.
если я поставлю этот роутер перед cyrus_router (в нём уберу проверку на ящик), то письмо примется целиком, что мне совершенно ненужно
user_check_router:
no_verify
driver = redirect
data="${lookup ldap {ldap:///dc=aaa?mail?sub?(&(objectClass=inetOrgPerson)(mail=${local_part}@${domain}))}{$value} {:fail: no such mailbox here.}}"
allow_fail
как тут поступать? пока есть мысль делать на каждый домен cyrus_router.
Для существующих юзеров домена xxx оставляем старый
cyrus_router:
driver = accept
transport = cyrus_trans
добавляем только домен
domains= xxx
condition = ${lookup ldap {ldap:///dc=aaa?mail?sub?(&(objectClass=inetOrgPerson)(mail=${local_part}@${domain}))}{$value} fail}
cannot_route_message = no such mailbox here.
для новых пользователей домена yyy.
cyrus_router_yyy:
driver = accept
transport = cyrus_trans
domains= yyy
condition = ${lookup ldap {ldap:///dc=aaa?uid?sub?(&(objectClass=inetOrgPerson)(mail=${local_part}@${domain}))}{$value} fail}
cannot_route_message = no such mailbox here.
вот только сомневаюсь, будет ли проверка rcpt работать должным образом.
- Alex Keda
- стреляли...
- Сообщения: 35437
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- сержант
- Сообщения: 181
- Зарегистрирован: 2007-04-24 12:16:36
lissyara писал(а):будет
===========
берегите нервы и время окружающих - используйте кнопочкуКод: Выделить всё
[/quote] спасибо, обнадёжили