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

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
osipen
рядовой
Сообщения: 38
Зарегистрирован: 2007-12-24 16:29:03

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

Непрочитанное сообщение osipen » 2007-12-25 10:46:03

Добрый день!
Мне нужно настроить 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

Хостинговая компания 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/

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

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

Непрочитанное сообщение Alex Keda » 2007-12-25 11:46:49

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

accept  authenticated = *
разрешаешь приём по наружнему интерфейсу
и после этого дени алл
Убей их всех! Бог потом рассортирует...

osipen
рядовой
Сообщения: 38
Зарегистрирован: 2007-12-24 16:29:03

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

Непрочитанное сообщение osipen » 2007-12-25 12:09:19

Понятно, а что значит "разрешаешь приём по наружнему интерфейсу", как это реализовать в конфиге. Спасибо!

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

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

Непрочитанное сообщение Alex Keda » 2007-12-25 12:19:10

эт значит АСЛ пишешь - типа если адрес интерфейса == наружному адресу, то проверяешь получателя и принимаешь.
получателя проверить не забудь - а то опенрелей сделаешь
Убей их всех! Бог потом рассортирует...

BlackPhantom
мл. сержант
Сообщения: 128
Зарегистрирован: 2007-11-02 11:34:10

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

Непрочитанное сообщение BlackPhantom » 2007-12-25 12:32:14

во первых блок acl_check_helo можешь вообще выкинуть, во-вторых мне кажется что это не полный конфиг.

osipen
рядовой
Сообщения: 38
Зарегистрирован: 2007-12-24 16:29:03

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

Непрочитанное сообщение osipen » 2007-12-25 13:05:39

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

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

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

Непрочитанное сообщение Alex Keda » 2007-12-25 14:06:28

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

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

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

Непрочитанное сообщение eyatsko » 2009-11-02 21:00:29

Вопрос можно? Как бы заставить Exim авторизовать пользователей и пропускать почту от серверов? Никак не ухвачу мысль..
eyatsko@ngs.ru

eyatsko@ngs.ru
проходил мимо

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

Непрочитанное сообщение eyatsko@ngs.ru » 2009-11-02 21:49:55

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

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

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

Непрочитанное сообщение Alex Keda » 2009-11-02 22:32:52

я тоже.
объясните нормально - чего вы хотите добиться
Убей их всех! Бог потом рассортирует...

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

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

Непрочитанное сообщение dikens3 » 2009-11-02 23:06:37

Свои пользователи определяются своей сетью. (Внутренними IP и/или аутентификацией)
С этим есть проблема?

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

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

Гость
проходил мимо

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. Разумеется, чтение документации мало что дает, в форумах тоже как-то "небогато"..
Она замечательно объясняет опции по отдельности, но не помогает собрать это все "в кучу",
т. е., для решения именно этой задачи..

Заранее благодарен Вам, господа,
Яцко Э. Г.
Последний раз редактировалось Laa 2009-11-03 15:42:50, всего редактировалось 1 раз.
Причина: Убедительная просьба юзать теги [code] при оформлении листингов.

Гость
проходил мимо

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", то, он, наверное, отправил бы?..

С уважением,
Яцко Э. Г.
Последний раз редактировалось Laa 2009-11-03 15:43:33, всего редактировалось 1 раз.
Причина: Убедительная просьба юзать теги [code] при оформлении листингов.

Гость
проходил мимо

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 с проверкой локального отправителя и локального получателя?

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

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

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

Непрочитанное сообщение Laa » 2009-11-03 15:45:03

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

Гость
проходил мимо

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 - не пойму, то ли радоваться, то ли печалиться.. :-)

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

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

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

Непрочитанное сообщение dikens3 » 2009-11-03 17:55:59

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


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

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

Непрочитанное сообщение dikens3 » 2009-11-03 18:20:23

Вообще определись - кто есть твои пользователи? Аутентификация? 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
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Гость
проходил мимо

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=* и вставить.. Но все равно, спасибо!
С уважением,
Яцко Э. Г.

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

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

Непрочитанное сообщение dikens3 » 2009-11-03 20:18:46

Гость писал(а):Ничего не понял из замечания относительно "нормального МТА" :-)
1. Правильно настроенный DNS: http://forum.ixbt.com/topic.cgi?id=7:26978
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

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

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

Непрочитанное сообщение dikens3 » 2009-11-03 21:44:50

Гость писал(а):Я подумал, можно сделать какой-то 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 - Это типа не релей
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

sad
ефрейтор
Сообщения: 54
Зарегистрирован: 2007-05-22 22:04:29
Контактная информация:

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

Непрочитанное сообщение sad » 2009-11-16 12:51:06

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

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

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

Непрочитанное сообщение dikens3 » 2009-11-16 13:37:24

sad писал(а):Правильно ли понимаю, что
accept authenticated = *, вот эти самые authenticated(проверка подлинности) определяются секцией authenticators,
которые в свою очередь могут для разных почтовых клиентов быть разные.
У кого как эта секция настроена? поделитесь конфигом? )
У лиса вот так в статье:
http://www.lissyara.su/?id=1173
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.