аутентификация пользователей

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
100kg
ст. сержант
Сообщения: 393
Зарегистрирован: 2006-05-18 14:01:32

аутентификация пользователей

Непрочитанное сообщение 100kg » 2011-01-09 0:18:48

всем привет
как запретить отправку писем пользователей к локальным доменам если они не прошли аутентификацию?
не нравится мне что любой может зателнетится и оформить письмо от любого ящика и отправить локальным пользователям,
но а с другой стороны так и должно быть нужно же как-то принимать письма от других MTA, кароче у меня тут пробел, обьясните плиз

ps
rfc не читал

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1220
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Re: аутентификация пользователей

Непрочитанное сообщение xM » 2011-01-09 0:43:23

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

  # запрет отправки от наших доменов без аутентификации
  deny   message        = Authenification need to relay.
         hosts          = !127.0.0.1 : !localhost : *
         domains        = +local_domains
         sender_domains = +local_domains
IT voodoo blog https://kostikov.co

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: аутентификация пользователей

Непрочитанное сообщение blade_007 » 2011-01-09 12:21:15

Первым делом настроить аутентификацию.

Далее в вышеприведенную конструкцию добавить
!authenticated = *

либо ДО этого правила в check_rcpt (или как у вас там)

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

accept 
logwrite = auth = $auth1, host = $sender_host_name [$sender_host_address]
authenticated = *

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

Re: аутентификация пользователей

Непрочитанное сообщение dikens3 » 2011-01-09 13:55:00

http://forum.ixbt.com/topic.cgi?id=7:26978
и при приёме проверяешь что не так.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1220
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Re: аутентификация пользователей

Непрочитанное сообщение xM » 2011-01-09 14:11:19

blade_007 писал(а): либо ДО этого правила в check_rcpt (или как у вас там)

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

accept 
logwrite = auth = $auth1, host = $sender_host_name [$sender_host_address]
authenticated = *
Да-да. Наверное, лучше именно так. Собственно, у меня так и сделано.
Забыл приписать.
IT voodoo blog https://kostikov.co

100kg
ст. сержант
Сообщения: 393
Зарегистрирован: 2006-05-18 14:01:32

Re: аутентификация пользователей

Непрочитанное сообщение 100kg » 2011-01-09 15:00:59

спасибо работает :)

100kg
ст. сержант
Сообщения: 393
Зарегистрирован: 2006-05-18 14:01:32

Re: аутентификация пользователей

Непрочитанное сообщение 100kg » 2011-01-09 19:50:06

acl работает только для локальных пользователей,
нужно прикручивать spf, спасибо dikens3

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

По поводу проверки валидности отправителя через DNS.

В классическом SMTP этого сделать нельзя.
То есть если вы почтовый сервер и вам пришло письмо с обратным адресом masha@masha.ru с хоста petya.ru вы должны безропотно это письмо принять. (я сейчас говорю только о несоответствии имен).

Однако в связи с большим количеством спама было предложено решение, оно называется SPF.
Суть кратко в следующем: в DNS отправителя вносится запись, в которой содержится список хостов, с которых следует принимать почту.
Например:
Код
rakul@tycoon:~/rage$ host -t txt mail.ru
mail.ru descriptive text "v=spf1 ip4:194.67.57.0/24 ip4:194.67.23.0/24 ip4:194.67.45.0/24 ip4:195.239.211.0/24 ip4:194.186.55.0/24 ip4:195.239.174.0/24 ip4:94.100.176.0/20 ~all"

Это говорит нам о том, что принимать почту с обратным адресом @mail.ru можно только если она пришла к вам с хостов
194.67.57.0/24 194.67.23.0/24 194.67.45.0/24 195.239.211.0/24 194.186.55.0/24 195.239.174.0/24 94.100.176.0/20

по поводу «~all» в конце:
-all — принимать ТОЛЬКО с этих хостов
~all — рекомендуется принимать только с этих адресов
?all — на spf можно не обращать внимание

SPF в exim
Об SPF в wikipedia

После нескольких лет существования SPF выяснилось, что технология не безгрешна и есть ситуации, в которых она дает сбои. Например, когда почта переадресовывается с одного сервера на другой.
В том числе таким образом по SPF отрезается часть рассылок mail.ru.
Для обработки таких ситуаций была разработана надстройка — технология SRS.

Также существует механизм проверки валидности отправителя DKIM.
Он работает следующим образом: в заголовки письма (хедер DKIM-Signature) добавляется электронная подпись отправителя.
Сервер получателя берет публичный ключ отправителя и с помощью него проверяет информацию в хедере

100kg
ст. сержант
Сообщения: 393
Зарегистрирован: 2006-05-18 14:01:32

Re: аутентификация пользователей

Непрочитанное сообщение 100kg » 2011-01-10 17:27:09

и так exim был собран без spf, не хотел пересобирать и решил прикрутить spf с помощью perl скрипта
libmail-spf-query-perl, ну и добавил acl

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

deny
    message     = [SPF] $sender_host_address is not allowed to send mail \
                  from $sender_address_domain.
    log_message = SPF check failed.
    set acl_m9  = -ipv4=$sender_host_address \
                  -sender=$sender_address \
                  -helo=$sender_helo_name
    set acl_m9  = ${run{/usr/bin/spfquery $acl_m9}}
    condition   = ${if eq {$runrc}{1}{true}{false}}
у себя в условие вместо 1 я поставил 2, в самом скрипте я нашел возвращаемые значения, вообщем тут нужно поиграться, проверял на примере mail.ru, работает :), только вот бы стандартизировать этот spf, а так от него нет большого толка, например yahoo не имеет этих записей в dns