Страница 1 из 1

Exim + smtp авторизация

Добавлено: 2007-12-25 10:46:03
osipen
Добрый день!
Мне нужно настроить smtp авторизацию, таким образом что бы не авторизованный пользователь не смог отсылать письма никуда. На данный момент у пользователя получается отправить письмо локально, то есть user1@test.ru (не авторизован) может послать письмо user2@test.ru нужно сделать так что бы не смог. За основу взял конфиг из Virtual Exim и http://www.lissyara.su/?id=1194

Что добавил то что убрал в тестовом режиме

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

domainlist local_domains = @ : 127.0.0.1
domainlist relay_to_domains = 127.0.0.1
hostlist   relay_from_hosts = 127.0.0.1

acl_smtp_rcpt = acl_check_rcpt

acl_smtp_data = acl_check_content

begin acl

acl_check_helo:

accept hosts = :

deny    message       = "HELO/EHLO require by SMTP RFC"
        condition     = ${if eq{$sender_helo_name}{}{yes}{no}}

accept


acl_check_rcpt:

  deny    message       = "HELO/EHLO require by SMTP RFC"
          condition     = ${if eq{$sender_helo_name}{}{yes}{no}}

  # Отрицайте, если адрес отправителя не может быть проверен
  require verify        = sender

  accept  authenticated = *

  control = submission/sender_retain
# Желаемый эффект можно получить если убрать этот блок но тогда перестанет приходить почта с других доменов 
  accept  domains       = +local_domains
          endpass
          message       = "In my mailserver not stored this user"
          verify        = recipient
  deny    local_parts   = ^.*[@%!/|] : ^\\.

  deny    message       = relay not permitted

acl_check_content:

 # Include Vexim specific rcpt ACLs
  .include /usr/local/etc/exim/vexim-acl-check-content.conf

# finally accept all the rest
  accept

Re: Exim + smtp авторизация

Добавлено: 2007-12-25 11:46:49
Alex Keda

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

accept  authenticated = *
разрешаешь приём по наружнему интерфейсу
и после этого дени алл

Re: Exim + smtp авторизация

Добавлено: 2007-12-25 12:09:19
osipen
Понятно, а что значит "разрешаешь приём по наружнему интерфейсу", как это реализовать в конфиге. Спасибо!

Re: Exim + smtp авторизация

Добавлено: 2007-12-25 12:19:10
Alex Keda
эт значит АСЛ пишешь - типа если адрес интерфейса == наружному адресу, то проверяешь получателя и принимаешь.
получателя проверить не забудь - а то опенрелей сделаешь

Re: Exim + smtp авторизация

Добавлено: 2007-12-25 12:32:14
BlackPhantom
во первых блок acl_check_helo можешь вообще выкинуть, во-вторых мне кажется что это не полный конфиг.

Re: Exim + smtp авторизация

Добавлено: 2007-12-25 13:05:39
osipen
Извините за наглость, но можно показать на примере для большего понимания. Я просто не силен в синтексе exim'a. А логику я понял. Да конфиг не полный, просто я привел то что у меня отвечает за авторизацию.

Re: Exim + smtp авторизация

Добавлено: 2007-12-25 14:06:28
Alex Keda
osipen писал(а):Извините за наглость, но можно показать на примере для большего понимания. Я просто не силен в синтексе exim'a. А логику я понял. Да конфиг не полный, просто я привел то что у меня отвечает за авторизацию.
на сайте, есть статья exim+exchange - там подобных примеров пачка...
плюс, на сайте же, есть переведённая документация в соответствующем разделе.
Там тоже масса примеров.

Re: Exim + smtp авторизация

Добавлено: 2009-11-02 21:00:29
eyatsko
Вопрос можно? Как бы заставить Exim авторизовать пользователей и пропускать почту от серверов? Никак не ухвачу мысль..
eyatsko@ngs.ru

Re: Exim + smtp авторизация

Добавлено: 2009-11-02 21:49:55
eyatsko@ngs.ru
Поясню: смысл в том, чтобы аутентификация должна быть ОБЯЗАТЕЛЬНОЙ для пользователей, и необязательной для других серверов. Как-то можно это разграничить? Дело в том, что я никак не могу придумать признака(условия), чтобы отличить MUA/MTA друг от друга. Тем более, чтобы прописать это в конфиге Exim. Либо легальные SMTP-сервера начинают отсекаться, либо она не обязательна. А для пользователей из Интернет - хотелось бы, чтобы от них никакие сообщения без пароля (пусть даже без plain) не пропускались. Я попробовал разичные "рецепты", ни один не работает данным способом. Подскажите, пожалуйста? Вот сюда: eyatsko@ngs.ru :-)
С уважением,
Яцко Э. Г.

