LINUX.ORG.RU
ФорумAdmin

Помогите разобраться с postfix и virtual_mailbox_domains

 , ,


0

1

Есть почтовик, на нём в

mydestination = localhost.localdomain, localhost

Остальные домены выгребаются из LDAP, как и собственно пользователи и их алиасы. Дерево пользователей одно, доменов - много. Всё работает вот так:
virtual_transport = lmtp:unix:private/dovecot-lmtp                                                                                                                                
virtual_mailbox_domains = ldap:/etc/postfix/ldap-domains.cf                                                                                                                       
virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf                                                                                                                         
virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf                                                                    
virtual_alias_domains =

Из всех ldap-...cf кроме ldap-domains.cf на выходе получаем атрибут mail пользователя в нотации login@домен

У каждого пользователя по умолчанию в атрибуте mail почта вида login@maindomain.com, а в mailalias - всёвозможные алиасы, в том числе других доменов из ldap-domains.cf

В ldap-domains.cf в ответ на проверку домена выводится сам домен (maindomain.com или otherdomain.com и т.д. для простоты у меня в LDAP только 2 домена).

Фокус вот в чём. Если у пользователя нету mailalias в домене otherdomain.com, он всё равно получит почту login@otherdomain.com которая постфиксом превратится в login@maindomain.com !!!

До тех пор, пока 2-й домен есть в LDAP, каждый пользователь домена maindomain.com будет получать почту вида login@otherdomain.com

Помогите, пожалуйста сделать так, чтобы имея 2 домена в LDAP (для отдельной группы пользователей домена otherdomain.com), они не получали писем где логин «их», а домен - не их.

Если убрать 2-й домен (otherdomain) из LDAP, почту пользователи, у которых атрибут mail вида login@otherdomain.com, получать не будут - user not found.

Заранее спасибо!


Не совсем понял ситуацию, но постфикс действует так:

1. Ищет домен получателя в virtual_mailbox_domains, если его там нет, письмо отшибается.

2. Ищет адрес получателя в virtual_alias_maps, если он там находится, то запрос должен вернуть реальный адрес, который присутствует в virtual_mailbox_maps.

3. Ищет реальных пользователей в virtual_mailbox_maps, запрос должен вернуть путь до maildir юзера, если юзер не найдён, то письмо отшибается.

Покажи cf-ки с запросами, а то непонятно что там.

blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

вот cf-ки

/etc/postfix/ldap-domains.cf
server_host = 127.0.0.1
server_port = 389
search_base = ou=mailDomains,dc=local
query_filter = (&(objectClass=mailDomain)(virtualdomain=%s))
result_attribute = virtualdomain
version = 3


/etc/postfix/ldap-accounts.cf
server_host = 127.0.0.1
server_port = 389
search_base = ou=Users,dc=local
query_filter = (&(objectClass=mailAccount)(mailenable=OK)(mail=%s))
result_attribute = mail
version = 3
expansion_limit = 1


/etc/postfix/ldap-aliases.cf
server_host = 127.0.0.1
search_base = ou=Users,dc=local
query_filter = (&(objectClass=mailAccount)(mailalias=%s)(mailenable=OK))
result_attribute = mail
version = 3

Дерево доменов выглядит так:

dn: ou=mailDomains,dc=local
objectClass: organizationalUnit
objectClass: top
ou: mailDomains

dn: virtualdomain=maindomain.com,ou=mailDomains,dc=local
objectClass: mailDomain
objectClass: top
virtualdomain: maindomain.com
virtualdomaindescription: 1st domain
mailuserquota: 2000000

dn: virtualdomain=otherdomain.com,ou=mailDomains,dc=local
objectClass: mailDomain
objectClass: top
virtualdomain: otherdomain.com
virtualdomaindescription: 2nd domain
mailuserquota: 2000000

Пользователь в LDAP имеет следующее (касающееся почты):

dn: uid=login,ou=Users,dc=local
mail: login@maindomain.com
mailalias: login.surname@maindomain.com
mailalias: some@maindomain.com
mailalias: some2@maindomain.com

Относительно очерёдности обработки виртуальных адресов и алиасов я видел следующее (выдержка из http://www.postfix.org/virtual.5.html):

With lookups from indexed files such as DB or DBM, or from networked tables such as NIS, LDAP or  SQL,  patterns  are tried in the order as listed below:

user address, address, ...

user@domain address, address, ...
Redirect  mail  for  user@domain  to address.  This form has the highest precedence.

@domain address, address, ...
Redirect mail for other users in domain to address.
This form has the lowest precedence.

Ну а следующий параграф меня запутал:

RESULT ADDRESS REWRITING
       The lookup result is subject to address rewriting:
o      When the result  has  the  form  @otherdomain,  the result  becomes the same user in otherdomain.  This works only for the first address in a multi-address lookup result.

skrew ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.