Tìm kiếm trang web

Xóa E-mail hoặc E-mail cụ thể khỏi tất cả các hộp thư Exchange


Bạn đã bao giờ được yêu cầu xóa e-mail không mong muốn khỏi tất cả các hộp thư trong môi trường Exchange của mình chưa? Có phải ai đó đã gửi e-mail cho toàn công ty rồi tìm cách rút lại? Hoặc có lẽ một loại vi-rút mới đã xâm nhập vào tất cả các hộp thư bằng tệp đính kèm. Tình huống này có xu hướng xảy ra với tôi khá thường xuyên vì vậy tôi sẽ hướng dẫn bạn các bước quét tất cả các hộp thư và xóa e-mail không mong muốn. Có nhiều chiến lược khác nhau để thực hiện điều này nhưng những chiến lược sau sẽ phù hợp với nhu cầu của bạn.

Tất cả các ví dụ được đánh dấu đều sử dụng vòng lặp ForEach với cơ sở dữ liệu hộp thư vì các môi trường lớn thường sẽ hết bộ nhớ khi truy xuất tất cả các hộp thư. Điều này giả sử bạn có ít hơn 1000 hộp thư trên mỗi cơ sở dữ liệu. Sức mạnh của lệnh này xoay quanh Truy vấn Tìm kiếm và khả năng chỉ bao gồm các e-mail phù hợp với tiêu chí hành động của bạn. Tất cả các ví dụ đều giả sử bạn đã kết nối với Exchange Management Shell.

Bước # 1: Điều đầu tiên cần có là tài khoản người dùng có vai trò truy cập thích hợp để tìm kiếm và xóa. Tôi sử dụng tài khoản dịch vụ an toàn để thực hiện các tác vụ này để tài khoản của chính tôi không hoàn thành chúng. Hai vai trò bắt buộc là Xuất nhập hộp thư và Tìm kiếm hộp thư. Theo mặc định, vai trò quản lý Xuất Nhập Hộp thư không được bao gồm trong bất kỳ nhóm vai trò tích hợp nào. Kết quả là phần này hướng dẫn bạn cách tạo một nhóm vai trò với 2 vai trò được yêu cầu.


New-RoleGroup -Name "Mailbox Scanning" -Roles "Mailbox Import Export", "Mailbox Search" -Members YourServiceAccount

Bước # 2a: Tại thời điểm này, chúng tôi có thể tìm kiếm e-mail và ghi lại kết quả, tìm kiếm và xóa kết quả hoặc cả hai. Ví dụ này tìm kiếm tất cả các hộp thư và xóa e-mail theo truy vấn tìm kiếm của bạn. Truy vấn tìm kiếm có thể được điều chỉnh theo nhu cầu của bạn và bạn có thể tìm thấy thêm thông tin về cú pháp tại đây.

$databases = Get-MailboxDatabase
ForEach ($database in $databases) {
	$mailboxes = Get-Mailbox -Database $database
	ForEach ($mailbox in $mailboxes)
	{ Search-Mailbox $mailbox.identity -SearchQuery Subject:'The Subject Of The Email You Want To Delete', From:'The Sender', Received:'Today' -DeleteContent -Force}
}

Bước # 2b: Phần sau đây sẽ chỉ ghi lại kết quả tìm kiếm của bạn trong trường hợp bạn muốn kiểm tra tìm kiếm và xóa trước.

$databases = Get-MailboxDatabase
ForEach ($database in $databases) {
	$mailboxes = Get-Mailbox -Database $database
	ForEach ($mailbox in $mailboxes)
	{ Search-Mailbox $mailbox.identity -SearchQuery Subject:'The Subject Of The Email You Want To Log', From:'The Sender', Received:'Today' -TargetMailbox administrator -TargetFolder "SearchAndDeleteLog" -LogOnly -LogLevel Full}
}

Bước # 2c: Thao tác sau sẽ tìm kiếm tất cả các hộp thư và cả hai đều xóa e-mail cũng như ghi lại kết quả. Tôi đã thay đổi Truy vấn tìm kiếm để làm nổi bật việc tìm kiếm tệp đính kèm có tên 'ILoveYou*'. Thao tác này sẽ tìm kiếm bất kỳ tệp đính kèm nào có ILoveYou ở tiền tố của tên tệp.

$databases = Get-MailboxDatabase
ForEach ($database in $databases) {
	$mailboxes = Get-Mailbox -Database $database
	ForEach ($mailbox in $mailboxes)
	{ Search-Mailbox $mailbox.identity -SearchQuery attachment:ILoveYou* -TargetMailbox administrator -TargetFolder "SearchAndDeleteLog" -LogOnly -LogLevel Full -DeleteContent -Force}
}

Bước #2d: Thao tác sau sẽ xóa tất cả các email phù hợp với truy vấn tìm kiếm của bạn nhưng sẽ nhắc bạn trước mỗi lần xóa. Điều này được thực hiện bằng cách loại bỏ -Force khỏi lệnh Search-Mailbox.

$databases = Get-MailboxDatabase
ForEach ($database in $databases) {
	$mailboxes = Get-Mailbox -Database $database
	ForEach ($mailbox in $mailboxes)
	{ Search-Mailbox $mailbox.identity -SearchQuery Subject:'The Subject Of The Email You Want To Delete', From:'The Sender' -DeleteContent}
}

Bước #2e: Phần sau đây nêu bật một phương pháp đơn giản hơn dành cho các môi trường có dung lượng hộp thư nhỏ hơn mà không cần phải lặp qua cơ sở dữ liệu. Theo mặc định, kích thước kết quả cho lệnh Get-Mailbox là 1000 hộp thư. Đặt -ResultSize thành Unlimited cho phép chúng tôi tìm kiếm tất cả các hộp thư.

Get-Mailbox -ResultSize Unlimited | Search-Mailbox -SearchQuery Subject:'The Subject Of The Email You Want To Delete', From:'The Sender' -DeleteContent

Bước # 2f: Các điểm nổi bật sau đây sử dụng tên máy chủ thay vì hộp thư theo yêu cầu. Tôi thích sử dụng cơ sở dữ liệu hộp thư hơn vì chúng thường chứa ít người dùng hơn. Nếu máy chủ hoạt động tốt hơn trong môi trường của bạn, bạn có thể sử dụng phương pháp sau:

$servers = Get-MailboxServer
ForEach ($server in $servers) {
	$mailboxes = Get-Mailbox -Server $server
	ForEach ($mailbox in $mailboxes)
	{ Search-Mailbox $mailbox.identity -SearchQuery Subject:'The Subject Of The Email You Want To Delete', From:'The Sender' -DeleteContent}
}

Như mọi khi, hãy để lại nhận xét về kịch bản của bạn và tôi sẽ cập nhật bài đăng trên blog với giải pháp.

Bài viết liên quan