Настройка Exim, письма несуществующим локальным адресатам.

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
oooo1
рядовой
Сообщения: 27
Зарегистрирован: 2012-01-22 23:04:33

Настройка Exim, письма несуществующим локальным адресатам.

Непрочитанное сообщение oooo1 » 2012-03-15 2:15:31

Стоит Exim 4.77 с Dovecot 2.0.17 c авторизацией через OpenLDAP 2.4.28 на FreeBSD 9.0.
Есть домен mylocal.ru, в нем есть пользователи. Настроен Exim по большей части как в статье на этом сайте.
Почта на этот домен (на Exim) идет через smtp relay hoster' a.
Идут письма с "почтовиков" на адреса local_part@mylocal.ru, но большая часть таких писем приходит на адреса с несуществующими local_part (типа ivanov.ivan@mylocal.ru) , которых нет в "базе пользователей".

Выдержки из конфигурации:

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

system_aliases:
    driver      = redirect
    allow_fail^M
    allow_defer^M

data = ${lookup ldapm{LDAP_AUTH ldap:///dc=my,dc=net?mail?sub?(&(accountStatus=active)(|(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain})(proxyAddresses=SMTP:

${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain})))}}

file_transport = address_file
pipe_transport = address_pipe


ldapuser:
debug_print = "R: local_user for $local_part@$domain"
driver = accept
domains = +local_domains
## проверяем есть ли в локальных доменах данный пользователь
## если есть, то отсылаем письмо на транспорт dovecot_delivery

condition = ${if eq{}{${lookup ldapdn{LDAP_AUTH ldap:///dc=my,dc=net??sub?(&(accountStatus=active)(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain}))}}}{no}{yes}}
 transport = dovecot_delivery
 cannot_route_message = $sender_address at address $sender_host_address, in my Domains not such user $local_part@$domain !
В acl_check_rcp стоит:

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

# Проверка получателя в локальных доменах.
# Если не проходит, то проверяется следующий ACL,
# и если непрошёл и там - deny
  accept  domains       = +local_domains
          endpass
          message       = "In my Domains not such user !"
          verify        = recipient
В этом случае, как Exim "знает" есть ли этот пользователь в базе или нет (проходя этот ACL) ?
И, в этом случае работает "отлуп" с ldapuser'a - выдает $sender_address sent e-mail to $local_part@$domain, be accurate ! с адресом mailer-daemon@mylocal.ru (например если письмо с несуществующим локальным адресом отправили с Gmail) .
есть для меня плюсы:
1. сообщение отправителю с "моей" ошибкой отправляется (именно $sender_address at address $sender_host_address, in my Domains not such user $local_part@$domain ! а не сообщение из ACL) ;
2. адрес mailer-daemon с моим доименом - mailer-daemon@mylocal.ru.
также есть для меня минусы:
1. Письмо "проходит" несколько "стадий" - трата "почтово -серверного" времени и траффика;
2. Потом на postmaster куча frozen messages, это ладно, но в них нет ни адреса отправитея ни несуществующего локального адреса (только ""@mylocal.ru) .

Поэтому наиболее оптимальным (наверное) образом это было реализовано это так:

в acl_check_rcp вместо того, что было указано ранее, стоит:

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

deny !recipients = ${lookup ldapm{LDAP_AUTH ldap:///dc=my,dc=net?mail?sub?(&(accountStatus=active)(|(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain})(proxyAddresses=SMTP:${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain})))}}
  hosts = !127.0.0.1
  domains = +local_domains
  message =  "$sender_address at address $sender_host_address, in my Domains not such user $local_part@$domain !"

В этом случае:
есть плюсы:
1. "Отлуп" идет на "начальном этапе" и не тратится больше "почтово -серверного" времени и траффика;
2. "Мое" сообщение об ошибке (именно это) .
но есть минусы:
1. В качестве домена mailer-daemon'a указан домен почтового сервера отправителя, не мой (например для Gmail их mailer-daemon) ;
2. "Мое" сообщение об ошибке не корректно отображается в письме (по крайней мере в Gmail) , в "перемешку" с 550 ошибкой.

Как наиболее оптимально с точки зрения быстродействия и траффика и/или правильно с точки зрения Exim сделать "отлуп" почтовому серверу, отправляющему на мой сервер (Exim) письма с domain=мой домен, и не сущесвующим local_part (по сути несуществующим адресом) , при этом чтобы корректно отображалось сообщение об ошибке у отправителя и mailer-daemon был с моим доменом (mailer-daemon@mylocal.ru) ?

P.S. Начал изучать Exim не давно.

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

oooo1
рядовой
Сообщения: 27
Зарегистрирован: 2012-01-22 23:04:33

Re: Настройка Exim, письма несуществующим локальным адресата

Непрочитанное сообщение oooo1 » 2012-03-15 2:30:22

И при этом, чтобы в frozen messages был указан "внешний" отправитель (письма на несуществующий адрес) и этот несуществующий (локальный) адрес или вообще не было таких frozen messages (которые появлялись при 1 варианте описанном в предыдущем сообщении) ; хотя сообщение об ошибке уходило отправителю, но Exim пытался доставить эти сообщения что ли, хотя при ldap запросах такие адреса выдаватся не будут, их просто нет.