Re: Exim + smtp авторизация

Добавлено: 2009-11-02 22:32:52
Alex Keda
я тоже.
объясните нормально - чего вы хотите добиться

Re: Exim + smtp авторизация

Добавлено: 2009-11-02 23:06:37
dikens3
Свои пользователи определяются своей сетью. (Внутренними IP и/или аутентификацией)
С этим есть проблема?

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

  deny  !authenticated = *
        hosts = моя сеть.
А вот если пользователи идут снаружи, тогда надо много чего и одним словом не опишешь. Нужно точно понимать что делаешь и как работает МТА.

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 10:32:40
Гость
Добрый день! Именно! Для пользователей, находящихся снаружи по отношению к моей локальной сети. У меня есть такие,
и очень важно пропускать их только после ОБЯЗАТЕЛЬНОЙ авторизации. Сейчас у меня: могу поставить, могу убрать авторизацию -
Exim пропускает. Если начинаю вставлять во все ACCEPT'ы `authenticated = * ' - другие серверы при попытке связи с моим Exim
начинают получать RCPT Reject. Идея в том, чтобы отделить, как говорится, мух от котлет - пользователям (MUA) одна обработка
приема сообщений, серверам (MTA) - совершенно другая. Об этом и была речь.

Смысл в том, чтобы если пользователь, если это именно пользователь, а не другой SMTP-сервер, получал нечто вроде:

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

~# telnet smtp.ngs.ru 25
Trying 195.93.186.193...
Connected to mail.ngs.ru.
Escape character is '^]'.
220 ***********************
helo runoguy.ru
250 smtp.ngs.ru
mail from: eyatsko@ngs.ru
250 2.1.0 Ok
rcpt to: oyatsko@ngs.ru
553 5.7.1 <eyatsko@ngs.ru>: Sender address rejected: not logged in
421 4.4.2 smtp.ngs.ru Error: timeout exceeded
Connection closed by foreign host.
~#
Но при этом чтобы почта от других MTA не отсекалась с подобной ошибкой.

Едея проверять, является $sender_host_address MX-записью для $sender_domain, сразу скажу, несостоятельна,
так как тот же Новосибирский почтовый сервер NGS:
------------------------------------------------------------------------------

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

~# nslookup -q=mx ngs.ru
Server:         80.251.128.210
Address:        80.251.128.210#53

Non-authoritative answer:
ngs.ru  mail exchanger = 5 imx5.ngs.ru.

Authoritative answers can be found from:
ngs.ru  nameserver = ns.intranet.ru.
ngs.ru  nameserver = ns1.intranet.ru.
imx5.ngs.ru     internet address = 195.93.186.194
ns.intranet.ru  internet address = 195.93.187.26
ns1.intranet.ru internet address = 195.93.186.186
~#
------------------------------------------------------------------------------
А принимаю я почту от smtpoutgoing1.ngs.ru...smtpoutgoing9.ngs.ru, которые:
------------------------------------------------------------------------------

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

~# nslookup smtpoutgoing1.ngs.ru
Server:         80.251.128.210
Address:        80.251.128.210#53

Non-authoritative answer:
smtpoutgoing1.ngs.ru    canonical name = 404.ngs.ru.
404.ngs.ru      canonical name = webcluster.ngs.ru.
Name:   webcluster.ngs.ru
Address: 195.93.187.1...195.93.187.9
~#
------------------------------------------------------------------------------
Это большой кластер, и связь с ним терять не хотелось бы...
В общем, буду вам ОЧЕНЬ ПРИЗНАТЕЛЕН, если подскажете идею :-).

P. s. Разумеется, чтение документации мало что дает, в форумах тоже как-то "небогато"..
Она замечательно объясняет опции по отдельности, но не помогает собрать это все "в кучу",
т. е., для решения именно этой задачи..

Заранее благодарен Вам, господа,
Яцко Э. Г.

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 10:42:40
Гость
Это снова я.
В общем, есть некая идея, только я пока ее оформить не могу никак до конца в голове..
Может, проверять, чьего домена sender? И, если мой - то делать примерно так, как предлагаете
вы, dikens (простите, не знаю вашего имени):

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

 
deny  !authenticated = *
         hosts = моя сеть.
С НГСом тоже не все так просто. Они, вероятно, принимают пользовательские запросы, на один из серверов,
который просто всех "отшивает", если не авторизован, но он не занимается связями с внешним миром:
------------------------------------------------------------------------------

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

~# nslookup smtp.ngs.ru
Server:         80.251.128.210
Address:        80.251.128.210#53

