проверка получателя в exim

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ashgdw
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-06-19 14:27:22
Контактная информация:

проверка получателя в exim

Непрочитанное сообщение ashgdw » 2008-03-25 18:10:41

В конфиге есть такая проверка:

Код: Выделить всё

accept domains = +local_domains
endpass
verify = recipient
Судя по документации, проверяется получатель принадлежащий к локальному домену. А откуда exim берет информацию о получателях??? Где в документации про это написано?

Делаю конфиг для пересылки входящей почты на другой хост. И у меня не проходит эту проверку. Конфиг дефолтный, только после nslookup роутера добавлен:

Код: Выделить всё

manualroute:
  driver = manualroute
  local_parts = lsearch;/usr/local/etc/exim/users.list
  domains =  +local_domains
  transport = remote_smtp
  route_list = 192.168.254.4
Спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: проверка получателя в exim

Непрочитанное сообщение dikens3 » 2008-03-25 18:47:07

А откуда exim берет информацию о получателях???
http://www.lissyara.su/?id=1239#39.31
Роутеры могут детектировать различие....
P.S. Роутеры этим занимаются.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

ashgdw
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-06-19 14:27:22
Контактная информация:

Re: проверка получателя в exim

Непрочитанное сообщение ashgdw » 2008-03-25 19:59:13

