Значит задача такая. Имеем 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 но при этом работала авторизация? Задавал вопрос на многих форумах так и остался без ответа, просьба умников которые даже не вникают в суть проблемы не отправлять мануалы читать.
>[оверквотинг удален]
> 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-и работы аутентификациия бы вас всё равно отправил почитать доку :)
Вот приблизительно так. Только Мне нужно настроить smtp авторизацию, таким образом что бы не авторизованный пользователь не смог отсылать письма никуда. На данный момент у пользователя получается отправить письмо локально, то есть user1@test.ru (не авторизован) может послать письмо user2@test.ru нужно сделать так что бы не смог. За основу взял конфиг из Virtual Exim и http://www.lissyara.su/?id=1194 и http://www.opennet.me/openforum/vsluhforumID1/45256.htmldomainlist local_domains = @ : 127.0.0.1
domainlist relay_to_domains = 127.0.0.1
hostlist relay_from_hosts = 127.0.0.1acl_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 = senderaccept 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
acceptbegin 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 = $2fixed_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 = $1fixed_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
>Вот приблизительно так. Только Мне нужно настроить smtp авторизацию, таким образом что
>бы не авторизованный пользователь не смог отсылать письма никуда. На данный
>момент у пользователя получается отправить письмо локально, то есть user1@test.ru (не
>авторизован) может послать письмо user2@test.ru нужно сделать так что бы не
>смог.Вы вообще не понимаете о чем говорите. Как же вам удаленные почтовые сервера для test.ru почту буду доставлять? Авторизовываться будут? Или Вы думаете, что у почтовых серверов и почтовых клиентов разные SMTP протоколы?
>Вы вообще не понимаете о чем говорите. Как же вам удаленные почтовые
>сервера для test.ru почту буду доставлять? Авторизовываться будут? Или Вы думаете,
>что у почтовых серверов и почтовых клиентов разные SMTP протоколы?Ну скажем так в том то все и дело, что я не пойму насколько это возможно. Вот мне сказали что можно http://forum.lissyara.su/viewtopic.php?f=20&t=6483 , а вот как никто не может дать ответа. Если так нельзя сделать скажите плиз, а то у меня уже крыша едет запарился мануалы читать.
>>Вы вообще не понимаете о чем говорите. Как же вам удаленные почтовые
>>сервера для 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 (если раньше не были заданы иные списки для ":")
тут можно добавить условий, так что думайте
>мануалы читать.
>
>приблизительно в начале alc_smtp_auth
>ошибка: alc_smtp_auth читать как acl_smtp_rcpt