Все настроено согласно статьи на этом ресурсе (кроме некоторых мелочей - упрощений, например не "подгружается" отдельно схема mail, все делается "силами" схемы inetOrgPerson, и другими, идущими с OpenLDAP и Spamoboron'a (хотя она тоже настроена по статье с этого ресурса) .
У пользователей 2 аттрибута mail:
ля-ля-ля@domain.com (внутренний домен)
те же ля-ля-ля@ext--domain.com (внешний домен)
Оба домена прописаны в conf как local_domains, внутри письма могут "ходить" и "ходят" как по внутреннему домену, так и по внешнему. Во вне отправляются через hosting' овый smtp relay. Приходят через него же (как на внешний домен) , все работает, но есть 2 "неувязки" :
1. при отправке, внутри, одного письма на внутренний адрес или на внешний адрес, не имеет значения, письма дублируются;
2. как и где лучше всего реальзовать проверку существования адресов почты получателей - локальных пользователей, с учетом внутреннего и внешнего доменов, скорее наверное только внешнего, и таким образом, чтобы "замороженные" сообщения, с информацией о приходящих на не_существующий_алис@ext-domain.com адреса, автоотвечались на postmaster@domain.com c указанием ошибочного адреса, а не пусто@ext-domain.com ?
Сейчас 1 пункт "достигнут" следующим образом:
Код: Выделить всё
system_aliases:
driver = redirect
allow_fail
allow_defer
## ищем в ldap алиасы и выбираем поле mail.
data = ${lookup ldapm{LDAP_AUTH ldap:///dc=my,dc=net?mail?sub?(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain})}{${local_part}@${domain}} {:fail: User unknown !}}
Если как в статье: data = ${lookup ldapm{LDAP_AUTH ldap:///dc=my,dc=net?mail?sub?(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain})}} , то происходит "дубляж" ,
ldapuser:
debug_print = "R: local_user for $local_part@$domain"
driver = accept
domains = +local_domains
## проверяем есть ли в локальных доменах данный пользователь
## если есть, то отсылаем письмо на транспорт dovecot_delivery
condition = ${if eq{}{${lookup ldapm{LDAP_AUTH ldap:///dc=my,dc=net??sub?(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain})}}}{no}{yes}}
transport = dovecot_delivery
cannot_route_message = You sent e-mail to Unknown user !
# начинаются транспорты - как доставляем почту
begin transports
Пробовал в acl_smtp_rcpt ставить что - то вроде:
Код: Выделить всё
deny domains = +local_domains
message = "I don' t know such local address !"
condition = ${if eq{$local_part}{${lookup ldapdn{LDAP_AUTH ldap:///dc=my,dc=net??sub?(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain})}}}{no}{yes}}