Страница 1 из 1
Проблемы с проверкой адреса
Добавлено: 2010-09-20 10:55:13
Breslavsky
Смысл такой. Есть внешний сервер - стоит в ДЦ (exim), есть внутренний сервер - находиться в офисе (hMailServer).
На внешнем стоит catchall всех сообщений на спец адрес catchall@domain.
Периодически внутренний сервер забирает с этого адреса почту и раскидывает между получателями (пользователи есть только на внутреннем сервере).
Пользователи забирают почту с внутреннего сервера.
Так же пользователи используют для отправки внутренний сервер, который через SMTP релей передает письма для отправки внешнему.
Так вот проблема. Приняв письмо удаленный сервер пытается проверить отправителя у внешнего сервера, а внешний говорит, что отправителя нет, т.к. его реально нет.
Ведь все пользователи только на внутреннем сервере, а на внешнем catchall.
Код: Выделить всё
SMTP error from remote mail server after RCPT TO:<nora_sn@mail.kamchatka.ru>: host smtp.kamchatka.ru [85.28.195.133]: 550-Verification failed for <hmel@domain> 550-Called: 77.220.178.160 550-Sent: RCPT TO:<hmel@domain> 550-Response: 550 Administrative prohibition 550 Sender verify failed
Вопрос. Как сделать так, что бы exim на внешнем сервере, всегда говорил что у него есть любой адрес.
Ну типа другой сервер спрашивает: у тебя есть blabla@blabla - а мой exim говорит, конечно!
Спасибо за помощь! Очень признателен!
Re: Проблемы с проверкой адреса
Добавлено: 2010-09-20 13:39:24
CrazyPilot
отключить verify recipient для писем от чужих доменов? Но тогда exim будет у вас принимать всю почту, а роутить её не сможет...
Имхо, надо идти другим путём. У меня по крону внешний сервак синхрит базу активных email адресов с внутреннего сервака и по этой базе решает, принимать письмо или нет.
Re: Проблемы с проверкой адреса
Добавлено: 2010-09-20 21:07:56
Breslavsky
Проблема в том, что если создавать ящики на внешнем эксиме, то эксим будет раскидывать сообщения по этим ящикам. А это не нужно.
Сейчас стоит действия для домена: все сообщения для ящиков которых не существует слать на catchall@domain.
Не ужели все таки нет такой фичи. Просто поставить заглушку, если проверка, всегда говори ДА.
Re: Проблемы с проверкой адреса
Добавлено: 2010-09-20 21:19:45
CrazyPilot
Я вам не предлагаю ящики создавать, достаточно проверки получателей по базе, в которой хранятся все активные email
а ля такой кондишн в acl_smtp_rcpt
Код: Выделить всё
deny message = "Sorry, no such user. Check recipient mail"
condition = ${if and{\
{\
eq{${lookup{$local_part@$domain}dbm{/usr/local/etc/exim/users.dbm}{$value}{deny}}}\
{deny}\
}\
{\
!match_domain{$sender_address_domain}{+local_domains}\
}\
{\
match_domain{$domain}{+local_domains}\
}\
}\
{yes}{no}}
Но это часть айсберга - вопрос в том, как у вас exim роутит письма. Если у вас catch all, то должен быть роутер, который всегда говорит accept, когда ему пихают email с вашего домена. Соответственно exim проверяет получателей именно по роутерам, и если нашел роутер, который говорит accept - проверка получателя пройдена. Вроде так, насколько я помню
exim настолько монстр, что наверно может даже кофе варить, так что я думаю все фичи там есть
В общем не мешало бы на ваш конфиг посмотреть acl + routers
Re: Проблемы с проверкой адреса
Добавлено: 2010-09-20 21:36:15
Breslavsky
Я прошу прощения. Может мы путаем. Проверку делает у моего эксима удаленный сервер, когда мой эксим передает тому серверу письмо. То есть как я понимаю, эта проверка называется обратная проверка отправителя. Смотрите что нашел:
В файле /work/usr/exim-4.68/etc/configure
Код: Выделить всё
domainlist local_domains = lsearch;/work/usr/exim-4.68/etc/multi-domains
/work/usr/exim-4.68/etc/multi-domains
Код: Выделить всё
7753333.ru:7753333.ru:catchall@7753333.ru:no
Видимо тут и настраивается действие для домена.
Все активные email хранятся по старинке в файле passwd.
Код: Выделить всё
acl_smtp_rcpt = acl_check_rcpt
acl_check_rcpt:
# Accept if the source is local SMTP (i.e. not over TCP/IP). We do this by
# testing for an empty sending host field.
deny senders = :
log_message = Sender adress is empty
accept hosts = :
require verify = recipient
# Deny unless the sender address can be verified.
#require verify = sender
catchall_for_domains:
driver = redirect
headers_add = X-redirected: yes
data = ${extract{2}{:}{${lookup{$domain}lsearch{/work/usr/exim-4.68/etc/multi-domains}}}}
file_transport = local_delivery
Прошу прощения за сумбур. Это все вырезки из конфига. Я просто не могу понять. Что в конфиге отвечает за такую проверку.
Re: Проблемы с проверкой адреса
Добавлено: 2010-09-20 21:43:28
Breslavsky
Проблема в том, что мы говорим именно про отправку писем, а не про прием.
Specifies access control lists for incoming SMTP mail - входящая почта (incoming). Как я понимаю ACL - это правила приема.
Re: Проблемы с проверкой адреса
Добавлено: 2010-09-20 22:04:12
CrazyPilot
Я понимаю, что у вас callout с чужого сервера не проходит. Ну и что, что удаленнный проверяет у вас отправителя на ваше письмо. Проверяет он как - подставляет адрес отправителя вам в получатели. Так что для вашего exim'a это выглядит так, как будто удалённый сервер шлет вам письмо. Только он (удаленный сервер) не идет дальше чем rcpt to: Если ваш exim сказал acepted - то проверка считается выполненной.
Покажите плз, конфиг (полный) роутеров и транспортов. Я пока не могу понять, как у вас внутренний почтарь почту забирает. Она у вас передается какому-то mda?
Ну и решение в лоб:
Код: Выделить всё
require verify = recipient
domains = !+local_domains
Это отключит проверку получателей для вашего домена, но не знаю насколько это true
У меня похожая схема работает несколько иначе, есть внутренний почтовик (exim), с этого почтовика есть vpn на сервак, где сидит "внешний" exim. Вся почта идет через внешний exim, то есть а ля smarthost. Так вот письма не задерживаются на внешнем серваке, внешний exim по vpn сливает письма внутреннему почтовику. Транспорт используется только smtp.
В любом случае, конфиг в студию плз.
Re: Проблемы с проверкой адреса
Добавлено: 2010-09-20 22:10:15
CrazyPilot
А вообще странный у вас catchall (если вы конечно не ломаете его сейчас, и это ваш):
Код: Выделить всё
gw# telnet mail.7753333.ru 25
Trying 77.220.178.160...
Connected to mail.7753333.ru.
Escape character is '^]'.
220 srv01.hitrg.com ESMTP Exim 4.68 Mon, 20 Sep 2010 23:08:05 +0400
helo mail.domain.ru
250 srv01.hitrg.com Hello mail.domain.ru [81.23.x.x]
mail from: postmaster@domain.ru
250 OK
rcpt to: test@7753333.ru
550 Administrative prohibition
421 Unexpected log failure, please try later
QUIT
221 srv01.hitrg.com closing connection
Connection closed by foreign host.
Re: Проблемы с проверкой адреса
Добавлено: 2010-09-20 22:20:17
Breslavsky
Решение в лоб не помогло. Спасибо за Вашу помощь и за советы.
Не стал выкладывать конфиг сюда. Посмотрите пожалуйста по ссылке.
Ничего понять не могу.
Re: Проблемы с проверкой адреса
Добавлено: 2010-09-20 22:46:06
CrazyPilot
Я тоже :-)
я не понимаю, как у вас роутинг происходит, не понимаю, как использовать redirect роутеры без указания redirct_router или transport'ов. Тупо следующий что ли вызывается роутер. Судя по конфигу - пользователи у вас таки заводятся на внешнем exim'е?
Покажите пару-тройку тестов по email адресам.
Пару по реальным, пару по несуществующим
Это вы такой конфиг состряпали? Или знакомый программист?

Re: Проблемы с проверкой адреса
Добавлено: 2010-09-20 22:58:35
Breslavsky
Нет я сам компилировал exim, потом на сервер нагонял ispmanager. Пользователи есть и на внешнем сервере и на внутреннем.
Сервер хостинга, на нем сидит несколько организаций. Кажется у меня вообще не работает обратная проверка отправителя.
-bash-3.00# ./exim -bt
some@makita-online.ru
catchall@makita-online.ru
<--
catchall@makita-online.ru
<--
catchall@makita-online.ru
<--
some@makita-online.ru
<--
some@makita-online.ru
router = localuser, transport = local_delivery