URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 3595
[ Назад ]

Исходное сообщение
"Exim и внешние Email"

Отправлено osipen , 22-Дек-07 15:30 
Значит задача такая. Имеем MTA Exim, нужно сделать, что бы письма приходили с внешних email. Но при это должна работать авторизация пользователей. Проблема такая:
domainlist local_domains = 127.0.0.1 (то почта ходит только локально, не приходят письма с внешних email)
или
domainlist local_domains = 127.0.0.1 :  test.ru (то любой пользователь даже не созданный *@test.ru может слать письма куда угодно, зато письма приходят с внешних email)

в ACL CONFIGURATION    
accept  domains       = +local_domains
          endpass
          verify        = recipientaccept  

authenticated = *


deny    message       = relay not permitted

в    ROUTERS CONFIGURATION

dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more

Как сделать так что бы письма приходили с внешних email но при этом работала авторизация? Задавал вопрос на многих форумах так и остался без ответа, просьба умников которые даже не вникают в суть проблемы не отправлять мануалы читать.

Содержание

Сообщения в этом обсуждении
"Exim и внешние Email"
Отправлено Cyrus_user , 24-Дек-07 09:59 
>[оверквотинг удален]
>  driver = dnslookup
>  domains = ! +local_domains
>  transport = remote_smtp
>  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
>  no_more
>
>Как сделать так что бы письма приходили с внешних email но при
>этом работала авторизация? Задавал вопрос на многих форумах так и остался
>без ответа, просьба умников которые даже не вникают в суть проблемы
>не отправлять мануалы читать.

да нет ничего проще:
1. включить auth_advertise_hosts
2. настроить секцию аутентификации
3. настроить acl-и работы аутентификации

я бы вас всё равно отправил почитать доку :)


"Exim и внешние Email"
Отправлено osipen , 25-Дек-07 11:47 
Вот приблизительно так. Только Мне нужно настроить smtp авторизацию, таким образом что бы не авторизованный пользователь не смог отсылать письма никуда. На данный момент у пользователя получается отправить письмо локально, то есть user1@test.ru (не авторизован) может послать письмо user2@test.ru нужно сделать так что бы не смог. За основу взял конфиг из Virtual Exim и http://www.lissyara.su/?id=1194 и http://www.opennet.me/openforum/vsluhforumID1/45256.html

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

auth_advertise_hosts = *

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

begin authenticators

plain_login:
        driver = plaintext
        public_name = PLAIN
        server_condition = ${lookup mysql{SELECT '1' FROM users \
                                WHERE username = '${quote_mysql:$2}' \
                                AND clear = '${quote_mysql:$3}'} {yes}{no}}
        server_set_id = $2

fixed_login:
        driver = plaintext
        public_name = LOGIN
        server_prompts = "Username:: : Password::"
        server_condition = ${lookup mysql{SELECT '1' FROM users \
                                WHERE username = '${quote_mysql:$1}' \
                                AND clear = '${quote_mysql:$2}'} {yes}{no}}
        server_set_id = $1

fixed_cram:
        driver = cram_md5
        public_name = CRAM-MD5
        server_secret = ${lookup mysql{SELECT clear FROM users \
                                WHERE username = '${quote_mysql:$1}'}{$value}fail}
        server_set_id = $1


"Exim и внешние Email"
Отправлено CSX , 25-Дек-07 16:02 
>Вот приблизительно так. Только Мне нужно настроить smtp авторизацию, таким образом что
>бы не авторизованный пользователь не смог отсылать письма никуда. На данный
>момент у пользователя получается отправить письмо локально, то есть user1@test.ru (не
>авторизован) может послать письмо user2@test.ru нужно сделать так что бы не
>смог.

Вы вообще не понимаете о чем говорите. Как же вам удаленные почтовые сервера для test.ru почту буду доставлять? Авторизовываться будут? Или Вы думаете, что у почтовых серверов и почтовых клиентов разные SMTP протоколы?


"Exim и внешние Email"
Отправлено osipen , 25-Дек-07 16:52 
>Вы вообще не понимаете о чем говорите. Как же вам удаленные почтовые
>сервера для test.ru почту буду доставлять? Авторизовываться будут? Или Вы думаете,
>что у почтовых серверов и почтовых клиентов разные SMTP протоколы?

Ну скажем так в том то все и дело, что я не пойму насколько это возможно. Вот мне сказали что можно http://forum.lissyara.su/viewtopic.php?f=20&t=6483 , а вот как никто не может дать ответа. Если так нельзя сделать скажите плиз, а то у меня уже крыша едет запарился мануалы читать.


"Exim и внешние Email"
Отправлено Cyrus_user , 25-Дек-07 17:37 
>>Вы вообще не понимаете о чем говорите. Как же вам удаленные почтовые
>>сервера для test.ru почту буду доставлять? Авторизовываться будут? Или Вы думаете,
>>что у почтовых серверов и почтовых клиентов разные SMTP протоколы?
>
>Ну скажем так в том то все и дело, что я не
>пойму насколько это возможно. Вот мне сказали что можно http://forum.lissyara.su/viewtopic.php?f=20&t=6483 ,
>а вот как никто не может дать ответа. Если так нельзя
>сделать скажите плиз, а то у меня уже крыша едет запарился
>мануалы читать.

приблизительно в начале alc_smtp_auth

сначала проконтролируем адреса отправителей, например юзер c uid=vasya имеет правао слать почту толькос адреса vasya@domen.ru
deny
authenticated   = *
condition       = ${if eqi {$authenticated_id}\
                {тут берёте из вашего списка =$sender_address}{$value} fail}}{0}{1}}
message         = Нечего слать почту не закреплённую за вами
log_message     = Try to confuse |$authenticated_id| with |$sender_address|
!senders        = :

затем любого, кто пишет mail from: заставим пройти аутентификацию
deny
senders         = тут ваш список отправителей
message         = Sender $sender_address must authenticated.
log_message     =  Authentication Required
!authenticated  = *

однако у вас в самом начале стоит:
accept hosts = :
что означает принять письмо с localhost (если раньше не были заданы иные списки для ":")
тут можно добавить условий, так что думайте


"Exim и внешние Email"
Отправлено Cyrus_user , 25-Дек-07 17:39 
>мануалы читать.
>
>приблизительно в начале alc_smtp_auth
>

ошибка: alc_smtp_auth читать как acl_smtp_rcpt