Ок, большое спасибо. :) Я так понял, получатель проверяется через роутер accept? Т.к. с manualroute такое не прокатило. :(

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: проверка получателя в exim

Непрочитанное сообщение dikens3 » 2008-03-26 0:05:19

Роутеры проверяются сверху вниз. Вообще есть debug (exim -bhc 192.168.x.x и т.д.)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

ashgdw
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-06-19 14:27:22
Контактная информация:

Re: проверка получателя в exim

Непрочитанное сообщение ashgdw » 2008-03-26 17:37:46

Это понятно. Не понятно, как в моем случае, с роутером manulroute делать проверку получателя. На ум приходит только создать вместо роутера manualroute соответствующий транспорт, который указать в роутере accept.

cyrus_user
сержант
Сообщения: 181
Зарегистрирован: 2007-04-24 12:16:36

Re: проверка получателя в exim

Непрочитанное сообщение cyrus_user » 2008-03-27 11:31:47

ashgdw писал(а):Это понятно. Не понятно, как в моем случае, с роутером manulroute делать проверку получателя. На ум приходит только создать вместо роутера manualroute соответствующий транспорт, который указать в роутере accept.
например добавить до вашего роутера manualroute, роутер redirect, где в data проверить наличие получателя. пример:

Код: Выделить всё

rcpt_check_router:
no_verify
driver = redirect
data  = "${lookup юзера где нам надо} {$local_part@$domain} {:fail: RCPT unknown}}"
В НЛО не верю, но верю, что где-то до сих пор вымирают динозавры, bsd, птеродактили, мамонты.

Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: проверка получателя в exim

Непрочитанное сообщение Laa » 2008-03-27 13:12:44

Здравствуйте.

Новый пост, но в тему.

Прошу прощения, но туплю и не могу оптимизировать два кондишена.

Код: Выделить всё

        accept domains          = +local_domains : +relay_to_domains
                verify          = recipient
                message         = Unknown account <$local_part@$domain>
                log_message     = Unknown account <$local_part@$domain>
                endpass

        drop    !verify         = recipient
                domains         = +local_domains : +relay_to_domains
                message         = Unknown account <$local_part@$domain>
                log_message     = Unknown account <$local_part@$domain>

все это внутри acl_check_rcpt, в самом конце. Ниже только посылание подальше.

Так вот, второй кондишен поставил потому что в некоторых случаях на несуществующие адреса вместо Unknown account выдавалось посылание подальше. Сделал второй кондишен и проблему поборол. Но, уверен, что не очень красиво поборол.

Посоветуйте как побороть красивее.
Заранее спасибо.
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: проверка получателя в exim

Непрочитанное сообщение dikens3 » 2008-03-27 13:45:24

Читать тут. А спасибо сюда написать.

P.S. Необходимо понять как работает endpass и всё станет нормально.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: проверка получателя в exim

Непрочитанное сообщение Laa » 2008-03-27 14:00:12

Теперь понял как работает endpass.

Говорил же что туплю... :twisted:

:P спасибо!
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

ashgdw
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-06-19 14:27:22
Контактная информация:

Re: проверка получателя в exim

Непрочитанное сообщение ashgdw » 2008-03-27 15:56:09

2 cyrus_user: спасибо за пример, как раз думал о подобном, возьму на заметку. :P

Если добавить звездочку в route_list, то как я понял, acl с проверкой получателя не срабатывает, в итоге проходят письма для любого получателя.

Если добавить опцию verify_recipient в роутер manualroute, то письма проходят только для тех, кто есть в списке, иначе срабатывает соответствующий ACL. Но без звездочки ACL срабатывает для любого получателя. В итоге конфиг рутера такой:

Код: Выделить всё

manualroute:
  driver = manualroute
  verify_recipient
  local_parts = lsearch;/usr/local/etc/exim/users.list
  domains =  +local_domains
  transport = remote_smtp
  route_list = * 192.168.254.4
Тоесть, получается, verify_recipient работает с ACL и со списком пользователей. Но если в route_list не указана звездочка, то получается он не работает со списком. Так? Я так понял, звездочка означает всем и для всех, но как она связана с verify_recipient???

ashgdw
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-06-19 14:27:22
Контактная информация:

Re: проверка получателя в exim

Непрочитанное сообщение ashgdw » 2008-03-29 19:51:06

cyrus_user писал(а):
ashgdw писал(а):Это понятно. Не понятно, как в моем случае, с роутером manulroute делать проверку получателя. На ум приходит только создать вместо роутера manualroute соответствующий транспорт, который указать в роутере accept.
например добавить до вашего роутера manualroute, роутер redirect, где в data проверить наличие получателя. пример:

Код: Выделить всё

rcpt_check_router:
no_verify
driver = redirect
data  = "${lookup юзера где нам надо} {$local_part@$domain} {:fail: RCPT unknown}}"
Я так понял, это для юзания БД, а у меня пользователи в файле типа passwd лежат.
В итоге остановился на проверке в acl, с роутером так и не смог разобраться. :(

Код: Выделить всё

accept domains = +local_domains
       endpass
       message = "In my mailserver not stored this user"
       condition = ${lookup{$local_part}lsearch{/usr/local/etc/exim/users.list}{yes
}{no}}

Across
проходил мимо

Re: проверка получателя в exim

Непрочитанное сообщение Across » 2014-08-27 18:25:31

Ребят, нужна помощь. В конфиге exim у меня следущее:

Код: Выделить всё

rcpt_check_router:
    driver = redirect
    allow_fail
    no_verify
    data = "${if eq{}{${lookup mysql{ MYSQL_USER }}}{:blackhole: Unknown local user!}{$local_part@$domain} }"
Строка MYSQL_USER имеет вид:

Код: Выделить всё

MYSQL_USER = SELECT distinct awm_accounts.mail_inc_login as login FROM awm_accounts INNER JOIN awm_domains ON awm_accounts.id_domain = awm_domains.id_domain WHERE  (awm_accounts.mail_inc_login = CONCAT('$local_part', '@', '$domain') OR awm_accounts.mail_inc_login = '$local_part') AND awm_domains.name = '$domain' AND awm_domains.is_internal = 1 AND awm_accounts.deleted = 0;
Если последний параметр awm_accounts.deleted = 0, то письмо доставляется получателю, если равен 1, то в лог exim'a увидим:

Код: Выделить всё

=> :blackhole: <test@localhost> R=rcpt_check_router
из секции rcpt_check_router конфига exim'a. Можно ли каким-то образом вставить в эту секцию правило для отправки письма отправителю?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35436
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: проверка получателя в exim

Непрочитанное сообщение Alex Keda » 2014-08-31 9:46:52

да
Убей их всех! Бог потом рассортирует...