Non-authoritative answer:
smtp.ngs.ru     canonical name = mail.ngs.ru.
Name:   mail.ngs.ru
Address: 195.93.186.193
~#
------------------------------------------------------------------------------
Этим как раз занимаются другие серверы, а смычка между "этим" и "теми" - она, вероятно, без
авторизации. Вот, сеанс моего telnet-сеанса с их MX (обычное HELO "прокатило"):
------------------------------------------------------------------------------

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

~# telnet imx5.ngs.ru 25
Trying 195.93.186.194...
Connected to imx5.ngs.ru.
Escape character is '^]'.
helo srvgate-msk.runoguy.ru
503 5.5.0 Improper use of SMTP command pipelining
220 ***********************
helo srvgate-msk.runoguy.ru
250 imx5.ngs.ru
mail from: <eyatsko@runoguy.ru>
250 2.0.0 OK
rcpt to: <oyatsko@ngs.ru>
250 2.0.0 OK
data
354 Input data. End with CRLF.CRLF
Helloooooo!!!!!!
.
450 4.7.1 <DATA>: Data command rejected: Policy violation. Greylisting.
Connection closed by foreign host.
~# 
------------------------------------------------------------------------------
Я думаю, если б не это: "Greylisting", то, он, наверное, отправил бы?..

С уважением,
Яцко Э. Г.

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 11:47:08
Гость
Снова я.
Есть еще информация к размышлению :-)
Убрал, как советовали, локальные адреса из relay_from_hosts перечень локальных адресов:

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

# hostlist   relay_from_hosts = 127.0.0.1 : 172.16.0.0/12
hostlist   relay_from_hosts = 127.0.0.1
Стал говорить "Relay is not permitted!" Настроил Thunderbird на аутентификацию без шифрования. Вроде бы и внешняя почта ходит, и своих не пускает без пароля. Но осталось две проблемы. Первая:

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

Nov  3 11:12:54 srvgate-msk exim[28561]: auth_plain authenticator failed for it-sysadm01.domain.runoguy.ru [172.31.77.2]: 535 Incorrect authentication data (set_id=eyatsko@runoguy.ru)
Nov  3 11:12:54 srvgate-msk exim[28561]: auth_plain authenticator failed for it-sysadm01.domain.runoguy.ru [172.31.77.2]: 535 Incorrect authentication data (set_id=eyatsko@runoguy.ru)
Но все-таки отправляет. Если пароль не указать - дает ошибку.

Вторая: от локального пользователя к локальному пользователю (что я ранее и тестировал), ходит, и пароля не спрашивает. Полагаю, нужен DENY с проверкой локального отправителя и локального получателя?

С уважением,
Яцко Э. Г.

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 15:45:03
Laa
Первая ваша проблема -- не правильная авторизация. Пароль может не так ввели или логин. Проверяйте.

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 17:46:32
Гость
Laa писал(а):Первая ваша проблема -- не правильная авторизация. Пароль может не так ввели или логин. Проверяйте.
Было:

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

${lookup mysql{SELECT username FROM users WHERE username='${quote_mysql:[b]$1[/b]}' AND password='${quote_mysql:[b]$2[/b]}' AND active='Y'}{yes}{no}}
Стало:

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

${lookup mysql{SELECT username FROM users WHERE username='${quote_mysql:[b]$2[/b]}' AND password='${quote_mysql:[b]$3[/b]}' AND active='Y'}{yes}{no}}
Теперь эти ошибки ушли, но появилось следующее, что мне не очень по душе:

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

Nov  3 17:41:19 srvgate-msk exim[34559]: 1N5KZT-0008zP-3y <= "eyatsko@runoguy.ru"@runoguy.ru H=it-sysadm01.domain.runoguy.ru [172.31.77.2] P=esmtpa A=auth_plain:eyatsko@runoguy.ru S=620 id=4AF0410E.7080906@runoguy.ru from <eyatsko@runoguy.ru> for eyatsko@runoguy.ru
Я так понимаю, все проходит, но вот это вот: "eyatsko@runoguy.ru"@runoguy.ru - не пойму, то ли радоваться, то ли печалиться.. :-)

С уважением,
Яцко Э. Г.

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 17:55:59
dikens3

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 18:14:51
Гость
СПАСИБО! :-)

С уважением,
Яцко Э. Г.

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 18:20:23
dikens3
Вообще определись - кто есть твои пользователи? Аутентификация? IP-Адреса? и т.д.
Как подключение MUA из внешнего мира отличить от MTA без аутентификации?

Порядок действий при подключениях из внешнего мира (не из твоей сети) примерно следующий:
1. Принимаем от СВОИХ (аутентифицированных) для нашего домена.
2. Принимаем от СВОИХ (аутентифицированных) для внешнего мира.
(1 и 2 можно объединить, если так удобнее)
3. Всевозможные проверки и блокировка по разным условиях в HELO,MAIL FROM, HOST и т.п.
4. Прием почту от всех для своего домена.

