Exim4 forward for all unknown users
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Exim4 forward for all unknown users
Всем привет! Тут такое дело... В общем подскажите советом или решением?
Дело такое - сидел я до этого на сендмейле. Сейчас всю почтовую систему надо перенести на новый сервер. Заодно решил избавиться от этого бронтозавра в пользу exim'а.
Засада №1.
Есть в сендмыле такая опция, как LUSER_RELAY. Задаёт имя пользователя, на которого будут перенаправляться все письма, которые не нашли своего конечного получателя. Не получается у меня реализовать такое же в экзиме. Насколько почитал тут похожие вопросы, необходимо использовать механизм catch-all. Но я так и не понял, как всё это настроить. Причем мне не нужно, чтоб письма пересылались на другой сервер, мне нужно именно чтоб они складывались в почтовый ящик пользователя, скажем mailprocess.
Заранее спасибо, если кто что сможет посоветовать.
Дело такое - сидел я до этого на сендмейле. Сейчас всю почтовую систему надо перенести на новый сервер. Заодно решил избавиться от этого бронтозавра в пользу exim'а.
Засада №1.
Есть в сендмыле такая опция, как LUSER_RELAY. Задаёт имя пользователя, на которого будут перенаправляться все письма, которые не нашли своего конечного получателя. Не получается у меня реализовать такое же в экзиме. Насколько почитал тут похожие вопросы, необходимо использовать механизм catch-all. Но я так и не понял, как всё это настроить. Причем мне не нужно, чтоб письма пересылались на другой сервер, мне нужно именно чтоб они складывались в почтовый ящик пользователя, скажем mailprocess.
Заранее спасибо, если кто что сможет посоветовать.
Услуги хостинговой компании 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/
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: Exim4 forward for all unknown users
Незнаю, может и сработает: http://www.lissyara.su/?id=1214
Код: Выделить всё
unknown_username” - смысл соответствует названию опции
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Urgor
- лейтенант
- Сообщения: 669
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Re: Exim4 forward for all unknown users
Задаёт имя пользователя, на которого будут перенаправляться все письма
Код: Выделить всё
unknownuser:
driver = redirect
allow_fail
allow_defer
condition = ${if eq{} {${lookup mysql{SELECT home FROM users \
WHERE (id='${quote_mysql:$local_part@$domain}' OR \
id='${quote_mysql:@$domain}') AND \
active='Y'}}}{yes}{no}}
data = ящик@куда.слать
Последний раз редактировалось Urgor 2008-03-13 9:20:06, всего редактировалось 1 раз.
Власть в руках у чужаков, и ты им платишь дань...
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Re: Exim4 forward for all unknown users
Хм... Это опция используется вроде, когда не задано имя отправителя...dikens3 писал(а):Незнаю, может и сработает: http://www.lissyara.su/?id=1214Код: Выделить всё
unknown_username” - смысл соответствует названию опции
Код: Выделить всё
Когда exim создаёт адрес отправителя для локально сгенерированных сообщений, он использует форму:
<user name> <login@qualify_domain>
Например:
Zaphod Beeblebrox <zaphod@end.univ.example>
Имя пользователя получается из установки “ -F ” командной строки (если установлено), или, иначе, путём поиска вызвавшего пользователя “ getpwuid() ” и извлечения поля “gecos” из вхождения пароля. Если поле “gecos” содержит символ “&”, он заменяется на логин с первой буквой в верхнем регистре, как обычно во множестве операционных систем. Смотрите опцию “ gecos_name ” для способа приспособить обработку поля “gecos”. Опция “ unknown_username ” может использоваться для задания имени пользователя в случаях, когда в файле паролей нет вхождения.
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Re: Exim4 forward for all unknown users
О! Ок, попробую так. Спасибо!Urgor писал(а):Перед "mysqluser:"....Код: Выделить всё
unknownuser: driver = redirect allow_fail allow_defer condition = ${if eq{} {${lookup mysql{SELECT home FROM users \ WHERE (id='${quote_mysql:$local_part@$domain}' OR \ id='${quote_mysql:@$domain}') AND \ active='Y'}}}{yes}{no}} data = ящик@куда.слать
Правда пользователей я не в скуле храню, ну это вроде не особо проблема...
-
- проходил мимо
- Сообщения: 6
- Зарегистрирован: 2007-08-31 12:26:18
Re: Exim4 forward for all unknown users
Если ничего не напутал, то предложенный выше метод будет копировать абсолютно всю почту на указанный ящик, а автору нужно копировать лишь те, которые направленный для несуществующего аккаунта. Верно? Сам не так давно реализовал подобное у себя, чтобы не возникло случаев, что допустили ошибку в названии мыла, а переслать возможности нет.
Если я всё верно понял, то привожу пример из своего конфига(практически ничем не отличается от конфига лиссяры):
Если я всё верно понял, то привожу пример из своего конфига(практически ничем не отличается от конфига лиссяры):
Код: Выделить всё
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}'}}
dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}'}{YES}{NO}}
transport = dovecot_delivery
unknown_account:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:@$domain}'}}
- Urgor
- лейтенант
- Сообщения: 669
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Re: Exim4 forward for all unknown users
Нет не верно. Всю он будет копировать в этом случае:faust писал(а):Если ничего не напутал, то предложенный выше метод будет копировать абсолютно всю почту на указанный ящик, а автору нужно копировать лишь те, которые направленный для несуществующего аккаунта. Верно?
Код: Выделить всё
unknownuser:
driver = redirect
data = ящик@куда.слать
Код: Выделить всё
condition = ${if eq{} {${lookup mysql{SELECT home FROM users \
WHERE (id='${quote_mysql:$local_part@$domain}' OR \
id='${quote_mysql:@$domain}') AND \
active='Y'}}}{yes}{no}}
Власть в руках у чужаков, и ты им платишь дань...
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Re: Exim4 forward for all unknown users
Кстати, совсем забыл спросить. Если пользователей держать в скуле - можно ли будет тогда выборочно назначать им пересылку на другой сервер? У меня некоторым пользователем приходиться пересылать почту на сервер лотуса домино, а некоторые забирают по pop3. На данный момент у меня это всё реализуется через файл procmail. Тем пользователем, которым необходимо пересылка на лотусный сервак, я просто в домашнем каталоге, в файле .procmail указываю, на чьё имя пересылать. Если всех пользователей загнать в скуль - где тогда указывать, кому пересылать почту, а кому ожидать, пока не заберут по pop3 ?
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: Exim4 forward for all unknown users
Ну поле какое-нибудь завести?Если всех пользователей загнать в скуль - где тогда указывать, кому пересылать почту, а кому ожидать, пока не заберут по pop3 ?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Re: Exim4 forward for all unknown users
Хм... И по этому полю потом завести признак пересылать-не пересылать письма? А если ещё для какого пользователя потребуется какая-нить извращённая пересылка?dikens3 писал(а):Ну поле какое-нибудь завести?Если всех пользователей загнать в скуль - где тогда указывать, кому пересылать почту, а кому ожидать, пока не заберут по pop3 ?
Видимо, не судьба мне юзеров держать в скуле...
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: Exim4 forward for all unknown users
Одно поле может содержать все необходимые данные, в числовом,текстовом и т.п. виде, необязательно делать кучу полей. Сделай цифровое и по умолчанию 0. Если будет 1 - адрес для этого, 2 - для того, 3 - для сего и т.д. Или из одной буквы:kortes писал(а):Хм... И по этому полю потом завести признак пересылать-не пересылать письма? А если ещё для какого пользователя потребуется какая-нить извращённая пересылка?dikens3 писал(а):Ну поле какое-нибудь завести?Если всех пользователей загнать в скуль - где тогда указывать, кому пересылать почту, а кому ожидать, пока не заберут по pop3 ?
Видимо, не судьба мне юзеров держать в скуле...
Код: Выделить всё
active='Y'
active='S'
active='N'
active='P'
active='K'
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Urgor
- лейтенант
- Сообщения: 669
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Re: Exim4 forward for all unknown users
Можно, пересылайkortes писал(а):Если пользователей держать в скуле - можно ли будет тогда выборочно назначать им пересылку на другой сервер?
Вообще Exim весьма гибок. Можно реализовать любое решения, все зависит от твоих знаний и умений.
В твоем случае в базу надо создать доп. поле (ящик куда пересылать) и роутер (естессно до мусклделивери):
Код: Выделить всё
userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT userfwd FROM users \
WHERE (id='${quote_mysql:$local_part@$domain}' OR \
id='${quote_mysql:@$domain}') AND \
active='Y'}}
Пример в студию!А если ещё для какого пользователя потребуется какая-нить извращённая пересылка?
Власть в руках у чужаков, и ты им платишь дань...
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Re: Exim4 forward for all unknown users
Мдя... Ключево слово - умения и знания. Чем больше разбираешься, тем больше понимаешь, что ничего не знаешь. До сих пор не могу нормально разобраться в этих выражениях экзима.. Типа:Urgor писал(а): Можно, пересылай
Вообще Exim весьма гибок. Можно реализовать любое решения, все зависит от твоих знаний и умений.
Код: Выделить всё
${if eq{} {${lookup mysql{SELECT home FROM users \
WHERE (id='${quote_mysql:$local_part@$domain}' OR \
id='${quote_mysql:@$domain}') AND \
active='Y'}}}{yes}{no}}
Ещё не придумал.Пример в студию!А если ещё для какого пользователя потребуется какая-нить извращённая пересылка?
- Alex Keda
- стреляли...
- Сообщения: 35456
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Re: Exim4 forward for all unknown users
Ну вот пример..lissyara писал(а):а чё непонятного?
Код: Выделить всё
${if eq{} {${lookup mysql{SELECT home FROM users WHERE (id='${quote_mysql:$local_part@$domain}' OR id='${quote_mysql:@$domain}') AND \ active='Y'}}}{yes}{no}}
Последний раз редактировалось Alex Keda 2008-03-17 10:34:05, всего редактировалось 1 раз.
Причина: кнопачга [code] - для кого?!
Причина: кнопачга [code] - для кого?!
- Urgor
- лейтенант
- Сообщения: 669
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Re: Exim4 forward for all unknown users
Смысл становится кристально ясен после прочтения спец. доков. Напиример здесь лежит нужная часть руководства по эксиму в переводе Лиссяры. Странно, как не ознакомившись с литературой по настройке можно что-то настроить????
Власть в руках у чужаков, и ты им платишь дань...
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Re: Exim4 forward for all unknown users
О! До 11 части я ещё не успел дочитать. Спасибо!Urgor писал(а):Смысл становится кристально ясен после прочтения спец. доков. Напиример здесь лежит нужная часть руководства по эксиму в переводе Лиссяры.
Ммм... Для простенькой настройки вовсе не обязательно перелопачивать весь мануал. Как нистранно, но можно настроить использую конфигуратор exim4-config. Другой вопрос, что так можно настроить именно для решения простых задач...Urgor писал(а): Странно, как не ознакомившись с литературой по настройке можно что-то настроить????
В общем, спасибо ещё раз!
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Re: Exim4 forward for all unknown users
Народ, опять нужна ваша помощь. Пытаюсь сделать пересылку с ящика на другой ящик (который находиться на другом сервере). В конфиге экзима добавил вот такой роутер по совету Urgor'а:
поле userfwd у меня находиться в таблице mailbox базы данных exim. в мускуле в этом поле просто указал адрес, на который нужно пересылать.
судя по логу он просто игнорирует этот роутер.
это при том, что у пользователя test1@mydomain.ru в поле userfwd указан адрес test1@local.mydomain.ru
роутеры в конфиге указаны вот в таком порядке:
роутер smarthost нужен как раз для того, чтоб работала пересылка на local.mydomain.ru
подскажите, плиз, где копать?
Код: Выделить всё
userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT userfwd FROM exim.mailbox \
WHERE (userfwd='${quote_mysql:$local_part@$domain}' OR \
userfwd='${quote_mysql:@$domain}') AND \
active='1'}}
судя по логу он просто игнорирует этот роутер.
Код: Выделить всё
2008-03-24 13:33:16 1JdjzQ-0008Ou-Rm <= test@mydomain.ru H=([192.168.50.5]) [192.168.50.5] I=[192.168.0.129]:25 P=esmtpa A=auth_plain:te
st@mydomain.ru S=519 id=200803241331.50049.test@mydomain.ru from <test@mydomain.ru> for test1@mydomain.ru
2008-03-24 13:33:16 1JdjzQ-0008Ou-Rm => test1 <test1@mydomain.ru> R=dovecot_user T=dovecot_delivery
2008-03-24 13:33:16 1JdjzQ-0008Ou-Rm Completed
роутеры в конфиге указаны вот в таком порядке:
Код: Выделить всё
begin routers
smarthost_routes:
driver = manualroute
transport = remote_smtp
route_data = ${lookup{$domain}partial-lsearch{/etc/exim4/smarthosts}}
userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT userfwd FROM exim.mailbox \
WHERE (userfwd='${quote_mysql:$local_part@$domain}' OR \
userfwd='${quote_mysql:@$domain}') AND \
active='1'}}
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 `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}}
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
unknownuser:
driver = redirect
allow_fail
allow_defer
data = mailprocessing@mydomain.ru
подскажите, плиз, где копать?
- Alex Keda
- стреляли...
- Сообщения: 35456
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Re: Exim4 forward for all unknown users
в дебаге хорошо ковыряться, если что-то не работает. а тут всё работает, но не так, как хотелось бы....lissyara писал(а):в дебаге
- kortes
- рядовой
- Сообщения: 41
- Зарегистрирован: 2008-03-12 10:12:25
- Откуда: г. Астрахань
- Контактная информация:
Re: Exim4 forward for all unknown users
В общем пришлось специально сделать ошибку в синтаксисе команды, что увидеть работает она или нет.
Изменил роутер на такой:
Ошибка в скулевском запросе была... Учить и учить ещё мне скуль.
Изменил роутер на такой:
Код: Выделить всё
userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT userfwd FROM exim.mailbox \
WHERE (username='${quote_mysql:$local_part@$domain}' AND domain='${domain}')}}