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

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

Добавлено: 2011-01-09 0:18:48
100kg
всем привет
как запретить отправку писем пользователей к локальным доменам если они не прошли аутентификацию?
не нравится мне что любой может зателнетится и оформить письмо от любого ящика и отправить локальным пользователям,
но а с другой стороны так и должно быть нужно же как-то принимать письма от других MTA, кароче у меня тут пробел, обьясните плиз

ps
rfc не читал

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

Добавлено: 2011-01-09 0:43:23
xM

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

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

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

Добавлено: 2011-01-09 12:21:15
blade_007
Первым делом настроить аутентификацию.

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

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

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

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

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

Добавлено: 2011-01-09 13:55:00
dikens3
http://forum.ixbt.com/topic.cgi?id=7:26978
и при приёме проверяешь что не так.

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

Добавлено: 2011-01-09 14:11:19
xM
blade_007 писал(а): либо ДО этого правила в check_rcpt (или как у вас там)

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

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

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

Добавлено: 2011-01-09 15:00:59
100kg
спасибо работает :)

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

Добавлено: 2011-01-09 19:50:06
100kg
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) добавляется электронная подпись отправителя.
Сервер получателя берет публичный ключ отправителя и с помощью него проверяет информацию в хедере

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

Добавлено: 2011-01-10 17:27:09
100kg
и так 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