По пункту 3 есть прилепленная тема, там есть FAQ как должен быть настроен нормальный MTA (например иметь MX запись - тебе это не подходит, у вас админы кривые и не утруждают себя такими мелочами, как настройка нормально сервера)

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

# Принимаем аутентифицированных для нашего домена
  accept    authenticated = *
            domains       = +local_domains
            endpass
            message       = "Unknown user"
            verify        = recipient

# Принимаем аутентифицированных для внешних доменов
  accept    authenticated = *
            !domains       = +local_domains
            endpass
            verify        = recipient/callout=20s,defer_ok

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 20:06:31
Гость
Нет, если я начинаю в эти самые ACCEPT'ы вставлять athenticated= * - "отваливаются" внешние серверы MTA. Или вы имели ввиду, добавить еще дополнительные ACCEPT'ы помимо аналогичных, уже имеющихся в конфигурации?

P.s. Ничего не понял из замечания относительно "нормального МТА" :-)

С уважением,
Яцко Э. Г.

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 20:09:04
Гость
Но опять же, конфликтовать будут. Я подумал, можно сделать какой-то DENY с condition с проверкой домена отправителя и вот там эту самую authenticated=* и вставить.. Но все равно, спасибо!
С уважением,
Яцко Э. Г.

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 20:18:46
dikens3
Гость писал(а):Ничего не понял из замечания относительно "нормального МТА" :-)
1. Правильно настроенный DNS: http://forum.ixbt.com/topic.cgi?id=7:26978

Re: Exim + smtp авторизация

Добавлено: 2009-11-03 21:44:50
dikens3
Гость писал(а):Я подумал, можно сделать какой-то DENY с condition с проверкой домена отправителя и вот там эту самую authenticated=* и вставить.
Было бы здорово. если бы это работало. Проверил чей-то домен, и ладно.

Вот спамер подставит @mail.ru и что? Он реально существует. Принимаем от него. В этом и весь смысл борьбы со спамом. Не все проверки возможны.

Осознайте смысл и назначение почтового сервера.
Почтовый сервер, как правило (далее пункт 1), ОБСЛУЖИВАЕТ СВОЙ ДОМЕН(Ы), для которого он обязан принимать почту без аутентификации.
Почтовый сервер предназначен для отправки почтовых сообщений:
1. Сразу в папку пользователю - передаёт другому процессу. (dovecot)
2. Другому серверу (relay)

Следовательно из вышеописанного, правило exim выглядит так:

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

accept - Т.е. принимать всё и от всех.
Далее начинаем понимать, что надо определяться с некоторыми вещами (пункты 1 и 2). Если Relay нам не нужен, тогда добавляем соответствующее условие и получаем:

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

# Принимаем письма для нашего домена
  accept    domains       = +local_domains
            endpass
            message       = "Unknown user"
            verify        = recipient

  deny      message - Это типа не релей
Далее начинам осознавать всю проблему. Спамеры начинают слать спам используя всевозможные механизмы (подделку адресов, хостов, фальшивые почтовые сервера, баги, вирусы, продажных или непутевых админов и т.д.)
Админы начинают придумывать защиту от спама для улучшения качества сервиса SMTP. Появляются рекомендации - типа описанных выше настроек DNS.
Также появляется множество способов защиты от спама, но в общем случае это всего-лишь дополнение в правила описанные выше:

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

Своих пользователей лучше определить и исключить из проверок на спам. Т.е. ненужно их блокировать.
Всякие проверки на спам и блокировкой или нет, по желанию.

# Принимаем письма для нашего домена
  accept    domains       = +local_domains
            endpass
            message       = "Unknown user"
            verify        = recipient

  deny      message - Это типа не релей

Re: Exim + smtp авторизация

Добавлено: 2009-11-16 12:51:06
sad
Правильно ли понимаю, что
accept authenticated = *, вот эти самые authenticated(проверка подлинности) определяются секцией authenticators,
которые в свою очередь могут для разных почтовых клиентов быть разные.
У кого как эта секция настроена? поделитесь конфигом? )

Re: Exim + smtp авторизация

Добавлено: 2009-11-16 13:37:24
dikens3
sad писал(а):Правильно ли понимаю, что
accept authenticated = *, вот эти самые authenticated(проверка подлинности) определяются секцией authenticators,
которые в свою очередь могут для разных почтовых клиентов быть разные.
У кого как эта секция настроена? поделитесь конфигом? )
У лиса вот так в статье:
http://www.lissyara.su/?id=1173