開発時に簡単なテスト用にWindows の SMTPサービス、POP3サービスを使用することがあると思います。POP3サービスに適切にmailbox が構成されていないと、BadMailフォルダにメールが配信されます。
今回はAD上のユーザにメールを送ったときに適切なmailbox に メールが配信されるように POP3サービスにADのユーザ用のメールボックスを一括で作成するスクリプトを紹介します。
1. AD内のユーザ用のメールボックス一括インポート
POP3サービスをインストールすると下記のようなスナップインが追加されます。下図はドメインcrm.local 上に構築したPOP3サービスに dyn.crm.local というメール用のドメインを作成した状態です。
下記スクリプトでは組織単位MailUsers 以下のユーザ名(SAMAccount)がmailuser または testuser で始まるユーザを winpop コマンドで登録します。
たとえば、AD上のユーザmailuser01宛 に、メールアドレスuser01@dyn.crm.local としてメールを送信した場合にメールボックスにメールが配信されるようにメールボックスを一括作成されます。
# インポート対象のルート $ou = [adsi] "LDAP://crm.local/OU=MailUsers,DC=crm,DC=local" $ds = New-Object System.DirectoryServices.DirectorySearcher $ou # 最大5000件 $ds.SizeLimit = 5000 $ds.PageSize = 1000 # インポートユーザのフィルタ条件セット $filter = "(&(objectClass=user)(|(sAMAccountName=mailuser*)(sAMAccountName=testuser*)))" $ds.Filter = $filter $result = $ds.FindAll() # 登録 $result | %{ $_.Properties["samaccountname"][0] + "@dyn.crm.local" } | %{ winpop add $_ }
2. まとめ
今回の説明は以上です。間違いなどありましたらご指摘ください。