Имеется следующая задача – необходимо собирать всю входящую почту для определённого домена/поддомена в определённый почтовый ящик.
Нечто похожее описано в статье Configure a Catch-All Mailbox в библиотеке технета. Правда описание годится только в сценарии с использованием сервера с ролью Edge. Если у нас его нет, то придётся немного изменить сценарий:
- Создаём почтовый ящик под наши цели.
[PS] C:>New-Mailbox -UserPrincipalName catch-all@domain.com -Alias catch-all -Name "Catch All"
- Проверяем, что наша почтовая организация может принимать почту для нашего домена. Если не принимает, то необходимо наш домен добавить в Accepted Domains как Internal Relay (если его сделать Authoritative, то Exchange будет проверять, существует ли почтовый адрес в организации, прежде чем пересылать письмо, и большую часть писем будет отбивать, как идущих на несуществующие адреса).
[PS] C:>New-AcceptedDomain -DomainName subdomain.domain.com -DomainType InternalRelay -Name subdomain.domain.com
- Настраиваем транспортное правило, которое будет перенаправлять всю почту для нашего домена в ящик, созданный на шаге 1.
[PS] C:>New-TransportRule -Name "Catch All Messages" -Comment "Catch All Messages" -Enabled $true -RecipientAddressMatchesPatterns "@subdomain.domain.com$" -RedirectMessageTo 'catch-all@domain.com'
В итоге получаем следующий механизм работы. Письмо приходит на адрес someaddress@subdomain.domain.com. Транспортный сервер понимает, что письмо адресовано ему (домен получателя находится в Accepted Domains). Но в связи с тем, что тип домена InternalRelay проверка получателя на валидность не происходит. После этого письмо попадает в транспортное правило и уходит в нужный нам ящик.
Это все ясно и понятно. а как сделать чтобы копировалась почта только части сотрудников?
Чтобы список брался из файла например?
>а как сделать чтобы копировалась почта только части сотрудников?
Вместо -RecipientAddressMatchesPatterns
“@subdomain.domain.com$” используем -SentTo “user1@domain.com”,”user2@domain.com”,”user3@domain.com” итд. Можно таких пользователей объединить в группу рассылки и использовать -SentToMemberOf. Полный список условий можно посмотреть здесь – http://technet.microsoft.com/en-us/library/dd638183
Вместо -RedirectMessageTo ‘catch-all@domain.com’ используем -BlindCopyTo ‘catch-all@domain.com’. Полный список действий можно посмотреть здесь – http://technet.microsoft.com/en-us/library/aa998315
>Чтобы список брался из файла например?
Это можно сделать, если написать своего транспортного агента. Стандартной функции решающей такую задачу нет.