Есть домен 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,
# и если непрошёл и там - deny
accept domains = +local_domains
endpass
message = "In my Domains not such user !"
verify = recipient
И, в этом случае работает "отлуп" с 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 не давно.