- office関連
- Outlookで宛先をチェック・制限するマクロ はコメントを受け付けていません
誤送信防止・内部セキュリティ向上に使える!outlockでメールの宛先を制限するマクロ
現在Microsoft社のメーラー「Outlock」を使用されている方は多いと思います。このOutlockですが、実はExcelなどのoffice製品と同じようにマクロが使えるって知っていますか?今回はそのOutlockのマクロ機能を使用し、特定の宛先以外にはメールの送信をさせないようにする方法を紹介します。
公開の経緯
そもそもこの処理自体は、先日知人に頼まれてOutlockで宛先制限を行うマクロを作成しました。私自身outlockのマクロ(というかoutlook自体)を使うのが久しぶりで多少忘れていたためネットで調べてみたのですが、思いのほか情報が無い!また、後日別の人からも同じような質問を受けたので意外と皆さん困ってるんだなということがわかりました。ということで、同じような悩みを持つ方がいた場合を考え思い公開することにしました。
もちろん、当処理について利用許諾等あるわけではないのでご自由にお使いください。(ただし自己責任でね)
処理概要
設定したドメイン以外には、メールを送信できないようにするマクロです。
なお、許可していない宛先が含まれる場合には送信時にポップアップでどのアドレスが原因かを表示するようにしています。
例えば、以下のようなケースのときに使用できると思います。
- 社内(組織内部)だけにメールを送れるよう制限したい場合
- 端末(端末使用者)毎にメールをやり取りする相手が決まっている場合 など
処理内容
実際の処理内容は以下となります。なお、実際に使用する場合は10行目の宛先(送信先)として許可するドメインを書き換えて使用してください。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) '定義内容説明 'MY_DOMAIN→許可するドメイン 'RECV_INFO→受信者 'ATESAKI→宛先 'ATE_LIST→宛先リスト 'ALERT_MSG→警告メッセージ MY_DOMAIN = "sample.co.jp" '許可する宛先ドメイン指定 For Each RECV_INFO In Item.Recipients ATESAKI = RECV_INFO.Address If Right(ATESAKI, Len(ATESAKI) - InStr(ATESAKI, "@")) <> MY_DOMAIN Then ATE_LIST = ATE_LIST & ATESAKI & vbCr End If Next RECV_INFO If ATE_LIST <> "" Then ALERT_MSG = "宛先に" & vbCr & vbCr & _ ATE_LIST & vbCr & _ "が含まれています。" & vbCr & _ "メール送信を中止します" If MsgBox(ALERT_MSG, vbYesNo + vbExclamation) = vbYes Then Cancel = True Else MsgBox ("この端末では外部宛のメール送信は禁止です") Cancel = True End If End If End Sub
検証内容
一応、以下の内容で動作テストを実施しています。
- 宛先が許可ドメイン以外 ⇒ 送信不可
- CCが許可ドメイン以外 ⇒ 送信不可
- 宛先が許可ドメイン・CCがそれ以外 ⇒ 送信不可
- CCが許可ドメイン・宛先がそれ以外 ⇒ 送信不可
- BCCが許可ドメイン以外 ⇒ 送信不可
- 宛先・CC・BCCドメイン混在 ⇒ 送信不可
※送信不可が正しい動作です。
もちろん宛先・CC・BCCで許可ドメインだけの場合は送信可能です。
マクロ設定方法
分からない方がいるといけませんので、outlookでマクロを設定する方法を記載します。(なお、以下はoutlookの設定がデフォルトの場合です)
○デジタル署名設定方法
1.スタート → 全てのプログラム → MicrosoftOffice → MicrosoftOfficeツール → VBAデジタル署名
2.デジタル署名の登録をする
※マクロが動くようデジタル署名の設定は済ませておくこと
○マクロ登録方法
1.outlookを起動
2.altキー+F11でVBエディタを開く
3.ツール → デジタル署名で設定した署名を選択
4.Project1 → MicrosoftOfficeOutlookObjects → ThisOutlookSessionを開く
5.コードを貼り付けて保存
6.実際の環境で送信して問題ない宛先でテストすること
※保存のやり方次第で設定が反映されないことがある?ので、マクロを保存後outlookを再起動することをオススメします。保存されていなければ確認メッセージが出るのでそこで保存してください。
注意点及び補足
この処理では許可していないアドレスの入力自体はできる。
※入力できないようにするには独自のフォームをつくり制限をかけるとかするしかないかな~。
outlookでwordから作成機能を使用している場合は正常に動かないので注意してください。
※wordを使用したい場合はvbSystemModalとかいろいろ定義すれば動くはずですが、それだとword機能を使用していない場合が動かない可能性があるので今回は割愛しました。
【確認方法】outlookのツール→オプション→メール形式 でwordからの作成機能の使用有無が見れます。
未検証ですがドメインの条件を増やしたい場合は、ドメイン定義部分を[ドメイン1]|[ドメイン2]等にすればいいと思いますので適宜修正ください。
例えばこの処理をちょっと修正すれば、宛先制限はせずに送信確認用のポップアップを出すといったことや、複数のドメインが含まれている場合でBCCになっていない場合は警告を出すなどもできると思います。
まとめ
この処理は内部統制やセキュリティ強化に役立つと思いますので参考になれば幸いです。ただこの処理の場合、1台1台端末に設定していく必要があるため、メールサーバ側で制限かけた方が早い気はしましたが・・・。
まあ私としては普段メーラーはoutlook派では無いため、今回の件は作成しながら勉強になったりといい経験でしたのでOKかな(笑)